Merge tag 'upstream/1.9.1' into debian-experimental
Upstream version 1.9.1
diff --git a/ChangeLog b/ChangeLog
index a7e933c..aaad5eb 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,368 +1,11 @@
-=== release 1.8.2 ===
+=== release 1.9.1 ===
-2016-06-09 Sebastian Dröge <slomo@coaxion.net>
+2016-07-06 Sebastian Dröge <slomo@coaxion.net>
* configure.ac:
- releasing 1.8.2
+ releasing 1.9.1
-2016-06-09 10:06:02 +0300 Sebastian Dröge <sebastian@centricular.com>
-
- * po/hr.po:
- * po/pt_BR.po:
- * po/sk.po:
- po: Update translations
-
-2016-06-07 21:10:04 -0400 Nicolas Dufresne <nicolas.dufresne@collabora.com>
-
- * ext/webp/gstwebpdec.c:
- webpdec: Wait for segment event before checking it
- The heuristic to choose between packetise or not was changed to use the
- segment format. The problem is that this change is reading the segment
- during the caps event handling. The segment event will only be sent
- after. That prevented the decoder to go in packetize mode, and avoid
- useless parsing.
- https://bugzilla.gnome.org/show_bug.cgi?id=736252
-
-2016-06-07 21:04:21 -0400 Nicolas Dufresne <nicolas.dufresne@collabora.com>
-
- * gst/vmnc/vmncdec.c:
- vmncdec: Wait for segment event before checking it
- The heuristic to choose between packetise or not was changed to use the
- segment format. The problem is that this change is reading the segment
- during the caps event handling. The segment event will only be sent
- after. That prevented the decoder to go in packetize mode, and avoid
- useless parsing.
- https://bugzilla.gnome.org/show_bug.cgi?id=736252
-
-2016-05-02 17:38:50 +0200 Jan Alexander Steffens (heftig) <jan.steffens@gmail.com>
-
- * gst/mpegtsmux/mpegtsmux.c:
- mpegtsmux: Set PTS on aligned buffers
- This was broken in 09c05df (make "alignment" property more useful for
- packetisation).
- https://bugzilla.gnome.org/show_bug.cgi?id=765926
-
-2016-05-20 14:34:37 -0400 Nicolas Dufresne <nicolas.dufresne@collabora.com>
-
- * ext/gl/caopengllayersink.h:
- * ext/gl/caopengllayersink.m:
- caopengllayersink: Don't cache buffer pool
- Pools cannot be used by the two elements at the same time.
- https://bugzilla.gnome.org/show_bug.cgi?id=766611
-
-2016-06-07 17:22:01 +1000 Alessandro Decina <alessandro.d@gmail.com>
-
- * sys/applemedia/vtdec.c:
- vtdec: always drain in ::negotiate
- Move calling gst_vtdec_push_frames_if_needed from ::set_format to ::negotiate so
- that we always drain even when renegotiation is triggered by downstream.
-
-2016-06-07 16:00:01 +1000 Alessandro Decina <alessandro.d@gmail.com>
-
- * sys/applemedia/vtdec.c:
- vtdec: try to preserve downstream caps order
- vtdec specifies sysmem; GLMemory as template caps. When negotiating, we used to
- call gst_pad_peer_query_caps (..., filter) with our template caps as filter. The
- query does gst_caps_intersect (filter, peercaps) internally which gives
- precedence to the order of the filter caps. While we want to output sysmem by
- default, when negotiating with glimagesink which returns GLMemory; sysmem; we
- do want to do GL, so we now query using a NULL filter and intersect the result
- with our template caps giving precedence to downstream's caps.
- tl;dr: make sure we end up negotiating GLMemory with glimagesink
-
-2016-06-06 12:38:45 -0400 Xavier Claessens <xavier.claessens@collabora.com>
-
- * sys/androidmedia/gstamcvideoenc.c:
- amcvideoenc: Do not call gst_object_unref on GstCaps
- https://bugzilla.gnome.org/show_bug.cgi?id=767298
-
-2016-06-06 14:08:43 -0400 Xavier Claessens <xavier.claessens@collabora.com>
-
- * sys/androidmedia/gstahcsrc.c:
- ahcsrc: Avoid a div by 0 warning
- https://bugzilla.gnome.org/show_bug.cgi?id=767302
-
-2016-06-02 16:30:02 +1000 Alessandro Decina <alessandro.d@gmail.com>
-
- * sys/applemedia/vtdec.c:
- vtdec: make vtdec_hw fallback to software on renegotiation
- When renegotiating mid stream - for example with variable bitrate
- streams - and therefore destroying and recreating VTSessions, the
- hw decoder might become temporarily unavailable.
- To deal with this and avoid erroring out on bitrate changes,
- vtdec_hw now falls back to using the software decoder if the hw
- one was available at some point but isn't anymore. At
- renegotiation/bitrate change time, it will still retry to open
- the hardware one.
-
-2016-06-02 13:10:51 +1000 Alessandro Decina <alessandro.d@gmail.com>
-
- * sys/applemedia/vtdec.c:
- vtdec: fix switching from GLMemory to Sysmem
- When renegotiating from GLMemory to Sysmem do teardown the texture_cache.
- Fixes: https://bugzilla.gnome.org/show_bug.cgi?id=766190
-
-2016-06-02 11:36:57 +1000 Alessandro Decina <alessandro.d@gmail.com>
-
- * sys/applemedia/vtdec.c:
- vtdec: optimize renegotiation
- ::negotiate can be called several times before the CAPS event is sent downstream
- so use the currently configured output state caps instead of the pad current
- caps when deciding whether to recreate the VTSession or not.
- This leads to creating/destroying less VTSessions which makes renegotiation more
- reliable especially when using hw decoding.
-
-2016-05-23 15:24:53 +0300 Guillaume Desmottes <guillaume.desmottes@collabora.co.uk>
-
- * gst-libs/gst/player/gstplayer.c:
- player: fix suburi getter debug message
- The property is a string, not a boolean.
- https://bugzilla.gnome.org/show_bug.cgi?id=766607
-
-2016-05-25 09:53:15 +0300 Sebastian Dröge <sebastian@centricular.com>
-
- * gst-libs/gst/player/gstplayer.c:
- player: Don't set subtitle URI directly but dispatch to the player thread
- Otherwise we do state changes and everything in the application thread, which
- might block and more important can cause reentrant signals.
- https://bugzilla.gnome.org/show_bug.cgi?id=766607
-
-2016-05-23 17:00:22 +0530 Arun Raghavan <arun@arunraghavan.net>
-
- * gst-libs/gst/player/gstplayer-media-info.c:
- player: Fix documentation for gst_player_video_info_get_framerate()
- Document out parameters and fix function name.
-
-2016-05-18 16:00:47 +0300 Guillaume Desmottes <guillaume.desmottes@collabora.co.uk>
-
- * tests/check/libs/player.c:
- player: use gst_check_init() in test
- Calling GST_DEBUG() in test rely on the default category to be defined,
- which is done in gst_check_init().
- https://bugzilla.gnome.org/show_bug.cgi?id=766607
-
-2016-05-20 17:28:52 -0400 Aaron Boxer <boxerab@gmail.com>
-
- * ext/openjpeg/gstopenjpegenc.c:
- openjpegenc: enable MCT for RGB video
- https://bugzilla.gnome.org/show_bug.cgi?id=766732
-
-2016-05-19 09:25:57 -0700 Martin Kelly <martin@surround.io>
-
- * sys/androidmedia/gst-android-hardware-camera.c:
- ahc: fix potential NULL deref
- This bug was found via cppcheck static analysis.
- If android.hardware.Camera.getParameters returns NULL, then object will
- be NULL, and we won't allocate params. This means that the GST_DEBUG
- statement referencing params->object will be invalid. Fix this by
- exiting early if android.hardware.Camera.getParameters returns NULL.
- https://bugzilla.gnome.org/show_bug.cgi?id=766638
-
-2016-05-19 16:55:31 +0300 Guillaume Desmottes <guillaume.desmottes@collabora.co.uk>
-
- * ext/gl/gstglmosaic.c:
- glmosaic: fix shader leak
- gst_gl_mosaic_init_shader() is called twice with test_glmosaic so the
- first shader was leaked.
- https://bugzilla.gnome.org/show_bug.cgi?id=766661
-
-2016-05-16 17:11:53 -0400 Xavier Claessens <xavier.claessens@collabora.com>
-
- * gst-libs/gst/gl/win32/gstglwindow_win32.c:
- gl: win32: Unparent internal window before destroying it
- For some reason DestroyWindow() deadlock if it's called from
- parent window's KeyPress event.
- https://bugzilla.gnome.org/show_bug.cgi?id=766533
-
-2016-05-16 15:26:53 -0400 Xavier Claessens <xavier.claessens@collabora.com>
-
- * gst-libs/gst/gl/win32/gstglwindow_win32.c:
- gl: win32: Don't steal parent focus when creating internal window
- This fix regression introduced by 0acc18c60f6f962cc6553f6047fdb64891bab544.
- https://bugzilla.gnome.org/show_bug.cgi?id=766520
-
-2016-05-14 11:56:59 +0200 Olivier Crête <olivier.crete@collabora.com>
-
- * gst-libs/gst/video/gstvideoaggregator.c:
- videoaggregator: Don't wait if input buffer is after output
- If the input buffer is after the end of the output buffer, then waiting
- for more data won't help. We will never get an input buffer for this point.
- This fixes compositing of streams from rtspsrc.
- https://bugzilla.gnome.org/show_bug.cgi?id=766422
-
-2016-05-14 16:59:14 +0300 Alex-P. Natsios <drakevr@2f30.org>
-
- * configure.ac:
- configure: check for shm_open() in OpenBSD
- In OpenBSD there is no "actual" librt that programs can link with,
- instead the system/base libc provides the functions one would
- customarily find there.
- https://bugzilla.gnome.org/show_bug.cgi?id=766441
-
-2016-05-11 23:48:21 +0300 Sebastian Dröge <sebastian@centricular.com>
-
- * sys/androidmedia/gstamc.c:
- amcaudiodec: Set layout=interleaved in raw audio caps
- Otherwise the GAP event fallback negotiation will fail to produce complete
- srcpad caps, and thus fail.
- https://bugzilla.gnome.org/show_bug.cgi?id=766289
-
-2016-05-10 16:24:08 +0530 Nirbheek Chauhan <nirbheek@centricular.com>
-
- * configure.ac:
- * ext/openjpeg/gstopenjpeg.h:
- * ext/openjpeg/gstopenjpegdec.c:
- * ext/openjpeg/gstopenjpegenc.c:
- openjpeg: Port to 2.1 and require a pkg-config file for 2.0 and 2.1
- The port was trivial, and according to the NEWS file nothing else has changed,
- but it is possible that other API was changed without proper notification.
- OpenJPEG upstream has shipped a pkg-config file for the past 4 years, and all
- distros should be shipping it by now.
- https://bugzilla.gnome.org/show_bug.cgi?id=766213
-
-2016-05-04 11:30:11 +1000 Alessandro Decina <alessandro.d@gmail.com>
-
- * sys/applemedia/vtdec.c:
- applemedia: vtdec: output sysmem by default
-
-2016-05-05 18:00:25 +1000 Matthew Waters <matthew@centricular.com>
-
- * ext/vulkan/vkswapper.c:
- vkswapper: use gst_video_sink_center_rect for positioning the video
- Don't try to reimplement it badly.
-
-2016-05-05 23:53:05 +1000 Matthew Waters <matthew@centricular.com>
-
- * ext/vulkan/Makefile.am:
- vulkan/build: add the build directory to the list of includes
- Fixes out of tree builds from tarballs.
- https://bugzilla.gnome.org/show_bug.cgi?id=764758
-
-2016-04-08 18:09:53 +1000 Matthew Waters <matthew@centricular.com>
-
- * ext/vulkan/vkimagememory.c:
- vulkan: silence a validation warning filling out the image barrier
-
-2016-04-08 18:09:06 +1000 Matthew Waters <matthew@centricular.com>
-
- * ext/vulkan/vkdevice.c:
- * ext/vulkan/vkinstance.c:
- vulkan: use the correct validation layer name
- The threading validation layer has changed names.
-
-2016-05-02 11:30:43 +0300 Sebastian Dröge <sebastian@centricular.com>
-
- * sys/directsound/gstdirectsoundsrc.c:
- directsoundsrc: Convert Windows strings to UTF8 before comparing against UTF8 strings
- The device name and descriptions returned are in the locale encoding, not
- UTF8. Our device name property is in UTF8 though, so we need to convert.
- https://bugzilla.gnome.org/show_bug.cgi?id=756948
-
-2016-05-03 11:11:24 +0300 Sebastian Dröge <sebastian@centricular.com>
-
- * gst/compositor/compositor.c:
- compositor: Set blend functions in ::negotiated_caps() instead of ::fixate_caps()
- The latter should not change any state but just fixate the caps, while the
- former is always called when srcpads caps are decided.
- https://bugzilla.gnome.org/show_bug.cgi?id=765324
-
-2016-04-25 16:50:18 +0300 Sebastian Dröge <sebastian@centricular.com>
-
- * gst/videoparsers/gsth264parse.c:
- h264parse: H264 level idc 0 is not valid
- Don't put level=0 into the caps, it confuses other elements.
- https://bugzilla.gnome.org/show_bug.cgi?id=765538
-
-2016-04-25 16:50:55 +0300 Sebastian Dröge <sebastian@centricular.com>
-
- * gst/videoparsers/gsth265parse.c:
- h265parse: H265 level idc 0 is not valid
- Don't put level=0 into the caps, it confuses other elements.
- https://bugzilla.gnome.org/show_bug.cgi?id=765538
-
-=== release 1.8.1 ===
-
-2016-04-20 18:22:13 +0300 Sebastian Dröge <sebastian@centricular.com>
-
- * ChangeLog:
- * NEWS:
- * RELEASE:
- * configure.ac:
- * 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-audiomixer.xml:
- * docs/plugins/inspect/plugin-audiovisualizers.xml:
- * docs/plugins/inspect/plugin-autoconvert.xml:
- * docs/plugins/inspect/plugin-bayer.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-curl.xml:
- * docs/plugins/inspect/plugin-dataurisrc.xml:
- * docs/plugins/inspect/plugin-debugutilsbad.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-faad.xml:
- * docs/plugins/inspect/plugin-festival.xml:
- * docs/plugins/inspect/plugin-fieldanalysis.xml:
- * docs/plugins/inspect/plugin-flite.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-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-jpegformat.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-ofa.xml:
- * docs/plugins/inspect/plugin-openal.xml:
- * docs/plugins/inspect/plugin-pcapparse.xml:
- * docs/plugins/inspect/plugin-pnm.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-rtmp.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-soundtouch.xml:
- * docs/plugins/inspect/plugin-spandsp.xml:
- * docs/plugins/inspect/plugin-speed.xml:
- * docs/plugins/inspect/plugin-subenc.xml:
- * docs/plugins/inspect/plugin-videoparsersbad.xml:
- * docs/plugins/inspect/plugin-voaacenc.xml:
- * docs/plugins/inspect/plugin-voamrwbenc.xml:
- * docs/plugins/inspect/plugin-waylandsink.xml:
- * docs/plugins/inspect/plugin-y4mdec.xml:
- * docs/plugins/inspect/plugin-zbar.xml:
- * gst-plugins-bad.doap:
- * win32/common/config.h:
- Release 1.8.1
-
-2016-04-20 18:10:11 +0300 Sebastian Dröge <sebastian@centricular.com>
+2016-07-06 10:19:24 +0300 Sebastian Dröge <sebastian@centricular.com>
* po/af.po:
* po/az.po:
@@ -404,22 +47,3123 @@
* po/uk.po:
* po/vi.po:
* po/zh_CN.po:
- Update .po files
+ po: Update translations
-2016-04-14 22:32:05 -0700 Aleix Conchillo Flaqué <aconchillo@gmail.com>
+2016-07-05 09:21:58 -0400 Nicolas Dufresne <nicolas.dufresne@collabora.com>
- * ext/srtp/gstsrtpdec.c:
- srtpdec: also check for "roc" in caps
- Currently, gst_srtp_dec_sink_setcaps is happy if the "roc" field is not
- provided in the caps. If it is not provided the stream will be properly
- inserted in the hash table with a default "roc". Then, when the first
- buffer arrives validate_buffer will find an existing stream in the hash
- table and will not signal request-key, not allowing the user to provide
- a "roc".
- This patch expects "roc" in gst_srtp_dec_sink_setcaps, if not found a
- request-key will be signaled and the user will be able to provide all
- the srtp fields, including "roc".
- https://bugzilla.gnome.org/show_bug.cgi?id=765079
+ * ext/webrtcdsp/gstwebrtcdsp.cpp:
+ webrtcdsp: Workaround GCC/MingW 4.7 limitations
+ It refuses to initialize a classes using brackets notation. This is
+ to allow building using our mingw version.
+
+2016-07-04 14:57:11 -0400 Nicolas Dufresne <nicolas.dufresne@collabora.com>
+
+ * configure.ac:
+ configure.ac: Add missing double quotes
+ That affectation was ignored. This worked on recent GCC as C++11 is
+ enabled by default now.
+
+2016-07-02 10:24:51 +0200 Stefan Sauer <ensonic@users.sf.net>
+
+ * ext/lv2/gstlv2filter.c:
+ * ext/lv2/gstlv2source.c:
+ * ext/lv2/gstlv2utils.c:
+ * ext/lv2/gstlv2utils.h:
+ lv2: add support for saving presets
+ Plugns supporting the state interface can now save their presets under '.lv2'.
+
+2016-06-15 22:22:58 +0200 Stefan Sauer <ensonic@users.sf.net>
+
+ * ext/lv2/README:
+ * ext/lv2/gstlv2.c:
+ * ext/lv2/gstlv2.h:
+ * ext/lv2/gstlv2filter.c:
+ * ext/lv2/gstlv2source.c:
+ * ext/lv2/gstlv2utils.c:
+ * ext/lv2/gstlv2utils.h:
+ lv2: support for loading presets
+ Detect if plugins can do presets. Lazily read a list of presets and add support
+ for loading.
+
+2016-07-04 16:54:53 +0200 Wim Taymans <wtaymans@redhat.com>
+
+ * configure.ac:
+ * ext/musepack/gstmusepackdec.c:
+ * ext/musepack/gstmusepackreader.c:
+ musepackdec: port to 1.0
+
+2016-07-04 12:19:36 +0200 Marcin Lewandowski <marcin@radiokit.org>
+
+ * sys/shm/gstshmsrc.c:
+ shmsrc: Do not call gst_poll_remove_fd upon stop if reading was never started
+ https://bugzilla.gnome.org/show_bug.cgi?id=768365
+
+2016-07-01 14:50:27 -0700 Reynaldo H. Verdejo Pinochet <reynaldo@osg.samsung.com>
+
+ * sys/dvb/parsechannels.c:
+ dvb/parsechannels: improve parsing-success message
+ * Fix typo
+ * Give information on what was actually parsed
+
+2016-07-01 14:37:37 -0700 Reynaldo H. Verdejo Pinochet <reynaldo@osg.samsung.com>
+
+ * sys/dvb/parsechannels.c:
+ dvb/parsechannels: don't use default conf filename for messages
+ The file name can be user-defined.
+
+2016-07-01 19:22:32 +0100 Tim-Philipp Müller <tim@centricular.com>
+
+ * configure.ac:
+ * ext/qt/Makefile.am:
+ qt: fix build some more when QPA is not available
+ Compiler would complain about include directory that didn't
+ exist because QPA_INCLUDE_PATH gets subst-ed regardless
+ (and if it didn't we'd have just an empty -I argument).
+ https://bugzilla.gnome.org/show_bug.cgi?id=767553
+
+2016-07-01 14:05:49 +0100 Luis de Bethencourt <luisbg@osg.samsung.com>
+
+ * gst/videoparsers/gstjpeg2000parse.c:
+ gstjpeg2000parse: no need for else after a goto
+ else clause is redundant when the end of the if statement is a jump.
+ If we haven't gone to the beach, we are in the false branch.
+
+2016-06-30 07:47:50 -0400 Aaron Boxer <boxerab@gmail.com>
+
+ * gst/videoparsers/gstjpeg2000parse.c:
+ gstjpeg2000parse: improved parsing of jpc magic and j2c box
+ https://bugzilla.gnome.org/show_bug.cgi?id=767512
+
+2016-05-25 16:01:24 +0300 Sebastian Dröge <sebastian@centricular.com>
+
+ * gst-libs/gst/adaptivedemux/gstadaptivedemux.c:
+ * gst-libs/gst/adaptivedemux/gstadaptivedemux.h:
+ adaptivedemux: Add custom flow return for allowing subclasses to specify when a fragment is finished
+ If it is finished before upstream going EOS.
+ https://bugzilla.gnome.org/show_bug.cgi?id=767365
+
+2016-05-27 16:08:09 +0300 Sebastian Dröge <sebastian@centricular.com>
+
+ * ext/dash/gstdashdemux.c:
+ * ext/dash/gstdashdemux.h:
+ dashdemux: Implement SIDX tracking based on buffer offset
+ This simplifies the code but also removes a bug with tracking of the remaining
+ size for the initial subfragment: we were not considering the size between the
+ index and the start of the first moof here.
+ https://bugzilla.gnome.org/show_bug.cgi?id=764684
+
+2016-03-31 13:39:59 +0300 Sebastian Dröge <sebastian@centricular.com>
+
+ * ext/dash/gstdashdemux.c:
+ * ext/dash/gstdashdemux.h:
+ dashdemux: Properly keep track of current offset
+ GstAdapter does not guarantee to pass through all the offsets, we have to keep
+ track of it ourselves.
+ https://bugzilla.gnome.org/show_bug.cgi?id=764684
+
+2016-03-31 13:39:59 +0300 Sebastian Dröge <sebastian@centricular.com>
+
+ * ext/hls/gsthlsdemux.c:
+ * ext/hls/gsthlsdemux.h:
+ hlsdemux: Properly keep track of current offset
+ GstAdapter does not guarantee to pass through all the offsets, we have to keep
+ track of it ourselves.
+ https://bugzilla.gnome.org/show_bug.cgi?id=764684
+
+2016-03-31 13:01:00 +0300 Sebastian Dröge <sebastian@centricular.com>
+
+ * ext/hls/gsthlsdemux.c:
+ hlsdemux: Clear pending data when needed
+ When switching fragments we don't want to keep any data around from the last
+ one, and also forget about all data when doing flushing seeks or selecting new
+ bitrates.
+ https://bugzilla.gnome.org/show_bug.cgi?id=764684
+
+2016-03-28 13:45:36 +0300 Sebastian Dröge <sebastian@centricular.com>
+
+ * ext/dash/gstdashdemux.c:
+ * ext/dash/gstdashdemux.h:
+ * ext/hls/gsthlsdemux.c:
+ * ext/hls/gsthlsdemux.h:
+ * gst-libs/gst/adaptivedemux/gstadaptivedemux.c:
+ * gst-libs/gst/adaptivedemux/gstadaptivedemux.h:
+ adaptivedemux: Get rid of internal stream adapter and let subclasses handle this directly
+ This allows subclasses to have more control and especially ensure that they
+ push data downstream with the correct offsets.
+ https://bugzilla.gnome.org/show_bug.cgi?id=764684
+
+2016-07-01 12:20:14 +0100 Tim-Philipp Müller <tim@centricular.com>
+
+ * gst-libs/gst/codecparsers/gstjpeg2000sampling.c:
+ codecparsers: jpeg2000: don't allow 0 value for array access with i-1
+
+2016-07-01 12:15:28 +0100 Tim-Philipp Müller <tim@centricular.com>
+
+ * gst-libs/gst/codecparsers/gstjpeg2000sampling.c:
+ codecparsers: jpeg2000: fix possible out-of-bounds array access
+ sizeof(array) != G_N_ELEMENTS(array).
+ CID 1362900
+
+2016-06-30 23:38:26 +0200 Sebastian Dröge <sebastian@centricular.com>
+
+ * ext/openh264/gstopenh264enc.cpp:
+ openh264enc: Set frame timestamps before sending to the encoder
+
+2016-06-30 23:35:33 +0200 Sebastian Dröge <sebastian@centricular.com>
+
+ * ext/openh264/gstopenh264enc.cpp:
+ openh264enc: Fix initial time-per-frame calculation
+
+2016-06-30 23:33:38 +0200 Sebastian Dröge <sebastian@centricular.com>
+
+ * ext/openh264/gstopenh264enc.cpp:
+ * ext/openh264/gstopenh264enc.h:
+ openh264enc: Remove meaningless drop bitrate handling
+ This doesn't even have a property.
+
+2016-06-30 23:29:13 +0200 Sebastian Dröge <sebastian@centricular.com>
+
+ * ext/openh264/gstopenh264enc.cpp:
+ * ext/openh264/gstopenh264enc.h:
+ openh264enc: Expose maximum bitrate setting
+
+2016-06-30 23:19:26 +0200 Sebastian Dröge <sebastian@centricular.com>
+
+ * ext/openh264/gstopenh264enc.cpp:
+ openh264enc: Actually hook up the rate-control property
+
+2016-06-30 23:06:29 +0200 Sebastian Dröge <sebastian@centricular.com>
+
+ * ext/openh264/gstopenh264enc.cpp:
+ openh264enc: Use a constant SPS/PPS ID no matter if openh264 older or newer than 1.4 is used
+
+2016-06-30 23:02:49 +0200 Sebastian Dröge <sebastian@centricular.com>
+
+ * ext/openh264/gstopenh264enc.cpp:
+ openh264enc: Make slice settings more explicit and don't set any number if not a fixed number of slices is selected
+
+2016-06-29 15:56:47 -0400 Nicolas Dufresne <nicolas.dufresne@collabora.com>
+
+ * ext/webrtcdsp/gstwebrtcdsp.cpp:
+ * ext/webrtcdsp/gstwebrtcechoprobe.cpp:
+ * ext/webrtcdsp/gstwebrtcechoprobe.h:
+ webrtcdsp: Rewrite echo data synchronization
+ The previous code would run out of sync if there was packet lost
+ or clock skews. When that happened, the echo cancellation feature would
+ completely stop working. As this is crucial for audio calls, this patch
+ re-implement synchronization completely.
+ Instead of letting it drift until next discont, we now synchronize
+ against the record data at every iteration. This way we simply never
+ let the stream drift for longer then 10ms period. We also shorter the
+ delay by using the latency up the probe (basically excluding the sink
+ latency. This is a decent delay to avoid starving in the probe queue.
+ https://bugzilla.gnome.org/show_bug.cgi?id=768009
+
+2016-06-29 15:55:19 -0400 Nicolas Dufresne <nicolas.dufresne@collabora.com>
+
+ * ext/webrtcdsp/gstwebrtcdsp.cpp:
+ webrtcdsp: We now fail if there is no echo probe
+ When echo cancel is enabled, we now fail the pipeline if there is
+ not echo probe. For this reason there is no need to check if probe
+ pointer is set anymore.
+
+2016-06-30 21:50:12 +1000 Matthew Waters <matthew@centricular.com>
+
+ * gst-libs/gst/gl/gstglviewconvert.c:
+ glviewconvert: fix transformation matrix usage
+ Calling glUniformMatrix before the shader is bound is invalid and
+ would result in errors like:
+ GL_INVALID_OPERATION in glUniformMatrix(program not linked)
+ Move glUniformMatrix() to after the gst_gl_shader_use() call.
+
+2016-06-28 16:07:43 -0400 Javier Martinez Canillas <javier@osg.samsung.com>
+
+ * sys/kms/gstkmssink.c:
+ kmssink: fallback to universal planes if no overlay plane is found
+ Without setting the DRM_CLIENT_CAP_UNIVERSAL_PLANES capability bit, only
+ overlay planes are made available for compatibility with legacy clients.
+ But if a CRTC doesn't have an overlay plane associated, then kmssink is
+ not able to find a plane for the CRTC and the pipeline will fail, i.e:
+ ERROR kmssink gstkmssink.c:482:gst_kms_sink_start:<kmssink0> Could not find a plane for crtc
+ If no overlay planes were found for a given CRTC, fallback to universal
+ planes so DRM will also return primary planes that can be used instead.
+ https://bugzilla.gnome.org/show_bug.cgi?id=768183
+ Signed-off-by: Javier Martinez Canillas <javier@osg.samsung.com>
+
+2016-06-28 20:51:56 -0400 Javier Martinez Canillas <javier@osg.samsung.com>
+
+ * docs/plugins/gst-plugins-bad-plugins.args:
+ * sys/kms/gstkmssink.c:
+ kmssink: add a plane-id property
+ Without setting the DRM_CLIENT_CAP_UNIVERSAL_PLANES capability bit, only
+ overlay planes are made available for compatibility with legacy clients.
+ But if a CRTC doesn't have an overlay plane associated, then kmssink is
+ not able to find a plane for the CRTC and the pipeline will fail, i.e:
+ ERROR kmssink gstkmssink.c:482:gst_kms_sink_start:<kmssink0> Could not find a plane for crtc
+ This patch adds a plane-id property to the kmssink element so a specific
+ plane can be used in case that a CRTC has only a primary plane associated.
+ https://bugzilla.gnome.org/show_bug.cgi?id=768183
+
+2016-06-30 10:33:30 +0200 Sebastian Dröge <sebastian@centricular.com>
+
+ * ext/openh264/gstopenh264enc.cpp:
+ openh264enc: Remove broken byte-stream to avc conversion and just output byte-stream as generated by the encoder
+ The byte-stream to avc conversion did not consider NAL sizes bigger than 2^16,
+ multiple layers, multiple NALs per layer, and various other things. This
+ caused corrupted streams in higher bitrates and other circumstances.
+ Let's just forward byte-stream as generated by the encoder and let h264parse
+ handle conversion to avc if needed. That way we only have to keep around one
+ version of the conversion and don't have to fix it in multiple places.
+
+2016-06-29 18:36:56 +0200 Edward Hervey <edward@centricular.com>
+
+ * gst/videoparsers/gsth264parse.c:
+ h264parse: Drop filler data
+ When skipping data, check if they are filler bytes. If so, drop the
+ data instead of skipping. We don't want to output filler bytes, but they
+ shouldn't cause a discontinuity.
+ https://bugzilla.gnome.org/show_bug.cgi?id=768125
+
+2016-06-30 08:31:20 +0200 Sebastian Dröge <sebastian@centricular.com>
+
+ * sys/dvb/dvbbasebin.c:
+ dvbbasebin: Use a non-timer GstPoll
+ set_flushing() causes inconsistent states on timer polls and also signals a
+ g_critical() nowadays because of that.
+
+2016-06-30 14:04:36 +1000 Matthew Waters <matthew@centricular.com>
+
+ * gst-libs/gst/gl/gstglupload.c:
+ glupload: fix raw data uploader with addition of GstVideoGLTextureType
+ Fixes regression from 989200820d43c78fb179d7984827800d83787390
+ https://bugzilla.gnome.org/show_bug.cgi?id=768217
+
+2016-06-29 23:55:18 -0400 Olivier Crête <olivier.crete@collabora.com>
+
+ * gst-libs/gst/gl/gstglcolorconvert.c:
+ glvideoconvert: RG/LA is available in OpenGL ES 3, so let that through
+
+2016-06-29 18:35:17 +1000 Matthew Waters <matthew@centricular.com>
+
+ * sys/applemedia/videotexturecache.m:
+ vtdec: use L/LA textures on GLES2 as well
+
+2016-06-24 13:41:11 +1000 Matthew Waters <matthew@centricular.com>
+
+ * gst-libs/gst/gl/eagl/gstglcontext_eagl.m:
+ Revert "Revert "gl/eagl: try getting a gles3 context""
+ This reverts commit eb142736318463e6e553c21707ba0d716f85a46f.
+ vtdec now successfully outputs textures that can be converted by
+ glcolorconvert in GLES3 contexts.
+
+2016-06-25 00:05:37 +1000 Matthew Waters <matthew@centricular.com>
+
+ * sys/applemedia/videotexturecache.m:
+ vtdec: add support for zerocopy decoding with GLES 3.x
+ It seems that Red/RG textures aren't supported anymore for zerocopy decoding
+ with GLES 3.x. Instead use Luminance/Luminance Alpha textures which are.
+
+2016-06-28 13:51:22 +1000 Matthew Waters <matthew@centricular.com>
+
+ * ext/gl/gstgloverlay.c:
+ * gst-libs/gst/gl/egl/gstglmemoryegl.c:
+ * gst-libs/gst/gl/gstglbufferpool.c:
+ * gst-libs/gst/gl/gstglcolorconvert.c:
+ * gst-libs/gst/gl/gstglmemory.c:
+ * gst-libs/gst/gl/gstglmemory.h:
+ * gst-libs/gst/gl/gstglmemorypbo.c:
+ * gst-libs/gst/gl/gstgloverlaycompositor.c:
+ * gst-libs/gst/gl/gstglupload.c:
+ * gst-libs/gst/gl/gstglviewconvert.c:
+ * sys/androidmedia/gstamcvideodec.c:
+ * sys/applemedia/iosurfacememory.c:
+ * sys/applemedia/iosurfacememory.h:
+ * sys/applemedia/videotexturecache.m:
+ * tests/check/libs/gstglcolorconvert.c:
+ * tests/check/libs/gstglcontext.c:
+ * tests/check/libs/gstglmemory.c:
+ * tests/check/libs/gstglupload.c:
+ glmemory: add the texture type to allocate to parameters
+ Rather than assuming something. e.g. zerocopy on iOS with GLES3 requires
+ the use of Luminance/Luminance Alpha formats and does not work with
+ Red/RG textures.
+
+2016-06-28 13:09:51 +1000 Matthew Waters <matthew@centricular.com>
+
+ * gst-libs/gst/gl/gstglcolorconvert.c:
+ glcolorconvert: don't assume Red/RG textures will be used
+ Take the used texture type from the memory instead.
+ Fixes conversion from multi-planar YUV formats with two components per plane
+ (NV12, NV21, YUY2, UYVY, GRAY16_*, etc) with Luminance Alpha input textures.
+ This is also needed for zerocopy decoding on iOS with GLES 3.x.
+
+2016-06-28 13:02:32 +1000 Matthew Waters <matthew@centricular.com>
+
+ * gst-libs/gst/gl/gstglcontext.c:
+ glcontext: correct precondition for get_gl_version
+ The intention was to assert if both maj and min were NULL (as there would be no
+ point calling the function). Instead if either maj or min were NULL, the assert
+ would occur.
+ Fix that.
+
+2016-06-28 19:26:29 +0300 Sebastian Dröge <sebastian@centricular.com>
+
+ * sys/d3dvideosink/d3dhelpers.c:
+ * sys/d3dvideosink/d3dvideosink.c:
+ d3dvideosink: Replace some more gst_caps_to_string() with GST_PTR_FORMAT
+ https://bugzilla.gnome.org/show_bug.cgi?id=768146
+
+2016-06-28 11:50:59 -0400 Jonathan Roy <jroy@adetelgroup.com>
+
+ * sys/d3dvideosink/d3dvideosink.c:
+ d3dvideosink: leak on caps string
+ https://bugzilla.gnome.org/show_bug.cgi?id=768146
+
+2016-06-28 11:08:22 +0100 Luis de Bethencourt <luisbg@osg.samsung.com>
+
+ * gst-libs/gst/codecparsers/gstjpeg2000sampling.c:
+ jpeg2000parse: fix typo in sampling check
+ Fixing small typo that changes the value of the return.
+
+2016-06-27 21:36:50 -0400 Olivier Crête <olivier.crete@collabora.com>
+
+ * tests/check/Makefile.am:
+ tests: Ignore kmssink for state change test
+ It can only be put to READY if the DRM stuff is available.
+
+2016-06-27 18:15:08 +0800 Haihua Hu <jared.hu@nxp.com>
+
+ * configure.ac:
+ * ext/qt/qtitem.cc:
+ qmlglsink: Fix build error when don't have QPA installed.
+ Check header file existance and wrap the header file include
+ in the necessary #ifdef to avoid build error.
+ https://bugzilla.gnome.org/show_bug.cgi?id=767553
+
+2016-06-24 18:14:06 -0700 Reynaldo H. Verdejo Pinochet <reynaldo@osg.samsung.com>
+
+ * sys/dvb/dvbbasebin.c:
+ dvbbasebin: make sure we have an error in case of parsing failure
+ Drop a redundant comment and rellocate another one while at it.
+
+2016-06-22 16:14:33 -0700 Reynaldo H. Verdejo Pinochet <reynaldo@osg.samsung.com>
+
+ * sys/dvb/parsechannels.c:
+ dvb/parsechannels: implement channels.conf format autodetection
+ Simple autodetection avoids having to call the parsers
+ one after the other.
+
+2016-06-21 16:08:57 -0700 Reynaldo H. Verdejo Pinochet <reynaldo@osg.samsung.com>
+
+ * sys/dvb/parsechannels.c:
+ dvb/parsechannels: rename v5/zap parsers for congruency
+ Add function prototypes while at it.
+
+2016-04-12 21:04:25 -0700 Reynaldo H. Verdejo Pinochet <reynaldo@osg.samsung.com>
+
+ * sys/dvb/parsechannels.c:
+ dvb/parsechannels: fix modulation names
+ Some names were incorrect. Authoritative source for
+ the dvbv5 format taken from v4l-utils' lib/libdvbv5/dvb-v5.c
+ Aditionally, add the missing setter mapping for the
+ modulation param.
+ This change makes ATSC work.
+ https://bugzilla.gnome.org/show_bug.cgi?id=764957
+
+2016-02-24 21:44:40 -0300 Thiago Santos <thiagoss@osg.samsung.com>
+
+ * sys/dvb/parsechannels.c:
+ dvbbasebin: also accept DVBv5 channels.conf format
+ Confirmed working with ISDB-T & ATSC conf files.
+ https://bugzilla.gnome.org/show_bug.cgi?id=764957
+
+2016-06-21 11:48:36 -0700 Reynaldo H. Verdejo Pinochet <reynaldo@osg.samsung.com>
+
+ * sys/dvb/gstdvbsrc.c:
+ dvbsrc: fix ISDB-T property descriptions
+ Drop some stale trailing whitespace while at it.
+
+2016-06-21 11:32:07 -0700 Reynaldo H. Verdejo Pinochet <reynaldo@osg.samsung.com>
+
+ * sys/dvb/gstdvbsrc.c:
+ dvbsrc: fix misplaced space on doc block
+
+2016-05-10 03:32:59 +1000 Jan Schmidt <jan@centricular.com>
+
+ * gst/videoparsers/gsth264parse.c:
+ * gst/videoparsers/gsth264parse.h:
+ h264parse: When input alignment=AU, always drain each packet.
+ If the input alignment claims AU alignment, each received
+ buffer should contain a complete video frame, so never hold over parts
+ of buffers for later processing. Also reduces latency, as packets
+ are parsed/converted and output immediately instead of 1 buffer
+ later.
+ Fixes a problem where an (arguably disallowed) padding byte on the
+ end of a buffer is detected as an extra byte in the following
+ start code, and messes up the timestamping that should apply to
+ that start code.
+
+2016-06-24 13:05:24 +0100 Tim-Philipp Müller <tim@centricular.com>
+
+ * win32/common/libgstcodecparsers.def:
+ win32: update codecparsers .def file for new symbols
+
+2016-06-24 09:41:18 +0100 Tim-Philipp Müller <tim@centricular.com>
+
+ * ext/openjpeg/Makefile.am:
+ * ext/openjpeg/gstopenjpegdec.h:
+ * ext/openjpeg/gstopenjpegenc.c:
+ openjpeg: fix more broken includes
+
+2016-06-24 09:39:00 +0100 Tim-Philipp Müller <tim@centricular.com>
+
+ * gst/videoparsers/gstjpeg2000parse.h:
+ videoparsers: fix broken include
+
+2016-06-21 12:41:46 -0400 Aaron Boxer <boxerab@gmail.com>
+
+ * ext/openjpeg/Makefile.am:
+ * ext/openjpeg/gstopenjpegdec.c:
+ * ext/openjpeg/gstopenjpegdec.h:
+ * ext/openjpeg/gstopenjpegenc.c:
+ * gst-libs/gst/codecparsers/Makefile.am:
+ * gst-libs/gst/codecparsers/gstjpeg2000sampling.c:
+ * gst-libs/gst/codecparsers/gstjpeg2000sampling.h:
+ * gst/videoparsers/Makefile.am:
+ * gst/videoparsers/gstjpeg2000parse.c:
+ * gst/videoparsers/gstjpeg2000parse.h:
+ * gst/videoparsers/gstjpeg2000sampling.h:
+ jpeg2000parse: use enums for colorspace and sampling, rather than strings
+ Also, move gstjpeg2000sampling to codecparsers project
+ https://bugzilla.gnome.org/show_bug.cgi?id=767908
+
+2016-06-24 01:57:13 +0530 Nirbheek Chauhan <nirbheek@centricular.com>
+
+ * configure.ac:
+ configure: Need to add -DGST_STATIC_COMPILATION when building only statically
+ https://bugzilla.gnome.org/show_bug.cgi?id=767463
+
+2016-06-23 15:57:58 +0300 Sebastian Dröge <sebastian@centricular.com>
+
+ * gst-libs/gst/gl/egl/gsteglimage.c:
+ eglimage: Only register debug category if dmabuf support is enabled
+ It's not used otherwise currently and causes compiler warnings.
+
+2016-06-22 22:28:03 -0400 Nicolas Dufresne <nicolas.dufresne@collabora.com>
+
+ * ext/webrtcdsp/gstwebrtcdsp.cpp:
+ webrtcdsp: Offset timestamp with duration
+ The saved timestamp is used to compute the delay of the probe data.
+ As it's used at the following incoming buffer, it needs to be offset
+ with the duration of the buffer to represent the end position. Also,
+ properly initialize the saved timestamp and protect against TIME_NONE.
+
+2016-06-22 21:54:13 -0400 Nicolas Dufresne <nicolas.dufresne@collabora.com>
+
+ * ext/webrtcdsp/gstwebrtcdsp.cpp:
+ webrtcdsp: Synchronize with delays
+ Until now, we were synchronizing both DSP and Probe adapter by
+ waiting and clipping the probe adapter data. This increases the CPU
+ usage, can cause copies if the audio is not 10ms aligned and the worst
+ is that it prevents the processing from compensating for inaccurate
+ latency. This is also a step forward toward supporting playback
+ filters.
+
+2016-06-22 21:45:08 -0400 Nicolas Dufresne <nicolas.dufresne@collabora.com>
+
+ * ext/webrtcdsp/gstwebrtcdsp.cpp:
+ webrtdsp: Remove restriction on channels number
+ Unlike 0.1, in 0.2 the reverse stream can have different number of
+ channels. Remove the check that restrict it.
+
+2016-06-22 21:44:35 -0400 Nicolas Dufresne <nicolas.dufresne@collabora.com>
+
+ * ext/webrtcdsp/gstwebrtcdsp.cpp:
+ webrtcdsp: Style fix
+
+2016-06-16 14:18:18 +1000 Alessandro Decina <alessandro.d@gmail.com>
+
+ * sys/applemedia/vtdec.c:
+ vtdec: minimize renegotiation to make hw decoding more reliable
+ The hardware decoder can become (temporarily) unavailable across
+ VTDecompressionSessionCreate/Destroy calls. During negotiation if the currently
+ configured caps are still accepted by downstream we keep using them so we don't
+ have to destroy and recreate the decoding session.
+ This indirectly fixes https://bugzilla.gnome.org/show_bug.cgi?id=767429, by
+ making vtdec stick to GLMemory.
+
+2016-06-16 15:13:02 +1000 Matthew Waters <matthew@centricular.com>
+
+ * ext/qt/qtitem.cc:
+ * ext/qt/qtplugin.pro:
+ qmlglsink: add win32 support
+ The current state of c++ ABI's on Window's and Gst's/Qt's conflicting
+ mingw builds means that we cannot use mingw for building the qt plugin.
+ Instead, a qmake .pro file is provided that is expected to be used with the
+ msvc binaries provided by Qt like so:
+ (with the PATH environment variable containing the path to the qt biniaries
+ and PKG_CONFIG_PATH containing the path to GStreamer modules)
+ cd /path/to/sources/gst-plugins-bad/ext/qt
+ qmake -tp vc
+ Then open the resulting VS project and build the library. Then
+ cp debug/libgstqtsink.dll /path/to/prefix/lib/gstreamer-1.0/libgstqtsink.cll
+ https://bugzilla.gnome.org/show_bug.cgi?id=761260
+
+2016-06-21 11:40:22 -0400 Nicolas Dufresne <nicolas.dufresne@collabora.com>
+
+ * .gitignore:
+ Add missing file to gitignore
+
+2016-06-20 18:52:00 -0400 Nicolas Dufresne <nicolas.dufresne@collabora.com>
+
+ * docs/plugins/Makefile.am:
+ * docs/plugins/gst-plugins-bad-plugins-docs.sgml:
+ * docs/plugins/gst-plugins-bad-plugins-sections.txt:
+ * docs/plugins/gst-plugins-bad-plugins.args:
+ * docs/plugins/gst-plugins-bad-plugins.hierarchy:
+ * docs/plugins/gst-plugins-bad-plugins.interfaces:
+ * docs/plugins/inspect/plugin-androidcamera.xml:
+ * docs/plugins/inspect/plugin-assrender.xml:
+ * docs/plugins/inspect/plugin-audiofxbad.xml:
+ * docs/plugins/inspect/plugin-bluez.xml:
+ * docs/plugins/inspect/plugin-bs2b.xml:
+ * docs/plugins/inspect/plugin-compositor.xml:
+ * docs/plugins/inspect/plugin-dashdemux.xml:
+ * docs/plugins/inspect/plugin-decklink.xml:
+ * docs/plugins/inspect/plugin-dtls.xml:
+ * docs/plugins/inspect/plugin-dvbsuboverlay.xml:
+ * docs/plugins/inspect/plugin-fbdevsink.xml:
+ * docs/plugins/inspect/plugin-fluidsynthmidi.xml:
+ * docs/plugins/inspect/plugin-freeverb.xml:
+ * docs/plugins/inspect/plugin-frei0r.xml:
+ * docs/plugins/inspect/plugin-gstgtk.xml:
+ * docs/plugins/inspect/plugin-inter.xml:
+ * docs/plugins/inspect/plugin-ivfparse.xml:
+ * docs/plugins/inspect/plugin-ivtc.xml:
+ * docs/plugins/inspect/plugin-jp2kdecimator.xml:
+ * docs/plugins/inspect/plugin-kate.xml:
+ * docs/plugins/inspect/plugin-kms.xml:
+ * docs/plugins/inspect/plugin-ladspa.xml:
+ * docs/plugins/inspect/plugin-midi.xml:
+ * docs/plugins/inspect/plugin-mpegtsdemux.xml:
+ * docs/plugins/inspect/plugin-mxf.xml:
+ * docs/plugins/inspect/plugin-netsim.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-pnm.xml:
+ * docs/plugins/inspect/plugin-qt.xml:
+ * docs/plugins/inspect/plugin-rawparse.xml:
+ * docs/plugins/inspect/plugin-resindvd.xml:
+ * docs/plugins/inspect/plugin-rsvg.xml:
+ * docs/plugins/inspect/plugin-rtponvif.xml:
+ * docs/plugins/inspect/plugin-smoothstreaming.xml:
+ * docs/plugins/inspect/plugin-sndfile.xml:
+ * docs/plugins/inspect/plugin-srtp.xml:
+ * docs/plugins/inspect/plugin-stereo.xml:
+ * docs/plugins/inspect/plugin-teletext.xml:
+ * docs/plugins/inspect/plugin-uvch264.xml:
+ * docs/plugins/inspect/plugin-vcdsrc.xml:
+ * docs/plugins/inspect/plugin-vdpau.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-webp.xml:
+ * docs/plugins/inspect/plugin-webrtcdsp.xml:
+ * docs/plugins/inspect/plugin-wildmidi.xml:
+ * docs/plugins/inspect/plugin-x265.xml:
+ * docs/plugins/inspect/plugin-yadif.xml:
+ * docs/plugins/inspect/plugin-zbar.xml:
+ * gst/pnm/gstpnmenc.c:
+ doc: Automatic update
+ This is an automatic update with manual merges of running
+ "make update" in the doc/plugins directory. This should help
+ later maintenance of the plugins doc. A lot of plugin are
+ not referenced yet in the doc. Will come later.
+
+2016-06-20 16:30:19 -0400 Nicolas Dufresne <nicolas.dufresne@collabora.com>
+
+ * docs/plugins/Makefile.am:
+ doc: Add .cpp files to doc parser
+ Also, complete the list of directory that need to be visited.
+
+2016-06-06 15:10:05 -0400 Nicolas Dufresne <nicolas.dufresne@collabora.com>
+
+ * configure.ac:
+ * ext/Makefile.am:
+ * ext/webrtcdsp/Makefile.am:
+ * ext/webrtcdsp/gstwebrtcdsp.cpp:
+ * ext/webrtcdsp/gstwebrtcdsp.h:
+ * ext/webrtcdsp/gstwebrtcechoprobe.cpp:
+ * ext/webrtcdsp/gstwebrtcechoprobe.h:
+ webrtcdsp: Add WebRTC Audio Processing support
+ This DSP library can be used to enhance voice signal for real time
+ communication call. In implements multiple filters like noise reduction,
+ high pass filter, echo cancellation, automatic gain control, etc.
+ The webrtcdsp element can be used along, or with the help of the
+ webrtcechoprobe if echo cancellation is enabled. The echo probe should
+ be placed as close as possible to the audio sink, while the DSP is
+ generally place close to the audio capture. For local testing, one can
+ use an echo loop pipeline like the following:
+ autoaudiosrc ! webrtcdsp ! webrtcechoprobe ! autoaudiosink
+ This pipeline should produce a single echo rather then repeated echo.
+ Those elements works if they are placed in the same top level pipeline.
+ https://bugzilla.gnome.org/show_bug.cgi?id=767800
+
+2016-06-21 11:46:44 -0400 Nicolas Dufresne <nicolas.dufresne@collabora.com>
+
+ * common:
+ Automatic update of common submodule
+ From ac2f647 to f363b32
+
+2016-03-22 16:51:53 +0800 Wang Xin-yu (王昕宇) <comicfans44@gmail.com>
+
+ * gst-libs/gst/gl/win32/gstglcontext_wgl.c:
+ glcontext/wgl: try wglCreateContextAttribsARB even not gl3 core profile
+ https://bugzilla.gnome.org/show_bug.cgi?id=764018
+
+2016-06-21 18:28:46 +1000 Matthew Waters <matthew@centricular.com>
+
+ * gst-libs/gst/gl/gstglcontext.c:
+ glcontext: fix get_current_gl_api() on win32
+ Another case of incorrect calling conventions.
+ Using this function on win32 would corrupt the stack pointer and end in
+ massive hilarity.
+
+2016-06-15 12:47:05 +1000 Matthew Waters <matthew@centricular.com>
+
+ * gst-libs/gst/gl/gstglcolorconvert.c:
+ * gst-libs/gst/gl/gstglsl.c:
+ * gst-libs/gst/gl/gstglsl_private.h:
+ * gst-libs/gst/gl/gstglviewconvert.c:
+ glsl: fixup external-oes shaders by mangling the required extension
+ Newer devices require using a different GLSL extension for accessing
+ external-oes textures in a shader using the texture() functions.
+ While the GL_OES_EGL_image_external_essl3 should supposedly be supported
+ on a any GLES3 android device, the extension was defined after a lot of the
+ older drivers were built so they will not know about it. Thus there are two
+ possible interpretations of which of texture[2D]() should be supported for
+ external-oes textures. Strict adherence to the GL_OES_EGL_image_external
+ extension spec which uses texture2D() or following GLES3's pattern, also
+ allowing texture() as a function for accessing external-oes textures
+ This adds another mangling pass to convert
+ #extension GL_OES_EGL_image_external : ...
+ into
+ #extension GL_OES_EGL_image_external_essl3 : ...
+ on GLES3 and when the GL_OES_EGL_image_external_essl3 extension is supported.
+ Only uses texture() when the GLES3 and the GL_OES_EGL_image_external_essl3
+ extension is supported for external-oes textures.
+ Uses GLES2 + texture2D() + GL_OES_EGL_image_external in all other external-oes
+ cases.
+ https://bugzilla.gnome.org/show_bug.cgi?id=766993
+
+2016-05-24 16:26:24 +0530 Nirbheek Chauhan <nirbheek@centricular.com>
+
+ * sys/winks/ksdeviceprovider.c:
+ * sys/winks/kshelpers.c:
+ * sys/winks/kshelpers.h:
+ winks: Port to MSVC and pretend to be Windows XP
+ strcasecmp is not defined on MSVC, so just use the glib wrapper. Also pretend to
+ be Windows XP explicitly since the API we use was deprecated and removed
+ (ifdef-ed) from the SDK after this version of Windows. This will be especially
+ relevant once we stop supporting Windows XP soon:
+ https://bugzilla.gnome.org/show_bug.cgi?id=756866
+
+2016-03-02 02:17:54 +0530 Nirbheek Chauhan <nirbheek@centricular.com>
+
+ * win32/common/libgstadaptivedemux.def:
+ * win32/common/libgstbadaudio.def:
+ * win32/common/libgstbadbase.def:
+ * win32/common/libgstbadvideo.def:
+ * win32/common/libgstbasecamerabinsrc.def:
+ * win32/common/libgstinsertbin.def:
+ * win32/common/libgstmpegts.def:
+ * win32/common/libgsturidownloader.def:
+ win32: Add missing def files for libraries
+
+2016-03-02 00:55:15 +0530 Nirbheek Chauhan <nirbheek@centricular.com>
+
+ * gst/audiovisualizers/gstspacescope.c:
+ * gst/audiovisualizers/gstspectrascope.c:
+ * gst/audiovisualizers/gstsynaescope.c:
+ * gst/audiovisualizers/gstwavescope.c:
+ build: Factor out endian-order RGB formats
+ MSVC seems to ignore preprocessor conditionals inside static pad templates
+
+2016-06-13 22:29:39 -0400 Aaron Boxer <boxerab@gmail.com>
+
+ * ext/openjpeg/gstopenjpegdec.c:
+ * ext/openjpeg/gstopenjpegdec.h:
+ openjpegdec: use sampling field to determine RGB channel
+ https://bugzilla.gnome.org/show_bug.cgi?id=767402
+
+2016-06-02 13:53:38 +0200 Guillaume Desmottes <guillaume.desmottes@collabora.co.uk>
+
+ * tests/check/elements/templatematch.c:
+ templatematch: fix buffer leak in test
+ Need to call gst_check_drop_buffers() to unref the buffers exchanged
+ during the test.
+ https://bugzilla.gnome.org/show_bug.cgi?id=767159
+
+2016-05-19 13:31:56 +0300 Guillaume Desmottes <guillaume.desmottes@collabora.co.uk>
+
+ * tests/check/elements/glimagesink.c:
+ glimagesink: fix query leak in test
+ https://bugzilla.gnome.org/show_bug.cgi?id=766663
+
+2016-05-19 13:29:15 +0300 Guillaume Desmottes <guillaume.desmottes@collabora.co.uk>
+
+ * tests/check/elements/glimagesink.c:
+ glimagesink: properly setup/teardown tests
+ tcase_add_checked_fixture() is suppose to call the setup and teardown
+ functions so the tests don't have to do it manually.
+ https://bugzilla.gnome.org/show_bug.cgi?id=766663
+
+2016-05-19 13:09:41 +0300 Guillaume Desmottes <guillaume.desmottes@collabora.co.uk>
+
+ * tests/check/libs/gstglupload.c:
+ glupload: fix shader leak in test
+ https://bugzilla.gnome.org/show_bug.cgi?id=766663
+
+2016-05-19 12:51:17 +0300 Guillaume Desmottes <guillaume.desmottes@collabora.co.uk>
+
+ * tests/check/elements/uvch264demux.c:
+ uvch264demux: fix buffer leaks in test
+ The mock chain functions aren't unreffing the buffers so the caller
+ should do it.
+ https://bugzilla.gnome.org/show_bug.cgi?id=766663
+
+2016-05-19 12:36:42 +0300 Guillaume Desmottes <guillaume.desmottes@collabora.co.uk>
+
+ * tests/check/elements/camerabin.c:
+ camerabin: fix element leak in test
+ https://bugzilla.gnome.org/show_bug.cgi?id=766663
+
+2016-05-19 11:19:57 +0300 Guillaume Desmottes <guillaume.desmottes@collabora.co.uk>
+
+ * tests/check/elements/autoconvert.c:
+ fix buffer leaks in tests
+ gst_check_drop_buffers() release the buffers exchanged during the test.
+ https://bugzilla.gnome.org/show_bug.cgi?id=766663
+
+2016-05-19 11:19:20 +0300 Guillaume Desmottes <guillaume.desmottes@collabora.co.uk>
+
+ * tests/check/elements/audiomixer.c:
+ * tests/check/elements/compositor.c:
+ fix event leaks in tests
+ The events are supposed to be unreffed when finishing the test, not
+ reffed.
+ https://bugzilla.gnome.org/show_bug.cgi?id=766663
+
+2016-05-19 11:19:01 +0300 Guillaume Desmottes <guillaume.desmottes@collabora.co.uk>
+
+ * tests/check/elements/audiointerleave.c:
+ audiointerleave: fix message leaks by flushing the bus
+ https://bugzilla.gnome.org/show_bug.cgi?id=766663
+
+2016-05-19 11:16:37 +0300 Guillaume Desmottes <guillaume.desmottes@collabora.co.uk>
+
+ * gst-libs/gst/audio/gstaudioaggregator.c:
+ audioaggregator: fix buffer leak
+ If the pad was still owning a buffer when being destroyed it was leaked.
+ Fix a leak with the test_flush_start_flush_stop test.
+ https://bugzilla.gnome.org/show_bug.cgi?id=766663
+
+2016-05-18 16:58:44 +0300 Guillaume Desmottes <guillaume.desmottes@collabora.co.uk>
+
+ * tests/check/elements/autoconvert.c:
+ autoconvert: fix factories leak in test
+ The factories returned by gst_registry_find_feature() have to be
+ unreffed.
+ https://bugzilla.gnome.org/show_bug.cgi?id=766663
+
+2016-06-17 14:58:44 +0200 Michael Olbrich <m.olbrich@pengutronix.de>
+
+ * gst-libs/gst/codecparsers/gsth264parser.c:
+ h264parse: fix default time_offset_length
+ The default value for time_offset_length should be 24, see
+ section E2.2 of the H264 spec.
+ https://bugzilla.gnome.org/show_bug.cgi?id=767792
+
+2016-06-17 14:31:42 +0200 Joan Pau Beltran <joanpau.beltran@socib.cat>
+
+ * ext/dc1394/gstdc1394src.c:
+ dc1394src: check for disabled transmission in _stop_cam
+ For symetry with _start_cam, check that the transmission
+ is effectively disabled in _stop_cam.
+ https://bugzilla.gnome.org/show_bug.cgi?id=763026
+
+2016-06-17 15:32:08 -0700 Reynaldo H. Verdejo Pinochet <reynaldo@osg.samsung.com>
+
+ * sys/dvb/gstdvbsrc.c:
+ dvbsrc: do not rely on temp var for fail detection
+ Use errno instead as local var might be overwritten
+ before the check.
+
+2016-06-14 15:29:08 -0700 Reynaldo H. Verdejo Pinochet <reynaldo@osg.samsung.com>
+
+ * sys/dvb/gstdvbsrc.c:
+ dvbsrc: rework set_pids()
+ - Reflow to avoid unneeded nesting
+ - Free aux pids array earlier
+ - Adjust debug output to deliver more meaningful information
+
+2016-06-14 14:24:35 -0700 Reynaldo H. Verdejo Pinochet <reynaldo@osg.samsung.com>
+
+ * sys/dvb/gstdvbsrc.c:
+ dvbsrc: drop pointless debug msg
+
+2016-06-09 16:05:39 -0700 Reynaldo H. Verdejo Pinochet <reynaldo@osg.samsung.com>
+
+ * gst-libs/gst/codecparsers/gsth264parser.h:
+ * gst-libs/gst/codecparsers/gsth265parser.h:
+ * gst-libs/gst/codecparsers/gstmpeg4parser.c:
+ * gst-libs/gst/codecparsers/gstmpegvideoparser.c:
+ * gst-libs/gst/codecparsers/gstmpegvideoparser.h:
+ * gst-libs/gst/codecparsers/gstvc1parser.c:
+ codecparsers: drop all otherwizes
+
+2016-06-12 13:53:18 -0400 Aaron Boxer <boxerab@gmail.com>
+
+ * gst/videoparsers/gstjpeg2000parse.c:
+ * gst/videoparsers/gstjpeg2000parse.h:
+ jpeg2000parse: support j2c format
+ https://bugzilla.gnome.org/show_bug.cgi?id=767512
+
+2016-06-16 01:54:16 +1000 Matthew Waters <matthew@centricular.com>
+
+ * tests/check/Makefile.am:
+ tests/glcontext: link against gstvideo for gst_video_info_*
+ fixes make distcheck complaining about it.
+
+2016-04-14 18:14:32 +0300 Sergey Borovkov <sergey.borovkov@wireload.net>
+
+ * configure.ac:
+ * ext/qt/qtitem.cc:
+ * gst-libs/gst/gl/egl/gstegl.h:
+ qml: Enable qmlglsink for eglfs
+ https://bugzilla.gnome.org/show_bug.cgi?id=763044
+
+2016-06-16 00:44:48 +1000 Matthew Waters <matthew@centricular.com>
+
+ * ext/qt/qtitem.cc:
+ qmlglsink: propagate GL context creation failure upwards
+ Otherwise an application cannot know if the qmlglsink will be displaying frames
+ incorrectly/at all.
+
+2016-06-16 00:44:16 +1000 Matthew Waters <matthew@centricular.com>
+
+ * ext/qt/qtitem.cc:
+ qmlglsink: also allow wayland-egl as a platform name
+
+2016-06-12 15:35:28 +0800 Haihua Hu <jared.hu@nxp.com>
+
+ * configure.ac:
+ * ext/qt/Makefile.am:
+ * ext/qt/qtitem.cc:
+ qmlglsink: Add Wayland support
+ Don't use gstgldisplay to get wayland display. Should use QPA on wayland
+ to get wayland display for QT.
+ https://bugzilla.gnome.org/show_bug.cgi?id=767553
+
+2016-06-16 00:46:57 +1000 Matthew Waters <matthew@centricular.com>
+
+ * tests/check/libs/gstglcontext.c:
+ tests/glcontext: update test for gen,del_texture removal
+
+2016-06-14 22:12:18 +0200 Stefan Sauer <ensonic@users.sf.net>
+
+ * ext/ladspa/gstladspa.c:
+ ladspa: simplify registry cache structure creation
+ Create and fill structure in one go.
+
+2016-06-14 13:48:09 +0800 Haihua Hu <jared.hu@nxp.com>
+
+ * ext/gl/effects/gstgleffectssources.c:
+ gleffects: fix little rectangle that appears at the center of squeeze and tunnel effects
+ These two shader will calculate the vector length and use it as denominator.
+ But length could be zero which will cause undefine behaviour. Add protection for
+ this condition
+ https://bugzilla.gnome.org/show_bug.cgi?id=767635
+
+2016-06-15 18:10:59 +1000 Matthew Waters <matthew@centricular.com>
+
+ * gst-libs/gst/gl/gstglsl.c:
+ glsl: add some debugging
+
+2016-06-15 16:08:57 +1000 Matthew Waters <matthew@centricular.com>
+
+ * gst-libs/gst/gl/gstglutils.c:
+ * gst-libs/gst/gl/gstglutils.h:
+ glutils: remove unused functions for texture creation/deletion
+ Everyone uses GstGLMemory now and any future code should as well.
+
+2016-06-15 15:47:47 +1000 Matthew Waters <matthew@centricular.com>
+
+ * gst-libs/gst/gl/gstglfilter.h:
+ glfilter: remove unused class fields in/out_tex_id
+ The functionality is not used by any subclass nor are the values set anywhere.
+
+2016-06-15 15:08:39 +1000 Matthew Waters <matthew@centricular.com>
+
+ * ext/gl/gstgldeinterlace.c:
+ gldeinterlace: remove dead code accessing filter->in_tex_id
+ It's not set by anyone or anything and gldeinterlace is the only user of it now.
+
+2016-06-15 14:40:40 +1000 Matthew Waters <matthew@centricular.com>
+
+ * gst-libs/gst/gl/gstglupload.c:
+ gl/upload/meta: remove unneeded texture deletion
+ The textures are managed by the GstGLMemory inside the output buffer. Freeing
+ them prematurely may result in a use-after-free.
+
+2016-05-30 14:10:23 +0200 Aleix Conchillo Flaqué <aleix@oblong.com>
+
+ * ext/srtp/gstsrtpenc.c:
+ * ext/srtp/gstsrtpenc.h:
+ srtpenc: remove get-rollover-counter signal and add stats property
+ We remove get-rollover-counter signal in favor of the "stats"
+ property. The "stats" property is a GstStructure with caps
+ application/x-srtp-encoder-stats that contains an array of
+ structures with caps application/x-srtp-stream.
+ Each stream structure contains "ssrc" and "roc" fields.
+ https://bugzilla.gnome.org/show_bug.cgi?id=733265
+
+2016-05-25 12:55:36 +0200 Mats Lindestam <matslm@axis.com>
+
+ * gst/videoparsers/gsth264parse.c:
+ h264parse: support for handling of config-interval = -1
+ Added support for handling of config-interval = -1.
+ config-inteval = -1 represents resending SPS and PPS for each
+ I-/IDR-frame.
+ https://bugzilla.gnome.org/show_bug.cgi?id=766803
+
+2016-05-25 12:45:17 +0200 Mats Lindestam <matslm@axis.com>
+
+ * gst/videoparsers/gsth264parse.c:
+ h264parse: refactored handling of SPS/PPS when pushing frames
+ https://bugzilla.gnome.org/show_bug.cgi?id=766803
+
+2016-05-25 11:54:55 +0200 Mats Lindestam <matslm@axis.com>
+
+ * gst/videoparsers/gsth264parse.c:
+ * gst/videoparsers/gsth264parse.h:
+ h264parse: change "config-interval" property type from uint to int
+ So we can use -1 as special value like in rtph264pay.
+ https://bugzilla.gnome.org/show_bug.cgi?id=766803
+
+2016-06-13 09:20:22 +0300 Sebastian Dröge <sebastian@centricular.com>
+
+ * sys/applemedia/avfassetsrc.m:
+ avfassetsrc: Don't escape the URI before passing it to NSURL
+ The URI must already be escaped by the caller, we don't support passing around
+ invalid (unescaped) URIs via the GstURIHandler interface.
+ Also it will escape too much of the URI in this case, e.g.
+ ipod-library://item/item.m4a?id=3143338395173862951
+ becomes
+ ipod-library://item/item.m4a%3Fid%3D3143338395173862951
+ https://bugzilla.gnome.org/show_bug.cgi?id=767492
+
+2016-06-13 09:20:02 +0300 Sebastian Dröge <sebastian@centricular.com>
+
+ * sys/applemedia/iosassetsrc.m:
+ iosassetsrc: Print the correct URI if it was rejected
+ We were printing the previously set URI instead of the new one.
+
+2016-06-09 01:20:36 +0200 Sebastian Rasmussen <sebrn@axis.com>
+
+ * ext/curl/gstcurlsmtpsink.c:
+ curlsmtpsink: Lock and don't send final boundary upon error
+ Previously GstCurlSmtpSink could cause the pipeline thread to end up
+ waiting for a stopped thread to perform work.
+ The scenario was that the sink could be rendering a buffer and waiting
+ for the curl transfer thread to have sent the data. As soon as the
+ transfer thread has copied all data to curl's data buffer in
+ gst_curl_base_sink_transfer_read_cb() then the render call would stop
+ waiting and return GST_FLOW_OK. While this takes place the transfer
+ thread may suffer from an error e.g. due gst_poll_wait() timing out.
+ This causes the transfer thread to record the error, claim (it is not
+ really true since there was an error) that the data has been sent and
+ that a response has been received by trying to signal the pipeline
+ thread (but this has already stopped waiting). Finally the transfer
+ thread stops itself. A short while later the pipeline thread may attempt
+ to push an EOS event into GstCurlSmtpSink. Since there is no check in
+ gst_curl_smtp_sink_event() to check if the sink has suffered from any
+ error it may attempt to add a final boundary and ask the, now deceased,
+ transfer thread to transfer the new data. Next the sink element would
+ have waited for the transfer to complete (using a different mechanism
+ than normal transfers through GstCurlBaseSink). In this case there was
+ an error check to avoid waiting if an error had already been seen.
+ Finally GstCurlSmtpSink would chain up to GstCurlBaseSink which would
+ then block waiting for a response (normally this would be prevented by
+ the transfer thread suffering the error claiming that it had been
+ received, but GstCurlSmtpSink clobbered this flag after the fact).
+ Now GstCurlSmtpSink avoids this by locking over the entire event handing
+ (preventing simultaneous changes to flags by the two threads) and also
+ by avoiding to initiate transfer of final boundary if an error has
+ already been seen.
+ Also add GST_FIXME() for remaining similar issue where the pipeline
+ thread may block indefinitely waiting for transfer thread to transfer
+ data but the transfer thread errors out and fails to notify the pipeline
+ thread that the transfer failed.
+ https://bugzilla.gnome.org/show_bug.cgi?id=767501
+
+2016-06-08 11:32:28 -0400 Aaron Boxer <boxerab@gmail.com>
+
+ * gst/videoparsers/gstjpeg2000parse.c:
+ * gst/videoparsers/gstjpeg2000parse.h:
+ * gst/videoparsers/gstjpeg2000sampling.h:
+ jpeg2000parse: Require either colorspace or sampling field in sink caps
+ And always set the sampling field on the src caps, if necessary guessing a
+ correct value for it from the colorspace field.
+ Also, did some cleanup: removed sampling enum - redundant.
+ https://bugzilla.gnome.org/show_bug.cgi?id=766236
+
+2016-06-10 11:32:46 +0300 Heinrich Fink <hfink@toolsonair.com>
+
+ * ext/opencv/gstfacedetect.cpp:
+ facedetect: Fix compiler warning with clang 3.8
+ Use namespace only after it was actually defined by a header.
+ gstfacedetect.cpp:79:17: error: using directive refers to implicitly-defined namespace 'std' [-Werror]
+ using namespace std;
+ ^
+
+2016-06-06 16:35:15 -0700 Reynaldo H. Verdejo Pinochet <reynaldo@osg.samsung.com>
+
+ * sys/dvb/gstdvbsrc.c:
+ dvbsrc: unify exit paths on _start()
+
+2016-06-06 15:31:31 -0700 Reynaldo H. Verdejo Pinochet <reynaldo@osg.samsung.com>
+
+ * sys/dvb/gstdvbsrc.c:
+ dvbsrc: use proper acronym for PID (Packet Identifier)
+ Drop formatting tab from message while at it.
+
+2016-06-06 12:25:22 -0700 Reynaldo H. Verdejo Pinochet <reynaldo@osg.samsung.com>
+
+ * sys/dvb/gstdvbsrc.c:
+ dvbsrc: set common PES filter params once and reuse
+ Avoid setting the same harcoded values over and over again.
+
+2016-06-09 22:01:45 +0100 Tim-Philipp Müller <tim@centricular.com>
+
+ * ext/dc1394/gstdc1394src.c:
+ dc1394src: minor clean-up
+ We always call _parse_caps() with non-NULL out vars.
+
+2016-06-09 22:01:13 +0100 Tim-Philipp Müller <tim@centricular.com>
+
+ * ext/dc1394/gstdc1394src.c:
+ dc1394src: fix some more c99-isms
+
+2016-06-09 21:47:05 +0100 Tim-Philipp Müller <tim@centricular.com>
+
+ * docs/plugins/Makefile.am:
+ docs: fix for renamed dc1394 source file
+ https://bugzilla.gnome.org/show_bug.cgi?id=763026
+
+2016-06-07 15:50:50 +0200 Joan Pau Beltran <joanpau.beltran@socib.cat>
+
+ * ext/dc1394/Makefile.am:
+ * ext/dc1394/gstdc1394.c:
+ * ext/dc1394/gstdc1394.h:
+ * ext/dc1394/gstdc1394src.c:
+ * ext/dc1394/gstdc1394src.h:
+ dc1394src: prefix and file names according to Gstreamer conventions
+ Replace the type and function prefix to follow the conventions:
+ - Use `GST_TYPE_DC1394_SRC` instead of `GST_TYPE_DC1394`.
+ - Use `GstDC1394Src` and `GstDC1394SrcClass` instead of
+ `GstDc1394` and `GstDc1394Class`.
+ - Use `gst_dc1394_src` instead of `gst_dc1394`.
+ https://bugzilla.gnome.org/show_bug.cgi?id=763026
+
+2016-05-10 18:30:35 +0200 Joan Pau Beltran <joanpau.beltran@socib.cat>
+
+ * configure.ac:
+ * ext/dc1394/Makefile.am:
+ * ext/dc1394/gstdc1394.c:
+ * ext/dc1394/gstdc1394.h:
+ dc1394src: port to 1.X
+ The dc1394src is a PushSrc element for IIDC cameras based on libdc1394.
+ The implementation from the 0.x series is deffective:
+ caps negotiation does not work, and some video formats
+ provided by the camera are not supported.
+ Refactor the code to port it to 1.X and enhance the support
+ for the full set of video options of IIDC cameras:
+ - The IIDC specification includes a set of camera video modes
+ (video format, frame size, and frame rates).
+ They do not map perfectly to Gstreamer formats, but those that
+ do not match are very rare (if used at all by any camera).
+ In addition, although the specification includes a raw format,
+ some cameras use mono video formats to capture in Bayer format.
+ Map corresponding video modes to Gstreamer formats in capabilities,
+ allowing both gray raw and Bayer video formats for mono video modes.
+ - The specification includes scalable video modes (Format7),
+ where the frame size and rate can be set to arbitrary values
+ (within the limits of the camera and the bus transport).
+ Allow the use of such mode, using the frame size and rate
+ from the negotiatied caps, and set the camera frame rate
+ adjusting the packet size as in:
+ <http://damien.douxchamps.net/ieee1394/libdc1394/faq/#How_do_I_set_the_frame_rate>
+ The scalable modes also allow for a custom ROI offset.
+ Support for it can be easily added later using properties.
+ - Camera operation using libdc1394 is as follows:
+ 1. Enumerate cameras on the system and open the camera
+ identified the enumeration index or by a GUID (64bit hex code).
+ 2. Query the video formats supported by the camera.
+ 3. Configure the camera for the desired video format.
+ 4. Setup the capture resources for the configured video format
+ and start the camera transmission.
+ 5. Capture frames from the camera and release them when not used.
+ 6. Stop the camera transmission and clear the capture resources.
+ 7. Close the camera freeing its resources.
+ Do steps 2 and 3 when getting and setting the caps respectively.
+ Ideally 4 and 6 would be done when going from PAUSED to PLAYING
+ and viceversa, but since caps might not be set yet, the video mode
+ is not properly configured leaving the camera in a broken state.
+ Hence, setup capture and start transmission in the set caps method,
+ and consequently clear the capture and stop the transmission
+ when going from PAUSED to READY (instead of PLAYING to PAUSED).
+ Symmetrycally, open the camera when going from READY to PAUSED,
+ allowing to probe the camera caps in the negotiation stage.
+ Implement that using the `start` and `stop` methods of `GstBaseSrc`,
+ instead of the `change-state` method of `GstElement`.
+ Stop the camera before setting new caps and restarting it again
+ to handle caps reconfiguration while in PLAYING (it has no effect
+ if the camera is not started).
+ - Create buffers copying the bytes of the captured frames.
+ Alternatively, the buffers could just wrap the bytes of the frames,
+ releasing the frame in the buffer's destroy notify function,
+ if all buffers were destroyed before going from PLAYING to PAUSED.
+ - No timestamp nor offset is set when creating buffers.
+ Timestamping is delegated to the parent class BaseSrc,
+ setting `gst_base_src_set_live` TRUE, `gst_base_src_set_format`
+ with GST_FORMAT_TIME and `gst_base_src_set_do_timestamp`.
+ Captured frames have a timestamp field with the system time
+ at the completion of the transmission of the frame,
+ but it is not sure that this comes from a monotonic clock,
+ and it seems to be left NULL in Windows.
+ - Use GUID and unit properties to select the camera to operate on.
+ The camera number used in version 0.X does not uniquely identify
+ the device (it depends on the set of cameras currently detected).
+ Since the GUID is 64bit identifier (same as MAC address),
+ handle it with a string property with its hexadecimal representation.
+ For practicality, operate on the first camera available if the GUID
+ is null (default) and match any camera unit number if unit is -1.
+ Alternatively, the GUID could be handed with an unsigned 64 bit
+ integer type property, using `0xffffffffffffffff` as default value
+ to select the first camera available (it is not a valid GUID value).
+ - Keep name `GstDc1394` and prefix `gst_dc1394` as in version 0.X,
+ although `GstDC1394Src` and `gst_dc1394_src` are more descriptive.
+ - Adjust build files to reenable the compilation of the plugin.
+ Remove dc1394 from the list of unported plugins in configure.ac.
+ Add the missing flags and libraries to Makefile.
+ Use `$()` for variable substitution, as many plugins do,
+ although other plugins use `@@` instead.
+ https://bugzilla.gnome.org/show_bug.cgi?id=763026
+
+2016-06-08 18:02:32 +0200 Edward Hervey <edward@centricular.com>
+
+ * gst-libs/gst/adaptivedemux/gstadaptivedemux.c:
+ adaptivedemux: Move SEEK handling to a separate function
+ Just for code readability. Doesn't change behaviour
+
+2016-06-07 21:10:04 -0400 Nicolas Dufresne <nicolas.dufresne@collabora.com>
+
+ * ext/webp/gstwebpdec.c:
+ webpdec: Wait for segment event before checking it
+ The heuristic to choose between packetise or not was changed to use the
+ segment format. The problem is that this change is reading the segment
+ during the caps event handling. The segment event will only be sent
+ after. That prevented the decoder to go in packetize mode, and avoid
+ useless parsing.
+ https://bugzilla.gnome.org/show_bug.cgi?id=736252
+
+2016-06-07 21:04:21 -0400 Nicolas Dufresne <nicolas.dufresne@collabora.com>
+
+ * gst/vmnc/vmncdec.c:
+ vmncdec: Wait for segment event before checking it
+ The heuristic to choose between packetise or not was changed to use the
+ segment format. The problem is that this change is reading the segment
+ during the caps event handling. The segment event will only be sent
+ after. That prevented the decoder to go in packetize mode, and avoid
+ useless parsing.
+ https://bugzilla.gnome.org/show_bug.cgi?id=736252
+
+2016-06-07 14:15:41 +0100 Tim-Philipp Müller <tim@centricular.com>
+
+ * ext/openjpeg/gstopenjpegenc.c:
+ openjpeg: fix builddir != srcdir build, and distcheck
+
+2016-06-01 19:02:33 -0400 Aaron Boxer <boxerab@gmail.com>
+
+ * docs/plugins/gst-plugins-bad-plugins.hierarchy:
+ * docs/plugins/inspect/plugin-videoparsersbad.xml:
+ * gst/videoparsers/Makefile.am:
+ * gst/videoparsers/gstjpeg2000parse.c:
+ * gst/videoparsers/gstjpeg2000parse.h:
+ * gst/videoparsers/gstjpeg2000sampling.h:
+ * gst/videoparsers/plugin.c:
+ jpeg2000parse: Add JPEG2000 parser element
+ https://bugzilla.gnome.org/show_bug.cgi?id=766236
+
+2016-06-01 19:01:44 -0400 Aaron Boxer <boxerab@gmail.com>
+
+ * ext/openjpeg/gstopenjpegenc.c:
+ * gst/videoparsers/Makefile.am:
+ * gst/videoparsers/gstjpeg2000sampling.h:
+ openjpeg: set sampling in the caps
+ https://bugzilla.gnome.org/show_bug.cgi?id=766236
+
+2016-05-02 17:38:50 +0200 Jan Alexander Steffens (heftig) <jan.steffens@gmail.com>
+
+ * gst/mpegtsmux/mpegtsmux.c:
+ mpegtsmux: Set PTS on aligned buffers
+ This was broken in 09c05df (make "alignment" property more useful for
+ packetisation).
+ https://bugzilla.gnome.org/show_bug.cgi?id=765926
+
+2016-06-07 17:22:01 +1000 Alessandro Decina <alessandro.d@gmail.com>
+
+ * sys/applemedia/vtdec.c:
+ vtdec: always drain in ::negotiate
+ Move calling gst_vtdec_push_frames_if_needed from ::set_format to ::negotiate so
+ that we always drain even when renegotiation is triggered by downstream.
+
+2016-06-07 16:00:01 +1000 Alessandro Decina <alessandro.d@gmail.com>
+
+ * sys/applemedia/vtdec.c:
+ vtdec: try to preserve downstream caps order
+ vtdec specifies sysmem; GLMemory as template caps. When negotiating, we used to
+ call gst_pad_peer_query_caps (..., filter) with our template caps as filter. The
+ query does gst_caps_intersect (filter, peercaps) internally which gives
+ precedence to the order of the filter caps. While we want to output sysmem by
+ default, when negotiating with glimagesink which returns GLMemory; sysmem; we
+ do want to do GL, so we now query using a NULL filter and intersect the result
+ with our template caps giving precedence to downstream's caps.
+ tl;dr: make sure we end up negotiating GLMemory with glimagesink
+
+2016-06-06 14:08:43 -0400 Xavier Claessens <xavier.claessens@collabora.com>
+
+ * sys/androidmedia/gstahcsrc.c:
+ ahcsrc: Avoid a div by 0 warning
+ https://bugzilla.gnome.org/show_bug.cgi?id=767302
+
+2016-06-06 12:38:45 -0400 Xavier Claessens <xavier.claessens@collabora.com>
+
+ * sys/androidmedia/gstamcvideoenc.c:
+ amcvideoenc: Do not call gst_object_unref on GstCaps
+ https://bugzilla.gnome.org/show_bug.cgi?id=767298
+
+2016-05-19 11:16:50 +0200 Edward Hervey <edward@centricular.com>
+
+ * gst-libs/gst/adaptivedemux/gstadaptivedemux.c:
+ adaptivedemux: Set DISCONT on startup, resume and after seeks
+ Initial buffers after STREAM_START and seeks should always have the
+ DISCONT flag set.
+ https://bugzilla.gnome.org/show_bug.cgi?id=766650
+
+2015-09-23 02:51:57 +1000 Jan Schmidt <jan@centricular.com>
+
+ * gst/mpegtsdemux/tsdemux.c:
+ * gst/mpegtsdemux/tsdemux.h:
+ tsdemux: Change the pad naming scheme to include a generation ID
+ A simple fix for the problem of creating new pads with duplicate
+ names when switching program, easier than the alternative of
+ trying to work out which pads might persist and manage that.
+ See https://bugzilla.gnome.org/show_bug.cgi?id=758454
+
+2016-06-06 11:13:00 +0300 Sebastian Dröge <sebastian@centricular.com>
+
+ * gst-libs/gst/player/gstplayer.c:
+ player: pause() should not inhibit signals but work exactly like play()
+ https://bugzilla.gnome.org/show_bug.cgi?id=766607#c23
+
+2016-06-03 15:58:52 -0700 Reynaldo H. Verdejo Pinochet <reynaldo@osg.samsung.com>
+
+ * sys/dvb/gstdvbsrc.c:
+ dvbsrc: improve description of PIDs property
+
+2016-06-03 07:11:33 +0200 Edward Hervey <bilboed@bilboed.com>
+
+ * sys/applemedia/Makefile.am:
+ applemedia: Only use the OpenGL framework on OSX
+ It's not available on ios (uses OpenGLES already)
+ https://bugzilla.gnome.org/show_bug.cgi?id=766973
+
+2016-05-17 17:14:49 +0300 Guillaume Desmottes <guillaume.desmottes@collabora.co.uk>
+
+ * gst-libs/gst/gl/egl/gstglmemoryegl.c:
+ * gst-libs/gst/gl/gstglbuffer.c:
+ * gst-libs/gst/gl/gstglmemorypbo.c:
+ * gst-libs/gst/video/gstvideoaggregator.c:
+ gst-libs: gl, video: use MAY_BE_LEAKED flag
+ https://bugzilla.gnome.org/show_bug.cgi?id=767162
+
+2016-05-18 12:48:48 +0300 Guillaume Desmottes <guillaume.desmottes@collabora.co.uk>
+
+ * sys/bluez/gsta2dpsink.c:
+ a2dpsink: unref avdtpsink if state transition failed
+ If for some reason the avdtpsink element can't go READY then the
+ gsta2dpsink can't either and so should release the ressources it
+ allocates when trying to do so.
+ Fix a leak with the generic/states test.
+ https://bugzilla.gnome.org/show_bug.cgi?id=767161
+
+2016-05-28 21:34:52 +0200 Havard Graff <havard.graff@gmail.com>
+
+ * sys/applemedia/Makefile.am:
+ applemedia: CGLTexImageIOSurface2D needs the OpenGL framework on OSX
+ https://bugzilla.gnome.org/show_bug.cgi?id=766973
+
+2016-05-28 21:39:00 +0200 Havard Graff <havard.graff@gmail.com>
+
+ * sys/applemedia/avsamplevideosink.m:
+ avsamplevideosink: check we are compiling for 10.1 up to 10.4
+ This API was deprecated in 10.4, so don't use it for 10.5 and onwards.
+ https://bugzilla.gnome.org/show_bug.cgi?id=766973
+
+2016-06-01 13:43:32 +0200 Heinrich Fink <hfink@toolsonair.com>
+
+ * sys/applemedia/vtenc.c:
+ * sys/applemedia/vtenc.h:
+ applemedia: vtenc: Register a hardware-only vtenc_h264_hw element on OSX
+ Similar to vtdec_hw, this commit adds a vtenc_h264_hw element that fails
+ caps negotiation unless a hardware encoder could actually be acquired.
+ This is useful in situations where a fallback to a software encoder
+ other than the vtenc_h264 software encoder is desired (e.g. to x264enc).
+ https://bugzilla.gnome.org/show_bug.cgi?id=767104
+
+2016-06-02 16:30:02 +1000 Alessandro Decina <alessandro.d@gmail.com>
+
+ * sys/applemedia/vtdec.c:
+ vtdec: make vtdec_hw fallback to software on renegotiation
+ When renegotiating mid stream - for example with variable bitrate
+ streams - and therefore destroying and recreating VTSessions, the
+ hw decoder might become temporarily unavailable.
+ To deal with this and avoid erroring out on bitrate changes,
+ vtdec_hw now falls back to using the software decoder if the hw
+ one was available at some point but isn't anymore. At
+ renegotiation/bitrate change time, it will still retry to open
+ the hardware one.
+
+2016-06-02 13:10:51 +1000 Alessandro Decina <alessandro.d@gmail.com>
+
+ * sys/applemedia/vtdec.c:
+ vtdec: fix switching from GLMemory to Sysmem
+ When renegotiating from GLMemory to Sysmem do teardown the texture_cache.
+ Fixes: https://bugzilla.gnome.org/show_bug.cgi?id=766190
+
+2016-06-02 11:36:57 +1000 Alessandro Decina <alessandro.d@gmail.com>
+
+ * sys/applemedia/vtdec.c:
+ vtdec: optimize renegotiation
+ ::negotiate can be called several times before the CAPS event is sent downstream
+ so use the currently configured output state caps instead of the pad current
+ caps when deciding whether to recreate the VTSession or not.
+ This leads to creating/destroying less VTSessions which makes renegotiation more
+ reliable especially when using hw decoding.
+
+2016-06-01 13:52:10 -0700 Reynaldo H. Verdejo Pinochet <reynaldo@osg.samsung.com>
+
+ * sys/dvb/gstdvbsrc.c:
+ dvbsrc: remove comment on self-explanatory code
+
+2016-06-01 13:18:21 -0700 Reynaldo H. Verdejo Pinochet <reynaldo@osg.samsung.com>
+
+ * sys/dvb/gstdvbsrc.c:
+ dvbsrc: avoid out-bound write on PID filter array
+ There's no need for an end-of-list marker in the filter
+ PIDs array if full, as the absolute maximum number of
+ elements (MAX_FILTERS) is known.
+ CID #1362441
+
+2016-05-31 20:41:14 +0100 Tim-Philipp Müller <tim@centricular.com>
+
+ * sys/androidmedia/gstahcsrc.c:
+ androidmedia: fix error debug message when camera doesn't exist
+ Makes no sense to include the system error here since errno
+ will likely not be set and then it says 'system error: success'
+ which is confusing.
+ https://bugzilla.gnome.org/show_bug.cgi?id=767087
+
+2016-05-31 18:58:43 +0900 Justin Kim <justin.kim@collabora.com>
+
+ * sys/androidmedia/gstahcsrc.c:
+ ahcsrc: release resources in 'finalize' function
+ In general, 'dispose' function is used for dropping all references
+ and 'finalize' is called for releasing instances.
+ https://bugzilla.gnome.org/show_bug.cgi?id=763309
+
+2016-05-25 15:01:31 +0200 Guillaume Desmottes <guillaume.desmottes@collabora.co.uk>
+
+ * gst-libs/gst/player/gstplayer.c:
+ * tests/check/libs/player.c:
+ player: inhibit signals after gst_player_stop() has been called
+ Also wait for the state change to STOP to have been announced before
+ destroying the player so it won't appear as leaked by leak detector
+ tools.
+ https://bugzilla.gnome.org/show_bug.cgi?id=766607
+
+2016-05-25 12:48:13 +0200 Guillaume Desmottes <guillaume.desmottes@collabora.co.uk>
+
+ * tests/check/libs/player.c:
+ player: handle uri-loaded in test
+ Had to adapt the existing tests because of this new callback.
+ https://bugzilla.gnome.org/show_bug.cgi?id=766607
+
+2016-05-25 16:57:49 -0700 Scott D Phillips <scott.d.phillips@intel.com>
+
+ * gst/videoparsers/gsth265parse.c:
+ h265parse: Don't assume contiguous id's in make_codec_data
+ vps/sps/pps id's are not required to be used contiguously.
+ https://bugzilla.gnome.org/show_bug.cgi?id=766891
+
+2016-05-28 01:22:32 -0700 Reynaldo H. Verdejo Pinochet <reynaldo@osg.samsung.com>
+
+ * sys/dvb/gstdvbsrc.c:
+ dvbsrc: add sample ATSC launch line
+
+2016-05-28 21:36:04 +0200 Havard Graff <havard.graff@gmail.com>
+
+ * gst-libs/gst/gl/gstglquery.c:
+ gl: glquery: cast to silence compiler warning
+ https://bugzilla.gnome.org/show_bug.cgi?id=766973
+
+2016-05-28 21:35:37 +0200 Havard Graff <havard.graff@gmail.com>
+
+ * ext/gl/gstgltestsrc.h:
+ gltestsrc: gltestsrc.h already defines GstGLTestSrc
+ And redefinition is not allowed.
+ https://bugzilla.gnome.org/show_bug.cgi?id=766973
+
+2016-05-27 23:24:54 +0200 Havard Graff <havard.graff@gmail.com>
+
+ * gst-libs/gst/player/gstplayer.c:
+ player: use correct _NONE enum
+ https://bugzilla.gnome.org/show_bug.cgi?id=766973
+
+2016-05-28 10:44:04 +0100 Tim-Philipp Müller <tim@centricular.com>
+
+ * gst-libs/gst/codecparsers/gsth264parser.c:
+ * gst-libs/gst/codecparsers/gsth264parser.h:
+ h264parser: maintain minimal ABI compat
+ Because we can.
+ https://bugzilla.gnome.org/show_bug.cgi?id=723352
+
+2014-05-22 16:12:01 +0200 Sebastian Dröge <sebastian@centricular.com>
+
+ * gst-libs/gst/codecparsers/gsth264parser.c:
+ * gst-libs/gst/codecparsers/gsth264parser.h:
+ h264parser: Remove unused fps_num/fps_den fields
+ Instead the newly added function should be used to calculate
+ the framerate properly.
+ https://bugzilla.gnome.org/show_bug.cgi?id=723352
+
+2016-05-25 10:59:00 +0100 Tim-Philipp Müller <tim@centricular.com>
+
+ * ext/smoothstreaming/gstmssmanifest.c:
+ smoothstreaming: update fps calculation for h264 codec parser API changes
+ Use new gst_h264_video_calculate_framerate() API instead of fps_n/fps_d
+ fields in SPS struct which are to be removed.
+ Apparently H264 content in MSS is always non-interlaced/progressive,
+ so we can just pass 0 for field_pic_flag and don't need to parse any
+ slice headers first if there's no external signalling. But even if
+ that's not the case the new code is not worse than the existing code.
+ https://msdn.microsoft.com/en-us/library/cc189080%28VS.95%29.aspx
+ https://bugzilla.gnome.org/show_bug.cgi?id=723352
+
+2016-05-26 10:28:14 -0700 Reynaldo H. Verdejo Pinochet <reynaldo@osg.samsung.com>
+
+ * sys/dvb/gstdvbsrc.c:
+ dvbsrc: use single marker at end of filtering PID list
+ Avoids at least ~100 unneeded assignment operations at runtime
+
+2016-05-23 16:31:05 -0700 Reynaldo H. Verdejo Pinochet <reynaldo@osg.samsung.com>
+
+ * sys/dvb/gstdvbsrc.c:
+ dvbsrc: simplify reporting of set polarity
+
+2016-05-23 14:41:40 -0700 Reynaldo H. Verdejo Pinochet <reynaldo@osg.samsung.com>
+
+ * sys/dvb/gstdvbsrc.c:
+ dvbsrc: fix bandwidth-hz property description
+ Bandwidth Hz is no longer a DVBT-only property
+
+2016-05-23 14:02:10 -0700 Reynaldo H. Verdejo Pinochet <reynaldo@osg.samsung.com>
+
+ * sys/dvb/gstdvbsrc.c:
+ dvbsrc: fix usage of PES & DVR acronyms everywhere
+ Additionally, improve message on gst_poll_new() failure
+
+2016-05-26 20:16:07 +1000 Matthew Waters <matthew@centricular.com>
+
+ * gst-libs/gst/gl/gstgldisplay.c:
+ gldisplay: always unref the context on a collision
+ Otherwise we will leak GstGLContext's when adding the same context more than
+ once.
+ Fixes a regression caused by 5f9d10f6036068502ad23e1ec86a73e341801ae1 in the
+ gstglcontext unit test that failed with:
+ Assertion 'tmp == NULL' failed
+
+2016-05-25 13:38:47 -0400 Nicolas Dufresne <nicolas.dufresne@collabora.com>
+
+ * gst-libs/gst/base/gstaggregator.c:
+ Revert "aggregator: Start the task when linked"
+ This reverts commit 302580c3815136d29479c3a8cae611d6e2ff3709.
+
+2016-05-20 14:34:37 -0400 Nicolas Dufresne <nicolas.dufresne@collabora.com>
+
+ * ext/gl/caopengllayersink.h:
+ * ext/gl/caopengllayersink.m:
+ caopengllayersink: Don't cache buffer pool
+ Pools cannot be used by the two elements at the same time.
+ https://bugzilla.gnome.org/show_bug.cgi?id=766611
+
+2016-04-13 16:30:28 -0400 Nicolas Dufresne <nicolas.dufresne@collabora.com>
+
+ * gst-libs/gst/base/gstaggregator.c:
+ aggregator: Start the task when linked
+ Until now we would start the task when the pad is activated. Part of the
+ activiation concist of testing if the pipeline is live or not.
+ Unfortunatly, this is often too soon, as it's likely that the pad get
+ activated before it is fully linked in dynamic pipeline.
+ Instead, start the task when the first serialized event arrive. This is
+ a safe moment as we know that the upstream chain is complete and just
+ like the pad activation, the pads are locked, hence cannot change.
+ https://bugzilla.gnome.org/show_bug.cgi?id=757548
+
+2016-05-25 09:09:01 -0400 Xavier Claessens <xavier.claessens@collabora.com>
+
+ * gst-libs/gst/gl/win32/gstglcontext_wgl.c:
+ gl: win32: Add debug category in gstglcontext_wgl.c
+ https://bugzilla.gnome.org/show_bug.cgi?id=766867
+
+2016-05-16 20:02:28 +0800 Haihua Hu <jared.hu@nxp.com>
+
+ * ext/gl/gstglimagesink.c:
+ * ext/gl/gstglimagesink.h:
+ * gst-libs/gst/gl/gstglutils.c:
+ * gst-libs/gst/gl/gstglutils.h:
+ glimagesink: support video rotation using transform matrix
+ Add "rotate-method" to glimagesink and apply transform matrix
+ to vertex coordinate to control rotation.
+ https://bugzilla.gnome.org/show_bug.cgi?id=765795
+
+2016-05-24 23:39:27 +1000 Matthew Waters <matthew@centricular.com>
+
+ * ext/gl/gstglbasemixer.c:
+ glvideomixer: fix race retrieving the GL context from the display
+ _get_gl_context() can be called concurrently from either propose_allocation() or
+ decide_allocation(). If it so happens that this happens at the same time,
+ the check for whether we already had a GL context was outside the lock. Inside
+ the lock and loop, the first thing that happens is that we unref the current GL
+ context (if valid) as if there was a conflict adding it to the display. If the
+ timing was unlucky, subsequent use of the GL context would be referencing an
+ already unreffed GL context object resulting in a critical:
+ g_object_ref: assertion 'object->ref_count > 0' failed
+ https://bugzilla.gnome.org/show_bug.cgi?id=766703
+
+2016-05-24 23:38:22 +1000 Matthew Waters <matthew@centricular.com>
+
+ * gst-libs/gst/gl/gstgldisplay.c:
+ gldisplay: add some debugging about retrieving GL contexts
+
+2016-05-25 10:01:38 +0300 Sebastian Dröge <sebastian@centricular.com>
+
+ * gst-libs/gst/gl/egl/gsteglimage.c:
+ eglimage: Re-add accidentially removed GST_DEFINE_MINI_OBJECT_TYPE()
+
+2016-05-23 15:24:53 +0300 Guillaume Desmottes <guillaume.desmottes@collabora.co.uk>
+
+ * gst-libs/gst/player/gstplayer.c:
+ player: fix suburi getter debug message
+ The property is a string, not a boolean.
+ https://bugzilla.gnome.org/show_bug.cgi?id=766607
+
+2016-05-25 09:53:15 +0300 Sebastian Dröge <sebastian@centricular.com>
+
+ * gst-libs/gst/player/gstplayer.c:
+ player: Don't set subtitle URI directly but dispatch to the player thread
+ Otherwise we do state changes and everything in the application thread, which
+ might block and more important can cause reentrant signals.
+ https://bugzilla.gnome.org/show_bug.cgi?id=766607
+
+2016-05-23 20:11:17 +0300 Sebastian Dröge <sebastian@centricular.com>
+
+ * gst-libs/gst/gl/egl/gsteglimage.c:
+ eglimage: Ensure that the debug category is always initalized
+ Before the initializer was only run if dmabuf support was used.
+ https://bugzilla.gnome.org/show_bug.cgi?id=766794
+
+2016-05-24 23:30:09 +1000 Arjen Veenhuizen <arjen.veenhuizen@tno.nl>
+
+ * ext/gl/gstgltransformation.c:
+ gltransformation: make the pivot-z property READWRITE
+ Instead of just being READABLE.
+ https://bugzilla.gnome.org/show_bug.cgi?id=766818
+
+2016-05-23 10:40:58 +0300 Guillaume Desmottes <guillaume.desmottes@collabora.co.uk>
+
+ * ext/gl/gstgltestsrc.c:
+ gltestsrc: fix src_impl leak
+ https://bugzilla.gnome.org/show_bug.cgi?id=766661
+
+2016-05-24 00:55:11 +0100 Tim-Philipp Müller <tim@centricular.com>
+
+ * gst-libs/gst/gl/Makefile.am:
+ * gst-libs/gst/insertbin/Makefile.am:
+ * gst-libs/gst/mpegts/Makefile.am:
+ * gst-libs/gst/player/Makefile.am:
+ g-i: pass compiler env to g-ir-scanner
+ It's what introspection.mak does as well. Should
+ fix spurious build failures on gnome-continuous.
+
+2016-05-24 07:17:22 +1000 Jan Schmidt <jan@centricular.com>
+
+ * gst/pnm/gstpnmdec.c:
+ * gst/pnm/gstpnmdec.h:
+ pnmdec: Fix ASCII parsing
+ Parse gray16 properly in ascii mode, and fix
+ some bugs around reading data in chunks when
+ ascii values cross chunk boundaries
+
+2016-05-19 01:28:04 +1000 Jan Schmidt <jan@centricular.com>
+
+ * tests/check/Makefile.am:
+ * tests/check/elements/pnm.c:
+ pnm: Add a basic unit test
+ Test that we can run an encode / decode cycle in various
+ formats without errors
+
+2016-05-19 01:04:36 +1000 Jan Schmidt <jan@centricular.com>
+
+ * gst/pnm/gstpnmenc.c:
+ pnmenc: Make output caps match the srcpad template
+ Don't output 'image/pnm', which isn't even in the template
+ caps. Instead, output a mime-type consistent with what we
+ are encoding.
+
+2016-05-18 17:19:40 +1000 Jan Schmidt <jan@centricular.com>
+
+ * gst/pnm/gstpnmenc.c:
+ pnmenc: Tidy up code, support BE/LE GRAY16 properly
+ Remove code that dealt with odd strides separately - there's
+ not really any overhead to just using 1 codepath for both matched
+ and unmatched stride output.
+ Add separate codepaths for BE vs LE GRAY16 input so they're
+ handled properly
+
+2016-05-16 21:22:57 +1000 Jan Schmidt <jan@centricular.com>
+
+ * gst/pnm/gstpnmdec.c:
+ * gst/pnm/gstpnmdec.h:
+ pnmdec: Actually output LE or BE GRAY16 as negotiated
+ Add codepaths to output GRAY16 in little or big endian
+ as negotiated.
+ Move all output format negotiation into a central
+ function and clean it up
+
+2015-10-22 17:06:01 +0200 Dimitrios Katsaros <patcherwork@gmail.com>
+
+ * gst/pnm/gstpnmdec.c:
+ * gst/pnm/gstpnmdec.h:
+ * gst/pnm/gstpnmutils.c:
+ pnmdec: Implementation of GRAY16 handling
+ https://bugzilla.gnome.org/show_bug.cgi?id=757022
+
+2015-10-19 17:15:30 +0200 Dimitrios Katsaros <patcherwork@gmail.com>
+
+ * gst/pnm/gstpnmenc.c:
+ pnmenc: Implementation of GRAY16 handling
+ https://bugzilla.gnome.org/show_bug.cgi?id=757022
+
+2016-05-20 19:25:57 +0200 Víctor Manuel Jáquez Leal <vjaquez@igalia.com>
+
+ * sys/kms/gstkmsbufferpool.c:
+ kmsbufferpool: error only if no allocator
+ Do not expect an allocator from the configuration, but expect to have already
+ one set.
+
+2016-05-15 11:52:55 +0200 Víctor Manuel Jáquez Leal <vjaquez@igalia.com>
+
+ * sys/kms/gstkmssink.c:
+ kmssink: frame copy log in performance category
+ Log the message when the frame is going to be copy (worse case) under the
+ performance log category.
+ https://bugzilla.gnome.org/show_bug.cgi?id=766466
+
+2016-05-15 11:51:22 +0200 Víctor Manuel Jáquez Leal <vjaquez@igalia.com>
+
+ * sys/kms/gstkmssink.c:
+ kmssink: use trace level for buffer render log
+ Instead of using debug level for logging each buffer rendered, use trace
+ level.
+ https://bugzilla.gnome.org/show_bug.cgi?id=766466
+
+2016-05-23 17:00:22 +0530 Arun Raghavan <arun@arunraghavan.net>
+
+ * gst-libs/gst/player/gstplayer-media-info.c:
+ player: Fix documentation for gst_player_video_info_get_framerate()
+ Document out parameters and fix function name.
+
+2016-05-18 16:00:47 +0300 Guillaume Desmottes <guillaume.desmottes@collabora.co.uk>
+
+ * tests/check/libs/player.c:
+ player: use gst_check_init() in test
+ Calling GST_DEBUG() in test rely on the default category to be defined,
+ which is done in gst_check_init().
+ https://bugzilla.gnome.org/show_bug.cgi?id=766607
+
+2016-05-20 17:28:52 -0400 Aaron Boxer <boxerab@gmail.com>
+
+ * ext/openjpeg/gstopenjpegenc.c:
+ openjpegenc: enable MCT for RGB video
+ https://bugzilla.gnome.org/show_bug.cgi?id=766732
+
+2016-05-20 14:08:03 -0700 Reynaldo H. Verdejo Pinochet <reynaldo@osg.samsung.com>
+
+ * sys/dvb/gstdvbsrc.c:
+ dvbsrc: group DVB-T2 substream-id check with its corresponding set_prop()
+
+2016-05-20 13:57:45 -0700 Reynaldo H. Verdejo Pinochet <reynaldo@osg.samsung.com>
+
+ * sys/dvb/gstdvbsrc.c:
+ dvbsrc: add DVB-S2 sub-stream ID check
+ Disable if invalid (> 255) instead of blindy setting this
+ property regardless of its actual value.
+
+2016-05-20 13:47:06 -0700 Reynaldo H. Verdejo Pinochet <reynaldo@osg.samsung.com>
+
+ * sys/dvb/gstdvbsrc.c:
+ dvbsrc: clarify consequence of passing a wrong ID to the substream filter
+
+2016-05-19 17:05:33 +0300 Guillaume Desmottes <guillaume.desmottes@collabora.co.uk>
+
+ * ext/gl/gltestsrc.c:
+ gltestsrc: fix shaders ref counting
+ The gltestsrc element uses two shaders: color_shader and snow_shader.
+ Those are alternatively assigned to the SrcShader->shader pointer and
+ their reference was transferred to it. Only the SrcShader->shader was
+ unreffed (in _src_shader_deinit()) so only one shader was properly
+ freed, the other one was leaked.
+ Fixed this by giving an extra ref to SrcShader->shader and unreffing the
+ 2 shaders in _src_smpte_free().
+ https://bugzilla.gnome.org/show_bug.cgi?id=766661
+
+2016-05-19 16:55:31 +0300 Guillaume Desmottes <guillaume.desmottes@collabora.co.uk>
+
+ * ext/gl/gstglmosaic.c:
+ glmosaic: fix shader leak
+ gst_gl_mosaic_init_shader() is called twice with test_glmosaic so the
+ first shader was leaked.
+ https://bugzilla.gnome.org/show_bug.cgi?id=766661
+
+2016-05-16 17:11:53 -0400 Xavier Claessens <xavier.claessens@collabora.com>
+
+ * gst-libs/gst/gl/win32/gstglwindow_win32.c:
+ gl: win32: Unparent internal window before destroying it
+ For some reason DestroyWindow() deadlock if it's called from
+ parent window's KeyPress event.
+ https://bugzilla.gnome.org/show_bug.cgi?id=766533
+
+2016-05-16 15:26:53 -0400 Xavier Claessens <xavier.claessens@collabora.com>
+
+ * gst-libs/gst/gl/win32/gstglwindow_win32.c:
+ gl: win32: Don't steal parent focus when creating internal window
+ This fix regression introduced by 0acc18c60f6f962cc6553f6047fdb64891bab544.
+ https://bugzilla.gnome.org/show_bug.cgi?id=766520
+
+2016-05-14 11:56:59 +0200 Olivier Crête <olivier.crete@collabora.com>
+
+ * gst-libs/gst/video/gstvideoaggregator.c:
+ videoaggregator: Don't wait if input buffer is after output
+ If the input buffer is after the end of the output buffer, then waiting
+ for more data won't help. We will never get an input buffer for this point.
+ This fixes compositing of streams from rtspsrc.
+ https://bugzilla.gnome.org/show_bug.cgi?id=766422
+
+2016-05-19 09:25:57 -0700 Martin Kelly <martin@surround.io>
+
+ * sys/androidmedia/gst-android-hardware-camera.c:
+ ahc: fix potential NULL deref
+ This bug was found via cppcheck static analysis.
+ If android.hardware.Camera.getParameters returns NULL, then object will
+ be NULL, and we won't allocate params. This means that the GST_DEBUG
+ statement referencing params->object will be invalid. Fix this by
+ exiting early if android.hardware.Camera.getParameters returns NULL.
+ https://bugzilla.gnome.org/show_bug.cgi?id=766638
+
+2016-05-19 11:33:52 -0700 Martin Kelly <martin@surround.io>
+
+ * sys/androidmedia/gstahcsrc.c:
+ ahc: fix typo in doc blurb
+ https://bugzilla.gnome.org/show_bug.cgi?id=766679
+
+2016-05-18 16:55:38 +0300 Guillaume Desmottes <guillaume.desmottes@collabora.co.uk>
+
+ * gst-libs/gst/adaptivedemux/gstadaptivedemux.c:
+ adaptivedemux: fix pending tags leak
+ https://bugzilla.gnome.org/show_bug.cgi?id=766662
+
+2016-05-18 12:30:05 +0300 Guillaume Desmottes <guillaume.desmottes@collabora.co.uk>
+
+ * sys/kms/gstkmssink.c:
+ kmssink: chain up finalize method
+ https://bugzilla.gnome.org/show_bug.cgi?id=766597
+
+2016-05-18 12:33:51 -0700 Martin Kelly <martin@surround.io>
+
+ * tests/examples/opencv/gstfacedetect_test.c:
+ * tests/examples/opencv/gsthanddetect_test.c:
+ examples: opencv: typo fix
+ https://bugzilla.gnome.org/show_bug.cgi?id=766639
+
+2016-05-18 21:29:15 -0700 Stefan Sauer <ensonic@users.sf.net>
+
+ * ext/lv2/README:
+ * ext/lv2/gstlv2.c:
+ * ext/lv2/gstlv2.h:
+ * ext/lv2/gstlv2filter.c:
+ * ext/lv2/gstlv2source.c:
+ * ext/lv2/gstlv2utils.c:
+ * ext/lv2/gstlv2utils.h:
+ lv2: support CVPorts
+ CVPorts are ports that take a buffer. For now we just fill the buffers with
+ the control value.
+
+2016-05-18 21:26:50 -0700 Stefan Sauer <ensonic@users.sf.net>
+
+ * ext/lv2/gstlv2filter.c:
+ * ext/lv2/gstlv2source.c:
+ lv2: use _OBJECT log variants and lower log level when processing
+
+2016-05-17 14:33:04 -0700 Reynaldo H. Verdejo Pinochet <reynaldo@osg.samsung.com>
+
+ * sys/dvb/gstdvbsrc.c:
+ dvbsrc: move ISDB-T bandwidth check to _is_valid_bandwidth()
+ Allows test to be used for delivery system auto-detection.
+ Additionally, add 0 (auto) as valid value.
+
+2016-05-17 14:19:30 -0700 Reynaldo H. Verdejo Pinochet <reynaldo@osg.samsung.com>
+
+ * sys/dvb/gstdvbsrc.c:
+ dvbsrc: add '0' as a valid value for bandwidth
+ Underlying API considers this the BANDWIDTH_HZ equivalent
+ to the old BANDWIDTH_AUTO for BANDWIDTH.
+
+2016-05-17 13:53:54 -0700 Reynaldo H. Verdejo Pinochet <reynaldo@osg.samsung.com>
+
+ * sys/dvb/gstdvbsrc.c:
+ dvbsrc: factor out and reuse DVB-T/T2 bandwidth checks
+ Use new utility function as an additional check for delivery
+ system auto-detection.
+
+2016-05-17 12:06:45 -0700 Reynaldo H. Verdejo Pinochet <reynaldo@osg.samsung.com>
+
+ * sys/dvb/parsechannels.c:
+ dvb/parsechannels: recognize additional bandwidths at zap parsing
+ Previously ignored 1.712, 5 and 10 MHz values are also valid
+
+2016-05-16 12:27:50 +0100 Tim-Philipp Müller <tim@centricular.com>
+
+ * docs/libs/gst-plugins-bad-libs-sections.txt:
+ * gst-libs/gst/video/gstvideoaggregator.c:
+ * gst-libs/gst/video/gstvideoaggregator.h:
+ * gst-libs/gst/video/gstvideoaggregatorpad.h:
+ videoaggregator: canonicalise function names
+ Had to be done at some point:
+ gst_videoaggregator_* -> gst_video_aggregator_*
+ Also fix up some function names with typos.
+
+2016-05-15 23:31:33 -0700 Stefan Sauer <ensonic@users.sf.net>
+
+ * ext/lv2/gstlv2.c:
+ * ext/lv2/gstlv2.h:
+ lv2: cleanup the predicates
+ Use the defines from the headers and get rid of our own namespace defines.
+ Replace the 'role' prop with 'designation'.
+
+2016-05-15 23:27:22 -0700 Stefan Sauer <ensonic@users.sf.net>
+
+ * ext/lv2/gstlv2utils.c:
+ lv2: tweak enum logging
+ Log more details when we find a bad scalepoint and downgrade the logging of the
+ good enum valzes.
+
+2016-05-15 22:05:43 -0700 Stefan Sauer <ensonic@users.sf.net>
+
+ * ext/lv2/README:
+ * ext/lv2/gstlv2utils.c:
+ lv2: generate enums from scalepoints
+ Plugins can provide a set of named values for a control port. Ideally only those
+ values are set for the property. Check if all scalepoints are integers and if so
+ generate an enum type.
+
+2016-05-15 19:45:26 -0700 Stefan Sauer <ensonic@users.sf.net>
+
+ * ext/lv2/gstlv2utils.c:
+ lv2: reduce log spam for property bounds
+ Only complain about bad bounds, if the plugin actually set those. Otherwise
+ silently adjust our defaults.
+
+2016-05-15 17:58:51 -0700 Stefan Sauer <ensonic@users.sf.net>
+
+ * ext/lv2/gstlv2.c:
+ * ext/lv2/gstlv2.h:
+ lv2: remove lv2_symbol_pred
+ We're not actually using it.
+
+2016-05-15 17:54:06 -0700 Stefan Sauer <ensonic@users.sf.net>
+
+ * ext/lv2/gstlv2source.c:
+ lv2: remove leftover FIME
+
+2016-05-15 00:41:12 -0700 Reynaldo H. Verdejo Pinochet <reynaldo@osg.samsung.com>
+
+ * sys/dvb/gstdvbsrc.c:
+ dvbsrc: special case detection when DVB-T and T2 seem valid
+ There is no way to tell one over the other when parameters
+ seem valid for DVB-T and DVB-T2 and the adapter supports
+ both. Reason to go with the former here is that, from
+ experience, most DVB-T2 channels out there seem to use
+ parameters that are not valid for DVB-T, like QAM_256
+ https://bugzilla.gnome.org/show_bug.cgi?id=765731
+
+2016-05-14 23:32:49 -0700 Reynaldo H. Verdejo Pinochet <reynaldo@osg.samsung.com>
+
+ * sys/dvb/gstdvbsrc.c:
+ dvbsrc: add transmission mode check for DTMB
+
+2016-05-13 01:54:56 -0700 Reynaldo H. Verdejo Pinochet <reynaldo@osg.samsung.com>
+
+ * sys/dvb/parsechannels.c:
+ dvb/parsechannels: use proper fe_spectral_inversion enum identifiers
+
+2016-05-13 01:25:08 -0700 Reynaldo H. Verdejo Pinochet <reynaldo@osg.samsung.com>
+
+ * sys/dvb/gstdvbsrc.c:
+ dvbsrc: explicitly disable stream filter for invalid ids
+
+2016-05-13 00:50:45 -0700 Reynaldo H. Verdejo Pinochet <reynaldo@osg.samsung.com>
+
+ * sys/dvb/parsechannels.c:
+ dvb/parsechannels: do not assume DVB-T from zap file alone
+ DVB-T/T2 have the same number of fields so we were
+ wrongly assuming DVB-T for DVB-T2 broadcasts. Not
+ setting the delivery system here allows for dvbsrc
+ to make an informed guess based on the channel
+ parameters.
+
+2016-05-13 00:12:33 -0700 Reynaldo H. Verdejo Pinochet <reynaldo@osg.samsung.com>
+
+ * sys/dvb/gstdvbsrc.c:
+ dvbsrc: consider transmission mode for delsys autodetection
+
+2016-05-13 00:04:08 -0700 Reynaldo H. Verdejo Pinochet <reynaldo@osg.samsung.com>
+
+ * sys/dvb/gstdvbsrc.c:
+ dvbsrc: factor out transmission mode check against delsys
+
+2016-05-12 16:43:09 -0700 Reynaldo H. Verdejo Pinochet <reynaldo@osg.samsung.com>
+
+ * sys/dvb/gstdvbsrc.c:
+ dvbsrc: improve delivery system autodetection
+
+2016-05-12 14:12:09 -0700 Reynaldo H. Verdejo Pinochet <reynaldo@osg.samsung.com>
+
+ * sys/dvb/gstdvbsrc.c:
+ dvbsrc: add modulation checks for DVB-T and T2
+
+2016-05-15 14:46:40 -0700 Stefan Sauer <ensonic@users.sf.net>
+
+ * ext/ladspa/gstladspa.c:
+ ladspa: use _OBJECT log variants for plugin_init
+ Also trim leading whitespae.
+
+2016-05-15 14:45:15 -0700 Stefan Sauer <ensonic@users.sf.net>
+
+ * ext/lv2/README:
+ * ext/lv2/gstlv2.c:
+ * ext/lv2/gstlv2.h:
+ * ext/lv2/gstlv2filter.c:
+ * ext/lv2/gstlv2source.c:
+ * ext/lv2/gstlv2utils.c:
+ * ext/lv2/gstlv2utils.h:
+ lv2: add registry caching
+ Use the plugin_cache extra data to avoid introspecting over and over again.
+
+2016-05-14 12:35:15 -0700 Stefan Sauer <ensonic@users.sf.net>
+
+ * ext/lv2/README:
+ * ext/lv2/gstlv2utils.c:
+ lv2: implemnt the map-extension
+ This is the most used one and at the same time easy to implement sing QGQuark.
+
+2016-05-14 12:34:10 -0700 Stefan Sauer <ensonic@users.sf.net>
+
+ * ext/lv2/gstlv2.c:
+ * ext/lv2/gstlv2utils.c:
+ * ext/lv2/gstlv2utils.h:
+ lvs: add require_feature checks
+ Plugins can report what host features they need. Since we start to implement host feature
+ check which plugins we can no suuport.
+
+2016-05-15 14:34:33 +0200 Edward Hervey <bilboed@bilboed.com>
+
+ * gst/compositor/compositor.c:
+ compositor: Check if we get a valid display ratio
+ As is done everywhere else, and avoids setting bogus values
+ And remove useless *<val> checks (we always provide valid values and
+ it's an internal function).
+ CID #1320700
+
+2016-05-15 14:16:55 +0200 Edward Hervey <bilboed@bilboed.com>
+
+ * ext/rtmp/gstrtmpsrc.c:
+ rtmpsrc: Remove dead assignments
+ * read is only used within the while loop
+ * todo and bsize only need to be assigned once
+
+2016-05-15 15:11:10 +0300 Sebastian Dröge <sebastian@centricular.com>
+
+ * gst-libs/gst/player/gstplayer.c:
+ player: Add uri-loaded signal that is fired whenever a new URI is actually loaded
+ This allows knowing the "boundary" from which on all following signals are for
+ the new URI.
+ https://bugzilla.gnome.org/show_bug.cgi?id=766062
+
+2016-05-14 17:05:45 +0100 Matthew Waters <matthew@centricular.com>
+
+ * ext/opencv/gstfacedetect.cpp:
+ opencv/facedetect: fix the build with opencv 3.1.0
+ - add using namespace std; for std::vector
+ - use the cpp header imgproc.hpp file for the cv::ellipse function instead of
+ the C header
+ - Mat no longer takes IplImage in it's constructors, use the cvarrtomat()
+ function instead.
+ Fixes a couple of build errors:
+ gstfacedetect.cpp:140:30: error: ‘vector’ does not name a type
+ structure_and_message (const vector < Rect > &rectangles, const gchar * name,
+ ^~~~~~
+ gstfacedetect.cpp:140:37: error: expected ‘,’ or ‘...’ before ‘<’ token
+ structure_and_message (const vector < Rect > &rectangles, const gchar * name,
+ ^
+ gstfacedetect.cpp: In function ‘void structure_and_message(int)’:
+ gstfacedetect.cpp:143:13: error: ‘rectangles’ was not declared in this scope
+ Rect sr = rectangles[0];
+ [...]
+ gstfacedetect.cpp: In function ‘void
+ gst_face_detect_run_detector(GstFaceDetect*, cv::CascadeClassifier*, gint, gint,
+ cv::Rect, std::vector<cv::Rect_<int> >&)’:
+ gstfacedetect.cpp:562:31: error: no matching function for call to
+ ‘cv::Mat::Mat(IplImage*&, cv::Rect&)’
+ Mat roi (filter->cvGray, r);
+ [...]
+ gstfacedetect.cpp: In function ‘GstFlowReturn
+ gst_face_detect_transform_ip(GstOpencvVideoFilter*, GstBuffer*, IplImage*)’:
+ gstfacedetect.cpp:594:44: error: no matching function for call to
+ ‘cv::Mat::Mat(cv::Mat, bool)’
+ Mat mtxOrg (cv::cvarrToMat (img), false);
+ [...]
+ gstfacedetect.cpp:734:79: error: ‘ellipse’ was not declared in this scope
+ ellipse (mtxOrg, center, axes, 0, 0, 360, Scalar (cr, cg, cb), 3, 8,
+ 0);
+
+2016-05-15 11:20:21 +0100 Tim-Philipp Müller <tim@centricular.com>
+
+ * Makefile.am:
+ build: add removed example dir to CRUFT_DIRS
+
+2016-05-15 13:33:53 +0300 Sebastian Dröge <sebastian@centricular.com>
+
+ * docs/plugins/gst-plugins-bad-plugins.args:
+ * docs/plugins/gst-plugins-bad-plugins.hierarchy:
+ * docs/plugins/gst-plugins-bad-plugins.interfaces:
+ * 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-audiomixer.xml:
+ * docs/plugins/inspect/plugin-audiovisualizers.xml:
+ * docs/plugins/inspect/plugin-autoconvert.xml:
+ * docs/plugins/inspect/plugin-bayer.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-curl.xml:
+ * docs/plugins/inspect/plugin-dataurisrc.xml:
+ * docs/plugins/inspect/plugin-debugutilsbad.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-festival.xml:
+ * docs/plugins/inspect/plugin-fieldanalysis.xml:
+ * docs/plugins/inspect/plugin-flite.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-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-jpegformat.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-neon.xml:
+ * docs/plugins/inspect/plugin-ofa.xml:
+ * docs/plugins/inspect/plugin-openal.xml:
+ * docs/plugins/inspect/plugin-opencv.xml:
+ * docs/plugins/inspect/plugin-pcapparse.xml:
+ * docs/plugins/inspect/plugin-pnm.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-rtmp.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-soundtouch.xml:
+ * docs/plugins/inspect/plugin-spandsp.xml:
+ * docs/plugins/inspect/plugin-speed.xml:
+ * docs/plugins/inspect/plugin-subenc.xml:
+ * docs/plugins/inspect/plugin-videoparsersbad.xml:
+ * docs/plugins/inspect/plugin-voaacenc.xml:
+ * docs/plugins/inspect/plugin-voamrwbenc.xml:
+ * docs/plugins/inspect/plugin-waylandsink.xml:
+ * docs/plugins/inspect/plugin-y4mdec.xml:
+ docs: Update for git master
+
+2016-03-04 22:10:47 +0100 Carlos Rafael Giani <dv@pseudoterminal.org>
+
+ * gst/rawparse/Makefile.am:
+ * gst/rawparse/gstaudioparse.c:
+ * gst/rawparse/gstunalignedaudioparse.c:
+ * gst/rawparse/gstunalignedaudioparse.h:
+ * gst/rawparse/plugin.c:
+ * gst/rawparse/unalignedaudio.h:
+ rawparse: Add unaligned raw audio parsing to audioparse and add new element
+ This helps in cases where raw audio data is being delivered, but the
+ buffers do not come in sample aligned sizes. The new unalignedaudioparse
+ bin can be autoplugged and configures an internal audioparse element to
+ align the data. audioparse itself gets support for audio/x-unaligned-raw
+ input caps; the output caps then contain the same information, except that
+ the name is changed to audio/x-raw (since audioparse aligns the data).
+ This ensures that souphttpsrc ! audioparse still works.
+ https://bugzilla.gnome.org/show_bug.cgi?id=689460
+
+2016-05-15 13:14:41 +0300 Matthew Waters <matthew@centricular.com>
+
+ * gst-libs/gst/gl/gstgldisplay.c:
+ gldisplay: demote no platform display debug to info
+ Avoids confusing everyone with a warning that's not always fatal.
+ https://bugzilla.gnome.org/show_bug.cgi?id=746933
+
+2016-05-15 12:31:38 +0300 Matthew Waters <matthew@centricular.com>
+
+ * .gitignore:
+ .gitignore: remove non-existent directory
+ Partially reverts cdf91c455d4057a9d234766510bd2e8a44e1ed05
+
+2016-05-15 19:05:48 +1000 Jan Schmidt <jan@centricular.com>
+
+ * gst/mpegdemux/gstmpegdemux.c:
+ mpegdemux: Handle system header when scanning for timestamps.
+ When scanning for SCR / PTS / DTS, handle the case where
+ the pack header is followed by the optional system header,
+ so we can correctly collect timestamps in such cases.
+ https://bugzilla.gnome.org/show_bug.cgi?id=623860
+
+2016-05-15 19:04:20 +1000 Jan Schmidt <jan@centricular.com>
+
+ * gst/mpegdemux/gstmpegdemux.c:
+ mpegdemux: Fix backward timestamp scan on small files.
+ When the file size is smaller than the configured 4MB scan
+ limit for timestamps, don't underflow the guard variable
+ when checking if it's time to stop.
+ Limit the backward SCR scan to the same 4MB as the PTS scan.
+ Add some comments.
+
+2016-05-13 13:27:37 +0100 Tim-Philipp Müller <tim@centricular.com>
+
+ * gst/mpegdemux/gstmpegdemux.c:
+ mpegdemux: don't do bogus adjustments on seek if we have no first_pts
+ Fixes bogus segment and gap events with start=GST_CLOCK_TIME_NONE if
+ we failed to find a first_pts.
+ https://bugzilla.gnome.org/show_bug.cgi?id=623860
+
+2016-05-14 16:59:14 +0300 Alex-P. Natsios <drakevr@2f30.org>
+
+ * configure.ac:
+ configure: check for shm_open() in OpenBSD
+ In OpenBSD there is no "actual" librt that programs can link with,
+ instead the system/base libc provides the functions one would
+ customarily find there.
+ https://bugzilla.gnome.org/show_bug.cgi?id=766441
+
+2016-05-14 16:32:06 +0300 Matthew Waters <matthew@centricular.com>
+
+ * ext/gl/gstgltransformation.c:
+ * ext/gl/gstgltransformation.h:
+ gltransformation: use the affine transformation meta if available downstream
+ We can avoid a render pass if downstream supports the affine transformation meta
+ and increase the performance of some pipelines involving gltransformation.
+ Implemented by checking for the affine transformation in the allocation query
+ from downstream and combining our matrix with that of upstream's (or creating
+ our own).
+
+2016-05-14 16:27:26 +0300 Matthew Waters <matthew@centricular.com>
+
+ * ext/gl/gstglimagesink.c:
+ * ext/gl/gstglvideomixer.c:
+ * gst-libs/gst/gl/gstglshaderstrings.c:
+ * gst-libs/gst/gl/gstglshaderstrings.h:
+ * gst-libs/gst/gl/gstglutils.c:
+ * gst-libs/gst/gl/gstglutils.h:
+ * gst-libs/gst/gl/gstglviewconvert.c:
+ gl: take the affine transformation in NDC
+ Provide a function to get the affine matrix in the meta in terms of NDC
+ coordinates and use as a standard opengl matrix.
+ Also advertise support for the affine transformation meta in the allocation
+ query.
+
+2016-05-14 15:50:57 +0300 Matthew Waters <matthew@centricular.com>
+
+ * ext/gl/gstglbasemixer.c:
+ * ext/gl/gstglbasemixer.h:
+ glbasemixer: actually attempt to propose an allocation upstream
+ We were always failing the allocation query as a flag was never being set to
+ signal a successful negotiation. Fix by setting the required flag on a
+ successful caps event from upstream.
+
+2016-05-12 10:52:06 -0700 Stefan Sauer <ensonic@users.sf.net>
+
+ * ext/lv2/Makefile.am:
+ * ext/lv2/README:
+ * ext/lv2/gstlv2.c:
+ * ext/lv2/gstlv2.h:
+ * ext/lv2/gstlv2source.c:
+ lv2: add a source plugin
+ Update the readme with a working example and list what feature are supported.
+
+2016-05-11 23:12:07 -0700 Stefan Sauer <ensonic@users.sf.net>
+
+ * ext/lv2/gstlv2utils.c:
+ lv2: add support for host features
+ Implement a log handler as the first one.
+
+2016-05-13 15:24:35 +0300 Matthew Waters <matthew@centricular.com>
+
+ * ext/vulkan/vkswapper.c:
+ vkswapper: check the error of the presentation for out of date
+ allows us to resize the swapchain correctly.
+
+2016-05-12 19:44:26 +0100 Damian Ziobro <damian@xmementoit.com>
+
+ * gst/mpegtsdemux/mpegtsbase.h:
+ mpegtsbase: remove unused variables: upstream_live and queried_latency
+ https://bugzilla.gnome.org/show_bug.cgi?id=766343
+
+2016-05-11 15:45:47 -0700 Reynaldo H. Verdejo Pinochet <reynaldo@osg.samsung.com>
+
+ * sys/dvb/gstdvbsrc.c:
+ dvbsrc: improve debug output from _open_frontend()
+ * Clarify message on delsys info gathering
+ * Combine redundant INFO/DEBUG pair
+
+2016-05-11 15:26:24 -0700 Reynaldo H. Verdejo Pinochet <reynaldo@osg.samsung.com>
+
+ * sys/dvb/gstdvbsrc.c:
+ dvbsrc: fix invalid dereference of delsys data
+ Use GPOINTER_TO_INT to read GINT_TO_POINTER stored
+ data.
+
+2016-05-11 23:48:21 +0300 Sebastian Dröge <sebastian@centricular.com>
+
+ * sys/androidmedia/gstamc.c:
+ amcaudiodec: Set layout=interleaved in raw audio caps
+ Otherwise the GAP event fallback negotiation will fail to produce complete
+ srcpad caps, and thus fail.
+ https://bugzilla.gnome.org/show_bug.cgi?id=766289
+
+2016-05-11 16:42:35 +0200 Edward Hervey <edward@centricular.com>
+
+ * sys/decklink/gstdecklinkvideosrc.cpp:
+ decklinkvideosrc: Fix previous commit
+ The frames queue might return nothing (be empty) if we're flushing.
+ Move the assertion to after the flushing check
+
+2016-05-10 22:04:48 -0700 Stefan Sauer <ensonic@users.sf.net>
+
+ * ext/lv2/gstlv2.c:
+ lv2: skip plugins that need host features
+ We haven't implemented this yet and those plugin would fail when we instantiate
+ them.
+
+2016-05-10 21:11:41 -0700 Stefan Sauer <ensonic@users.sf.net>
+
+ * ext/lv2/gstlv2utils.c:
+ lv2: add classification from metadata
+ This helps apps to structure the element collection.
+
+2016-04-08 07:53:44 +0200 Stefan Sauer <ensonic@users.sf.net>
+
+ * ext/lv2/Makefile.am:
+ * ext/lv2/gstlv2filter.c:
+ * ext/lv2/gstlv2utils.c:
+ * ext/lv2/gstlv2utils.h:
+ lv2: extract helper code into lv2utils
+ This is a preparaton for adding lv2-sources and -sinks.
+
+2016-05-10 12:24:03 -0700 Stefan Sauer <ensonic@users.sf.net>
+
+ * ext/ladspa/gstladspasource.c:
+ * ext/ladspa/gstladspautils.c:
+ ladspa: code cleanup
+ Whitespace cleanup and unify codeing style.
+
+2016-05-10 12:22:04 -0700 Stefan Sauer <ensonic@users.sf.net>
+
+ * ext/ladspa/gstladspautils.c:
+ ladspa: simplify the code
+ Remove a local var and just use the parameter value.
+
+2016-05-10 18:14:36 +0200 Philippe Normand <philn@igalia.com>
+
+ * sys/applemedia/corevideobuffer.c:
+ applemedia: fix core_video_meta init registration
+
+2016-05-10 16:46:43 +0530 Nirbheek Chauhan <nirbheek@centricular.com>
+
+ * .gitignore:
+ .gitignore: Ignore tests/examples/gl/gtk generated files
+ And another test binary.
+
+2016-05-10 16:24:08 +0530 Nirbheek Chauhan <nirbheek@centricular.com>
+
+ * configure.ac:
+ * ext/openjpeg/gstopenjpeg.h:
+ * ext/openjpeg/gstopenjpegdec.c:
+ * ext/openjpeg/gstopenjpegenc.c:
+ openjpeg: Port to 2.1 and require a pkg-config file for 2.0 and 2.1
+ The port was trivial, and according to the NEWS file nothing else has changed,
+ but it is possible that other API was changed without proper notification.
+ OpenJPEG upstream has shipped a pkg-config file for the past 4 years, and all
+ distros should be shipping it by now.
+ https://bugzilla.gnome.org/show_bug.cgi?id=766213
+
+2016-05-10 09:40:38 +0100 Tim-Philipp Müller <tim@centricular.com>
+
+ * sys/decklink/gstdecklinkvideosrc.cpp:
+ decklinkvideosrc: fix use-after-free in error code path
+
+2016-05-10 09:38:28 +0100 Tim-Philipp Müller <tim@centricular.com>
+
+ * sys/decklink/gstdecklinkvideosrc.cpp:
+ decklinkvideosrc: remove unnecessary checks for non-NULL frame
+ We can't get a NULL frame here.
+ CID 1359923
+
+2016-05-09 15:23:32 -0700 Reynaldo H. Verdejo Pinochet <reynaldo@osg.samsung.com>
+
+ * sys/dvb/gstdvbsrc.c:
+ dvbsrc: abort at open frontend failure
+
+2016-05-09 12:50:47 +0300 Sebastian Dröge <sebastian@centricular.com>
+
+ * sys/applemedia/Makefile.am:
+ applemedia: Ship all headers in tarballs
+ Some were missing from noinst_HEADERS.
+ https://bugzilla.gnome.org/show_bug.cgi?id=766163
+
+2016-05-04 16:32:19 -0700 Reynaldo H. Verdejo Pinochet <reynaldo@osg.samsung.com>
+
+ * sys/dvb/gstdvbsrc.c:
+ * sys/dvb/gstdvbsrc.h:
+ dvbsrc: smarten-up delsys autodetection logic
+ When there's no explicit delivery system information
+ for a channel in the channel configuration file and
+ the user hasn't selected one via setting the delsys
+ property, we *guessed* it by selecting the last
+ supported delsys reported by the driver. This change
+ provides the basis for smarter delsys auto detection
+ and implements a rule for DVB-T2. Rules for other
+ delivery systems can be added in _guess_delsys() in
+ a similar way.
+ Additionally: Store list of adapter-supported
+ delivery systems instead of querying the driver each
+ time this information is needed.
+ Related to:
+ https://bugzilla.gnome.org/show_bug.cgi?id=765731
+
+2016-05-03 15:00:55 -0700 Reynaldo H. Verdejo Pinochet <reynaldo@osg.samsung.com>
+
+ * sys/dvb/gstdvbsrc.c:
+ dvbsrc: remove remaining polling logic from _tune_fe()
+ No need to do any polling here.
+
+2016-05-06 10:51:39 +0200 Carlos Garcia Campos <cgarcia@igalia.com>
+
+ * gst-libs/gst/uridownloader/gsturidownloader.c:
+ uridownloader: Take the ownership of the src element
+ The URI downloader is creating the source element with
+ gst_element_factory_make() that returns a floating reference that nobody
+ is consuming. This is causing problems in WebKit, where the smart
+ pointers used to take references of the source elment get confused and
+ end up consuming the floating reference and then releasing the element,
+ which usually crashes because the URI downloader still tries to use its
+ src element. See https://bugs.webkit.org/show_bug.cgi?id=144040.
+ This commit adds two helper functions to ensure and destroy the source
+ element, to make the code simpler and less error prone. The ensure
+ method takes care of checking if we can reuse the existing one or we
+ need to create a new one, taking always its ownership. The destroy
+ method simply avoids duplicated code to set the source to NULL state and
+ then unref it.
+ https://bugzilla.gnome.org/show_bug.cgi?id=766053
+
+2016-04-29 12:31:01 +0100 Alex Ashley <bugzilla@ashley-family.net>
+
+ * gst-libs/gst/adaptivedemux/gstadaptivedemux.c:
+ adaptivedemux: fix threading issues in gst_adaptive_demux_wait_until function
+ The gst_adaptive_demux_wait_until() function can be woken up either
+ by its end_time being reached, or from other threads that want to
+ interrupt the waiting thread.
+ If the thread is interrupted, it needs to cancel its async clock callback
+ by unscheduling the clock callback. However, the callback task might already
+ have been activated, but is waiting for the mutex to become available. In this
+ case, the call to unschedule does not stop the callback from executing.
+ The solution to this second issue is to use a reference counted object that
+ is decremented by both the gst_adaptive_demux_wait_until() function and the
+ call to gst_clock_id_wait_async (). In this way, the GstAdaptiveDemuxTimer
+ object is only deleted when both the gst_adaptive_demux_wait_until() function
+ and the async callback are finished with the object.
+ https://bugzilla.gnome.org/show_bug.cgi?id=765728
+
+2016-03-03 15:50:49 +0900 Justin Kim <justin.kim@collabora.com>
+
+ * sys/androidmedia/Makefile.am:
+ * sys/androidmedia/gst-android-graphics-surfacetexture.c:
+ * sys/androidmedia/gst-android-graphics-surfacetexture.h:
+ * sys/androidmedia/gst-android-hardware-camera.c:
+ * sys/androidmedia/gst-android-hardware-camera.h:
+ * sys/androidmedia/gstahcsrc.c:
+ * sys/androidmedia/gstahcsrc.h:
+ * sys/androidmedia/gstamc.c:
+ androidmeida: replace with new surfacetexture for ahcsrc
+ GstAmcSurfaceTexture is more clear and simple than GstAGSurfaceTexture.
+ https://bugzilla.gnome.org/show_bug.cgi?id=763099
+
+2016-05-05 23:53:05 +1000 Matthew Waters <matthew@centricular.com>
+
+ * ext/vulkan/Makefile.am:
+ vulkan/build: add the build directory to the list of includes
+ Fixes out of tree builds from tarballs.
+ https://bugzilla.gnome.org/show_bug.cgi?id=764758
+
+2016-05-05 23:18:11 +1000 Matthew Waters <matthew@centricular.com>
+
+ * ext/vulkan/vkswapper.c:
+ vkswapper: fix up display synchronization
+ Use the semaphores in the correct place, before and after the submission for
+ acquiring and presenting the swapchain buffer.
+ Waiting on the fence that only signals the command buffer completion rather than
+ the completion of the presentation is racy with the destruction of the vulkan
+ buffers associated with that image. Wait on the device to be idle instead after
+ presenting.
+
+2016-05-05 18:00:25 +1000 Matthew Waters <matthew@centricular.com>
+
+ * ext/vulkan/vkswapper.c:
+ vkswapper: use gst_video_sink_center_rect for positioning the video
+ Don't try to reimplement it badly.
+
+2016-05-05 10:44:22 +0100 Tim-Philipp Müller <tim@centricular.com>
+
+ * gst/mpegdemux/gstmpegdemux.c:
+ mpegdemux: fix description
+
+2016-05-05 10:41:53 +0100 Tim-Philipp Müller <tim@centricular.com>
+
+ * gst/videofilters/gstvideodiff.c:
+ videodiff: fix supported formats in template caps
+
+2016-05-05 10:40:37 +0100 Tim-Philipp Müller <tim@centricular.com>
+
+ * gst/videofilters/gstvideodiff.c:
+ * gst/videofilters/gstvideodiff.h:
+ videodiff: fill in FIXME metadata and docs with description
+ https://bugzilla.gnome.org/show_bug.cgi?id=765989
+
+2016-05-04 12:17:59 +1000 Matthew Waters <matthew@centricular.com>
+
+ * ext/gl/gstglimagesink.c:
+ * ext/gl/gstglmixer.c:
+ * ext/gl/gstglstereosplit.c:
+ * gst-libs/gst/gl/egl/Makefile.am:
+ * gst-libs/gst/gl/egl/gsteglimage.c:
+ * gst-libs/gst/gl/egl/gsteglimage.h:
+ * gst-libs/gst/gl/egl/gsteglimagememory.c:
+ * gst-libs/gst/gl/egl/gsteglimagememory.h:
+ * gst-libs/gst/gl/egl/gstgldisplay_egl.c:
+ * gst-libs/gst/gl/egl/gstglmemoryegl.c:
+ * gst-libs/gst/gl/egl/gstglmemoryegl.h:
+ * gst-libs/gst/gl/gstglbufferpool.c:
+ * gst-libs/gst/gl/gstglbufferpool.h:
+ * gst-libs/gst/gl/gstgldisplay.c:
+ * gst-libs/gst/gl/gstglfilter.c:
+ * gst-libs/gst/gl/gstglupload.c:
+ gl/egl: replace gsteglimagememory with an EGLImage wrapper
+ That can be passed to GstGLMemoryEGL.
+ This also ports the dmabuf uploader to GstEGLImage and GstGLMemoryEGL.
+
+2016-01-21 22:18:17 +0900 Gwang Yoon Hwang <yoon@igalia.com>
+
+ * gst-libs/gst/gl/egl/Makefile.am:
+ * gst-libs/gst/gl/egl/gstgldisplay_egl.c:
+ * gst-libs/gst/gl/egl/gstglmemoryegl.c:
+ * gst-libs/gst/gl/egl/gstglmemoryegl.h:
+ * gst-libs/gst/gl/gstgl_fwd.h:
+ * gst-libs/gst/gl/gstgldisplay.c:
+ * gst-libs/gst/gl/gstglupload.c:
+ gl: implement GstGLMemoryEGL
+ Because current GstEGLImageMemory does not inherit GstGLMemory, GLUpload
+ allocates additional GLMemory and upload the decoded contents from the decoder
+ which uses EGLImage (e.g. gst-omx in RPi).
+ This work adds GstGLMemoryEGL to avoid this overhead. Decoders allocate
+ GstGLMemoryEGL and decode its contents to the EGLImage of GstGLMemoryEGL. And
+ GLUpload uses this memory without allocation of additional textures and blit
+ operations.
+ [Matthew Waters]: gst-indent the sources and fix a critical retreiving the egl
+ display from the memory.
+ https://bugzilla.gnome.org/show_bug.cgi?id=760916
+
+2016-05-04 01:16:51 +1000 Matthew Waters <matthew@centricular.com>
+
+ * gst-libs/gst/gl/gstglbufferpool.c:
+ * gst-libs/gst/gl/gstglmemory.c:
+ * gst-libs/gst/gl/gstglmemory.h:
+ * gst-libs/gst/gl/gstglupload.c:
+ * gst-libs/gst/gl/gstglviewconvert.c:
+ glmemory: add wrapped data pointers to setup_buffer
+ Allows creating wrapped memories with GstGLAllocationParams.
+ The wrapped pointers will be set in the parameters before being passed
+ to the memory allocation function.
+
+2016-05-04 00:19:44 +1000 Matthew Waters <matthew@centricular.com>
+
+ * docs/libs/gst-plugins-bad-libs-sections.txt:
+ * gst-libs/gst/gl/gstglbasememory.c:
+ * gst-libs/gst/gl/gstglbasememory.h:
+ * gst-libs/gst/gl/gstglmemory.c:
+ * gst-libs/gst/gl/gstglmemory.h:
+ * gst-libs/gst/gl/gstglmemorypbo.c:
+ glbasememory: take a pointer as the wrapped gpu handle
+ Allows passing arbitrary data to wrap the the specific memory implementation
+ which is required for some memory implementations.
+
+2016-05-04 11:30:11 +1000 Alessandro Decina <alessandro.d@gmail.com>
+
+ * sys/applemedia/vtdec.c:
+ applemedia: vtdec: output sysmem by default
+
+2016-05-02 11:30:43 +0300 Sebastian Dröge <sebastian@centricular.com>
+
+ * sys/directsound/gstdirectsoundsrc.c:
+ directsoundsrc: Convert Windows strings to UTF8 before comparing against UTF8 strings
+ The device name and descriptions returned are in the locale encoding, not
+ UTF8. Our device name property is in UTF8 though, so we need to convert.
+ https://bugzilla.gnome.org/show_bug.cgi?id=756948
+
+2016-05-03 11:11:24 +0300 Sebastian Dröge <sebastian@centricular.com>
+
+ * gst/compositor/compositor.c:
+ compositor: Set blend functions in ::negotiated_caps() instead of ::fixate_caps()
+ The latter should not change any state but just fixate the caps, while the
+ former is always called when srcpads caps are decided.
+ https://bugzilla.gnome.org/show_bug.cgi?id=765324
+
+2016-04-20 15:11:44 +0300 Vivia Nikolaidou <vivia@ahiru.eu>
+
+ * sys/decklink/gstdecklink.cpp:
+ decklink: Fix swapped name and nick in GEnumValues
+ https://bugzilla.gnome.org/show_bug.cgi?id=742878
+
+2016-04-14 18:26:33 +0300 Vivia Nikolaidou <vivia@ahiru.eu>
+
+ * sys/decklink/gstdecklink.cpp:
+ * sys/decklink/gstdecklink.h:
+ * sys/decklink/gstdecklinkvideosink.cpp:
+ * sys/decklink/gstdecklinkvideosink.h:
+ * sys/decklink/gstdecklinkvideosrc.cpp:
+ * sys/decklink/gstdecklinkvideosrc.h:
+ decklink: Add initial 10bit support for YUV modes
+ https://bugzilla.gnome.org/show_bug.cgi?id=742878
+
+2016-05-03 15:52:38 +0300 Sebastian Dröge <sebastian@centricular.com>
+
+ * sys/decklink/gstdecklink.cpp:
+ * sys/decklink/gstdecklinkaudiosrc.cpp:
+ decklink: Fix indentation
+
+2016-05-03 19:58:00 +1000 Matthew Waters <matthew@centricular.com>
+
+ * configure.ac:
+ * gst-libs/gst/gl/gstglapi.h:
+ gl: fix gles3 header usage for older platforms
+ Some platforms provide an old version of GLES2/gl2.h and GLES2/gl2ext.h that
+ will fail when including GLES3/gl3.h due to missing typedef's.
+ Seen on the RPi.
+
+2016-04-29 23:32:03 -0700 Reynaldo H. Verdejo Pinochet <reynaldo@osg.samsung.com>
+
+ * sys/dvb/gstdvbsrc.c:
+ dvbsrc: avoid possible race on _output_frontend_stats()
+ Make sure we send out our info message before we give up ownership
+ of the structure.
+
+2016-04-29 14:53:06 -0700 Reynaldo H. Verdejo Pinochet <reynaldo@osg.samsung.com>
+
+ * sys/dvb/gstdvbsrc.c:
+ dvbsrc: var rename in _output_frontend_params()
+ Now it matches the rest of its status peers. Underscore
+ was a leftover from previous times.
+
+2016-04-29 14:45:22 -0700 Reynaldo H. Verdejo Pinochet <reynaldo@osg.samsung.com>
+
+ * sys/dvb/gstdvbsrc.c:
+ dvbsrc: always output known frontend status params
+ The only mandatory frontend information for our use case
+ is its status. Make sure we output what we know instead
+ of choking at the first error getting SNR, BER or any of
+ the other informational parameters.
+
+2016-04-29 12:06:52 -0700 Reynaldo H. Verdejo Pinochet <reynaldo@osg.samsung.com>
+
+ * sys/dvb/gstdvbsrc.c:
+ dvbsrc: refactor signal locking loop
+ Get rid of preliminar frontend status check.
+
+2016-04-29 11:18:53 -0700 Reynaldo H. Verdejo Pinochet <reynaldo@osg.samsung.com>
+
+ * sys/dvb/gstdvbsrc.c:
+ dvbsrc: drop unneeded polling step on _tune_fe()
+ Additional waiting was not needed. Specially considering
+ it came after a successful READ_STATUS ioctl and was
+ followed by an EINTR-resilent retry.
+
+2016-04-29 17:19:19 -0300 Thiago Santos <thiagoss@osg.samsung.com>
+
+ * gst/mpegtsmux/tsmux/tsmuxstream.c:
+ mpegtsmux: effectively check if there is a language
+ 'language' is an array and not a pointer.
+ CID 1358835
+
+2016-04-29 13:54:01 +0300 Sebastian Dröge <sebastian@centricular.com>
+
+ * gst-libs/gst/player/Makefile.am:
+ player: Add required paths via pkg-config for gstreamer-base-1.0 and gstreamer-video-1.0 for gobject-introspection
+ The GstBase-1.0.gir and GstVideo-1.0.gir files are required by GstPlayer.
+ Uninstalled builds fail if these files cannot be found.
+ https://bugzilla.gnome.org/show_bug.cgi?id=765804
+
+2016-04-08 16:47:15 +0800 Haihua Hu <jared.hu@nxp.com>
+
+ * ext/gl/Makefile.am:
+ * ext/gl/gstgldeinterlace.c:
+ * ext/gl/gstgldeinterlace.h:
+ * ext/gl/gstopengl.c:
+ gl: enable gldeinterlace on OpenGL ES
+ 1.Porting the exist deinterlace shader and OpenGL callback
+ to be compatible with OpenGL ES.
+ 2.Add a our blur vertical shader to gldeinterlace.
+ 3.Add a property named “method” to let user choose which
+ deinterlace function to use. Default to choose blur vertical
+ method for better performance.
+ [Matthew Waters]: fix name of greedyh in method property (was greedhy) and port
+ to git master.
+ https://bugzilla.gnome.org/show_bug.cgi?id=764873
+
+2016-04-28 15:19:17 +0530 Barun Kumar Singh <barun.singh@samsung.com>
+
+ * docs/libs/gst-plugins-bad-libs-sections.txt:
+ * gst-libs/gst/player/gstplayer.c:
+ * gst-libs/gst/player/gstplayer.h:
+ * win32/common/libgstplayer.def:
+ player: Add audio-video-offset property and setter/getter API
+ https://bugzilla.gnome.org/show_bug.cgi?id=765315
+
+2016-04-19 19:43:03 +0300 Sebastian Dröge <sebastian@centricular.com>
+
+ * gst-libs/gst/gl/gstglcolorconvert.c:
+ * gst-libs/gst/gl/gstglsl.c:
+ * gst-libs/gst/gl/gstglsl_private.h:
+ * gst-libs/gst/gl/gstglviewconvert.c:
+ glviewconvert: Port more things to GLES/GL 3 compatibility
+ And move the shader mangling code into a single place instead of having a copy
+ in glcolorconvert and glviewconvert.
+ https://bugzilla.gnome.org/show_bug.cgi?id=765266
+
+2016-04-19 19:27:33 +0300 Sebastian Dröge <sebastian@centricular.com>
+
+ * gst-libs/gst/gl/gstglcolorconvert.c:
+ glcolorconvert: GLES3 deprecates texture2D() and it does not work at all in newer versions than 3.3
+ Use the newer texture() function instead. This fixes glimagesink and other
+ things on various Android devices.
+ https://bugzilla.gnome.org/show_bug.cgi?id=765266
+
+2016-04-19 10:27:43 -0300 Thiago Santos <thiagoss@osg.samsung.com>
+
+ * gst-libs/gst/mpegts/gstmpegtsdescriptor.c:
+ * gst-libs/gst/mpegts/gstmpegtsdescriptor.h:
+ * gst/mpegtsmux/tsmux/tsmuxstream.c:
+ * gst/mpegtsmux/tsmux/tsmuxstream.h:
+ mpegtsmux: write language descriptor when language is available
+ Adds a new function to mpegts lib to create a iso639 language
+ descriptor from a language and use it in mpegtsmux to add
+ a language descriptor to audio streams that have a language set.
+ https://bugzilla.gnome.org/show_bug.cgi?id=763647
+
+2016-04-26 16:48:58 +0800 Song Bing <bing.song@nxp.com>
+
+ * sys/pvr2d/gstpvrbufferpool.c:
+ pvrbufferpool: fix gst_meta_register() parameters
+ https://bugzilla.gnome.org/show_bug.cgi?id=765581
+
+2016-04-22 10:15:39 -0400 Nicolas Dufresne <nicolas.dufresne@collabora.com>
+
+ * gst-libs/gst/base/gstaggregator.c:
+ aggregator: Check all pads for data when live
+ When live, we still need to inspect all pads queue in order to determin
+ if we have received the first buffer or not.
+ https://bugzilla.gnome.org/show_bug.cgi?id=765431
+
+2016-04-15 16:51:17 -0400 Nicolas Dufresne <nicolas.dufresne@collabora.com>
+
+ * gst-libs/gst/base/gstaggregator.c:
+ aggregator: Fix locking when using the clock
+ This fixes a race where we check if there is a clock, then it get
+ removed and we endup calling gst_clock_new_single_shot_id() with a NULL
+ pointer instead of a valid clock and also calling gst_object_unref()
+ with a NULL pointer later.
+ https://bugzilla.gnome.org/show_bug.cgi?id=757548
+
+2016-04-25 16:50:55 +0300 Sebastian Dröge <sebastian@centricular.com>
+
+ * gst/videoparsers/gsth265parse.c:
+ h265parse: H265 level idc 0 is not valid
+ Don't put level=0 into the caps, it confuses other elements.
+ https://bugzilla.gnome.org/show_bug.cgi?id=765538
+
+2016-04-25 16:50:18 +0300 Sebastian Dröge <sebastian@centricular.com>
+
+ * gst/videoparsers/gsth264parse.c:
+ h264parse: H264 level idc 0 is not valid
+ Don't put level=0 into the caps, it confuses other elements.
+ https://bugzilla.gnome.org/show_bug.cgi?id=765538
+
+2016-04-22 14:51:31 +0200 Jerome Laheurte <jlaheurte@quividi.com>
+
+ * sys/dshowsrcwrapper/gstdshowfakesink.cpp:
+ * sys/dshowsrcwrapper/gstdshowvideosrc.cpp:
+ dshowsrcwrapper: fix DirectShow caps negotiation and set capture pin caps
+ Some cameras (IDS) have broken DirectShow drivers which incorrectly fill some
+ fields in the VIDEOINFOHEADER structure; comparison between suggested and
+ supported media types in CBaseRenderer should ignore deprecated and/or not
+ essential fields; additionaly explicitely setting the mediatype for the capture
+ pin before trying to connect it works around another IDS driver bug, and
+ should have been already done anyway.
+ https://bugzilla.gnome.org/show_bug.cgi?id=765428
+
+2016-04-22 14:48:41 +0200 Jerome Laheurte <jlaheurte@quividi.com>
+
+ * sys/dshowsrcwrapper/gstdshow.cpp:
+ dshowsrcwrapper: add support for RGB32, RGB555, RGB565 and RGB8 color spaces
+ Some cameras (IDS) only support those.
+ https://bugzilla.gnome.org//show_bug.cgi?id=765427
+
+2016-04-22 14:44:57 +0200 Jerome Laheurte <jlaheurte@quividi.com>
+
+ * sys/dshowsrcwrapper/CMakeLists.txt:
+ dshowsrcwrapper: fix include path and link error
+ Add include path so that the cmake-generated project
+ is able to find gstconfig.h
+ Add /SAFESEH:NO to MSVC linker options so it can link with
+ gstreamer libraries on Windows.
+ https://bugzilla.gnome.org//show_bug.cgi?id=765426
+
+2016-04-22 15:02:01 -0300 Thiago Santos <thiagoss@osg.samsung.com>
+
+ * tests/check/elements/adaptive_demux_common.c:
+ * tests/check/elements/adaptive_demux_common.h:
+ tests: adaptivedemux: only check for data length after seek
+ When the test involves doing a seek, only check for data size after
+ the seek. The final segment range after seek might be different/smaller
+ than the threshold for doing the seek and doing the check before
+ seeking would fail.
+
+2016-02-16 14:26:55 +0000 Florin Apostol <florin.apostol@oregan.net>
+
+ * tests/check/elements/test_http_src.c:
+ * tests/check/elements/test_http_src.h:
+ adaptivedemux: tests: use macro to define names of request and response structs
+ Following the Don't Repeat Yourself principle, define macros
+ for the structures that contain the request and response headers,
+ so that the name is not repeated in multiple places in multiple files.
+ https://bugzilla.gnome.org/show_bug.cgi?id=762144
+
+2016-02-16 14:26:42 +0000 Florin Apostol <florin.apostol@oregan.net>
+
+ * tests/check/elements/adaptive_demux_common.c:
+ * tests/check/elements/hls_demux.c:
+ adaptivedemux: tests: improved checks for expected data
+ Check the size of received data for each buffer received by AppSink
+ https://bugzilla.gnome.org/show_bug.cgi?id=762144
+
+2016-02-16 11:37:44 +0000 Florin Apostol <florin.apostol@oregan.net>
+
+ * tests/check/elements/adaptive_demux_engine.c:
+ * tests/check/elements/adaptive_demux_engine.h:
+ * tests/check/elements/dash_demux.c:
+ dashdemux: tests: added content protection test
+ Test content protection
+ Configure 3 content protection sources:
+ - a uuid scheme/value pair
+ - a non uuid scheme/value pair (dash recognises only uuid schemes)
+ - a complex uuid scheme, with trailing spaces and capital letters in scheme uri
+ Only the uuid scheme should be recognised. We expect to receive 2 content protection events
+ https://bugzilla.gnome.org/show_bug.cgi?id=758064
+
+2016-04-22 17:04:57 -0300 Thiago Santos <thiagoss@osg.samsung.com>
+
+ * ext/dash/gstmpdparser.c:
+ dash: strip lead/trailing whitespace from descriptortype attributes
+ The spec says it is xs:anyURI and leading and trailing whitespace
+ are to be ignored
+ https://bugzilla.gnome.org/show_bug.cgi?id=758064
+
+2016-02-16 14:26:05 +0000 Florin Apostol <florin.apostol@oregan.net>
+
+ * tests/check/elements/dash_demux.c:
+ dashdemux: tests: added test for media download error for in stream fragment
+ Tested download error for a fragment that is not the last media fragment
+ in the stream.
+ https://bugzilla.gnome.org/show_bug.cgi?id=762144
+
+2016-02-16 14:25:45 +0000 Florin Apostol <florin.apostol@oregan.net>
+
+ * tests/check/elements/dash_demux.c:
+ dashdemux: tests: added test for download errors during header download
+ Test header download error.
+ Let the adaptive demux download a few bytes, then instruct the
+ GstTestHTTPSrc element to generate an error while the fragment header
+ is still being downloaded.
+ https://bugzilla.gnome.org/show_bug.cgi?id=762144
+
+2016-02-16 14:25:32 +0000 Florin Apostol <florin.apostol@oregan.net>
+
+ * tests/check/elements/adaptive_demux_common.c:
+ * tests/check/elements/adaptive_demux_common.h:
+ * tests/check/elements/dash_demux.c:
+ dashdemux: tests: refactor testFragmentDownloadError
+ Renamed testFragmentDownloadError to testMediaDownloadErrorLastFragment.
+ Added gst_adaptive_demux_test_unexpected_eos function.
+ Remove unneeded testFragmentDownloadErrorCheckSizeOfDataReceived.
+ https://bugzilla.gnome.org/show_bug.cgi?id=762144
+
+2016-02-16 14:25:04 +0000 Florin Apostol <florin.apostol@oregan.net>
+
+ * tests/check/elements/dash_demux.c:
+ dashdemux: tests: tested latency query
+ Updated query test to also check if dash responds correctly to a latency
+ query.
+ https://bugzilla.gnome.org/show_bug.cgi?id=762144
+
+2016-02-16 14:24:49 +0000 Florin Apostol <florin.apostol@oregan.net>
+
+ * tests/check/elements/dash_demux.c:
+ dashdemux: tests: moved testQuery after testFragmentDownloadError
+ Moved testQuery after testFragmentDownloadError so that testDownloadError
+ and testFragmentDownloadError are grouped together.
+ The commit just moved the testQueryCheckDataReceived and
+ GST_START_TEST (testQuery) functions but git gets confused in matching the
+ lines and reports a lot of changes in the patch.
+ https://bugzilla.gnome.org/show_bug.cgi?id=762144
+
+2016-02-16 14:24:26 +0000 Florin Apostol <florin.apostol@oregan.net>
+
+ * tests/check/elements/adaptive_demux_common.c:
+ * tests/check/elements/adaptive_demux_common.h:
+ * tests/check/elements/dash_demux.c:
+ adaptivedemux: tests: create a GstDashDemuxTestCase class
+ Create a GstDashDemuxTestCase class that extends from GstAdaptiveDemuxTestCase.
+ This new class will contain all the DASH specific fields.
+ https://bugzilla.gnome.org/show_bug.cgi?id=762144
+
+2016-02-16 14:24:09 +0000 Florin Apostol <florin.apostol@oregan.net>
+
+ * tests/check/elements/dash_demux.c:
+ dashdemux: tests: added support to pass various parameters to http src callbacks
+ Added support to pass various parameters to http src callbacks using GstStructure.
+ https://bugzilla.gnome.org/show_bug.cgi?id=762144
+
+2016-03-01 14:54:01 -0800 Scott D Phillips <scott.d.phillips@intel.com>
+
+ * gst/debugutils/gstchecksumsink.c:
+ * gst/debugutils/gstchecksumsink.h:
+ checksumsink: add "hash" property and allow more checksum types
+ Now any GChecksumType can be used by GstChecksumSink, adding
+ support for MD5, SHA-256 and SHA-512 in addition to SHA-1.
+ https://bugzilla.gnome.org/show_bug.cgi?id=763006
+
+2016-04-22 08:20:14 +0200 Edward Hervey <bilboed@bilboed.com>
+
+ * tests/check/Makefile.am:
+ check: Fix LDADD/CFLAGS for player unit test
+ It now requires libgstvideo
+
+2016-02-16 14:44:39 +0000 Florin Apostol <florin.apostol@oregan.net>
+
+ * tests/check/elements/adaptive_demux_engine.c:
+ * tests/check/elements/adaptive_demux_engine.h:
+ adaptivedemux: tests: use a GstTestClock as the system clock
+ To allow the adaptivedemux live stream tests to run in non-realtime, use a
+ GstTestClock as the system clock. This allows the unit tests to complete
+ more quickly than if they had to complete in real time.
+ https://bugzilla.gnome.org/show_bug.cgi?id=762147
+
+2016-02-16 14:44:27 +0000 Florin Apostol <florin.apostol@oregan.net>
+
+ * gst-libs/gst/adaptivedemux/gstadaptivedemux.c:
+ adaptivedemux: use realtime_clock for waiting for a condition
+ There are several places in adaptivedemux where it waits for
+ time to pass, for example to wait until it should next download
+ a fragment. The problem with this approach is that it means that
+ unit tests are forced to execute in realtime.
+ This commit replaces the use of g_cond_wait_until() with single
+ shot GstClockID that signals the condition variable. Under normal
+ usage, this behaves exactly as before. A unit test can replace the
+ system clock with a GstTestClock, allowing the test to control the
+ timing in adaptivedemux.
+ https://bugzilla.gnome.org/show_bug.cgi?id=762147
+
+2016-02-16 14:44:10 +0000 Florin Apostol <florin.apostol@oregan.net>
+
+ * ext/dash/gstdashdemux.c:
+ * gst-libs/gst/adaptivedemux/gstadaptivedemux.c:
+ * gst-libs/gst/adaptivedemux/gstadaptivedemux.h:
+ adaptivedemux: use GstSystemClock to all real-time calculations
+ A realtime clock is used in many places, such as deciding which
+ fragment to select at start up and deciding how long to sleep
+ before a fragment becomes available. For example dashdemux needs
+ sample the client's estimate of UTC when selecting where to start
+ in a live DASH stream.
+ The problem with dashdemux calculating the client's idea of UTC is
+ that it makes it difficult to create unit tests, because the passage
+ of time is a factor in the test.
+ This commit changes dashdemux and adaptivedemux to use the
+ GstSystemClock, so that a unit test can replace the system clock when
+ it needs to be able to control the clock.
+ This commit makes no change to the behaviour under normal usage, as
+ GstSystemClock is based upon the system time.
+ https://bugzilla.gnome.org/show_bug.cgi?id=762147
+
+2016-04-21 14:58:45 +0300 Sebastian Dröge <sebastian@centricular.com>
+
+ * win32/common/libgstplayer.def:
+ win32: Add new API to .def file
+
+2016-04-19 10:59:46 +0530 Barun Kumar Singh <barun.singh@samsung.com>
+
+ * docs/libs/gst-plugins-bad-libs-sections.txt:
+ * gst-libs/gst/player/Makefile.am:
+ * gst-libs/gst/player/gstplayer.c:
+ * gst-libs/gst/player/gstplayer.h:
+ * pkgconfig/gstreamer-player-uninstalled.pc.in:
+ * pkgconfig/gstreamer-player.pc.in:
+ player: Add support for multiview settings
+ https://bugzilla.gnome.org/show_bug.cgi?id=765302
+
+2016-04-21 10:06:40 +0900 Hyunjun Ko <zzoon@igalia.com>
+
+ * sys/applemedia/vtenc.c:
+ applemedia: vtenc: fix build break on iOS
+ Fix 'conflicting types' error
+ https://bugzilla.gnome.org/show_bug.cgi?id=765292
+
+2016-04-20 15:34:55 -0700 Reynaldo H. Verdejo Pinochet <reynaldo@osg.samsung.com>
+
+ * sys/dvb/gstdvbsrc.c:
+ dvbsrc: add test for invalid DVB-T2 bandwidth
+
+2016-04-20 14:47:22 -0700 Reynaldo H. Verdejo Pinochet <reynaldo@osg.samsung.com>
+
+ * sys/dvb/gstdvbsrc.c:
+ dvbsrc: warn on wrong DVB-T2 stream ID value
+ Stream ID, used for DVB-T2/S2 and ISDB-S can
+ not exceed 255 for the former. Change makes this
+ explicit.
+
+2016-04-20 21:07:28 +0900 Hyunjun Ko <zzoon@igalia.com>
+
+ * sys/applemedia/vtenc.c:
+ applemedia: vtenc: Fix a warning by weak-link symbol
+ Fix this warning
+ address of function 'VTCompressionSessionPrepareToEncodeFrames' will always evaluate to 'true' [-Wpointer-bool-conversion]
+ https://bugzilla.gnome.org/show_bug.cgi?id=765292
+
+2016-04-20 16:19:55 +0900 Hyunjun Ko <zzoon@igalia.com>
+
+ * ext/gl/caopengllayersink.m:
+ gl: caopengllayersink: fix a minor warning
+ Fix "unused variable" warning
+ https://bugzilla.gnome.org/show_bug.cgi?id=765292
+
+2016-04-20 16:00:36 +0900 Hyunjun Ko <zzoon@igalia.com>
+
+ * gst-libs/gst/gl/cocoa/gstglcaopengllayer.m:
+ gl/cocoa: Fix incompatible type warning
+ https://bugzilla.gnome.org/show_bug.cgi?id=765292
+
+2016-04-19 14:57:22 +0530 Nirbheek Chauhan <nirbheek@centricular.com>
+
+ * sys/d3dvideosink/d3dhelpers.h:
+ d3dvideosink: Don't include deprecated and unavailable d3dx9tex.h
+ It's not needed, not on native Windows nor with mingw, and
+ we don't use anything from it anyway
+ https://bugzilla.gnome.org/show_bug.cgi?id=765250
+
+2016-04-14 12:46:58 +0200 Philipp Zabel <p.zabel@pengutronix.de>
+
+ * sys/kms/gstkmssink.c:
+ * sys/kms/gstkmssink.h:
+ kmssink: add sync support for secondary pipes
+ The vblank event request must specify the crtc for which to request
+ the event. This fixes kmssink synchronisation for crtcs other than
+ the first.
+ https://bugzilla.gnome.org/show_bug.cgi?id=765064
2016-04-19 09:30:39 +0300 Sebastian Dröge <sebastian@centricular.com>
@@ -437,6 +3181,29 @@
create by application.
https://bugzilla.gnome.org/show_bug.cgi?id=765241
+2016-04-18 13:46:55 -0300 Thiago Santos <thiagoss@osg.samsung.com>
+
+ * gst-libs/gst/video/gstvideoaggregator.c:
+ videoaggregator: plug caps leak
+ It was losing ref of the original 'ret' caps that would be returned
+ or returning it with 2 references to it.
+
+2016-03-28 15:44:27 -0300 Thiago Santos <thiagoss@osg.samsung.com>
+
+ * gst-libs/gst/video/gstvideoaggregator.c:
+ * tests/check/elements/compositor.c:
+ videoaggregator: properly handle interlace-mode restrictions
+ videoaggregator can't handle interlace-mode changes so it must
+ always restrict itself to the first interlacing mode it receives.
+ Tests included
+ https://bugzilla.gnome.org/show_bug.cgi?id=754495
+
+2016-01-22 16:49:57 +0000 Raffaele Rossi <rarossi@cisco.com>
+
+ * ext/dtls/README:
+ dtsl: add some documentation
+ https://bugzilla.gnome.org/show_bug.cgi?id=760994
+
2016-04-17 15:45:41 +0100 Heinrich Fink <hfink@toolsonair.com>
* ext/gl/caopengllayersink.m:
@@ -451,22 +3218,143 @@
Fixes blurry content on HiDPI screens
https://bugzilla.gnome.org/show_bug.cgi?id=765194
+2016-04-16 22:33:48 +1000 Jan Schmidt <jan@centricular.com>
+
+ * gst/mpegtsmux/mpegtsmux.c:
+ mpegtsmux: Remove an unnecessary check for NULL before g_free
+
+2016-04-15 13:22:51 -0700 Reynaldo H. Verdejo Pinochet <reynaldo@osg.samsung.com>
+
+ * gst-libs/gst/player/gstplayer-video-overlay-video-renderer.c:
+ * gst/compositor/compositor.c:
+ Drop usage of 'overlayed' to mean 'overlaid'
+
+2016-04-15 13:10:41 -0700 Reynaldo H. Verdejo Pinochet <reynaldo@osg.samsung.com>
+
+ * sys/dvb/gstdvbsrc.c:
+ dvbsrc: show invalid delsys/mod combination if found
+
+2016-04-15 11:29:48 -0700 Reynaldo H. Verdejo Pinochet <reynaldo@osg.samsung.com>
+
+ * sys/dvb/gstdvbsrc.c:
+ dvbsrc: add modulation check for ATSC
+
+2016-04-11 23:45:22 -0700 Reynaldo H. Verdejo Pinochet <reynaldo@osg.samsung.com>
+
+ * sys/dvb/gstdvbsrc.c:
+ dvbsrc: do not autodetect delsys twice
+ The process is dealt with the first time the adapter is
+ opened, there is no need to do this again.
+
+2016-04-14 22:32:05 -0700 Aleix Conchillo Flaqué <aconchillo@gmail.com>
+
+ * ext/srtp/gstsrtpdec.c:
+ srtpdec: also check for "roc" in caps
+ Currently, gst_srtp_dec_sink_setcaps is happy if the "roc" field is not
+ provided in the caps. If it is not provided the stream will be properly
+ inserted in the hash table with a default "roc". Then, when the first
+ buffer arrives validate_buffer will find an existing stream in the hash
+ table and will not signal request-key, not allowing the user to provide
+ a "roc".
+ This patch expects "roc" in gst_srtp_dec_sink_setcaps, if not found a
+ request-key will be signaled and the user will be able to provide all
+ the srtp fields, including "roc".
+ https://bugzilla.gnome.org/show_bug.cgi?id=765079
+
+2014-07-28 12:14:02 +0300 Sreerenj Balachandran <sreerenj.balachandran@intel.com>
+
+ * gst-libs/gst/codecparsers/gstmpegvideoparser.c:
+ * gst-libs/gst/codecparsers/gstmpegvideoparser.h:
+ codecparsers: mpegvideo: Parse more slice header fields
+ https://bugzilla.gnome.org/show_bug.cgi?id=733872
+
+2014-07-28 11:17:05 +0300 Sreerenj Balachandran <sreerenj.balachandran@intel.com>
+
+ * gst-libs/gst/codecparsers/gstmpegvideoparser.c:
+ * gst-libs/gst/codecparsers/gstmpegvideoparser.h:
+ codecparsers: mpegvideo: Add vbv_delay field to PictureHeader
+ https://bugzilla.gnome.org/show_bug.cgi?id=733872
+
+2014-07-28 11:14:22 +0300 Sreerenj Balachandran <sreerenj.balachandran@intel.com>
+
+ * gst-libs/gst/codecparsers/gstmpegvideoparser.c:
+ * gst-libs/gst/codecparsers/gstmpegvideoparser.h:
+ codecparsers: mpegvideo: Add more fields to the GstMpegVideoSequenceHdr
+ Added the fields load_non_intra_quantiser_matrix and
+ load_chroma_intra_quantiser_matrix to the sequence header structure.
+ https://bugzilla.gnome.org/show_bug.cgi?id=733872
+
+2016-04-14 10:02:32 +0100 Julien Isorce <j.isorce@samsung.com>
+
+ * README:
+ * common:
+ Automatic update of common submodule
+ From 6f2d209 to ac2f647
+
2016-04-13 18:12:25 +0100 Damian Ziobro <damian@xmementoit.com>
* gst/mpegtsmux/mpegtsmux.c:
mpegtsmux: free pad_data->language before g_strdup in order to avoid memory leak
https://bugzilla.gnome.org/show_bug.cgi?id=765005
-2015-09-08 14:37:57 +0200 Patricia Muscalu <patricia@axis.com>
+2016-04-13 13:10:12 +0300 Sebastian Dröge <sebastian@centricular.com>
- * ext/curl/gstcurlbasesink.c:
- curlsink: catch an unknown error
- In this case the socket callback has not been called
- by libcurl and the curlsink has not been notified about any
- connection problems by libcurl.
- This indicates that it's a bug in libcurl so catch it as
- an unknown error.
- https://bugzilla.gnome.org/show_bug.cgi?id=754432
+ * sys/applemedia/corevideobuffer.c:
+ applemedia: GstCoreVideoMeta in the plugin using only public API has no ctx member
+
+2016-04-13 13:09:05 +0300 Sebastian Dröge <sebastian@centricular.com>
+
+ * sys/applemedia/coremediabuffer.c:
+ applemedia: GstCoreMediaMeta in the plugin using only public API has no ctx member
+
+2016-04-13 10:25:32 +0300 Sebastian Dröge <sebastian@centricular.com>
+
+ * ext/directfb/dfbvideosink.c:
+ * sys/pvr2d/gstpvrbufferpool.c:
+ meta: Initialize all remaining metas in their init function
+ https://bugzilla.gnome.org/show_bug.cgi?id=764902
+
+2016-04-13 10:17:24 +0300 Sebastian Dröge <sebastian@centricular.com>
+
+ * gst-libs/gst/codecparsers/gstmpegvideometa.c:
+ * sys/applemedia-nonpublic/coremediabuffer.c:
+ * sys/applemedia-nonpublic/corevideobuffer.c:
+ * sys/applemedia/coremediabuffer.c:
+ * sys/applemedia/corevideobuffer.c:
+ meta: Initialize all GstMeta fields
+ During allocation they are not initialized to all zeroes.
+ https://bugzilla.gnome.org/show_bug.cgi?id=764902
+
+2016-04-11 22:08:03 -0700 Reynaldo H. Verdejo Pinochet <reynaldo@osg.samsung.com>
+
+ * sys/dvb/gstdvbsrc.c:
+ dvbsrc: avoid redundant delsys querying
+ There is no need to query the frontend for the list
+ of supported delivery systems if we are selecting
+ one from the list of autodetected ones.
+
+2016-04-10 18:58:33 -0700 Reynaldo H. Verdejo Pinochet <reynaldo@osg.samsung.com>
+
+ * sys/dvb/parsechannels.c:
+ dvb/parsechannels: add information to file not found error
+ Adds useful failure info (like filename) comming from
+ g_file_get_contents() as done for every other error in
+ this block.
+
+2016-04-13 00:43:18 +1000 Matthew Waters <matthew@centricular.com>
+
+ * gst-libs/gst/gl/cocoa/gstglwindow_cocoa.m:
+ * gst-libs/gst/gl/eagl/gstglwindow_eagl.m:
+ gl/cocoa/eagl: don't leak GThread's when dispatching messages
+ gst_gl_context_get_thread() returns a refed pointer, we need to unref it.
+
+2016-04-12 11:14:22 +0100 Luis de Bethencourt <luisbg@osg.samsung.com>
+
+ * ext/gl/gstgltestsrc.c:
+ gltestsrc: don't dereference null pointer
+ funcs can be NULL, it is one of the two conditions of the OR statement
+ above, so confirm it isn't before dereferencing with funcs->free.
+ CID 1358388
2016-04-12 04:16:55 +1000 Jan Schmidt <jan@centricular.com>
@@ -478,6 +3366,200 @@
the new program back out of it. Instead, add the new program to
the hash table after handling removal of the old one.
+2016-04-06 04:15:40 +0000 Matthew Waters <matthew@centricular.com>
+
+ * gst-libs/gst/gl/gstglupload.c:
+ glupload: keep the parent buffer around when converting EGLImage to 2D textures
+ e.g. receiving and releasing a buffer from OMX too early will potentially
+ cause textures to be overwritten while/before they are displayed.
+
+2016-04-11 16:43:45 +0000 Matthew Waters <matthew@centricular.com>
+
+ * ext/gl/gstglbasemixer.c:
+ glbasemixer: chain up to the parent implementation
+
+2016-04-11 18:06:25 +1000 Matthew Waters <matthew@centricular.com>
+
+ * ext/vulkan/vkdevice.c:
+ vulkan: prettify the various versions in the debug output
+ output human readable numbers.
+
+2016-04-11 20:23:45 +0100 Tim-Philipp Müller <tim@centricular.com>
+
+ * ext/openh264/gstopenh264dec.cpp:
+ openh264dec: minor clean-ups
+ Remove unused property getters, setters; outdated comment.
+
+2016-04-11 20:11:53 +0100 Tim-Philipp Müller <tim@centricular.com>
+
+ * ext/openh264/gstopenh264dec.cpp:
+ * ext/openh264/gstopenh264dec.h:
+ * ext/openh264/gstopenh264enc.cpp:
+ * ext/openh264/gstopenh264enc.h:
+ openh264: remove unnecessary instance private structures
+ Element instance structures are not public API, so no need
+ for the extra indirection to hide the data.
+
+2016-04-11 20:04:00 +0100 Tim-Philipp Müller <tim@centricular.com>
+
+ * ext/openh264/gstopenh264dec.cpp:
+ * ext/openh264/gstopenh264enc.cpp:
+ openh264: fix indentation
+
+2016-02-12 14:21:27 +0100 Philipp Zabel <p.zabel@pengutronix.de>
+
+ * sys/kms/gstkmsutils.c:
+ kmssink: enable UYVY, YUY2, and YVYU (interleaved YUV 4:2:2) formats
+ https://bugzilla.gnome.org/show_bug.cgi?id=761059
+
+2016-02-12 14:17:32 +0100 Philipp Zabel <p.zabel@pengutronix.de>
+
+ * sys/kms/gstkmsutils.c:
+ kmssink: enable NV16 (chroma-interleaved YUV 4:2:2) format
+ https://bugzilla.gnome.org/show_bug.cgi?id=761059
+
+2016-02-12 14:17:13 +0100 Philipp Zabel <p.zabel@pengutronix.de>
+
+ * sys/kms/gstkmsutils.c:
+ kmssink: enable Y42B (planar YUV 4:2:2) format
+ https://bugzilla.gnome.org/show_bug.cgi?id=761059
+
+2016-03-04 16:53:58 +0100 Víctor Manuel Jáquez Leal <vjaquez@igalia.com>
+
+ * sys/kms/gstkmssink.c:
+ * sys/kms/gstkmssink.h:
+ kmssink: keep last rendered buffer in memory
+ https://bugzilla.gnome.org/show_bug.cgi?id=761059
+
+2016-02-20 23:13:54 +0100 Víctor Manuel Jáquez Leal <vjaquez@igalia.com>
+
+ * sys/kms/gstkmssink.c:
+ * sys/kms/gstkmssink.h:
+ kmssink: wait for page flip or vblank
+ This patch requests for drmModePageFlip() for the used CRTC, if the kernel
+ module suppports async page flip. If it does not, the element requests for a
+ vblank event. A GstPoll waits for the event to happen.
+ https://bugzilla.gnome.org/show_bug.cgi?id=761059
+
+2016-02-10 20:43:47 +0100 Víctor Manuel Jáquez Leal <vjaquez@igalia.com>
+
+ * configure.ac:
+ * sys/kms/Makefile.am:
+ * sys/kms/gstkmsallocator.c:
+ * sys/kms/gstkmsallocator.h:
+ * sys/kms/gstkmssink.c:
+ * sys/kms/gstkmssink.h:
+ kmssink: add dmabuf support
+ This patch will enable the import of dmabufs into a KMS buffer using
+ the PRIME kernel interface.
+ If the driver does not support prime import, the method is skipped.
+ It has been tested with a Freescale I.MX6 board.
+ https://bugzilla.gnome.org/show_bug.cgi?id=761059
+
+2016-01-31 13:12:34 +0100 Víctor Manuel Jáquez Leal <vjaquez@igalia.com>
+
+ * sys/kms/gstkmssink.c:
+ * sys/kms/gstkmsutils.c:
+ * sys/kms/gstkmsutils.h:
+ kmssink: calculate display ratio
+ Get the aspect ratio given the information provided by libdrm, and with it
+ calculate the display ratio.
+ https://bugzilla.gnome.org/show_bug.cgi?id=761059
+
+2016-01-20 12:00:51 +0100 Víctor Manuel Jáquez Leal <vjaquez@igalia.com>
+
+ * configure.ac:
+ * sys/Makefile.am:
+ * sys/kms/Makefile.am:
+ * sys/kms/gstkmsallocator.c:
+ * sys/kms/gstkmsallocator.h:
+ * sys/kms/gstkmsbufferpool.c:
+ * sys/kms/gstkmsbufferpool.h:
+ * sys/kms/gstkmssink.c:
+ * sys/kms/gstkmssink.h:
+ * sys/kms/gstkmsutils.c:
+ * sys/kms/gstkmsutils.h:
+ kmssink: add plugin and sink element
+ This is simple video sink that use libdrm/libkms API to render frames.
+ The element uses planes to render through drmModeSetPlane().
+ It has been tested in an Exynos4412 board and in a Freescale I.MX6 board.
+ https://bugzilla.gnome.org/show_bug.cgi?id=761059
+
+2016-04-10 17:46:15 +1000 Matthew Waters <matthew@centricular.com>
+
+ * configure.ac:
+ * ext/vulkan/Makefile.am:
+ * ext/vulkan/vkapi.h:
+ * ext/vulkan/vkdevice.c:
+ * ext/vulkan/vkdisplay.c:
+ * ext/vulkan/vkinstance.c:
+ * ext/vulkan/vkwindow.c:
+ * ext/vulkan/wayland/Makefile.am:
+ * ext/vulkan/wayland/vkdisplay_wayland.c:
+ * ext/vulkan/wayland/vkdisplay_wayland.h:
+ * ext/vulkan/wayland/vkwindow_wayland.c:
+ * ext/vulkan/wayland/vkwindow_wayland.h:
+ * ext/vulkan/wayland/wayland_event_source.c:
+ * ext/vulkan/wayland/wayland_event_source.h:
+ vulkan: add a wayland winsys implementation
+
+2016-04-10 17:43:39 +1000 Matthew Waters <matthew@centricular.com>
+
+ * ext/vulkan/xcb/vkwindow_xcb.c:
+ * ext/vulkan/xcb/vkwindow_xcb.h:
+ vulkan/xcb: getProcAddress winsys functions
+ There's no guarantee that they will always be exposed by the vulkan loader.
+
+2016-04-09 17:52:28 +1000 Matthew Waters <matthew@centricular.com>
+
+ * ext/vulkan/vkupload.c:
+ vkupload: copy necessary buffer metadata
+ timestamps, flags, etc
+
+2016-04-11 08:34:00 +1000 Alessandro Decina <alessandro.d@gmail.com>
+
+ * gst-libs/gst/gl/cocoa/gstglwindow_cocoa.m:
+ * gst-libs/gst/gl/eagl/gstglwindow_eagl.m:
+ libgstgl: cocoa, eagl: use libdispatch to schedule GL calls
+ Use libdispatch instead of GMainLoop to dispatch GL calls. libdispatch is more
+ optimized and cuts a lot of poll()/pthread_* overhead.
+
+2016-04-11 08:02:45 +1000 Alessandro Decina <alessandro.d@gmail.com>
+
+ * gst-libs/gst/gl/gstglwindow.c:
+ glwindow: reduce the number of GMutexes and GConds in send_message()
+ Don't create many short lived locks/conds in gst_gl_window_send_message. This is
+ a micro optimization to save a bunch of pthread_* calls which are expensive on
+ OSX/iOS and possibly other platforms.
+
+2016-04-10 22:18:38 +0100 Tim-Philipp Müller <tim@centricular.com>
+
+ * win32/common/libgstgl.def:
+ win32: update .def file for new gl api
+
+2016-04-08 18:34:45 +1000 Matthew Waters <matthew@centricular.com>
+
+ * ext/vulkan/vkswapper.c:
+ vkswapper: add necessary wait stages to the submission info
+
+2016-04-08 18:32:41 +1000 Matthew Waters <matthew@centricular.com>
+
+ * ext/vulkan/vkswapper.c:
+ vkswapper: add srgb formats to our list of formats
+ intel returns them for their surface formats.
+
+2016-04-08 18:09:53 +1000 Matthew Waters <matthew@centricular.com>
+
+ * ext/vulkan/vkimagememory.c:
+ vulkan: silence a validation warning filling out the image barrier
+
+2016-04-08 18:09:06 +1000 Matthew Waters <matthew@centricular.com>
+
+ * ext/vulkan/vkdevice.c:
+ * ext/vulkan/vkinstance.c:
+ vulkan: use the correct validation layer name
+ The threading validation layer has changed names.
+
2016-04-08 14:07:55 +0300 Sebastian Dröge <sebastian@centricular.com>
* sys/decklink/gstdecklink.cpp:
@@ -501,6 +3583,38 @@
Just warn and error out instead.
https://bugzilla.gnome.org/show_bug.cgi?id=764545
+2016-04-08 14:51:44 +1000 Matthew Waters <matthew@centricular.com>
+
+ * sys/nvenc/gstnvbaseenc.c:
+ * sys/nvenc/gstnvbaseenc.h:
+ nvenc: add some rate control modes/properties
+ Supported modes are constant quantizer, cbr, vbr and vbr with a minimum quantizer.
+
+2016-04-07 23:24:47 +1000 Matthew Waters <matthew@centricular.com>
+
+ * sys/nvenc/gstnvbaseenc.c:
+ * sys/nvenc/gstnvbaseenc.h:
+ * sys/nvenc/gstnvh264enc.c:
+ nvenc: move codec config initialization from the implementation to the base class
+ Supports a better separation of configuration parameters
+
+2016-04-07 22:46:08 +1000 Matthew Waters <matthew@centricular.com>
+
+ * sys/nvenc/gstnvbaseenc.c:
+ * sys/nvenc/gstnvbaseenc.h:
+ * sys/nvenc/gstnvenc.c:
+ * sys/nvenc/gstnvh264enc.c:
+ nvenc: add preset selection
+ Some presets are not always supported on all devices and will cause an error if
+ used. Specifically, the LOSSLESS presets are known to not work everywhere.
+
+2014-07-16 02:44:42 +0200 Marcin Kolny <marcin.kolny@gmail.com>
+
+ * ext/chromaprint/gstchromaprint.c:
+ chromaprint: emit notify::fingerprint signal when fingerprint is ready
+ In addition to adding the fingerprint to the tags.
+ https://bugzilla.gnome.org/show_bug.cgi?id=733233
+
2016-04-04 20:55:51 +1000 Matthew Waters <matthew@centricular.com>
* ext/gl/gstglvideomixer.c:
@@ -511,6 +3625,160 @@
sure that it is also overridable.
https://bugzilla.gnome.org/show_bug.cgi?id=764363
+2016-04-05 21:40:58 -0400 Nicolas Dufresne <nicolas.dufresne@collabora.com>
+
+ * gst/librfb/gstrfbsrc.c:
+ rfbsrc: Fix fallback to GstVideoBufferPool
+ The replacement pool need to be added to the query, otherwise the
+ baseclass won't see it. We also need to properly remove the rejected
+ pools.
+ https://bugzilla.gnome.org/show_bug.cgi?id=763441
+
+2016-04-05 21:07:32 -0400 Nicolas Dufresne <nicolas.dufresne@collabora.com>
+
+ * gst/librfb/gstrfbsrc.c:
+ * gst/librfb/gstrfbsrc.h:
+ rfbsrc: Implement decide_allocation virtual
+ This way we can use the base class for buffer allocation, hence use
+ fill() instead of create() virtual. This also adds a strict check on the
+ select pool buffer size as we don't support strides and padding.
+ This is based on initial patch proposed by Sebastien Dröge, from which I
+ also fixed a buffer pool leak.
+ https://bugzilla.gnome.org/show_bug.cgi?id=763441
+
+2016-04-05 15:31:49 -0400 Nicolas Dufresne <nicolas.dufresne@collabora.com>
+
+ * gst/librfb/gstrfbsrc.c:
+ rfbsrc: Fix caps negotiation
+ As we currently only use the server reported "natural" format, caps
+ negotiation should simply be limited to telling the base class which
+ format to use. Fix the negotiation by moving the associated code
+ into negotiate() virtual function. Also, use gst_base_src_set_caps()
+ rather then setting it on the pad directly. Also protect against this
+ method being called multiple time (we can't renegotiate for now).
+ This change also moves some network code that was being run during the
+ application state change call, to be run on the streaming thread.
+ https://bugzilla.gnome.org/show_bug.cgi?id=739598
+
+2016-03-26 13:36:34 -0400 Nicolas Dufresne <nicolas.dufresne@collabora.com>
+
+ * gst/librfb/gstrfbsrc.c:
+ rfbsrc: Implement unlock() method
+ This prevent stalls when we try to stop the source while waiting
+ for the server to send more updates.
+
+2016-03-24 18:27:54 -0400 Nicolas Dufresne <nicolas.dufresne@collabora.com>
+
+ * gst/librfb/rfbdecoder.c:
+ rfbsrc: Check for connection being closed
+ Although it's not very well documented, g_input_stream_read_all() will
+ set the number of bytes read to 0 if the connection is closed rather
+ then returning an error.
+
+2016-03-24 18:26:46 -0400 Nicolas Dufresne <nicolas.dufresne@collabora.com>
+
+ * gst/librfb/rfbdecoder.c:
+ rfbsrc: Check for read/write error
+ Check for read/write error. This prevent undefined behaviour that rely
+ on unitialized buffer.
+
+2016-03-24 18:14:17 -0400 Nicolas Dufresne <nicolas.dufresne@collabora.com>
+
+ * gst/librfb/gstrfbsrc.c:
+ * gst/librfb/rfbdecoder.c:
+ * gst/librfb/rfbdecoder.h:
+ rfbsrc: Add a internal method to disconnect
+ This also removes the disconnected boolean hack.
+
+2016-03-24 18:14:37 -0400 Nicolas Dufresne <nicolas.dufresne@collabora.com>
+
+ * gst/librfb/gstrfbsrc.c:
+ rfbsrc: Don't ignore errors
+ This prevents recursion on error. This used to happen as we
+ don't change the state when something fails. We end up running
+ and failing in the same state forever.
+
+2016-03-24 16:46:49 -0400 Nicolas Dufresne <nicolas.dufresne@collabora.com>
+
+ * gst/librfb/rfbdecoder.c:
+ * gst/librfb/rfbdecoder.h:
+ rfbsrc: Serialize write operations
+ Currently we send key events from seperate threads. IOStream does not
+ allow concurrent write operations, so protect this operation using a
+ mutex.
+
+2016-03-17 15:24:52 -0400 Nicolas Dufresne <nicolas.dufresne@collabora.com>
+
+ * gst/librfb/rfbdecoder.c:
+ rfbsrc: Add 3.7/3.8 security type negotiation
+
+2016-03-16 18:48:49 -0400 Nicolas Dufresne <nicolas.dufresne@collabora.com>
+
+ * gst/librfb/Makefile.am:
+ * gst/librfb/gstrfbsrc.c:
+ * gst/librfb/rfbdecoder.c:
+ * gst/librfb/rfbdecoder.h:
+ rfbsrc: Port to GSocketClient
+ Using GSocketClient we can simplify a lot the read/write operation.
+ This also provide an GSocketConnection (a GIOStream) which can then
+ be used with the GTlsClientConnection for secure connections. Note
+ that we use _write_all() to ensure all bytes have been read. This is
+ to follow the fact the none of the _send() calls check the return
+ value.
+
+2016-03-16 16:49:29 -0400 Nicolas Dufresne <nicolas.dufresne@collabora.com>
+
+ * gst/librfb/Makefile.am:
+ * gst/librfb/gstrfbsrc.h:
+ * gst/librfb/rfb.h:
+ * gst/librfb/rfbdecoder.c:
+ rfbsrc: Remove useless library wrapping
+ We use a sinlge .c file, simplify everything by removing that
+ static library.
+
+2016-03-16 16:49:09 -0400 Nicolas Dufresne <nicolas.dufresne@collabora.com>
+
+ * gst/librfb/Makefile.am:
+ * gst/librfb/rfb.c:
+ * gst/librfb/rfb.h:
+ * gst/librfb/rfbbuffer.c:
+ * gst/librfb/rfbbuffer.h:
+ * gst/librfb/rfbcontext.h:
+ * gst/librfb/rfbdecoder.h:
+ * gst/librfb/rfbutil.h:
+ rfbsrc: Cleanup dead code
+ Remove all the unused stuff, the include header, definition and C code
+ that don't contribute anything to this element.
+
+2016-03-14 15:08:13 -0400 Nicolas Dufresne <nicolas.dufresne@collabora.com>
+
+ * gst/librfb/rfbdecoder.c:
+ rfbsrc: Properly fallback to 3.3
+ If the major version is not 3, then the minor version provided
+ should be ignored, as it is meaningless for our fallback.
+
+2016-03-14 15:05:45 -0400 Nicolas Dufresne <nicolas.dufresne@collabora.com>
+
+ * gst/librfb/rfbdecoder.c:
+ rfbsrc: Cleanly handle security negotiation failure
+ When the security cannot be negotiated, the server returns
+ security type of 0 (failure). In that case, the next step is
+ to read the error reason string.
+
+2016-04-01 14:36:15 +0100 Vincent Penquerc'h <vincent.penquerch@collabora.co.uk>
+
+ * ext/dash/gstmpdparser.c:
+ mpdparser: clamp segment durations to each other and period end
+ 5.3.2.1 in the spec.
+ https://bugzilla.gnome.org/show_bug.cgi?id=751792
+
+2015-09-10 13:22:58 +0100 Florin Apostol <florin.apostol@oregan.net>
+
+ * tests/check/elements/dash_mpd.c:
+ dashdemux: unit testing reproducing segment duration overflow
+ unit test reproducing https://bugzilla.gnome.org/show_bug.cgi?id=751792
+ With minor changes by Vincent Penquerc'h.
+
2016-04-05 14:49:51 +0300 Sebastian Dröge <sebastian@centricular.com>
* sys/decklink/gstdecklinkaudiosrc.cpp:
@@ -538,6 +3806,51 @@
::VideoInputFrameArrived() callback, observed on Intensity Pro cards.
https://bugzilla.gnome.org/show_bug.cgi?id=747633
+2016-03-23 03:16:11 +0000 Matthew Waters <matthew@centricular.com>
+
+ * ext/gl/gstglvideomixer.c:
+ glvideomixer: add support for the affine transformation meta
+
+2016-03-23 03:14:40 +0000 Matthew Waters <matthew@centricular.com>
+
+ * ext/gl/gstglimagesink.c:
+ glimagesink: support the affine transformation meta for any texture target
+
+2016-04-05 16:22:49 +1000 Matthew Waters <matthew@centricular.com>
+
+ * ext/gl/gstglmixer.c:
+ glmixer: set the current texture to 0 before mapping
+ If we fail mapping, we don't want to use undefined video data in the subclass.
+
+2015-09-08 14:37:57 +0200 Patricia Muscalu <patricia@axis.com>
+
+ * ext/curl/gstcurlbasesink.c:
+ curlsink: catch an unknown error
+ In this case the socket callback has not been called
+ by libcurl and the curlsink has not been notified about any
+ connection problems by libcurl.
+ This indicates that it's a bug in libcurl so catch it as
+ an unknown error.
+ https://bugzilla.gnome.org/show_bug.cgi?id=754432
+
+2016-04-04 13:43:30 +1000 Matthew Waters <matthew@centricular.com>
+
+ * ext/gl/gstglmixerbin.c:
+ glmixerbin: proxy the start-time-* properties from aggregator
+
+2016-04-04 11:28:35 +0200 Santiago Carot-Nemesio <sancane@gmail.com>
+
+ * ext/dtls/gstdtlssrtpdec.c:
+ * ext/dtls/gstdtlssrtpenc.c:
+ dtls: Use unique names for internal elements to ease debugging
+ https://bugzilla.gnome.org/show_bug.cgi?id=748651
+
+2016-04-03 17:56:06 +0200 Aurélien Zanelli <aurelien.zanelli@darkosphere.fr>
+
+ * gst-libs/gst/base/gstaggregator.c:
+ aggregator: remove duplicated test of flow_return in pad_chain_internal
+ https://bugzilla.gnome.org/show_bug.cgi?id=764549
+
2016-04-03 18:06:20 +0900 Kouhei Sutou <kou@clear-code.com>
* sys/directsound/Makefile.am:
@@ -548,6 +3861,73 @@
f9464ce3549c2b3948a582464631ba4f8dd0d5e7 .
https://bugzilla.gnome.org/show_bug.cgi?id=764523
+2016-03-31 11:21:35 +0200 Christoffer Stengren <christsn.gs@gmail.com>
+
+ * gst/gdp/dataprotocol.c:
+ * gst/gdp/dataprotocol.h:
+ * gst/gdp/gstgdpdepay.c:
+ * gst/gdp/gstgdpdepay.h:
+ gdpdepay: Query for buffer allocator before using default
+ https://bugzilla.gnome.org/show_bug.cgi?id=764361
+
+2016-03-22 19:27:39 +0200 Vivia Nikolaidou <vivia@toolsonair.com>
+
+ * gst/interlace/gstinterlace.c:
+ interlace: Allow interlaced sink caps, do passthrough
+ Allow interlace to receive already interlaced content, if compatible with its
+ configuration. In that case, it will just do passthrough.
+ https://bugzilla.gnome.org/show_bug.cgi?id=764036
+
+2016-04-01 21:24:34 +0200 Stefan Sauer <ensonic@users.sf.net>
+
+ * ext/lv2/README:
+ README: update to 1.0 and lilv
+
+2016-04-01 18:33:13 +0200 Stefan Sauer <ensonic@users.sf.net>
+
+ * ext/lv2/gstlv2filter.c:
+ lv2filter: remove the variable for the registry klass tag
+ Just pass the string when registering.
+
+2016-04-01 18:31:36 +0200 Stefan Sauer <ensonic@users.sf.net>
+
+ * ext/lv2/gstlv2filter.c:
+ lv2filter: remove copy and paste of doc blob
+ This doc block is already in gstlv2.c.
+
+2016-04-01 12:59:19 +0200 Vanessa Chipirras Navalon <vanechipi@qtec.com>
+
+ * ext/opencv/gstsegmentation.cpp:
+ * ext/opencv/gstsegmentation.h:
+ opencv: segmentation: Ported to OpenCV version 3.1
+ Add namespace bgsegm, replacement functions and Template class for new
+ OpenCV versions because these functions have been removed. cvarrToMat() is
+ added because it is compatible with all versions of OpenCV and the use of
+ class Mat constructor is eliminated, it is also deprecated in 3.X versions.
+ Use the namespace cv because some functions are called many times.
+ This patch keeps compatibility with 2.4
+ https://bugzilla.gnome.org/show_bug.cgi?id=760473
+
+2016-04-01 14:12:08 +0300 Sreerenj Balachandran <sreerenj.balachandran@intel.com>
+
+ * gst-libs/gst/codecparsers/gstvp9parser.c:
+ * gst-libs/gst/codecparsers/gstvp9parser.h:
+ codecparser: vp9: move persistent fields from GstVp9FrameHdr to GstVp9Parser
+ The subsampling_x, subsampling_y, bit_depth, color_space and color_range
+ fileds are moved from GstVp9FrameHdr to the global GstVp9Parser structure.
+ These fields are only present in keyframe or intra-only frame, no need to
+ duplicate them for inter-frames. This is an ABI change.
+ https://bugzilla.gnome.org/show_bug.cgi?id=764370
+
+2016-04-01 12:08:53 +0200 Vanessa Chipirras Navalon <vanechipi@qtec.com>
+
+ * ext/opencv/gsttextoverlay.h:
+ opencv: textoverlay: Ported to OpenCV version 3.1
+ imgproc_c.h is added because CvFont struct needs it in any 3.x version.
+ We use this structure in GstOpencvTextOverlay. This keeps compatibility
+ with 2.4.
+ https://bugzilla.gnome.org/show_bug.cgi?id=760473
+
2016-04-01 11:56:20 +0300 Sebastian Dröge <sebastian@centricular.com>
* gst/videoparsers/gsth264parse.c:
@@ -557,6 +3937,196 @@
and the other compatible profiles.
https://bugzilla.gnome.org/show_bug.cgi?id=764448
+2016-03-22 07:19:03 +0000 Matthew Waters <matthew@centricular.com>
+
+ * gst-libs/gst/gl/egl/gsteglimagememory.c:
+ eglimage: perform eglCreateImage in the gl thread
+ while calling eglCreateImage without a GL context current in the executing
+ thread works on the RPi, some other implementations will return errors.
+ Marshall the eglCreateImage to the GL thread to appease these implementations.
+
+2016-04-01 14:58:56 +1100 Matthew Waters <matthew@centricular.com>
+
+ * gst-libs/gst/gl/gstglviewconvert.c:
+ glviewconvert: support outputting to multiple draw buffers on GLES3
+ A similar change that was done to glcolorconvert adding the necessary shader
+ mangling.
+
+2016-03-31 19:50:28 +1100 Matthew Waters <matthew@centricular.com>
+
+ * gst-libs/gst/gl/gstglcolorconvert.c:
+ glcolorconvert: implement multiple render targets for GLES3
+ There are numerous slight differences required between Desktop GL and GLES3 for
+ multiple render targets.
+ 1. gl_FragData doesn't exist at all and one is required to use
+ 'layout (location = ?) out ...' instead.
+ 2. gl_FragColor doesn't exist, same as 1
+ 3. texture2D() has been deprecated
+ Fortunately most of these have been taken care of with GL3 and the shader
+ mangling already exists so just expand the conditions they are used in. The
+ gl_FragData issue requires a new mangle pass though. We also use this new
+ pass on desktop GL for consistency.
+
+2016-03-31 18:23:22 -0300 Thiago Santos <thiagoss@osg.samsung.com>
+
+ * tests/check/elements/mssdemux.c:
+ tests: mssdemux: do not use gst_object_unref for pure GObject*
+ Deallocate GObject* with g_object_unref instead of gst_object_unref.
+ Even if it works now, it is confusing and in the future it might
+ not work if any GstObject specifics are added.
+ https://bugzilla.gnome.org/show_bug.cgi?id=762142
+
+2016-02-16 13:55:54 +0000 Florin Apostol <florin.apostol@oregan.net>
+
+ * tests/check/elements/dash_demux.c:
+ dashdemux: tests: use g_object_unref for test data
+ The GstDashDemuxTestCase object is allocated using g_object_newv
+ but in many places was being deallocated using gst_object_unref.
+ This was caused by commit ae3ed25025e34ea9b09df59d22d7ebd7294560bc.
+ https://bugzilla.gnome.org/show_bug.cgi?id=762142
+
+2016-03-31 16:08:12 +0100 Luis de Bethencourt <luisbg@osg.samsung.com>
+
+ * ext/opencv/MotionCells.cpp:
+ * ext/opencv/MotionCells.h:
+ motioncells: fully construct MotionCells
+ Some members of MotionCells were not being initialized in the constructor.
+ Protect from potential garbage memory usage by fully initializing it.
+ Moving m_frameSize out of the class because it is only used in
+ performDetectionMotionCells().
+ CID 1197704
+
+2016-04-01 00:23:25 +1100 Matthew Waters <matthew@centricular.com>
+
+ * ext/gl/Makefile.am:
+ gl/build: add missing '\' at the end of the line in MakeFile.am
+ Otherwise the following elements aren't included in the correct variable.
+ Fixes error in 'make distcheck' failing to find gstgltestsrc.h
+
+2016-03-31 23:07:17 +1100 Matthew Waters <matthew@centricular.com>
+
+ * tests/check/Makefile.am:
+ gl/tests/pipelines: add custom _CFLAGS and LDADD
+ As is done everywhere else.
+ From what I can gather from make -C tests/check V=1 $(GST_PLUGINS_BAD_CFLAGS) is
+ required in order to find in-tree headers as well as srcdir != builddir
+ configurations.
+
+2016-03-31 22:20:01 +1100 Matthew Waters <matthew@centricular.com>
+
+ * tests/check/Makefile.am:
+ gl/tests: only build the simple-launch-lines test if we have GL
+
+2016-03-31 20:00:37 +1100 Matthew Waters <matthew@centricular.com>
+
+ * gst-libs/gst/gl/gstglcolorconvert.c:
+ glcolorconvert: don't use the predefined variable name sample
+ Using 'sample' as a variable name is an error in GLES3
+
+2016-03-22 23:10:24 +1100 Matthew Waters <matthew@centricular.com>
+
+ * tests/examples/gl/gtk/switchvideooverlay/Makefile.am:
+ * tests/examples/gl/gtk/switchvideooverlay/main.cpp:
+ gl/examples: fix switchvideooverlay for wayland
+ and call XInitThreads() for X11
+
+2016-03-21 15:25:21 +1100 Matthew Waters <matthew@centricular.com>
+
+ * configure.ac:
+ * tests/examples/gl/gtk/Makefile.am:
+ * tests/examples/gl/gtk/gtkvideooverlay/.gitignore:
+ * tests/examples/gl/gtk/gtkvideooverlay/Makefile.am:
+ * tests/examples/gl/gtk/gtkvideooverlay/gtkvideooverlay.vcproj:
+ * tests/examples/gl/gtk/gtkvideooverlay/main.cpp:
+ gl/examples: remove duplicated videooverlay example
+ filtervideooverlay proved the exact same example (only with a extra glfiltercube).
+
+2016-03-21 15:23:41 +1100 Matthew Waters <matthew@centricular.com>
+
+ * tests/examples/gl/gtk/3dvideo/main.cpp:
+ gl/examples/3d: additions for wayland support
+
+2016-03-17 23:51:44 +1100 Matthew Waters <matthew@centricular.com>
+
+ * tests/check/Makefile.am:
+ * tests/check/pipelines/simple-launch-lines.c:
+ gl/tests: add missing test to the build system
+ Also update it for the current api
+
+2016-03-17 23:50:00 +1100 Matthew Waters <matthew@centricular.com>
+
+ * ext/gl/effects/gstgleffectssources.c:
+ * ext/gl/gstgldifferencematte.c:
+ * ext/gl/gstgldifferencematte.h:
+ gldifferencematte: port to gl3/gles2
+
+2016-02-26 20:55:47 +1100 Matthew Waters <matthew@centricular.com>
+
+ * ext/gl/Makefile.am:
+ * ext/gl/gltestsrc.c:
+ * ext/gl/gstgltestsrc.c:
+ * ext/gl/gstopengl.c:
+ gltestsrc: port to gles2/gl3
+ This makes gltestsrc work everywhere \o/
+ - workaround RPi returning invalid values for positive coords in the
+ checker shader
+ - reduce the number of iterations in the mandelbrot shader for gles2
+ https://bugzilla.gnome.org/show_bug.cgi?id=751540
+
+2016-02-26 16:57:47 +1100 Matthew Waters <matthew@centricular.com>
+
+ * ext/gl/gltestsrc.c:
+ gltestsrc: port smpte pattern to shaders
+ Loosely based on patch by
+ Lubosz Sarnecki <lubosz.sarnecki@collabora.co.uk>
+ https://bugzilla.gnome.org/show_bug.cgi?id=751540
+
+2016-02-26 12:02:15 +1100 Matthew Waters <matthew@centricular.com>
+
+ * ext/gl/gltestsrc.c:
+ gltestsrc: implement the circular method
+ https://bugzilla.gnome.org/show_bug.cgi?id=759801
+
+2016-02-25 21:18:31 +1100 Matthew Waters <matthew@centricular.com>
+
+ * ext/gl/gltestsrc.c:
+ * ext/gl/gltestsrc.h:
+ * ext/gl/gstgltestsrc.c:
+ * ext/gl/gstgltestsrc.h:
+ gltestsrc: add a generic src framework
+ Any unsupported pattern (circular) results in an error
+
+2016-02-29 20:15:24 +1100 Matthew Waters <matthew@centricular.com>
+
+ * ext/gl/gstglstereosplit.c:
+ * ext/gl/gstglstereosplit.h:
+ glsterosplit: remove internal glupload/glcolorconvert
+ They are provided separately as elements and no other element contains the
+ internal references to glupload/glcolorconvert.
+
+2016-03-31 19:43:04 +1100 Matthew Waters <matthew@centricular.com>
+
+ * configure.ac:
+ * gst-libs/gst/gl/glprototypes/gstgl_gles2compat.h:
+ * gst-libs/gst/gl/gstglapi.h:
+ * gst-libs/gst/gl/gstglcontext.c:
+ gl: add support for building against GLES3 headers
+ with a fallback to GLES2 headers if available.
+
+2016-03-31 19:38:12 +1100 Matthew Waters <matthew@centricular.com>
+
+ * gst-libs/gst/gl/gstglmemory.c:
+ glmemory: add checking the read implementation format/type on gles2 platforms
+ By default, reading GL_RED or GL_RG us unsupported by glReadPixels unless
+ exposed through GL_COLOR_READ_IMPLEMENTATION_FORMAT/TYPE. This allows
+ downloading multiple-planar video frames where possible.
+
+2016-03-31 19:35:09 +1100 Matthew Waters <matthew@centricular.com>
+
+ * gst-libs/gst/gl/gstglbasememory.c:
+ glbasememory: rollback map state when subclass map fails
+ Otherwise our state doesn't reflect reality.
+
2016-03-31 19:31:00 +1100 Matthew Waters <matthew@centricular.com>
* gst-libs/gst/gl/gstglmemorypbo.c:
@@ -565,11 +4135,15 @@
Also only unset the NEED_DOWNLOAD flag in download_transfer() if the read actually
succeeds.
-2016-03-31 19:35:09 +1100 Matthew Waters <matthew@centricular.com>
+2016-03-31 19:25:32 +1100 Matthew Waters <matthew@centricular.com>
- * gst-libs/gst/gl/gstglbasememory.c:
- glbasememory: rollback map state when subclass map fails
- Otherwise our state doesn't reflect reality.
+ * gst-libs/gst/gl/glprototypes/shaders.h:
+ * gst-libs/gst/gl/gstglshader.c:
+ * gst-libs/gst/gl/gstglshader.h:
+ glshader: add glBindFragDataLocation
+ There are some cases where it's needed for binding in/out variables in shaders.
+ e.g. glsl 150 (gl 3.2) doesn't support the 'layout (location = ?)' specifiers in
+ the shader source so we have to bind them ourselves.
2016-03-31 12:20:30 +0300 Sebastian Dröge <sebastian@centricular.com>
@@ -588,6 +4162,105 @@
across header versions (and ultimately nvidia driver releases).
https://bugzilla.gnome.org/show_bug.cgi?id=763324
+2016-03-30 22:34:59 +0100 Vanessa Chipirras Navalon <vanechipi@qtec.com>
+
+ * docs/plugins/Makefile.am:
+ * docs/plugins/gst-plugins-bad-plugins-docs.sgml:
+ * docs/plugins/gst-plugins-bad-plugins-sections.txt:
+ * docs/plugins/gst-plugins-bad-plugins.args:
+ * docs/plugins/inspect/plugin-opencv.xml:
+ * ext/opencv/Makefile.am:
+ * ext/opencv/gstopencv.cpp:
+ * ext/opencv/gstpyramidsegment.cpp:
+ * ext/opencv/gstpyramidsegment.h:
+ opencv: pyramidsegment: delete element
+ cvPyrSegmentation() has been deprecated in OpenCV 3.0, and there isn't any
+ function to replace it. Deleting this element so we can support OpenCV 3.1
+ without build issues.
+ https://bugzilla.gnome.org/show_bug.cgi?id=760473
+
+2016-01-26 16:52:37 +0100 Vanessa Chipirras Navalon <vanechipi@qtec.com>
+
+ * ext/opencv/gstcvsmooth.cpp:
+ opencv: gstcvsmooth: Ported to OpenCV version 3.1
+ cvarrToMat() is added because it is compatible with all versions of Opencv
+ and the use the class constructor Mat is eliminated because is deprecated
+ in 3.X versions. This keeps compatibility with 2.4.
+ https://bugzilla.gnome.org/show_bug.cgi?id=760473
+
+2016-01-27 10:05:13 +0100 Vanessa Chipirras Navalon <vanechipi@qtec.com>
+
+ * ext/opencv/gstgrabcut.cpp:
+ opencv: grabcut: Ported to OpenCV version 3.1
+ cvarrToMat() is added because it is compatible with all versions of Opencv
+ and using the class Mat constructor is eliminated, because is deprecated
+ in 3.X versions. The use the using namespace cv because is called some
+ functions many times. This keeps compatibility with 2.4.
+ https://bugzilla.gnome.org/show_bug.cgi?id=760473
+
+2016-01-27 15:37:39 +0100 Vanessa Chipirras Navalon <vanechipi@qtec.com>
+
+ * ext/opencv/gstfaceblur.cpp:
+ opencv: faceblur: Ported to OpenCV version 3.1
+ cvarrToMat() is added because it is compatible with all versions of Opencv
+ and the use of the class constructor Mat is eliminated because is deprecated
+ in 3.X versions. Included 'using namespace std' because it is needed for the
+ Vector class in 3.X versions. This keeps compatibility with 2.4.
+ https://bugzilla.gnome.org/show_bug.cgi?id=760473
+
+2016-01-27 15:51:37 +0100 Vanessa Chipirras Navalon <vanechipi@qtec.com>
+
+ * ext/opencv/gsthanddetect.cpp:
+ opencv: handdetect: Ported to OpenCV version 3.1
+ cvarrToMat() is added because it is compatible with all versions of Opencv
+ and the use of the class constructor Mat is eliminated because is deprecated
+ in 3.X versions. Included 'using namespace std' because it is needed for the
+ vector class in 3.X versions. This keeps compatibility with 2.4.
+ https://bugzilla.gnome.org/show_bug.cgi?id=760473
+
+2016-01-27 16:51:13 +0100 Vanessa Chipirras Navalon <vanechipi@qtec.com>
+
+ * ext/opencv/gstretinex.cpp:
+ opencv: retinex: Ported to OpenCV version 3.1
+ cvarrToMat() is added because it is compatible with all versions of Opencv
+ and using the class constructor Mat is eliminated because is deprecated
+ in 3.X versions. This keeps compatibility with 2.4.
+ https://bugzilla.gnome.org/show_bug.cgi?id=760473
+
+2016-01-28 16:19:46 +0100 Vanessa Chipirras Navalon <vanechipi@qtec.com>
+
+ * ext/opencv/gstdisparity.cpp:
+ * ext/opencv/gstdisparity.h:
+ opencv: disparity: Ported to OpenCV version 3.1
+ 'METHOD_VAR', 'METHOD_GC' is removed because there aren't equivalent functions
+ in new OpenCV versions. 'img_right_as_cvMat_rgb', 'img_left_as_cvMat_rgb' and
+ 'depth_map_as_cvMat2' variables is removed because these aren't used.
+ cvarrToMat() is added because it is compatible with all versions of Opencv
+ and using the class Mat constructor is eliminated, because is deprecated
+ in 3.X versions. The use 'using namespace cv' because is called some
+ functions many times. This keeps compatibility with 2.4.
+ https://bugzilla.gnome.org/show_bug.cgi?id=760473
+
+2016-02-01 13:58:49 +0100 Vanessa Chipirras Navalon <vanechipi@qtec.com>
+
+ * ext/opencv/gstskindetect.cpp:
+ opencv: skindetect: Ported to OpenCV version 3.1
+ cvCVPixToPlane() has been deprecated in OpenCV 3.0, and there is
+ function to replace it cvSplit(). The include compat.hpp is deleted because
+ in 3.X versions doen't exist and it isn't necessary for 2.4.X versions
+ in this element. This keeps compatibility with 2.4.
+ https://bugzilla.gnome.org/show_bug.cgi?id=760473
+
+2016-01-28 17:40:51 +0100 Vanessa Chipirras Navalon <vanechipi@qtec.com>
+
+ * configure.ac:
+ * ext/opencv/gstopencvutils.cpp:
+ opencv: Ported to OpenCV version 3.1 OpenCV
+ configure.ac was changed to work with new versions of OpenCV 3.X.
+ A new include is added gstopencvutils.cpp because it contains
+ the previous. This keeps compatibility with 2.4.
+ https://bugzilla.gnome.org/show_bug.cgi?id=760473
+
2016-03-30 10:34:07 +0300 Sebastian Dröge <sebastian@centricular.com>
* sys/androidmedia/gstahcsrc.c:
@@ -598,6 +4271,70 @@
GStreamer API doesn't provide direct ways for doing so.
https://bugzilla.gnome.org/show_bug.cgi?id=764339
+2016-03-07 14:57:35 +0100 Edward Hervey <edward@centricular.com>
+
+ * ext/teletextdec/gstteletextdec.c:
+ teletexdec: Simplify negotiation code
+ No need to use a while() loop if we're going only going to use
+ the first structure of the caps ...
+ CID #1341748
+
+2016-03-28 13:52:07 +0300 Sebastian Dröge <sebastian@centricular.com>
+
+ * tests/check/libs/aggregator.c:
+ aggregator: Fix leak in unit test
+ GST_PAD_PROBE_HANDLED means that we should've unreffed the probe data,
+ it was handled by us in one way or another.
+
+2016-03-28 08:46:10 +0530 Nirbheek Chauhan <nirbheek@centricular.com>
+
+ * .gitignore:
+ .gitignore: Ignore some more test temporary files
+
+2016-03-28 08:45:45 +0530 Nirbheek Chauhan <nirbheek@centricular.com>
+
+ * tests/check/elements/compositor.c:
+ tests/compositor: Add test for aggregator pad numbering
+ Tests that the behaviour in 7a5cb5a473 is being conformed to.
+
+2016-03-27 19:06:50 +0530 Nirbheek Chauhan <nirbheek@centricular.com>
+
+ * gst-libs/gst/base/gstaggregator.c:
+ aggregator: Fix strcmp test for sink template
+
+2016-03-27 18:41:30 +0530 Nirbheek Chauhan <nirbheek@centricular.com>
+
+ * gst-libs/gst/base/gstaggregator.c:
+ aggregator: Don't try to be too smart while allocating pad names
+ Previously, while allocating the pad number for a new pad, aggregator was
+ maintaining an interesting relationship between the pad count and the pad
+ number.
+ If you requested a sink pad called "sink_6", padcount (which is badly named and
+ actually means number-of-pads-minus-one) would be set to 6. Which means that if
+ you then requested a sink pad called "sink_0", it would be assigned the name
+ "sink_6" again, which fails the non-uniqueness test inside gstelement.c.
+ This can be fixed by instead setting padcount to be 7 in that case, but this
+ breaks manual management of pad names by the application since it then becomes
+ impossible to request a pad called "sink_2". Instead, we fix this by always
+ directly using the requested name as the sink pad name. Uniqueness of the pad
+ name is tested separately inside gstreamer core. If no name is requested, we use
+ the next available pad number.
+ Note that this is important since the sinkpad numbering in aggregator is not
+ meaningless. Videoaggregator uses it to decide the Z-order of video frames.
+
+2016-02-23 15:11:36 +0100 Thibault Saunier <tsaunier@gnome.org>
+
+ * configure.ac:
+ * ext/lv2/Makefile.am:
+ * ext/lv2/gstlv2.c:
+ * ext/lv2/gstlv2.h:
+ * ext/lv2/gstlv2filter.c:
+ lv2: Port filters to GStreamer 1.0 and use lilv instead of slv2
+ Properly separate files as we will not have only one single base class
+ for all elements as we used to with 0.10, but the same way it is done
+ with ladspa, we subclass GstAudioFilter, GstBaseSource etc...
+ https://bugzilla.gnome.org/show_bug.cgi?id=678207
+
2016-03-27 14:29:58 +0530 Nirbheek Chauhan <nirbheek@centricular.com>
* ext/gtk/gstgtkglsink.c:
@@ -607,6 +4344,13 @@
Set a default category for gtkgstbasewidget lest the logging go to the 'default'
category where it can't be found easily
+2016-03-27 03:11:45 +0200 Yann Jouanin <yjo@witbe.net>
+
+ * ext/rtmp/gstrtmpsrc.c:
+ * ext/rtmp/gstrtmpsrc.h:
+ rtmpsrc plugin : add timeout option
+ https://bugzilla.gnome.org/show_bug.cgi?id=764251
+
2016-03-18 13:35:37 +0200 Sebastian Dröge <sebastian@centricular.com>
* gst/mxf/mxfmux.c:
@@ -616,17 +4360,42 @@
their state so that they can be used again when starting the muxer again.
https://bugzilla.gnome.org/show_bug.cgi?id=763862
-2016-03-03 11:31:01 -0300 Thiago Santos <thiagoss@osg.samsung.com>
+2016-03-05 09:47:27 +0200 Sebastian Dröge <sebastian@centricular.com>
- * gst/mpegtsdemux/mpegtspacketizer.c:
- mpegtspacketizer: simplify variable reset
- Just set it directly to 0, instead of checking and reseting
+ * docs/libs/gst-plugins-bad-libs-sections.txt:
+ * gst-libs/gst/player/gstplayer-media-info-private.h:
+ * gst-libs/gst/player/gstplayer-media-info.c:
+ * gst-libs/gst/player/gstplayer-media-info.h:
+ * gst-libs/gst/player/gstplayer.c:
+ * win32/common/libgstplayer.def:
+ player: Add is_live flag to the GstPlayerMediaInfo
+ https://bugzilla.gnome.org/show_bug.cgi?id=763126
-2016-03-04 20:05:38 -0300 Thiago Santos <thiagoss@osg.samsung.com>
+2016-02-29 11:39:54 +0200 Sebastian Dröge <sebastian@centricular.com>
- * sys/dvb/dvbbasebin.c:
- dvbbasebin: plug some leaks
- Plug various leaks in dvbbasebin.
+ * gst/sdp/Makefile.am:
+ * gst/sdp/gstsdpelem.c:
+ * gst/sdp/gstsdpsrc.c:
+ * gst/sdp/gstsdpsrc.h:
+ sdp: Add new sdpsrc element
+ This can read from an SDP file or get the SDP data via property. Works
+ around the problem that sdpdemux inside decodebin fails because the
+ GST_STATE_CHANGE_NO_PREROLL is not observed by the pipeline.
+ See https://bugzilla.gnome.org/show_bug.cgi?id=702495
+ https://bugzilla.gnome.org/show_bug.cgi?id=762860
+
+2016-03-25 17:49:14 +1100 Matthew Waters <matthew@centricular.com>
+
+ * ext/gtk/gtkgstglwidget.c:
+ gtk/gl: don't assert when gdk doesn't provide a GL context
+ Allows the application to check whether gtkglsink is supported by setting
+ the element to READY.
+ https://bugzilla.gnome.org/show_bug.cgi?id=764148
+
+2016-03-07 19:41:19 -0300 Thiago Santos <thiagoss@osg.samsung.com>
+
+ * gst/mpegtsdemux/mpegtsbase.c:
+ mpegtsbase: plug EIT string leak
2016-03-07 19:06:19 -0300 Thiago Santos <thiagoss@osg.samsung.com>
@@ -635,10 +4404,39 @@
Remember to unref the GPtrArray of the PAT table after
use
-2016-03-07 19:41:19 -0300 Thiago Santos <thiagoss@osg.samsung.com>
+2016-03-04 20:05:38 -0300 Thiago Santos <thiagoss@osg.samsung.com>
- * gst/mpegtsdemux/mpegtsbase.c:
- mpegtsbase: plug EIT string leak
+ * sys/dvb/dvbbasebin.c:
+ dvbbasebin: plug some leaks
+ Plug various leaks in dvbbasebin.
+
+2016-03-03 11:31:01 -0300 Thiago Santos <thiagoss@osg.samsung.com>
+
+ * gst/mpegtsdemux/mpegtspacketizer.c:
+ mpegtspacketizer: simplify variable reset
+ Just set it directly to 0, instead of checking and reseting
+
+2016-03-01 18:21:12 -0300 Thiago Santos <thiagoss@osg.samsung.com>
+
+ * sys/dvb/gstdvbsrc.c:
+ dvbsrc: print time in same format
+ Makes it easier to compare
+
+2016-03-15 16:22:59 -0700 Martin Kelly <martin@surround.io>
+
+ * sys/androidmedia/gst-android-hardware-camera.c:
+ * sys/androidmedia/gstahcsrc.c:
+ ahc: use g_slice_new instead of g_slice_new0
+ In many cases, we use g_slice_new0 and then immediately overwrite the
+ allocated memory. This is inefficient. Since we're going to immediately
+ overwrite it, we might as well use plain g_slice_new.
+ https://bugzilla.gnome.org/show_bug.cgi?id=763998
+
+2016-03-10 08:50:28 +0900 Vineeth TM <vineeth.tm@samsung.com>
+
+ * sys/d3dvideosink/d3dvideosink.c:
+ d3dvideosink: post message to application for unhandled keyboard/mouse events
+ https://bugzilla.gnome.org/show_bug.cgi?id=763403
2016-03-10 08:49:01 +0900 Vineeth TM <vineeth.tm@samsung.com>
@@ -652,11 +4450,348 @@
gtkbasesink: post message to application for unhandled keyboard/mouse events
https://bugzilla.gnome.org/show_bug.cgi?id=763403
-2016-03-10 08:50:28 +0900 Vineeth TM <vineeth.tm@samsung.com>
+2016-03-03 20:10:16 +0900 Justin Kim <justin.kim@collabora.com>
+ * sys/androidmedia/gstahcsrc.c:
+ * sys/androidmedia/gstahcsrc.h:
+ ahcsrc: remove probe_properties
+ It's a residue of 0.10.
+ https://bugzilla.gnome.org/show_bug.cgi?id=763100
+
+2016-03-04 15:50:26 +0900 Vineeth TM <vineeth.tm@samsung.com>
+
+ * ext/apexsink/gstapexsink.c:
+ * ext/assrender/gstassrender.c:
+ * ext/bz2/gstbz2dec.c:
+ * ext/bz2/gstbz2enc.c:
+ * ext/curl/gstcurlbasesink.c:
+ * ext/daala/gstdaaladec.c:
+ * ext/daala/gstdaalaenc.c:
+ * ext/dash/gstdashdemux.c:
+ * ext/directfb/dfbvideosink.c:
+ * ext/dtls/gstdtlsdec.c:
+ * ext/dtls/gstdtlsenc.c:
+ * ext/dtls/gstdtlssrtpdec.c:
+ * ext/dtls/gstdtlssrtpdemux.c:
+ * ext/dtls/gstdtlssrtpenc.c:
+ * ext/dts/gstdtsdec.c:
+ * ext/faac/gstfaac.c:
+ * ext/faad/gstfaad.c:
+ * ext/flite/gstflitetestsrc.c:
+ * ext/fluidsynth/gstfluiddec.c:
+ * ext/gl/caopengllayersink.m:
+ * ext/gl/gstglcolorconvertelement.c:
+ * ext/gl/gstgldownloadelement.c:
+ * ext/gl/gstglfilterbin.c:
+ * ext/gl/gstglimagesink.c:
+ * ext/gl/gstglmixer.c:
+ * ext/gl/gstglmixerbin.c:
+ * ext/gl/gstglsrcbin.c:
+ * ext/gl/gstglstereomix.c:
+ * ext/gl/gstglstereosplit.c:
+ * ext/gl/gstgltestsrc.c:
+ * ext/gl/gstgluploadelement.c:
+ * ext/gl/gstglvideoflip.c:
+ * ext/gme/gstgme.c:
+ * ext/gsm/gstgsmdec.c:
+ * ext/gsm/gstgsmenc.c:
+ * ext/gtk/gstgtkglsink.c:
+ * ext/gtk/gstgtksink.c:
+ * ext/hls/gsthlsdemux.c:
+ * ext/hls/gsthlssink.c:
+ * ext/kate/gstkatedec.c:
+ * ext/kate/gstkateenc.c:
+ * ext/kate/gstkateparse.c:
+ * ext/kate/gstkatetiger.c:
+ * ext/libde265/libde265-dec.c:
+ * ext/libmms/gstmms.c:
+ * ext/libvisual/visual-gl.c:
+ * ext/mimic/gstmimdec.c:
+ * ext/mimic/gstmimenc.c:
+ * ext/modplug/gstmodplug.cc:
+ * ext/mpeg2enc/gstmpeg2enc.cc:
+ * ext/mplex/gstmplex.cc:
+ * ext/musepack/gstmusepackdec.c:
+ * ext/nas/nassink.c:
+ * ext/neon/gstneonhttpsrc.c:
+ * ext/openal/gstopenalsink.c:
+ * ext/openal/gstopenalsrc.c:
+ * ext/opencv/gstcvequalizehist.cpp:
+ * ext/opencv/gstcvlaplace.cpp:
+ * ext/opencv/gstcvsobel.cpp:
+ * ext/opencv/gstdisparity.cpp:
+ * ext/opencv/gstedgedetect.cpp:
+ * ext/opencv/gstfaceblur.cpp:
+ * ext/opencv/gstfacedetect.cpp:
+ * ext/opencv/gstgrabcut.cpp:
+ * ext/opencv/gsthanddetect.cpp:
+ * ext/opencv/gstmotioncells.cpp:
+ * ext/opencv/gstpyramidsegment.cpp:
+ * ext/opencv/gstretinex.cpp:
+ * ext/opencv/gstsegmentation.cpp:
+ * ext/opencv/gstskindetect.cpp:
+ * ext/opencv/gsttemplatematch.cpp:
+ * ext/opencv/gsttextoverlay.cpp:
+ * ext/openexr/gstopenexrdec.cpp:
+ * ext/openh264/gstopenh264dec.cpp:
+ * ext/openh264/gstopenh264enc.cpp:
+ * ext/openjpeg/gstopenjpegdec.c:
+ * ext/openjpeg/gstopenjpegenc.c:
+ * ext/openni2/gstopenni2src.cpp:
+ * ext/opus/gstopusparse.c:
+ * ext/qt/gstqtsink.cc:
+ * ext/resindvd/resindvdbin.c:
+ * ext/resindvd/resindvdsrc.c:
+ * ext/resindvd/rsndec.c:
+ * ext/resindvd/rsninputselector.c:
+ * ext/resindvd/rsnparsetter.c:
+ * ext/rsvg/gstrsvgdec.c:
+ * ext/rsvg/gstrsvgoverlay.c:
+ * ext/rtmp/gstrtmpsink.c:
+ * ext/rtmp/gstrtmpsrc.c:
+ * ext/sbc/gstsbcdec.c:
+ * ext/sbc/gstsbcenc.c:
+ * ext/schroedinger/gstschrodec.c:
+ * ext/schroedinger/gstschroenc.c:
+ * ext/sdl/sdlaudiosink.c:
+ * ext/smoothstreaming/gstmssdemux.c:
+ * ext/sndfile/gstsfdec.c:
+ * ext/sndfile/gstsfsink.c:
+ * ext/sndfile/gstsfsrc.c:
+ * ext/sndio/sndiosink.c:
+ * ext/sndio/sndiosrc.c:
+ * ext/soundtouch/gstpitch.cc:
+ * ext/spandsp/gstdtmfdetect.c:
+ * ext/spandsp/gstspanplc.c:
+ * ext/spandsp/gsttonegeneratesrc.c:
+ * ext/spc/gstspc.c:
+ * ext/srtp/gstsrtpdec.c:
+ * ext/srtp/gstsrtpenc.c:
+ * ext/teletextdec/gstteletextdec.c:
+ * ext/timidity/gsttimidity.c:
+ * ext/timidity/gstwildmidi.c:
+ * ext/voaacenc/gstvoaacenc.c:
+ * ext/voamrwbenc/gstvoamrwbenc.c:
+ * ext/vulkan/vksink.c:
+ * ext/wayland/gstwaylandsink.c:
+ * ext/webp/gstwebpdec.c:
+ * ext/webp/gstwebpenc.c:
+ * ext/x265/gstx265enc.c:
+ * ext/xvid/gstxviddec.c:
+ * ext/xvid/gstxvidenc.c:
+ * ext/zbar/gstzbar.c:
+ * gst-libs/gst/gl/gstglfilter.c:
+ * gst-libs/gst/insertbin/gstinsertbin.c:
+ * gst/adpcmdec/adpcmdec.c:
+ * gst/adpcmenc/adpcmenc.c:
+ * gst/aiff/aiffmux.c:
+ * gst/aiff/aiffparse.c:
+ * gst/asfmux/gstasfmux.c:
+ * gst/asfmux/gstasfparse.c:
+ * gst/asfmux/gstrtpasfpay.c:
+ * gst/audiobuffer/gstaudioringbuffer.c:
+ * gst/audiofxbad/gstaudiochannelmix.c:
+ * gst/audiomixer/gstaudiointerleave.c:
+ * gst/audiomixer/gstaudiomixer.c:
+ * gst/audiovisualizers/gstspacescope.c:
+ * gst/audiovisualizers/gstspectrascope.c:
+ * gst/audiovisualizers/gstsynaescope.c:
+ * gst/audiovisualizers/gstwavescope.c:
+ * gst/autoconvert/gstautoconvert.c:
+ * gst/autoconvert/gstautovideoconvert.c:
+ * gst/bayer/gstrgb2bayer.c:
+ * gst/camerabin2/gstdigitalzoom.c:
+ * gst/camerabin2/gstviewfinderbin.c:
+ * gst/camerabin2/gstwrappercamerabinsrc.c:
+ * gst/cdxaparse/gstcdxaparse.c:
+ * gst/cdxaparse/gstvcdparse.c:
+ * gst/coloreffects/gstchromahold.c:
+ * gst/coloreffects/gstcoloreffects.c:
+ * gst/compositor/compositor.c:
+ * gst/dataurisrc/gstdataurisrc.c:
+ * gst/dccp/gstdccpclientsink.c:
+ * gst/dccp/gstdccpclientsrc.c:
+ * gst/dccp/gstdccpserversink.c:
+ * gst/dccp/gstdccpserversrc.c:
+ * gst/debugutils/fpsdisplaysink.c:
+ * gst/debugutils/gstchecksumsink.c:
+ * gst/debugutils/gstchopmydata.c:
+ * gst/debugutils/gstcompare.c:
+ * gst/debugutils/gstdebugspy.c:
+ * gst/debugutils/gsterrorignore.c:
+ * gst/dvbsuboverlay/gstdvbsuboverlay.c:
+ * gst/dvdspu/gstdvdspu.c:
+ * gst/faceoverlay/gstfaceoverlay.c:
+ * gst/festival/gstfestival.c:
+ * gst/fieldanalysis/gstfieldanalysis.c:
+ * gst/freeverb/gstfreeverb.c:
+ * gst/gaudieffects/gstburn.c:
+ * gst/gaudieffects/gstchromium.c:
+ * gst/gaudieffects/gstdilate.c:
+ * gst/gaudieffects/gstdodge.c:
+ * gst/gaudieffects/gstexclusion.c:
+ * gst/gaudieffects/gstgaussblur.c:
+ * gst/gaudieffects/gstsolarize.c:
+ * gst/gdp/gstgdpdepay.c:
+ * gst/gdp/gstgdppay.c:
+ * gst/geometrictransform/gstgeometrictransform.c:
+ * gst/hdvparse/gsthdvparse.c:
+ * gst/id3tag/gstid3mux.c:
+ * gst/inter/gstinteraudiosink.c:
+ * gst/inter/gstinteraudiosrc.c:
+ * gst/inter/gstintersubsink.c:
+ * gst/inter/gstintersubsrc.c:
+ * gst/inter/gstintervideosink.c:
+ * gst/inter/gstintervideosrc.c:
+ * gst/interlace/gstinterlace.c:
+ * gst/ivfparse/gstivfparse.c:
+ * gst/ivtc/gstcombdetect.c:
+ * gst/ivtc/gstivtc.c:
+ * gst/jp2kdecimator/gstjp2kdecimator.c:
+ * gst/jpegformat/gstjifmux.c:
+ * gst/jpegformat/gstjpegparse.c:
+ * gst/librfb/gstrfbsrc.c:
+ * gst/midi/midiparse.c:
+ * gst/mixmatrix/mixmatrix.c:
+ * gst/mpegpsmux/mpegpsmux.c:
+ * gst/mpegtsdemux/mpegtsbase.c:
+ * gst/mpegtsdemux/mpegtsparse.c:
+ * gst/mpegtsmux/mpegtsmux.c:
+ * gst/mve/gstmvemux.c:
+ * gst/mxf/mxfdemux.c:
+ * gst/mxf/mxfmux.c:
+ * gst/netsim/gstnetsim.c:
+ * gst/nuvdemux/gstnuvdemux.c:
+ * gst/onvif/gstrtponvifparse.c:
+ * gst/onvif/gstrtponviftimestamp.c:
+ * gst/overlay/gstoverlay.c:
+ * gst/patchdetect/gstpatchdetect.c:
+ * gst/pcapparse/gstirtspparse.c:
+ * gst/pcapparse/gstpcapparse.c:
+ * gst/pnm/gstpnmdec.c:
+ * gst/pnm/gstpnmenc.c:
+ * gst/rawparse/gstrawparse.c:
+ * gst/removesilence/gstremovesilence.c:
+ * gst/sdi/gstsdidemux.c:
+ * gst/sdi/gstsdimux.c:
+ * gst/sdp/gstsdpdemux.c:
+ * gst/segmentclip/gstaudiosegmentclip.c:
+ * gst/segmentclip/gstvideosegmentclip.c:
+ * gst/siren/gstsirendec.c:
+ * gst/siren/gstsirenenc.c:
+ * gst/smooth/gstsmooth.c:
+ * gst/speed/gstspeed.c:
+ * gst/subenc/gstsrtenc.c:
+ * gst/subenc/gstwebvttenc.c:
+ * gst/tta/gstttadec.c:
+ * gst/tta/gstttaparse.c:
+ * gst/vbidec/gstvbidec.c:
+ * gst/videoframe_audiolevel/gstvideoframe-audiolevel.c:
+ * gst/videomeasure/gstvideomeasure_collector.c:
+ * gst/videomeasure/gstvideomeasure_ssim.c:
+ * gst/videoparsers/gstdiracparse.c:
+ * gst/videoparsers/gsth263parse.c:
+ * gst/videoparsers/gsth264parse.c:
+ * gst/videoparsers/gsth265parse.c:
+ * gst/videoparsers/gstmpeg4videoparse.c:
+ * gst/videoparsers/gstmpegvideoparse.c:
+ * gst/videoparsers/gstpngparse.c:
+ * gst/videoparsers/gstvc1parse.c:
+ * gst/vmnc/vmncdec.c:
+ * gst/y4m/gsty4mdec.c:
+ * gst/yadif/gstyadif.c:
+ * sys/acmenc/acmenc.c:
+ * sys/acmmp3dec/acmmp3dec.c:
+ * sys/androidmedia/gstahcsrc.c:
+ * sys/applemedia-nonpublic/celvideosrc.c:
+ * sys/applemedia-nonpublic/miovideosrc.c:
+ * sys/applemedia/atdec.c:
+ * sys/applemedia/avfassetsrc.m:
+ * sys/applemedia/avfvideosrc.m:
+ * sys/applemedia/avsamplevideosink.m:
+ * sys/applemedia/iosassetsrc.m:
+ * sys/applemedia/qtkitvideosrc.m:
+ * sys/applemedia/vtdec.c:
+ * sys/avc/gstavcsrc.cpp:
+ * sys/bluez/gsta2dpsink.c:
+ * sys/bluez/gstavdtpsink.c:
+ * sys/bluez/gstavdtpsrc.c:
* sys/d3dvideosink/d3dvideosink.c:
- d3dvideosink: post message to application for unhandled keyboard/mouse events
- https://bugzilla.gnome.org/show_bug.cgi?id=763403
+ * sys/decklink/gstdecklinkaudiosink.cpp:
+ * sys/decklink/gstdecklinkaudiosrc.cpp:
+ * sys/directsound/gstdirectsoundsrc.c:
+ * sys/dshowsrcwrapper/gstdshowaudiosrc.cpp:
+ * sys/dshowsrcwrapper/gstdshowvideosrc.cpp:
+ * sys/dshowvideosink/dshowvideosink.cpp:
+ * sys/dvb/dvbbasebin.c:
+ * sys/dvb/gstdvbsrc.c:
+ * sys/dxr3/dxr3audiosink.c:
+ * sys/dxr3/dxr3spusink.c:
+ * sys/dxr3/dxr3videosink.c:
+ * sys/fbdev/gstfbdevsink.c:
+ * sys/linsys/gstlinsyssdisink.c:
+ * sys/linsys/gstlinsyssdisrc.c:
+ * sys/nvenc/gstnvbaseenc.c:
+ * sys/nvenc/gstnvh264enc.c:
+ * sys/opensles/openslessink.c:
+ * sys/opensles/openslessrc.c:
+ * sys/pvr2d/gstpvrvideosink.c:
+ * sys/qcam/gstqcamsrc.c:
+ * sys/shm/gstshmsink.c:
+ * sys/shm/gstshmsrc.c:
+ * sys/tinyalsa/tinyalsasink.c:
+ * sys/uvch264/gstuvch264_mjpgdemux.c:
+ * sys/uvch264/gstuvch264_src.c:
+ * sys/vcd/vcdsrc.c:
+ * sys/vdpau/gstvdpsink.c:
+ * sys/vdpau/h264/gstvdph264dec.c:
+ * sys/vdpau/mpeg/gstvdpmpegdec.c:
+ * sys/vdpau/mpeg4/gstvdpmpeg4dec.c:
+ * sys/wasapi/gstwasapisink.c:
+ * sys/wasapi/gstwasapisrc.c:
+ * sys/wininet/gstwininetsrc.c:
+ * sys/winscreencap/gstdx9screencapsrc.c:
+ * sys/winscreencap/gstgdiscreencapsrc.c:
+ * tests/check/elements/autoconvert.c:
+ * tests/check/elements/camerabin.c:
+ * tests/check/elements/test_http_src.c:
+ * tests/check/libs/aggregator.c:
+ * tools/element-templates/sinkpad:
+ * tools/element-templates/sinkpad-audio:
+ * tools/element-templates/sinkpad-simple:
+ * tools/element-templates/sinkpad-template:
+ * tools/element-templates/srcpad:
+ * tools/element-templates/srcpad-audio:
+ * tools/element-templates/srcpad-simple:
+ * tools/element-templates/srcpad-template:
+ bad: use new gst_element_class_add_static_pad_template()
+ https://bugzilla.gnome.org/show_bug.cgi?id=763081
+
+2016-03-07 17:23:23 -0800 Martin Kelly <martin@surround.io>
+
+ * sys/androidmedia/gst-android-hardware-camera.c:
+ ahc: eliminate AHC*_CALL macros
+ Currently, we use AHC*_CALL macros to call many of the Camera functions.
+ However, we already have helper classes to call the Camera functions, so
+ eliminate the macros.
+ As a nice side-benefit, we also get improved error handling and
+ reporting when something goes wrong calling these functions, because a
+ GError gets populated, and we log a GST_ERROR when something fails. This
+ was harder to do using macros, as all error handling was hidden from the
+ caller.
+ https://bugzilla.gnome.org/show_bug.cgi?id=763065
+
+2016-02-18 11:29:06 -0800 Martin Kelly <martin@surround.io>
+
+ * sys/androidmedia/gst-android-hardware-camera.c:
+ ahc: use gst unref functions
+ https://bugzilla.gnome.org/show_bug.cgi?id=763065
+
+2016-02-18 14:08:13 -0800 Martin Kelly <martin@surround.io>
+
+ * sys/androidmedia/gst-android-hardware-camera.c:
+ ahc: use gst new object functions
+ https://bugzilla.gnome.org/show_bug.cgi?id=763065
2016-03-17 13:44:13 +0000 Vincent Penquerc'h <vincent.penquerch@collabora.co.uk>
@@ -673,13 +4808,10 @@
GtkWidget *window;
^~~~~~~~~
-2016-03-25 17:49:14 +1100 Matthew Waters <matthew@centricular.com>
+2016-03-24 13:33:12 +0200 Sebastian Dröge <sebastian@centricular.com>
- * ext/gtk/gtkgstglwidget.c:
- gtk/gl: don't assert when gdk doesn't provide a GL context
- Allows the application to check whether gtkglsink is supported by setting
- the element to READY.
- https://bugzilla.gnome.org/show_bug.cgi?id=764148
+ * configure.ac:
+ Back to development
=== release 1.8.0 ===
diff --git a/Makefile.am b/Makefile.am
index 6fa225a..b29d7fc 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -113,6 +113,7 @@
$(top_srcdir)/gst-libs/gst/baseparse \
$(top_srcdir)/gst-libs/gst/egl \
$(top_srcdir)/gst-libs/gst/signalprocessor \
+ $(top_srcdir)/tests/examples/gl/gtk/gtkvideooverlay \
$(top_srcdir)/tests/examples/scaletempo \
$(top_srcdir)/tests/examples/shapewipe \
$(top_srcdir)/tests/examples/switch \
diff --git a/Makefile.in b/Makefile.in
index fa276e9..36aa059 100644
--- a/Makefile.in
+++ b/Makefile.in
@@ -314,6 +314,8 @@
DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
DSYMUTIL = @DSYMUTIL@
DTLS_CFLAGS = @DTLS_CFLAGS@
DTLS_LIBS = @DTLS_LIBS@
@@ -529,6 +531,8 @@
LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
LIPO = @LIPO@
LN_S = @LN_S@
LOCALEDIR = @LOCALEDIR@
@@ -655,8 +659,6 @@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
SNDIO_LIBS = @SNDIO_LIBS@
@@ -701,6 +703,8 @@
WAYLAND_LIBS = @WAYLAND_LIBS@
WEBP_CFLAGS = @WEBP_CFLAGS@
WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
WGET = @WGET@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
@@ -884,6 +888,7 @@
$(top_srcdir)/gst-libs/gst/baseparse \
$(top_srcdir)/gst-libs/gst/egl \
$(top_srcdir)/gst-libs/gst/signalprocessor \
+ $(top_srcdir)/tests/examples/gl/gtk/gtkvideooverlay \
$(top_srcdir)/tests/examples/scaletempo \
$(top_srcdir)/tests/examples/shapewipe \
$(top_srcdir)/tests/examples/switch \
diff --git a/NEWS b/NEWS
index f67d1f3..4c3baab 100644
--- a/NEWS
+++ b/NEWS
@@ -1,26 +1 @@
-### 1.8.2
-
-The first 1.8 bug-fix release (1.8.2) was released on 9 June 2016.
-This release only contains bugfixes and it should be safe to update from 1.8.0.
-
-#### Major bugfixes in 1.8.2
-
- - Fix vp8enc and flacenc segmentation faults on Windows
- - Fix Android build failure due to BSD sed on OS X
- - Fix Android build failure with applications targetting API > 20
- - Fix playback of live MS SmoothStreaming streams
- - Fix various issues with vtdec and caopengllayersink on OS X
- - Fix severe performance degradation in various image decoders
- - Fix sample rate negotiation in opusdec
- - Fix regression in typefind, causing deadlocks in some situations
- - Fix mpegtsmux to set PTS on all output buffers again
- - Fix extraction of frame dimensions from SDP in RTP JPEG depayloader
- - Fix failure in v4l2videodec when setting of format fails after starting
- - ... and many, many more!
-
-For a full list of bugfixes see [Bugzilla][buglist-1.8.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.8.2]: https://bugzilla.gnome.org/buglist.cgi?bug_status=RESOLVED&bug_status=VERIFIED&classification=Platform&limit=0&list_id=130196&order=bug_id&product=GStreamer&query_format=advanced&resolution=FIXED&target_milestone=1.8.2
-
+This is GStreamer 1.9.1
diff --git a/README b/README
index fa53f95..48e2c9f 100644
--- a/README
+++ b/README
@@ -1,4 +1,4 @@
-GStreamer 1.7.x development series
+GStreamer 1.9.x development series
WHAT IT IS
----------
diff --git a/RELEASE b/RELEASE
index e7cb1dc..7085e2c 100644
--- a/RELEASE
+++ b/RELEASE
@@ -1,15 +1,15 @@
-Release notes for GStreamer Bad Plugins 1.8.2
+Release notes for GStreamer Bad Plugins 1.9.1
-The GStreamer team is proud to announce the second bugfix release in the stable
-1.8 release series of your favourite cross-platform multimedia framework!
+The GStreamer team is pleased to announce the first release of the unstable
+1.9 release series. The 1.9 release series is adding new features on top of
+the 1.0, 1.2, 1.4, 1.6 and 1.8 series and is part of the API and ABI-stable 1.x release
+series of the GStreamer multimedia framework. The unstable 1.9 release series
+will lead to the stable 1.10 release series in the next weeks. Any newly added
+API can still change until that point.
-This release only contains bugfixes and it is safe to update from 1.8.1. For a
-full list of bugfixes see Bugzilla.
-
-
-See /releases/1.8/ for the full release notes.
+Binaries for Android, iOS, Mac OS X and Windows will be provided in the next days.
"That an accusation?"
@@ -60,22 +60,97 @@
Bugs fixed in this release
- * 756948 : directsoundsrc - Audio Device not found on Windows (string encoding not honored)
- * 764758 : vulkan didn't build out of tree due to vkconfig.h
- * 765324 : compositor: crashes on NULL pointer in _aggregate_frames()
- * 765456 : vtdec: Strange bug re-encoding video with GST 1.8.1 on Mac OS 10.10
- * 765926 : mpegtsmux: Set PTS on aligned buffers
- * 766190 : vtdec: corrupted rendering on OSX
- * 766213 : openjpeg plugin needs to be ported to libopenjp2 v2.1
- * 766289 : amc: cannot play some files on android
- * 766422 : videoaggregator: rtspsrc ! compositor produces no output
- * 766441 : OpenBSD does not use librt, but provides the needed functions in libc
- * 766520 : gl: win32: race when handling window messages while creating the internal window
- * 766611 : gl: buffer pool configuration error with caopengllayersink
- * 766638 : ahc: fix possible NULL deref
- * 766732 : openjpegenc: Doesn't manage MCT switch for RGB and YUV frames
- * 767298 : amc: gst_object_unref on caps
- * 767302 : ahcsrc: div by 0 warning
+ * 765266 : gl: More GLES/GL 3 compatibility fixes
+ * 767087 : ahcsrc: improve error message when camera open fails
+ * 623860 : mpegpsdemux: sends segment and gap events with invalid time after seek
+ * 678207 : lv2: port to GStreamer 1.0 and SLV2 to Lilv
+ * 704222 : gldownload: Support for multi-planar format for GLES
+ * 733233 : chromaprint: notify fingerprint also via property notify
+ * 733872 : codecparsers: mpegvideo: Add more fields to the headers.
+ * 739598 : rfbsrc: incorrectly calculates caps
+ * 746933 : gldisplay: EAGL " Could not create display "
+ * 748651 : DTLS: Use unique names for internal elements to ease debugging
+ * 751540 : gltestsrc: implement missing patterns, port to GL3 / ES3, load shaders with GIO
+ * 751792 : dashdemux: incorrect segment duration for a segment list
+ * 753265 : osxaudio: Add device provider support
+ * 754495 : videoaggregator: No protection from receiving interlaced and non-interlaced content
+ * 756931 : gstglbasemixer: negotiated logic is partly broken
+ * 757022 : pnm: Implementation of GRAY16 handling
+ * 758064 : dashdemux: leading whitespaces in content protection element are not ignored
+ * 759801 : gltestsrc outputs only black frames for pattern 0 and 11
+ * 760916 : gl: implement GstGLMemoryEGL
+ * 761260 : qml: add Windows support
+ * 762142 : dashdemux: tests: use g_object_unref for test data
+ * 762144 : dashdemux: tests: add new dashdemux tests
+ * 762147 : adaptivedemux: use GstSystemClock to all real-time calculations
+ * 763026 : dc1394: port to 1.X
+ * 763044 : Enable qmlglsink on Rasperry PI
+ * 763065 : androidmedia: assorted refactoring
+ * 763081 : bad plugins: use new gst_element_class_add_static_pad_template()
+ * 763099 : ahcsrc: replace with new surfacetexture
+ * 763100 : ahcsrc: remove unused variable
+ * 763126 : player: Add is_live flag to the GstPlayerMediaInfo
+ * 763309 : ahcsrc: add finalize function
+ * 763441 : rfbsrc: leads to - > invalid video buffer received
+ * 763647 : mpegtsmux doesn't keep language code from the incoming audio stream
+ * 763998 : ahc: use g_slice_new instead of g_slice_new0
+ * 764018 : glcontext: try wglCreateContextAttribsARB first even not using GL3 core profile
+ * 764036 : interlace: Allow interlaced sink caps, do passthrough
+ * 764251 : rtmpsrc: Add timeout property
+ * 764361 : gdpdepay: query for buffer allocator
+ * 764370 : codecparser: vp9: Wrong default values in non-intraonly/non-keyframe header fields
+ * 764549 : aggregator: remove duplicated test of flow_return in pad_chain_internal
+ * 764684 : adaptivedemux: Forward upstream buffer offsets
+ * 764873 : gldeinterlace: enable this plugin on OpenGL ES using a simple deinterlace fragment shader
+ * 764957 : dvbsrc: support dvbv5 channels format
+ * 764972 : dvbsrc: needlessly perform delivery system autodetection twice
+ * 765250 : d3dvideosink includes deprecated and unused d3dx9tex.h header
+ * 765292 : gl:cocoa:Fix incompatible type warning
+ * 765315 : player: Add A/V offset property
+ * 765425 : dshowsrcwrapper: Fix include path in CMakeLists.txt
+ * 765426 : dshowsrcwrapper: Fix link error (SAFESEH)
+ * 765427 : dshowsrcwrapper: add support for RGB32, RGB555, RGB565 and RGB8 formats
+ * 765428 : dshowsrcwrapper: Work around bugs in IDS Imaging camera drivers
+ * 765431 : aggregator: Check all pads for data when live
+ * 765581 : pvrbufferpool: gst_meta_register() parameter wrong
+ * 765728 : adaptivedemux: Segfault since " use realtime_clock for waiting for a condition " commit
+ * 765795 : glimagesink: support video frame rotation
+ * 765804 : GstPlayer build error due to not finding GstVideo-1.0.gir
+ * 765989 : videodiff element has useless " FIXME " description
+ * 766053 : uridownloader: should take ownership of its source element
+ * 766062 : player: Provide signalling for when a new URI is started
+ * 766163 : Some header files missing in sys/applemedia/ in gst-plugins-bad-1.8.1.tar.xz
+ * 766343 : mpegtsbase: remove unused variables 'upstream_live' and 'queried_latency'
+ * 766597 : kmssink: doesn't chain up finalize
+ * 766607 : player: problems with unit tests
+ * 766639 : examples: opencv: typo fix
+ * 766650 : adaptivedemux: Set DISCONT on startup and after seeks
+ * 766661 : gltestsrc,glmosaic: fix shader leaks
+ * 766662 : adaptivedemux: fix tag list leak
+ * 766663 : bad: fix leaks in tests
+ * 766679 : ahc: fix typo
+ * 766703 : glvideomixer: Using an invalid, already destroyed context
+ * 766794 : eglimage: Fails to compile because of compiler warning caused by unused function
+ * 766803 : h264parse: add support for config-interval=-1 to re-send SPS/PPS on I/IDR frames
+ * 766818 : [gl] gltransformation's pivot-z property not writable
+ * 766867 : gl: win32: no debug category set in gstglcontext_wgl.c
+ * 766891 : h265parse: codec_data cap field could be mis-populated when vps/sps/pps id's are not used contiguously from zero.
+ * 766973 : Various warningfixes for OSX (10.9.5) compiling with Apple LLVM version 6.0
+ * 766993 : Android decodebin: zero copy between hardware decoder and glimagesink doesn't work (regression in 1.9)
+ * 767104 : applemedia: vtenc: Register a hardware-only vtenc_h264_hw element on OSX
+ * 767159 : templatematch: fix leak in test
+ * 767161 : a2dpsink: unref avdtpsink if state transition failed
+ * 767162 : bad: use MAY_BE_LEAKED flag
+ * 767365 : adaptivedemux: Add custom flow return for allowing subclasses to specify when a fragment is finished
+ * 767402 : OpenJPEG decoder: use new sampling field to determine channel order for j2c and jpc streams
+ * 767501 : curlsmtpsink: Lock and don't send final boundary upon error
+ * 767512 : jpeg2000parse: support j2c and jp2 file formats
+ * 767553 : qmlglsink: Add Wayland support
+ * 767800 : Introduce a WebRTC Audio Processing based echo canceller for GStreamer
+ * 767908 : jpeg2000parse: use enums for colorspace and sampling, rather than strings
+ * 768217 : gl: Raw uploader is broken
+ * 768365 : shmsrc: gst_poll_remove_fd: assertion 'fd- > fd > = 0' failed
+ * 733265 : srtpenc: remove get-rollover-counter signal and add stats property
==== Download ====
@@ -113,16 +188,69 @@
Contributors to this release
* Aaron Boxer
+ * Aleix Conchillo Flaqué
* Alessandro Decina
+ * Alex Ashley
* Alex-P. Natsios
+ * Arjen Veenhuizen
* Arun Raghavan
+ * Aurélien Zanelli
+ * Barun Kumar Singh
+ * Carlos Garcia Campos
+ * Carlos Rafael Giani
+ * Christoffer Stengren
+ * Damian Ziobro
+ * Dimitrios Katsaros
+ * Edward Hervey
+ * Florin Apostol
* Guillaume Desmottes
+ * Gwang Yoon Hwang
+ * Haihua Hu
+ * Havard Graff
+ * Heinrich Fink
+ * Hyunjun Ko
* Jan Alexander Steffens (heftig)
+ * Jan Schmidt
+ * Javier Martinez Canillas
+ * Jerome Laheurte
+ * Joan Pau Beltran
+ * Jonathan Roy
+ * Julien Isorce
+ * Justin Kim
+ * Kouhei Sutou
+ * Luis de Bethencourt
+ * Marcin Kolny
+ * Marcin Lewandowski
* Martin Kelly
+ * Mats Lindestam
* Matthew Waters
+ * Michael Olbrich
* Nicolas Dufresne
* Nirbheek Chauhan
* Olivier Crête
+ * Patricia Muscalu
+ * Philipp Zabel
+ * Philippe Normand
+ * Raffaele Rossi
+ * Reynaldo H. Verdejo Pinochet
+ * Santiago Carot-Nemesio
+ * Scott D Phillips
* Sebastian Dröge
+ * Sebastian Rasmussen
+ * Sergey Borovkov
+ * Song Bing
+ * Sreerenj Balachandran
+ * Stefan Sauer
+ * Thiago Santos
+ * Thibault Saunier
+ * Tim-Philipp Müller
+ * Vanessa Chipirras Navalon
+ * Vincent Penquerc'h
+ * Vineeth TM
+ * Vivia Nikolaidou
+ * Víctor Manuel Jáquez Leal
+ * Wang Xin-yu (王昕宇)
+ * Wim Taymans
* Xavier Claessens
+ * Yann Jouanin
\ No newline at end of file
diff --git a/common/Makefile.in b/common/Makefile.in
index 10571c4..05d631e 100644
--- a/common/Makefile.in
+++ b/common/Makefile.in
@@ -276,6 +276,8 @@
DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
DSYMUTIL = @DSYMUTIL@
DTLS_CFLAGS = @DTLS_CFLAGS@
DTLS_LIBS = @DTLS_LIBS@
@@ -491,6 +493,8 @@
LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
LIPO = @LIPO@
LN_S = @LN_S@
LOCALEDIR = @LOCALEDIR@
@@ -617,8 +621,6 @@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
SNDIO_LIBS = @SNDIO_LIBS@
@@ -663,6 +665,8 @@
WAYLAND_LIBS = @WAYLAND_LIBS@
WEBP_CFLAGS = @WEBP_CFLAGS@
WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
WGET = @WGET@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
diff --git a/common/gst.supp b/common/gst.supp
index 2740e9a..f85cd69 100644
--- a/common/gst.supp
+++ b/common/gst.supp
@@ -4024,5 +4024,4 @@
fun:malloc
...
fun:g_quark_init
- fun:glib_init_ctor
}
diff --git a/common/gtk-doc-plugins.mak b/common/gtk-doc-plugins.mak
index fe0977c..4b5dd1b 100644
--- a/common/gtk-doc-plugins.mak
+++ b/common/gtk-doc-plugins.mak
@@ -179,9 +179,13 @@
$(top_srcdir)/common/plugins.xsl $$a > xml/`basename $$a`; done
@for f in $(EXAMPLE_CFILES); do \
$(PYTHON) $(top_srcdir)/common/c-to-xml.py $$f > xml/element-`basename $$f .c`.xml; done
- @gtkdoc-mkdb \
+ @_source_dir='' ; \
+ for i in $(DOC_SOURCE_DIR) ; do \
+ _source_dir="$${_source_dir} --source-dir=$$i" ; \
+ done ; \
+ gtkdoc-mkdb \
--module=$(DOC_MODULE) \
- --source-dir=$(DOC_SOURCE_DIR) \
+ $${_source_dir} \
--expand-content-files="$(expand_content_files)" \
--main-sgml-file=$(srcdir)/$(DOC_MAIN_SGML_FILE) \
--output-format=xml \
diff --git a/common/gtk-doc.mak b/common/gtk-doc.mak
index 2aab3a9..4beebcf 100644
--- a/common/gtk-doc.mak
+++ b/common/gtk-doc.mak
@@ -121,7 +121,11 @@
sgml-build.stamp: setup-build.stamp $(DOC_MODULE)-decl.txt $(SCANOBJ_FILES) $(DOC_MODULE)-sections.txt $(expand_content_files)
@echo ' DOC Building XML'
- @gtkdoc-mkdb --module=$(DOC_MODULE) --source-dir=$(DOC_SOURCE_DIR) --expand-content-files="$(expand_content_files)" --main-sgml-file=$(DOC_MAIN_SGML_FILE) --output-format=xml $(MKDB_OPTIONS)
+ @_source_dir='' ; \
+ for i in $(DOC_SOURCE_DIR) ; do \
+ _source_dir="$${_source_dir} --source-dir=$$i" ; \
+ done ; \
+ gtkdoc-mkdb --module=$(DOC_MODULE) $$(_source_dir) --expand-content-files="$(expand_content_files)" --main-sgml-file=$(DOC_MAIN_SGML_FILE) --output-format=xml $(MKDB_OPTIONS)
@cp ../version.entities xml
@touch sgml-build.stamp
diff --git a/common/m4/Makefile.in b/common/m4/Makefile.in
index 25b8a7a..b381e6e 100644
--- a/common/m4/Makefile.in
+++ b/common/m4/Makefile.in
@@ -216,6 +216,8 @@
DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
DSYMUTIL = @DSYMUTIL@
DTLS_CFLAGS = @DTLS_CFLAGS@
DTLS_LIBS = @DTLS_LIBS@
@@ -431,6 +433,8 @@
LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
LIPO = @LIPO@
LN_S = @LN_S@
LOCALEDIR = @LOCALEDIR@
@@ -557,8 +561,6 @@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
SNDIO_LIBS = @SNDIO_LIBS@
@@ -603,6 +605,8 @@
WAYLAND_LIBS = @WAYLAND_LIBS@
WEBP_CFLAGS = @WEBP_CFLAGS@
WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
WGET = @WGET@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
diff --git a/common/m4/ax_pthread.m4 b/common/m4/ax_pthread.m4
index d383ad5..4c4051e 100644
--- a/common/m4/ax_pthread.m4
+++ b/common/m4/ax_pthread.m4
@@ -19,10 +19,10 @@
# is necessary on AIX to use the special cc_r compiler alias.)
#
# NOTE: You are assumed to not only compile your program with these flags,
-# but also link it with them as well. e.g. you should link with
+# but also to link with them as well. For example, you might link with
# $PTHREAD_CC $CFLAGS $PTHREAD_CFLAGS $LDFLAGS ... $PTHREAD_LIBS $LIBS
#
-# If you are only building threads programs, you may wish to use these
+# If you are only building threaded programs, you may wish to use these
# variables in your default LIBS, CFLAGS, and CC:
#
# LIBS="$PTHREAD_LIBS $LIBS"
@@ -30,8 +30,8 @@
# CC="$PTHREAD_CC"
#
# In addition, if the PTHREAD_CREATE_JOINABLE thread-attribute constant
-# has a nonstandard name, defines PTHREAD_CREATE_JOINABLE to that name
-# (e.g. PTHREAD_CREATE_UNDETACHED on AIX).
+# has a nonstandard name, this macro defines PTHREAD_CREATE_JOINABLE to
+# that name (e.g. PTHREAD_CREATE_UNDETACHED on AIX).
#
# Also HAVE_PTHREAD_PRIO_INHERIT is defined if pthread is found and the
# PTHREAD_PRIO_INHERIT symbol is defined when compiling with
@@ -82,35 +82,40 @@
# modified version of the Autoconf Macro, you may extend this special
# exception to the GPL to apply to your modified version as well.
-#serial 21
+#serial 23
AU_ALIAS([ACX_PTHREAD], [AX_PTHREAD])
AC_DEFUN([AX_PTHREAD], [
AC_REQUIRE([AC_CANONICAL_HOST])
+AC_REQUIRE([AC_PROG_CC])
+AC_REQUIRE([AC_PROG_SED])
AC_LANG_PUSH([C])
ax_pthread_ok=no
# We used to check for pthread.h first, but this fails if pthread.h
-# requires special compiler flags (e.g. on True64 or Sequent).
+# requires special compiler flags (e.g. on Tru64 or Sequent).
# It gets checked for in the link test anyway.
# First of all, check if the user has set any of the PTHREAD_LIBS,
# etcetera environment variables, and if threads linking works using
# them:
-if test x"$PTHREAD_LIBS$PTHREAD_CFLAGS" != x; then
- save_CFLAGS="$CFLAGS"
+if test "x$PTHREAD_CFLAGS$PTHREAD_LIBS" != "x"; then
+ ax_pthread_save_CC="$CC"
+ ax_pthread_save_CFLAGS="$CFLAGS"
+ ax_pthread_save_LIBS="$LIBS"
+ AS_IF([test "x$PTHREAD_CC" != "x"], [CC="$PTHREAD_CC"])
CFLAGS="$CFLAGS $PTHREAD_CFLAGS"
- save_LIBS="$LIBS"
LIBS="$PTHREAD_LIBS $LIBS"
- AC_MSG_CHECKING([for pthread_join in LIBS=$PTHREAD_LIBS with CFLAGS=$PTHREAD_CFLAGS])
- AC_TRY_LINK_FUNC([pthread_join], [ax_pthread_ok=yes])
+ AC_MSG_CHECKING([for pthread_join using $CC $PTHREAD_CFLAGS $PTHREAD_LIBS])
+ AC_LINK_IFELSE([AC_LANG_CALL([], [pthread_join])], [ax_pthread_ok=yes])
AC_MSG_RESULT([$ax_pthread_ok])
- if test x"$ax_pthread_ok" = xno; then
+ if test "x$ax_pthread_ok" = "xno"; then
PTHREAD_LIBS=""
PTHREAD_CFLAGS=""
fi
- LIBS="$save_LIBS"
- CFLAGS="$save_CFLAGS"
+ CC="$ax_pthread_save_CC"
+ CFLAGS="$ax_pthread_save_CFLAGS"
+ LIBS="$ax_pthread_save_LIBS"
fi
# We must check for the threads library under a number of different
@@ -123,7 +128,7 @@
# which indicates that we try without any flags at all, and "pthread-config"
# which is a program returning the flags for the Pth emulation library.
-ax_pthread_flags="pthreads none -Kthread -kthread lthread -pthread -pthreads -mthreads pthread --thread-safe -mt pthread-config"
+ax_pthread_flags="pthreads none -Kthread -pthread -pthreads -mthreads pthread --thread-safe -mt pthread-config"
# The ordering *is* (sometimes) important. Some notes on the
# individual items follow:
@@ -132,82 +137,225 @@
# none: in case threads are in libc; should be tried before -Kthread and
# other compiler flags to prevent continual compiler warnings
# -Kthread: Sequent (threads in libc, but -Kthread needed for pthread.h)
-# -kthread: FreeBSD kernel threads (preferred to -pthread since SMP-able)
-# lthread: LinuxThreads port on FreeBSD (also preferred to -pthread)
-# -pthread: Linux/gcc (kernel threads), BSD/gcc (userland threads)
-# -pthreads: Solaris/gcc
-# -mthreads: Mingw32/gcc, Lynx/gcc
+# -pthread: Linux/gcc (kernel threads), BSD/gcc (userland threads), Tru64
+# (Note: HP C rejects this with "bad form for `-t' option")
+# -pthreads: Solaris/gcc (Note: HP C also rejects)
# -mt: Sun Workshop C (may only link SunOS threads [-lthread], but it
-# doesn't hurt to check since this sometimes defines pthreads too;
-# also defines -D_REENTRANT)
-# ... -mt is also the pthreads flag for HP/aCC
+# doesn't hurt to check since this sometimes defines pthreads and
+# -D_REENTRANT too), HP C (must be checked before -lpthread, which
+# is present but should not be used directly; and before -mthreads,
+# because the compiler interprets this as "-mt" + "-hreads")
+# -mthreads: Mingw32/gcc, Lynx/gcc
# pthread: Linux, etcetera
# --thread-safe: KAI C++
# pthread-config: use pthread-config program (for GNU Pth library)
-case ${host_os} in
+case $host_os in
+
+ freebsd*)
+
+ # -kthread: FreeBSD kernel threads (preferred to -pthread since SMP-able)
+ # lthread: LinuxThreads port on FreeBSD (also preferred to -pthread)
+
+ ax_pthread_flags="-kthread lthread $ax_pthread_flags"
+ ;;
+
+ hpux*)
+
+ # From the cc(1) man page: "[-mt] Sets various -D flags to enable
+ # multi-threading and also sets -lpthread."
+
+ ax_pthread_flags="-mt -pthread pthread $ax_pthread_flags"
+ ;;
+
+ openedition*)
+
+ # IBM z/OS requires a feature-test macro to be defined in order to
+ # enable POSIX threads at all, so give the user a hint if this is
+ # not set. (We don't define these ourselves, as they can affect
+ # other portions of the system API in unpredictable ways.)
+
+ AC_EGREP_CPP([AX_PTHREAD_ZOS_MISSING],
+ [
+# if !defined(_OPEN_THREADS) && !defined(_UNIX03_THREADS)
+ AX_PTHREAD_ZOS_MISSING
+# endif
+ ],
+ [AC_MSG_WARN([IBM z/OS requires -D_OPEN_THREADS or -D_UNIX03_THREADS to enable pthreads support.])])
+ ;;
+
solaris*)
# On Solaris (at least, for some versions), libc contains stubbed
# (non-functional) versions of the pthreads routines, so link-based
- # tests will erroneously succeed. (We need to link with -pthreads/-mt/
- # -lpthread.) (The stubs are missing pthread_cleanup_push, or rather
- # a function called by this macro, so we could check for that, but
- # who knows whether they'll stub that too in a future libc.) So,
- # we'll just look for -pthreads and -lpthread first:
+ # tests will erroneously succeed. (N.B.: The stubs are missing
+ # pthread_cleanup_push, or rather a function called by this macro,
+ # so we could check for that, but who knows whether they'll stub
+ # that too in a future libc.) So we'll check first for the
+ # standard Solaris way of linking pthreads (-mt -lpthread).
- ax_pthread_flags="-pthreads pthread -mt -pthread $ax_pthread_flags"
- ;;
-
- darwin*)
- ax_pthread_flags="-pthread $ax_pthread_flags"
+ ax_pthread_flags="-mt,pthread pthread $ax_pthread_flags"
;;
esac
-# Clang doesn't consider unrecognized options an error unless we specify
-# -Werror. We throw in some extra Clang-specific options to ensure that
-# this doesn't happen for GCC, which also accepts -Werror.
+# GCC generally uses -pthread, or -pthreads on some platforms (e.g. SPARC)
-AC_MSG_CHECKING([if compiler needs -Werror to reject unknown flags])
-save_CFLAGS="$CFLAGS"
-ax_pthread_extra_flags="-Werror"
-CFLAGS="$CFLAGS $ax_pthread_extra_flags -Wunknown-warning-option -Wsizeof-array-argument"
-AC_COMPILE_IFELSE([AC_LANG_PROGRAM([int foo(void);],[foo()])],
- [AC_MSG_RESULT([yes])],
- [ax_pthread_extra_flags=
- AC_MSG_RESULT([no])])
-CFLAGS="$save_CFLAGS"
+AS_IF([test "x$GCC" = "xyes"],
+ [ax_pthread_flags="-pthread -pthreads $ax_pthread_flags"])
-if test x"$ax_pthread_ok" = xno; then
-for flag in $ax_pthread_flags; do
+# The presence of a feature test macro requesting re-entrant function
+# definitions is, on some systems, a strong hint that pthreads support is
+# correctly enabled
- case $flag in
+case $host_os in
+ darwin* | hpux* | linux* | osf* | solaris*)
+ ax_pthread_check_macro="_REENTRANT"
+ ;;
+
+ aix*)
+ ax_pthread_check_macro="_THREAD_SAFE"
+ ;;
+
+ *)
+ ax_pthread_check_macro="--"
+ ;;
+esac
+AS_IF([test "x$ax_pthread_check_macro" = "x--"],
+ [ax_pthread_check_cond=0],
+ [ax_pthread_check_cond="!defined($ax_pthread_check_macro)"])
+
+# Are we compiling with Clang?
+
+AC_CACHE_CHECK([whether $CC is Clang],
+ [ax_cv_PTHREAD_CLANG],
+ [ax_cv_PTHREAD_CLANG=no
+ # Note that Autoconf sets GCC=yes for Clang as well as GCC
+ if test "x$GCC" = "xyes"; then
+ AC_EGREP_CPP([AX_PTHREAD_CC_IS_CLANG],
+ [/* Note: Clang 2.7 lacks __clang_[a-z]+__ */
+# if defined(__clang__) && defined(__llvm__)
+ AX_PTHREAD_CC_IS_CLANG
+# endif
+ ],
+ [ax_cv_PTHREAD_CLANG=yes])
+ fi
+ ])
+ax_pthread_clang="$ax_cv_PTHREAD_CLANG"
+
+ax_pthread_clang_warning=no
+
+# Clang needs special handling, because older versions handle the -pthread
+# option in a rather... idiosyncratic way
+
+if test "x$ax_pthread_clang" = "xyes"; then
+
+ # Clang takes -pthread; it has never supported any other flag
+
+ # (Note 1: This will need to be revisited if a system that Clang
+ # supports has POSIX threads in a separate library. This tends not
+ # to be the way of modern systems, but it's conceivable.)
+
+ # (Note 2: On some systems, notably Darwin, -pthread is not needed
+ # to get POSIX threads support; the API is always present and
+ # active. We could reasonably leave PTHREAD_CFLAGS empty. But
+ # -pthread does define _REENTRANT, and while the Darwin headers
+ # ignore this macro, third-party headers might not.)
+
+ PTHREAD_CFLAGS="-pthread"
+ PTHREAD_LIBS=
+
+ ax_pthread_ok=yes
+
+ # However, older versions of Clang make a point of warning the user
+ # that, in an invocation where only linking and no compilation is
+ # taking place, the -pthread option has no effect ("argument unused
+ # during compilation"). They expect -pthread to be passed in only
+ # when source code is being compiled.
+ #
+ # Problem is, this is at odds with the way Automake and most other
+ # C build frameworks function, which is that the same flags used in
+ # compilation (CFLAGS) are also used in linking. Many systems
+ # supported by AX_PTHREAD require exactly this for POSIX threads
+ # support, and in fact it is often not straightforward to specify a
+ # flag that is used only in the compilation phase and not in
+ # linking. Such a scenario is extremely rare in practice.
+ #
+ # Even though use of the -pthread flag in linking would only print
+ # a warning, this can be a nuisance for well-run software projects
+ # that build with -Werror. So if the active version of Clang has
+ # this misfeature, we search for an option to squash it.
+
+ AC_CACHE_CHECK([whether Clang needs flag to prevent "argument unused" warning when linking with -pthread],
+ [ax_cv_PTHREAD_CLANG_NO_WARN_FLAG],
+ [ax_cv_PTHREAD_CLANG_NO_WARN_FLAG=unknown
+ # Create an alternate version of $ac_link that compiles and
+ # links in two steps (.c -> .o, .o -> exe) instead of one
+ # (.c -> exe), because the warning occurs only in the second
+ # step
+ ax_pthread_save_ac_link="$ac_link"
+ ax_pthread_sed='s/conftest\.\$ac_ext/conftest.$ac_objext/g'
+ ax_pthread_link_step=`$as_echo "$ac_link" | sed "$ax_pthread_sed"`
+ ax_pthread_2step_ac_link="($ac_compile) && (echo ==== >&5) && ($ax_pthread_link_step)"
+ ax_pthread_save_CFLAGS="$CFLAGS"
+ for ax_pthread_try in '' -Qunused-arguments -Wno-unused-command-line-argument unknown; do
+ AS_IF([test "x$ax_pthread_try" = "xunknown"], [break])
+ CFLAGS="-Werror -Wunknown-warning-option $ax_pthread_try -pthread $ax_pthread_save_CFLAGS"
+ ac_link="$ax_pthread_save_ac_link"
+ AC_LINK_IFELSE([AC_LANG_SOURCE([[int main(void){return 0;}]])],
+ [ac_link="$ax_pthread_2step_ac_link"
+ AC_LINK_IFELSE([AC_LANG_SOURCE([[int main(void){return 0;}]])],
+ [break])
+ ])
+ done
+ ac_link="$ax_pthread_save_ac_link"
+ CFLAGS="$ax_pthread_save_CFLAGS"
+ AS_IF([test "x$ax_pthread_try" = "x"], [ax_pthread_try=no])
+ ax_cv_PTHREAD_CLANG_NO_WARN_FLAG="$ax_pthread_try"
+ ])
+
+ case "$ax_cv_PTHREAD_CLANG_NO_WARN_FLAG" in
+ no | unknown) ;;
+ *) PTHREAD_CFLAGS="$ax_cv_PTHREAD_CLANG_NO_WARN_FLAG $PTHREAD_CFLAGS" ;;
+ esac
+
+fi # $ax_pthread_clang = yes
+
+if test "x$ax_pthread_ok" = "xno"; then
+for ax_pthread_try_flag in $ax_pthread_flags; do
+
+ case $ax_pthread_try_flag in
none)
AC_MSG_CHECKING([whether pthreads work without any flags])
;;
+ -mt,pthread)
+ AC_MSG_CHECKING([whether pthreads work with -mt -lpthread])
+ PTHREAD_CFLAGS="-mt"
+ PTHREAD_LIBS="-lpthread"
+ ;;
+
-*)
- AC_MSG_CHECKING([whether pthreads work with $flag])
- PTHREAD_CFLAGS="$flag"
+ AC_MSG_CHECKING([whether pthreads work with $ax_pthread_try_flag])
+ PTHREAD_CFLAGS="$ax_pthread_try_flag"
;;
pthread-config)
AC_CHECK_PROG([ax_pthread_config], [pthread-config], [yes], [no])
- if test x"$ax_pthread_config" = xno; then continue; fi
+ AS_IF([test "x$ax_pthread_config" = "xno"], [continue])
PTHREAD_CFLAGS="`pthread-config --cflags`"
PTHREAD_LIBS="`pthread-config --ldflags` `pthread-config --libs`"
;;
*)
- AC_MSG_CHECKING([for the pthreads library -l$flag])
- PTHREAD_LIBS="-l$flag"
+ AC_MSG_CHECKING([for the pthreads library -l$ax_pthread_try_flag])
+ PTHREAD_LIBS="-l$ax_pthread_try_flag"
;;
esac
- save_LIBS="$LIBS"
- save_CFLAGS="$CFLAGS"
+ ax_pthread_save_CFLAGS="$CFLAGS"
+ ax_pthread_save_LIBS="$LIBS"
+ CFLAGS="$CFLAGS $PTHREAD_CFLAGS"
LIBS="$PTHREAD_LIBS $LIBS"
- CFLAGS="$CFLAGS $PTHREAD_CFLAGS $ax_pthread_extra_flags"
# Check for various functions. We must include pthread.h,
# since some functions may be macros. (On the Sequent, we
@@ -218,7 +366,11 @@
# pthread_cleanup_push because it is one of the few pthread
# functions on Solaris that doesn't have a non-functional libc stub.
# We try pthread_create on general principles.
+
AC_LINK_IFELSE([AC_LANG_PROGRAM([#include <pthread.h>
+# if $ax_pthread_check_cond
+# error "$ax_pthread_check_macro must be defined"
+# endif
static void routine(void *a) { a = 0; }
static void *start_routine(void *a) { return a; }],
[pthread_t th; pthread_attr_t attr;
@@ -227,16 +379,14 @@
pthread_attr_init(&attr);
pthread_cleanup_push(routine, 0);
pthread_cleanup_pop(0) /* ; */])],
- [ax_pthread_ok=yes],
- [])
+ [ax_pthread_ok=yes],
+ [])
- LIBS="$save_LIBS"
- CFLAGS="$save_CFLAGS"
+ CFLAGS="$ax_pthread_save_CFLAGS"
+ LIBS="$ax_pthread_save_LIBS"
AC_MSG_RESULT([$ax_pthread_ok])
- if test "x$ax_pthread_ok" = xyes; then
- break;
- fi
+ AS_IF([test "x$ax_pthread_ok" = "xyes"], [break])
PTHREAD_LIBS=""
PTHREAD_CFLAGS=""
@@ -244,71 +394,74 @@
fi
# Various other checks:
-if test "x$ax_pthread_ok" = xyes; then
- save_LIBS="$LIBS"
- LIBS="$PTHREAD_LIBS $LIBS"
- save_CFLAGS="$CFLAGS"
+if test "x$ax_pthread_ok" = "xyes"; then
+ ax_pthread_save_CFLAGS="$CFLAGS"
+ ax_pthread_save_LIBS="$LIBS"
CFLAGS="$CFLAGS $PTHREAD_CFLAGS"
+ LIBS="$PTHREAD_LIBS $LIBS"
# Detect AIX lossage: JOINABLE attribute is called UNDETACHED.
- AC_MSG_CHECKING([for joinable pthread attribute])
- attr_name=unknown
- for attr in PTHREAD_CREATE_JOINABLE PTHREAD_CREATE_UNDETACHED; do
- AC_LINK_IFELSE([AC_LANG_PROGRAM([#include <pthread.h>],
- [int attr = $attr; return attr /* ; */])],
- [attr_name=$attr; break],
- [])
- done
- AC_MSG_RESULT([$attr_name])
- if test "$attr_name" != PTHREAD_CREATE_JOINABLE; then
- AC_DEFINE_UNQUOTED([PTHREAD_CREATE_JOINABLE], [$attr_name],
- [Define to necessary symbol if this constant
- uses a non-standard name on your system.])
- fi
+ AC_CACHE_CHECK([for joinable pthread attribute],
+ [ax_cv_PTHREAD_JOINABLE_ATTR],
+ [ax_cv_PTHREAD_JOINABLE_ATTR=unknown
+ for ax_pthread_attr in PTHREAD_CREATE_JOINABLE PTHREAD_CREATE_UNDETACHED; do
+ AC_LINK_IFELSE([AC_LANG_PROGRAM([#include <pthread.h>],
+ [int attr = $ax_pthread_attr; return attr /* ; */])],
+ [ax_cv_PTHREAD_JOINABLE_ATTR=$ax_pthread_attr; break],
+ [])
+ done
+ ])
+ AS_IF([test "x$ax_cv_PTHREAD_JOINABLE_ATTR" != "xunknown" && \
+ test "x$ax_cv_PTHREAD_JOINABLE_ATTR" != "xPTHREAD_CREATE_JOINABLE" && \
+ test "x$ax_pthread_joinable_attr_defined" != "xyes"],
+ [AC_DEFINE_UNQUOTED([PTHREAD_CREATE_JOINABLE],
+ [$ax_cv_PTHREAD_JOINABLE_ATTR],
+ [Define to necessary symbol if this constant
+ uses a non-standard name on your system.])
+ ax_pthread_joinable_attr_defined=yes
+ ])
- AC_MSG_CHECKING([if more special flags are required for pthreads])
- flag=no
- case ${host_os} in
- aix* | freebsd* | darwin*) flag="-D_THREAD_SAFE";;
- osf* | hpux*) flag="-D_REENTRANT";;
- solaris*)
- if test "$GCC" = "yes"; then
- flag="-D_REENTRANT"
- else
- # TODO: What about Clang on Solaris?
- flag="-mt -D_REENTRANT"
- fi
- ;;
- esac
- AC_MSG_RESULT([$flag])
- if test "x$flag" != xno; then
- PTHREAD_CFLAGS="$flag $PTHREAD_CFLAGS"
- fi
+ AC_CACHE_CHECK([whether more special flags are required for pthreads],
+ [ax_cv_PTHREAD_SPECIAL_FLAGS],
+ [ax_cv_PTHREAD_SPECIAL_FLAGS=no
+ case $host_os in
+ solaris*)
+ ax_cv_PTHREAD_SPECIAL_FLAGS="-D_POSIX_PTHREAD_SEMANTICS"
+ ;;
+ esac
+ ])
+ AS_IF([test "x$ax_cv_PTHREAD_SPECIAL_FLAGS" != "xno" && \
+ test "x$ax_pthread_special_flags_added" != "xyes"],
+ [PTHREAD_CFLAGS="$ax_cv_PTHREAD_SPECIAL_FLAGS $PTHREAD_CFLAGS"
+ ax_pthread_special_flags_added=yes])
AC_CACHE_CHECK([for PTHREAD_PRIO_INHERIT],
- [ax_cv_PTHREAD_PRIO_INHERIT], [
- AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <pthread.h>]],
- [[int i = PTHREAD_PRIO_INHERIT;]])],
- [ax_cv_PTHREAD_PRIO_INHERIT=yes],
- [ax_cv_PTHREAD_PRIO_INHERIT=no])
+ [ax_cv_PTHREAD_PRIO_INHERIT],
+ [AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <pthread.h>]],
+ [[int i = PTHREAD_PRIO_INHERIT;]])],
+ [ax_cv_PTHREAD_PRIO_INHERIT=yes],
+ [ax_cv_PTHREAD_PRIO_INHERIT=no])
])
- AS_IF([test "x$ax_cv_PTHREAD_PRIO_INHERIT" = "xyes"],
- [AC_DEFINE([HAVE_PTHREAD_PRIO_INHERIT], [1], [Have PTHREAD_PRIO_INHERIT.])])
+ AS_IF([test "x$ax_cv_PTHREAD_PRIO_INHERIT" = "xyes" && \
+ test "x$ax_pthread_prio_inherit_defined" != "xyes"],
+ [AC_DEFINE([HAVE_PTHREAD_PRIO_INHERIT], [1], [Have PTHREAD_PRIO_INHERIT.])
+ ax_pthread_prio_inherit_defined=yes
+ ])
- LIBS="$save_LIBS"
- CFLAGS="$save_CFLAGS"
+ CFLAGS="$ax_pthread_save_CFLAGS"
+ LIBS="$ax_pthread_save_LIBS"
# More AIX lossage: compile with *_r variant
- if test "x$GCC" != xyes; then
+ if test "x$GCC" != "xyes"; then
case $host_os in
aix*)
AS_CASE(["x/$CC"],
- [x*/c89|x*/c89_128|x*/c99|x*/c99_128|x*/cc|x*/cc128|x*/xlc|x*/xlc_v6|x*/xlc128|x*/xlc128_v6],
- [#handle absolute path differently from PATH based program lookup
- AS_CASE(["x$CC"],
- [x/*],
- [AS_IF([AS_EXECUTABLE_P([${CC}_r])],[PTHREAD_CC="${CC}_r"])],
- [AC_CHECK_PROGS([PTHREAD_CC],[${CC}_r],[$CC])])])
+ [x*/c89|x*/c89_128|x*/c99|x*/c99_128|x*/cc|x*/cc128|x*/xlc|x*/xlc_v6|x*/xlc128|x*/xlc128_v6],
+ [#handle absolute path differently from PATH based program lookup
+ AS_CASE(["x$CC"],
+ [x/*],
+ [AS_IF([AS_EXECUTABLE_P([${CC}_r])],[PTHREAD_CC="${CC}_r"])],
+ [AC_CHECK_PROGS([PTHREAD_CC],[${CC}_r],[$CC])])])
;;
esac
fi
@@ -321,7 +474,7 @@
AC_SUBST([PTHREAD_CC])
# Finally, execute ACTION-IF-FOUND/ACTION-IF-NOT-FOUND:
-if test x"$ax_pthread_ok" = xyes; then
+if test "x$ax_pthread_ok" = "xyes"; then
ifelse([$1],,[AC_DEFINE([HAVE_PTHREAD],[1],[Define if you have POSIX threads libraries and header files.])],[$1])
:
else
diff --git a/config.h.in b/config.h.in
index 0fc542d..aa6e37e 100644
--- a/config.h.in
+++ b/config.h.in
@@ -322,6 +322,9 @@
/* Define to enable Kate (used by kate). */
#undef HAVE_KATE
+/* Define to enable drm/kms libraries (used by kms). */
+#undef HAVE_KMS
+
/* Define to enable ladspa (used by ladspa). */
#undef HAVE_LADSPA
@@ -415,15 +418,9 @@
/* Define to enable opencv plugins (used by opencv). */
#undef HAVE_OPENCV
-/* Define to 1 if you have the <opencv2/contrib/contrib.hpp> header file. */
-#undef HAVE_OPENCV2_CONTRIB_CONTRIB_HPP
-
/* Define to 1 if you have the <opencv2/core/core_c.h> header file. */
#undef HAVE_OPENCV2_CORE_CORE_C_H
-/* Define to 1 if you have the <opencv2/core/types_c.h> header file. */
-#undef HAVE_OPENCV2_CORE_TYPES_C_H
-
/* Define to 1 if you have the <opencv2/core/version.hpp> header file. */
#undef HAVE_OPENCV2_CORE_VERSION_HPP
@@ -436,12 +433,6 @@
/* Define to 1 if you have the <opencv2/imgproc/imgproc.hpp> header file. */
#undef HAVE_OPENCV2_IMGPROC_IMGPROC_HPP
-/* Define to 1 if you have the <opencv2/legacy/compat.hpp> header file. */
-#undef HAVE_OPENCV2_LEGACY_COMPAT_HPP
-
-/* Define to 1 if you have the <opencv2/legacy/legacy.hpp> header file. */
-#undef HAVE_OPENCV2_LEGACY_LEGACY_HPP
-
/* Define to 1 if you have the <opencv2/objdetect/objdetect.hpp> header file.
*/
#undef HAVE_OPENCV2_OBJDETECT_OBJDETECT_HPP
@@ -501,8 +492,8 @@
/* Define to enable Qt elements (used by qt). */
#undef HAVE_QT
-/* Define if Qt Android integration is installed */
-#undef HAVE_QT_ANDROID
+/* Define if Qt eglfs integration is installed */
+#undef HAVE_QT_EGLFS
/* Define if Qt iOS integration is installed */
#undef HAVE_QT_IOS
@@ -648,6 +639,9 @@
/* Define to enable WebP (used by webp ). */
#undef HAVE_WEBP
+/* Define to enable WebRTC Audio Processing (used by webrtcdsp). */
+#undef HAVE_WEBRTCDSP
+
/* Define to enable wildmidi midi soft synth plugin (used by wildmidi). */
#undef HAVE_WILDMIDI
diff --git a/configure b/configure
index 672ae18..77656ab 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.8.2.
+# Generated by GNU Autoconf 2.69 for GStreamer Bad Plug-ins 1.9.1.
#
# 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.8.2'
-PACKAGE_STRING='GStreamer Bad Plug-ins 1.8.2'
+PACKAGE_VERSION='1.9.1'
+PACKAGE_STRING='GStreamer Bad Plug-ins 1.9.1'
PACKAGE_BUGREPORT='http://bugzilla.gnome.org/enter_bug.cgi?product=GStreamer'
PACKAGE_URL=''
@@ -652,6 +652,10 @@
GST_OPTION_CFLAGS
DEPRECATED_CFLAGS
PROFILE_CFLAGS
+USE_WEBRTCDSP_FALSE
+USE_WEBRTCDSP_TRUE
+WEBRTCDSP_LIBS
+WEBRTCDSP_CFLAGS
USE_X265_FALSE
USE_X265_TRUE
X265_LIBS
@@ -867,12 +871,16 @@
LIBDE265_CFLAGS
USE_LV2_FALSE
USE_LV2_TRUE
-SLV2_LIBS
-SLV2_CFLAGS
+LILV_LIBS
+LILV_CFLAGS
USE_LADSPA_FALSE
USE_LADSPA_TRUE
LRDF_LIBS
LRDF_CFLAGS
+USE_KMS_FALSE
+USE_KMS_TRUE
+DRM_LIBS
+DRM_CFLAGS
USE_KATE_FALSE
USE_KATE_TRUE
USE_TIGER_FALSE
@@ -920,10 +928,6 @@
USE_WEBP_TRUE
WEBP_LIBS
WEBP_CFLAGS
-USE_WAYLAND_FALSE
-USE_WAYLAND_TRUE
-WAYLAND_LIBS
-WAYLAND_CFLAGS
wayland_scanner
USE_DIRECTFB_FALSE
USE_DIRECTFB_TRUE
@@ -1042,6 +1046,10 @@
DIRECTSOUND_LIBS
DIRECTX_LDFLAGS
DIRECTX_CFLAGS
+USE_WAYLAND_FALSE
+USE_WAYLAND_TRUE
+WAYLAND_LIBS
+WAYLAND_CFLAGS
USE_XCB_FALSE
USE_XCB_TRUE
XCB_LIBS
@@ -1816,6 +1824,7 @@
enable_gsm
enable_fluidsynth
enable_kate
+enable_kms
enable_ladspa
enable_lv2
enable_libde265
@@ -1873,6 +1882,7 @@
enable_hls
with_libgcrypt_prefix
enable_x265
+enable_webrtcdsp
'
ac_precious_vars='build_alias
host_alias
@@ -1960,6 +1970,8 @@
LIBPNG_LIBS
XCB_CFLAGS
XCB_LIBS
+WAYLAND_CFLAGS
+WAYLAND_LIBS
BLUEZ5_CFLAGS
BLUEZ5_LIBS
GIO_UNIX_CFLAGS
@@ -1998,8 +2010,6 @@
LIBDC1394_LIBS
DIRECTFB_CFLAGS
DIRECTFB_LIBS
-WAYLAND_CFLAGS
-WAYLAND_LIBS
WEBP_CFLAGS
WEBP_LIBS
DAALA_CFLAGS
@@ -2012,10 +2022,12 @@
KATE_LIBS
TIGER_CFLAGS
TIGER_LIBS
+DRM_CFLAGS
+DRM_LIBS
LRDF_CFLAGS
LRDF_LIBS
-SLV2_CFLAGS
-SLV2_LIBS
+LILV_CFLAGS
+LILV_LIBS
LIBDE265_CFLAGS
LIBDE265_LIBS
LIBMMS_CFLAGS
@@ -2103,7 +2115,9 @@
OPENSSL_CFLAGS
OPENSSL_LIBS
X265_CFLAGS
-X265_LIBS'
+X265_LIBS
+WEBRTCDSP_CFLAGS
+WEBRTCDSP_LIBS'
# Initialize some variables set by options.
@@ -2654,7 +2668,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.8.2 to adapt to many kinds of systems.
+\`configure' configures GStreamer Bad Plug-ins 1.9.1 to adapt to many kinds of systems.
Usage: $0 [OPTION]... [VAR=VALUE]...
@@ -2726,7 +2740,7 @@
if test -n "$ac_init_help"; then
case $ac_init_help in
- short | recursive ) echo "Configuration of GStreamer Bad Plug-ins 1.8.2:";;
+ short | recursive ) echo "Configuration of GStreamer Bad Plug-ins 1.9.1:";;
esac
cat <<\_ACEOF
@@ -2892,6 +2906,7 @@
--disable-gsm disable GSM library: gsmenc gsmdec
--disable-fluidsynth disable fluidsynth: fluidsynth
--disable-kate disable Kate: kate
+ --disable-kms disable drm/kms libraries: kms
--disable-ladspa disable ladspa: ladspa
--disable-lv2 disable lv2: lv2
--disable-libde265 disable libde265 HEVC/H.265 decoder: libde265
@@ -2944,6 +2959,7 @@
--disable-sndio disable sndio audio: sndio
--disable-hls disable http live streaming plugin: hls
--disable-x265 disable x265 plug-in: x265
+ --disable-webrtcdsp disable WebRTC Audio Processing: webrtcdsp
Optional Packages:
--with-PACKAGE[=ARG] use PACKAGE [ARG=yes]
@@ -3131,6 +3147,10 @@
LIBPNG_LIBS linker flags for LIBPNG, overriding pkg-config
XCB_CFLAGS C compiler flags for XCB, overriding pkg-config
XCB_LIBS linker flags for XCB, overriding pkg-config
+ WAYLAND_CFLAGS
+ C compiler flags for WAYLAND, overriding pkg-config
+ WAYLAND_LIBS
+ linker flags for WAYLAND, overriding pkg-config
BLUEZ5_CFLAGS
C compiler flags for BLUEZ5, overriding pkg-config
BLUEZ5_LIBS linker flags for BLUEZ5, overriding pkg-config
@@ -3196,10 +3216,6 @@
C compiler flags for DIRECTFB, overriding pkg-config
DIRECTFB_LIBS
linker flags for DIRECTFB, overriding pkg-config
- WAYLAND_CFLAGS
- C compiler flags for WAYLAND, overriding pkg-config
- WAYLAND_LIBS
- linker flags for WAYLAND, overriding pkg-config
WEBP_CFLAGS C compiler flags for WEBP, overriding pkg-config
WEBP_LIBS linker flags for WEBP, overriding pkg-config
DAALA_CFLAGS
@@ -3217,10 +3233,12 @@
TIGER_CFLAGS
C compiler flags for TIGER, overriding pkg-config
TIGER_LIBS linker flags for TIGER, overriding pkg-config
+ DRM_CFLAGS C compiler flags for DRM, overriding pkg-config
+ DRM_LIBS linker flags for DRM, overriding pkg-config
LRDF_CFLAGS C compiler flags for LRDF, overriding pkg-config
LRDF_LIBS linker flags for LRDF, overriding pkg-config
- SLV2_CFLAGS C compiler flags for SLV2, overriding pkg-config
- SLV2_LIBS linker flags for SLV2, overriding pkg-config
+ LILV_CFLAGS C compiler flags for LILV, overriding pkg-config
+ LILV_LIBS linker flags for LILV, overriding pkg-config
LIBDE265_CFLAGS
C compiler flags for LIBDE265, overriding pkg-config
LIBDE265_LIBS
@@ -3361,6 +3379,10 @@
linker flags for OPENSSL, overriding pkg-config
X265_CFLAGS C compiler flags for X265, overriding pkg-config
X265_LIBS linker flags for X265, overriding pkg-config
+ WEBRTCDSP_CFLAGS
+ C compiler flags for WEBRTCDSP, overriding pkg-config
+ WEBRTCDSP_LIBS
+ linker flags for WEBRTCDSP, overriding pkg-config
Use these variables to override the choices made by `configure' or to help
it to find libraries and programs with nonstandard names/locations.
@@ -3428,7 +3450,7 @@
test -n "$ac_init_help" && exit $ac_status
if $ac_init_version; then
cat <<\_ACEOF
-GStreamer Bad Plug-ins configure 1.8.2
+GStreamer Bad Plug-ins configure 1.9.1
generated by GNU Autoconf 2.69
Copyright (C) 2012 Free Software Foundation, Inc.
@@ -4401,7 +4423,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.8.2, which was
+It was created by GStreamer Bad Plug-ins $as_me 1.9.1, which was
generated by GNU Autoconf 2.69. Invocation command line was
$ $0 $@
@@ -5383,7 +5405,7 @@
# Define the identity of the package.
PACKAGE='gst-plugins-bad'
- VERSION='1.8.2'
+ VERSION='1.9.1'
cat >>confdefs.h <<_ACEOF
@@ -5594,9 +5616,9 @@
- PACKAGE_VERSION_MAJOR=$(echo 1.8.2 | cut -d'.' -f1)
- PACKAGE_VERSION_MINOR=$(echo 1.8.2 | cut -d'.' -f2)
- PACKAGE_VERSION_MICRO=$(echo 1.8.2 | cut -d'.' -f3)
+ PACKAGE_VERSION_MAJOR=$(echo 1.9.1 | cut -d'.' -f1)
+ PACKAGE_VERSION_MINOR=$(echo 1.9.1 | cut -d'.' -f2)
+ PACKAGE_VERSION_MICRO=$(echo 1.9.1 | cut -d'.' -f3)
@@ -5607,7 +5629,7 @@
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking nano version" >&5
$as_echo_n "checking nano version... " >&6; }
- NANO=$(echo 1.8.2 | cut -d'.' -f4)
+ NANO=$(echo 1.9.1 | cut -d'.' -f4)
if test x"$NANO" = x || test "x$NANO" = "x0" ; then
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: 0 (release)" >&5
@@ -10451,10 +10473,10 @@
done
- GST_CURRENT=802
+ GST_CURRENT=901
GST_REVISION=0
- GST_AGE=802
- GST_LIBVERSION=802:0:802
+ GST_AGE=901
+ GST_LIBVERSION=901:0:901
@@ -15082,8 +15104,8 @@
-GST_REQ=1.8.0
-GSTPB_REQ=1.8.0
+GST_REQ=1.9.1
+GSTPB_REQ=1.9.1
@@ -24967,6 +24989,8 @@
+
+
ac_ext=c
ac_cpp='$CPP $CPPFLAGS'
ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -24976,19 +25000,23 @@
ax_pthread_ok=no
# We used to check for pthread.h first, but this fails if pthread.h
-# requires special compiler flags (e.g. on True64 or Sequent).
+# requires special compiler flags (e.g. on Tru64 or Sequent).
# It gets checked for in the link test anyway.
# First of all, check if the user has set any of the PTHREAD_LIBS,
# etcetera environment variables, and if threads linking works using
# them:
-if test x"$PTHREAD_LIBS$PTHREAD_CFLAGS" != x; then
- save_CFLAGS="$CFLAGS"
+if test "x$PTHREAD_CFLAGS$PTHREAD_LIBS" != "x"; then
+ ax_pthread_save_CC="$CC"
+ ax_pthread_save_CFLAGS="$CFLAGS"
+ ax_pthread_save_LIBS="$LIBS"
+ if test "x$PTHREAD_CC" != "x"; then :
+ CC="$PTHREAD_CC"
+fi
CFLAGS="$CFLAGS $PTHREAD_CFLAGS"
- save_LIBS="$LIBS"
LIBS="$PTHREAD_LIBS $LIBS"
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for pthread_join in LIBS=$PTHREAD_LIBS with CFLAGS=$PTHREAD_CFLAGS" >&5
-$as_echo_n "checking for pthread_join in LIBS=$PTHREAD_LIBS with CFLAGS=$PTHREAD_CFLAGS... " >&6; }
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for pthread_join using $CC $PTHREAD_CFLAGS $PTHREAD_LIBS" >&5
+$as_echo_n "checking for pthread_join using $CC $PTHREAD_CFLAGS $PTHREAD_LIBS... " >&6; }
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
@@ -25014,12 +25042,13 @@
conftest$ac_exeext conftest.$ac_ext
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_pthread_ok" >&5
$as_echo "$ax_pthread_ok" >&6; }
- if test x"$ax_pthread_ok" = xno; then
+ if test "x$ax_pthread_ok" = "xno"; then
PTHREAD_LIBS=""
PTHREAD_CFLAGS=""
fi
- LIBS="$save_LIBS"
- CFLAGS="$save_CFLAGS"
+ CC="$ax_pthread_save_CC"
+ CFLAGS="$ax_pthread_save_CFLAGS"
+ LIBS="$ax_pthread_save_LIBS"
fi
# We must check for the threads library under a number of different
@@ -25032,7 +25061,7 @@
# which indicates that we try without any flags at all, and "pthread-config"
# which is a program returning the flags for the Pth emulation library.
-ax_pthread_flags="pthreads none -Kthread -kthread lthread -pthread -pthreads -mthreads pthread --thread-safe -mt pthread-config"
+ax_pthread_flags="pthreads none -Kthread -pthread -pthreads -mthreads pthread --thread-safe -mt pthread-config"
# The ordering *is* (sometimes) important. Some notes on the
# individual items follow:
@@ -25041,82 +25070,257 @@
# none: in case threads are in libc; should be tried before -Kthread and
# other compiler flags to prevent continual compiler warnings
# -Kthread: Sequent (threads in libc, but -Kthread needed for pthread.h)
-# -kthread: FreeBSD kernel threads (preferred to -pthread since SMP-able)
-# lthread: LinuxThreads port on FreeBSD (also preferred to -pthread)
-# -pthread: Linux/gcc (kernel threads), BSD/gcc (userland threads)
-# -pthreads: Solaris/gcc
-# -mthreads: Mingw32/gcc, Lynx/gcc
+# -pthread: Linux/gcc (kernel threads), BSD/gcc (userland threads), Tru64
+# (Note: HP C rejects this with "bad form for `-t' option")
+# -pthreads: Solaris/gcc (Note: HP C also rejects)
# -mt: Sun Workshop C (may only link SunOS threads [-lthread], but it
-# doesn't hurt to check since this sometimes defines pthreads too;
-# also defines -D_REENTRANT)
-# ... -mt is also the pthreads flag for HP/aCC
+# doesn't hurt to check since this sometimes defines pthreads and
+# -D_REENTRANT too), HP C (must be checked before -lpthread, which
+# is present but should not be used directly; and before -mthreads,
+# because the compiler interprets this as "-mt" + "-hreads")
+# -mthreads: Mingw32/gcc, Lynx/gcc
# pthread: Linux, etcetera
# --thread-safe: KAI C++
# pthread-config: use pthread-config program (for GNU Pth library)
-case ${host_os} in
+case $host_os in
+
+ freebsd*)
+
+ # -kthread: FreeBSD kernel threads (preferred to -pthread since SMP-able)
+ # lthread: LinuxThreads port on FreeBSD (also preferred to -pthread)
+
+ ax_pthread_flags="-kthread lthread $ax_pthread_flags"
+ ;;
+
+ hpux*)
+
+ # From the cc(1) man page: "[-mt] Sets various -D flags to enable
+ # multi-threading and also sets -lpthread."
+
+ ax_pthread_flags="-mt -pthread pthread $ax_pthread_flags"
+ ;;
+
+ openedition*)
+
+ # IBM z/OS requires a feature-test macro to be defined in order to
+ # enable POSIX threads at all, so give the user a hint if this is
+ # not set. (We don't define these ourselves, as they can affect
+ # other portions of the system API in unpredictable ways.)
+
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+
+# if !defined(_OPEN_THREADS) && !defined(_UNIX03_THREADS)
+ AX_PTHREAD_ZOS_MISSING
+# endif
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+ $EGREP "AX_PTHREAD_ZOS_MISSING" >/dev/null 2>&1; then :
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: IBM z/OS requires -D_OPEN_THREADS or -D_UNIX03_THREADS to enable pthreads support." >&5
+$as_echo "$as_me: WARNING: IBM z/OS requires -D_OPEN_THREADS or -D_UNIX03_THREADS to enable pthreads support." >&2;}
+fi
+rm -f conftest*
+
+ ;;
+
solaris*)
# On Solaris (at least, for some versions), libc contains stubbed
# (non-functional) versions of the pthreads routines, so link-based
- # tests will erroneously succeed. (We need to link with -pthreads/-mt/
- # -lpthread.) (The stubs are missing pthread_cleanup_push, or rather
- # a function called by this macro, so we could check for that, but
- # who knows whether they'll stub that too in a future libc.) So,
- # we'll just look for -pthreads and -lpthread first:
+ # tests will erroneously succeed. (N.B.: The stubs are missing
+ # pthread_cleanup_push, or rather a function called by this macro,
+ # so we could check for that, but who knows whether they'll stub
+ # that too in a future libc.) So we'll check first for the
+ # standard Solaris way of linking pthreads (-mt -lpthread).
- ax_pthread_flags="-pthreads pthread -mt -pthread $ax_pthread_flags"
- ;;
-
- darwin*)
- ax_pthread_flags="-pthread $ax_pthread_flags"
+ ax_pthread_flags="-mt,pthread pthread $ax_pthread_flags"
;;
esac
-# Clang doesn't consider unrecognized options an error unless we specify
-# -Werror. We throw in some extra Clang-specific options to ensure that
-# this doesn't happen for GCC, which also accepts -Werror.
+# GCC generally uses -pthread, or -pthreads on some platforms (e.g. SPARC)
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if compiler needs -Werror to reject unknown flags" >&5
-$as_echo_n "checking if compiler needs -Werror to reject unknown flags... " >&6; }
-save_CFLAGS="$CFLAGS"
-ax_pthread_extra_flags="-Werror"
-CFLAGS="$CFLAGS $ax_pthread_extra_flags -Wunknown-warning-option -Wsizeof-array-argument"
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h. */
-int foo(void);
-int
-main ()
-{
-foo()
- ;
- return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
-$as_echo "yes" >&6; }
-else
- ax_pthread_extra_flags=
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
-$as_echo "no" >&6; }
+if test "x$GCC" = "xyes"; then :
+ ax_pthread_flags="-pthread -pthreads $ax_pthread_flags"
fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-CFLAGS="$save_CFLAGS"
-if test x"$ax_pthread_ok" = xno; then
-for flag in $ax_pthread_flags; do
+# The presence of a feature test macro requesting re-entrant function
+# definitions is, on some systems, a strong hint that pthreads support is
+# correctly enabled
- case $flag in
+case $host_os in
+ darwin* | hpux* | linux* | osf* | solaris*)
+ ax_pthread_check_macro="_REENTRANT"
+ ;;
+
+ aix*)
+ ax_pthread_check_macro="_THREAD_SAFE"
+ ;;
+
+ *)
+ ax_pthread_check_macro="--"
+ ;;
+esac
+if test "x$ax_pthread_check_macro" = "x--"; then :
+ ax_pthread_check_cond=0
+else
+ ax_pthread_check_cond="!defined($ax_pthread_check_macro)"
+fi
+
+# Are we compiling with Clang?
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC is Clang" >&5
+$as_echo_n "checking whether $CC is Clang... " >&6; }
+if ${ax_cv_PTHREAD_CLANG+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ ax_cv_PTHREAD_CLANG=no
+ # Note that Autoconf sets GCC=yes for Clang as well as GCC
+ if test "x$GCC" = "xyes"; then
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+/* Note: Clang 2.7 lacks __clang_[a-z]+__ */
+# if defined(__clang__) && defined(__llvm__)
+ AX_PTHREAD_CC_IS_CLANG
+# endif
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+ $EGREP "AX_PTHREAD_CC_IS_CLANG" >/dev/null 2>&1; then :
+ ax_cv_PTHREAD_CLANG=yes
+fi
+rm -f conftest*
+
+ fi
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_PTHREAD_CLANG" >&5
+$as_echo "$ax_cv_PTHREAD_CLANG" >&6; }
+ax_pthread_clang="$ax_cv_PTHREAD_CLANG"
+
+ax_pthread_clang_warning=no
+
+# Clang needs special handling, because older versions handle the -pthread
+# option in a rather... idiosyncratic way
+
+if test "x$ax_pthread_clang" = "xyes"; then
+
+ # Clang takes -pthread; it has never supported any other flag
+
+ # (Note 1: This will need to be revisited if a system that Clang
+ # supports has POSIX threads in a separate library. This tends not
+ # to be the way of modern systems, but it's conceivable.)
+
+ # (Note 2: On some systems, notably Darwin, -pthread is not needed
+ # to get POSIX threads support; the API is always present and
+ # active. We could reasonably leave PTHREAD_CFLAGS empty. But
+ # -pthread does define _REENTRANT, and while the Darwin headers
+ # ignore this macro, third-party headers might not.)
+
+ PTHREAD_CFLAGS="-pthread"
+ PTHREAD_LIBS=
+
+ ax_pthread_ok=yes
+
+ # However, older versions of Clang make a point of warning the user
+ # that, in an invocation where only linking and no compilation is
+ # taking place, the -pthread option has no effect ("argument unused
+ # during compilation"). They expect -pthread to be passed in only
+ # when source code is being compiled.
+ #
+ # Problem is, this is at odds with the way Automake and most other
+ # C build frameworks function, which is that the same flags used in
+ # compilation (CFLAGS) are also used in linking. Many systems
+ # supported by AX_PTHREAD require exactly this for POSIX threads
+ # support, and in fact it is often not straightforward to specify a
+ # flag that is used only in the compilation phase and not in
+ # linking. Such a scenario is extremely rare in practice.
+ #
+ # Even though use of the -pthread flag in linking would only print
+ # a warning, this can be a nuisance for well-run software projects
+ # that build with -Werror. So if the active version of Clang has
+ # this misfeature, we search for an option to squash it.
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether Clang needs flag to prevent \"argument unused\" warning when linking with -pthread" >&5
+$as_echo_n "checking whether Clang needs flag to prevent \"argument unused\" warning when linking with -pthread... " >&6; }
+if ${ax_cv_PTHREAD_CLANG_NO_WARN_FLAG+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ ax_cv_PTHREAD_CLANG_NO_WARN_FLAG=unknown
+ # Create an alternate version of $ac_link that compiles and
+ # links in two steps (.c -> .o, .o -> exe) instead of one
+ # (.c -> exe), because the warning occurs only in the second
+ # step
+ ax_pthread_save_ac_link="$ac_link"
+ ax_pthread_sed='s/conftest\.\$ac_ext/conftest.$ac_objext/g'
+ ax_pthread_link_step=`$as_echo "$ac_link" | sed "$ax_pthread_sed"`
+ ax_pthread_2step_ac_link="($ac_compile) && (echo ==== >&5) && ($ax_pthread_link_step)"
+ ax_pthread_save_CFLAGS="$CFLAGS"
+ for ax_pthread_try in '' -Qunused-arguments -Wno-unused-command-line-argument unknown; do
+ if test "x$ax_pthread_try" = "xunknown"; then :
+ break
+fi
+ CFLAGS="-Werror -Wunknown-warning-option $ax_pthread_try -pthread $ax_pthread_save_CFLAGS"
+ ac_link="$ax_pthread_save_ac_link"
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+int main(void){return 0;}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+ ac_link="$ax_pthread_2step_ac_link"
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h. */
+int main(void){return 0;}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+ break
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+
+fi
+rm -f core conftest.err conftest.$ac_objext \
+ conftest$ac_exeext conftest.$ac_ext
+ done
+ ac_link="$ax_pthread_save_ac_link"
+ CFLAGS="$ax_pthread_save_CFLAGS"
+ if test "x$ax_pthread_try" = "x"; then :
+ ax_pthread_try=no
+fi
+ ax_cv_PTHREAD_CLANG_NO_WARN_FLAG="$ax_pthread_try"
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_PTHREAD_CLANG_NO_WARN_FLAG" >&5
+$as_echo "$ax_cv_PTHREAD_CLANG_NO_WARN_FLAG" >&6; }
+
+ case "$ax_cv_PTHREAD_CLANG_NO_WARN_FLAG" in
+ no | unknown) ;;
+ *) PTHREAD_CFLAGS="$ax_cv_PTHREAD_CLANG_NO_WARN_FLAG $PTHREAD_CFLAGS" ;;
+ esac
+
+fi # $ax_pthread_clang = yes
+
+if test "x$ax_pthread_ok" = "xno"; then
+for ax_pthread_try_flag in $ax_pthread_flags; do
+
+ case $ax_pthread_try_flag in
none)
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether pthreads work without any flags" >&5
$as_echo_n "checking whether pthreads work without any flags... " >&6; }
;;
+ -mt,pthread)
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether pthreads work with -mt -lpthread" >&5
+$as_echo_n "checking whether pthreads work with -mt -lpthread... " >&6; }
+ PTHREAD_CFLAGS="-mt"
+ PTHREAD_LIBS="-lpthread"
+ ;;
+
-*)
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether pthreads work with $flag" >&5
-$as_echo_n "checking whether pthreads work with $flag... " >&6; }
- PTHREAD_CFLAGS="$flag"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether pthreads work with $ax_pthread_try_flag" >&5
+$as_echo_n "checking whether pthreads work with $ax_pthread_try_flag... " >&6; }
+ PTHREAD_CFLAGS="$ax_pthread_try_flag"
;;
pthread-config)
@@ -25158,22 +25362,24 @@
fi
- if test x"$ax_pthread_config" = xno; then continue; fi
+ if test "x$ax_pthread_config" = "xno"; then :
+ continue
+fi
PTHREAD_CFLAGS="`pthread-config --cflags`"
PTHREAD_LIBS="`pthread-config --ldflags` `pthread-config --libs`"
;;
*)
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for the pthreads library -l$flag" >&5
-$as_echo_n "checking for the pthreads library -l$flag... " >&6; }
- PTHREAD_LIBS="-l$flag"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for the pthreads library -l$ax_pthread_try_flag" >&5
+$as_echo_n "checking for the pthreads library -l$ax_pthread_try_flag... " >&6; }
+ PTHREAD_LIBS="-l$ax_pthread_try_flag"
;;
esac
- save_LIBS="$LIBS"
- save_CFLAGS="$CFLAGS"
+ ax_pthread_save_CFLAGS="$CFLAGS"
+ ax_pthread_save_LIBS="$LIBS"
+ CFLAGS="$CFLAGS $PTHREAD_CFLAGS"
LIBS="$PTHREAD_LIBS $LIBS"
- CFLAGS="$CFLAGS $PTHREAD_CFLAGS $ax_pthread_extra_flags"
# Check for various functions. We must include pthread.h,
# since some functions may be macros. (On the Sequent, we
@@ -25184,9 +25390,13 @@
# pthread_cleanup_push because it is one of the few pthread
# functions on Solaris that doesn't have a non-functional libc stub.
# We try pthread_create on general principles.
+
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
#include <pthread.h>
+# if $ax_pthread_check_cond
+# error "$ax_pthread_check_macro must be defined"
+# endif
static void routine(void *a) { a = 0; }
static void *start_routine(void *a) { return a; }
int
@@ -25208,14 +25418,14 @@
rm -f core conftest.err conftest.$ac_objext \
conftest$ac_exeext conftest.$ac_ext
- LIBS="$save_LIBS"
- CFLAGS="$save_CFLAGS"
+ CFLAGS="$ax_pthread_save_CFLAGS"
+ LIBS="$ax_pthread_save_LIBS"
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_pthread_ok" >&5
$as_echo "$ax_pthread_ok" >&6; }
- if test "x$ax_pthread_ok" = xyes; then
- break;
- fi
+ if test "x$ax_pthread_ok" = "xyes"; then :
+ break
+fi
PTHREAD_LIBS=""
PTHREAD_CFLAGS=""
@@ -25223,72 +25433,80 @@
fi
# Various other checks:
-if test "x$ax_pthread_ok" = xyes; then
- save_LIBS="$LIBS"
- LIBS="$PTHREAD_LIBS $LIBS"
- save_CFLAGS="$CFLAGS"
+if test "x$ax_pthread_ok" = "xyes"; then
+ ax_pthread_save_CFLAGS="$CFLAGS"
+ ax_pthread_save_LIBS="$LIBS"
CFLAGS="$CFLAGS $PTHREAD_CFLAGS"
+ LIBS="$PTHREAD_LIBS $LIBS"
# Detect AIX lossage: JOINABLE attribute is called UNDETACHED.
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for joinable pthread attribute" >&5
$as_echo_n "checking for joinable pthread attribute... " >&6; }
- attr_name=unknown
- for attr in PTHREAD_CREATE_JOINABLE PTHREAD_CREATE_UNDETACHED; do
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+if ${ax_cv_PTHREAD_JOINABLE_ATTR+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ ax_cv_PTHREAD_JOINABLE_ATTR=unknown
+ for ax_pthread_attr in PTHREAD_CREATE_JOINABLE PTHREAD_CREATE_UNDETACHED; do
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
#include <pthread.h>
int
main ()
{
-int attr = $attr; return attr /* ; */
+int attr = $ax_pthread_attr; return attr /* ; */
;
return 0;
}
_ACEOF
if ac_fn_c_try_link "$LINENO"; then :
- attr_name=$attr; break
+ ax_cv_PTHREAD_JOINABLE_ATTR=$ax_pthread_attr; break
fi
rm -f core conftest.err conftest.$ac_objext \
conftest$ac_exeext conftest.$ac_ext
- done
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $attr_name" >&5
-$as_echo "$attr_name" >&6; }
- if test "$attr_name" != PTHREAD_CREATE_JOINABLE; then
+ done
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_PTHREAD_JOINABLE_ATTR" >&5
+$as_echo "$ax_cv_PTHREAD_JOINABLE_ATTR" >&6; }
+ if test "x$ax_cv_PTHREAD_JOINABLE_ATTR" != "xunknown" && \
+ test "x$ax_cv_PTHREAD_JOINABLE_ATTR" != "xPTHREAD_CREATE_JOINABLE" && \
+ test "x$ax_pthread_joinable_attr_defined" != "xyes"; then :
cat >>confdefs.h <<_ACEOF
-#define PTHREAD_CREATE_JOINABLE $attr_name
+#define PTHREAD_CREATE_JOINABLE $ax_cv_PTHREAD_JOINABLE_ATTR
_ACEOF
- fi
+ ax_pthread_joinable_attr_defined=yes
- { $as_echo "$as_me:${as_lineno-$LINENO}: checking if more special flags are required for pthreads" >&5
-$as_echo_n "checking if more special flags are required for pthreads... " >&6; }
- flag=no
- case ${host_os} in
- aix* | freebsd* | darwin*) flag="-D_THREAD_SAFE";;
- osf* | hpux*) flag="-D_REENTRANT";;
- solaris*)
- if test "$GCC" = "yes"; then
- flag="-D_REENTRANT"
- else
- # TODO: What about Clang on Solaris?
- flag="-mt -D_REENTRANT"
- fi
- ;;
- esac
- { $as_echo "$as_me:${as_lineno-$LINENO}: result: $flag" >&5
-$as_echo "$flag" >&6; }
- if test "x$flag" != xno; then
- PTHREAD_CFLAGS="$flag $PTHREAD_CFLAGS"
- fi
+fi
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether more special flags are required for pthreads" >&5
+$as_echo_n "checking whether more special flags are required for pthreads... " >&6; }
+if ${ax_cv_PTHREAD_SPECIAL_FLAGS+:} false; then :
+ $as_echo_n "(cached) " >&6
+else
+ ax_cv_PTHREAD_SPECIAL_FLAGS=no
+ case $host_os in
+ solaris*)
+ ax_cv_PTHREAD_SPECIAL_FLAGS="-D_POSIX_PTHREAD_SEMANTICS"
+ ;;
+ esac
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_PTHREAD_SPECIAL_FLAGS" >&5
+$as_echo "$ax_cv_PTHREAD_SPECIAL_FLAGS" >&6; }
+ if test "x$ax_cv_PTHREAD_SPECIAL_FLAGS" != "xno" && \
+ test "x$ax_pthread_special_flags_added" != "xyes"; then :
+ PTHREAD_CFLAGS="$ax_cv_PTHREAD_SPECIAL_FLAGS $PTHREAD_CFLAGS"
+ ax_pthread_special_flags_added=yes
+fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for PTHREAD_PRIO_INHERIT" >&5
$as_echo_n "checking for PTHREAD_PRIO_INHERIT... " >&6; }
if ${ax_cv_PTHREAD_PRIO_INHERIT+:} false; then :
$as_echo_n "(cached) " >&6
else
-
- cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
#include <pthread.h>
int
@@ -25310,23 +25528,26 @@
fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ax_cv_PTHREAD_PRIO_INHERIT" >&5
$as_echo "$ax_cv_PTHREAD_PRIO_INHERIT" >&6; }
- if test "x$ax_cv_PTHREAD_PRIO_INHERIT" = "xyes"; then :
+ if test "x$ax_cv_PTHREAD_PRIO_INHERIT" = "xyes" && \
+ test "x$ax_pthread_prio_inherit_defined" != "xyes"; then :
$as_echo "#define HAVE_PTHREAD_PRIO_INHERIT 1" >>confdefs.h
+ ax_pthread_prio_inherit_defined=yes
+
fi
- LIBS="$save_LIBS"
- CFLAGS="$save_CFLAGS"
+ CFLAGS="$ax_pthread_save_CFLAGS"
+ LIBS="$ax_pthread_save_LIBS"
# More AIX lossage: compile with *_r variant
- if test "x$GCC" != xyes; then
+ if test "x$GCC" != "xyes"; then
case $host_os in
aix*)
case "x/$CC" in #(
x*/c89|x*/c89_128|x*/c99|x*/c99_128|x*/cc|x*/cc128|x*/xlc|x*/xlc_v6|x*/xlc128|x*/xlc128_v6) :
#handle absolute path differently from PATH based program lookup
- case "x$CC" in #(
+ case "x$CC" in #(
x/*) :
if as_fn_executable_p ${CC}_r; then :
PTHREAD_CC="${CC}_r"
@@ -25391,7 +25612,7 @@
# Finally, execute ACTION-IF-FOUND/ACTION-IF-NOT-FOUND:
-if test x"$ax_pthread_ok" = xyes; then
+if test "x$ax_pthread_ok" = "xyes"; then
$as_echo "#define HAVE_PTHREAD 1" >>confdefs.h
@@ -28985,6 +29206,10 @@
fi
+if test x$enable_static = xyes -a x$enable_shared = xno; then
+ GST_STATIC_CFLAGS="-DGST_STATIC_COMPILATION"
+fi
+
# Check whether --with-player-tests was given.
if test "${with_player_tests+set}" = set; then :
@@ -30210,10 +30435,11 @@
sdi tta \
videomeasure \
linsys \
- apexsink dc1394 \
- musepack nas sdl timidity \
+ apexsink \
+ nas sdl timidity \
wininet \
- xvid lv2 sndio libvisual"
+ xvid sndio libvisual"
+
@@ -33530,6 +33756,7 @@
HAVE_GL=no
HAVE_GLES2=no
+HAVE_GLES3_H=no
HAVE_WAYLAND_EGL=no
HAVE_EGL_RPI=no
@@ -33938,6 +34165,12 @@
fi
+ ac_fn_c_check_header_mongrel "$LINENO" "GLES3/gl3.h" "ac_cv_header_GLES3_gl3_h" "$ac_includes_default"
+if test "x$ac_cv_header_GLES3_gl3_h" = xyes; then :
+ HAVE_GLES3_H=yes
+fi
+
+
fi
if test "x$NEED_EGL" != "xno"; then
@@ -34654,6 +34887,10 @@
fi
if test "x$HAVE_GL" = "xyes" -a "x$HAVE_GLES2" = "xyes"; then
+ GLES3_H_DEFINE=0
+ if test "x$HAVE_GLES3_H" == "xyes"; then
+ GLES3_H_DEFINE=1
+ fi
GL_INCLUDES="
#ifdef __GNUC__
# pragma GCC diagnostic push
@@ -34666,8 +34903,13 @@
# include <OpenGLES/ES2/gl.h>
# include <OpenGLES/ES2/glext.h>
# else
-# include <GLES2/gl2.h>
-# include <GLES2/gl2ext.h>
+# if $GLES3_H_DEFINE
+# include <GLES3/gl3.h>
+# include <GLES3/gl3ext.h>
+# else
+# include <GLES2/gl2.h>
+# include <GLES2/gl2ext.h>
+# endif
# endif
# ifdef __APPLE__
# include <OpenGL/OpenGL.h>
@@ -34711,6 +34953,7 @@
{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Disabling GL|ES 2.0 support" >&5
$as_echo "$as_me: WARNING: Disabling GL|ES 2.0 support" >&2;}
HAVE_GLES2=no
+ HAVE_GLES3_H=no
fi
fi
@@ -34952,6 +35195,9 @@
if test "x$USE_GLES2" = "xyes"; then
GL_APIS="gles2 $GL_APIS"
GST_GL_HAVE_GLES2=1
+ if test "x$HAVE_GLES3_H" = "xyes"; then
+ GST_GL_HAVE_GLES3=1
+ fi
fi
GL_CONFIG_DEFINES="$GL_CONFIG_DEFINES
@@ -35239,8 +35485,13 @@
# include <OpenGLES/ES2/gl.h>
# include <OpenGLES/ES2/glext.h>
# else
-# include <GLES2/gl2.h>
-# include <GLES2/gl2ext.h>
+# if $GST_GL_HAVE_GLES3
+# include <GLES3/gl3.h>
+# include <GLES3/gl3ext.h>
+# else
+# include <GLES2/gl2.h>
+# include <GLES2/gl2ext.h>
+# endif
# endif
"
fi
@@ -35599,8 +35850,6 @@
fi
-VULKAN_CONFIG_DEFINES=""
-
pkg_failed=no
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for XCB" >&5
@@ -35662,18 +35911,17 @@
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
$as_echo "no" >&6; }
- HAVE_XCB=no
+ GST_VULKAN_HAVE_WINDOW_XCB=0
elif test $pkg_failed = untried; then
- HAVE_XCB=no
+ GST_VULKAN_HAVE_WINDOW_XCB=0
else
XCB_CFLAGS=$pkg_cv_XCB_CFLAGS
XCB_LIBS=$pkg_cv_XCB_LIBS
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
$as_echo "yes" >&6; }
- HAVE_XCB=yes
+ GST_VULKAN_HAVE_WINDOW_XCB=1
fi
-
- if test "x$HAVE_XCB" = "xyes"; then
+ if test "x$GST_VULKAN_HAVE_WINDOW_XCB" = "x1"; then
USE_XCB_TRUE=
USE_XCB_FALSE='#'
else
@@ -35681,10 +35929,89 @@
USE_XCB_FALSE=
fi
-if test "x$HAVE_XCB" = "xyes"; then
- VULKAN_CONFIG_DEFINES="$VULKAN_CONFIG_DEFINES
- #define GST_VULKAN_HAVE_WINDOW_XCB 1"
+
+
+pkg_failed=no
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for WAYLAND" >&5
+$as_echo_n "checking for WAYLAND... " >&6; }
+
+if test -n "$PKG_CONFIG"; then
+ if test -n "$WAYLAND_CFLAGS"; then
+ pkg_cv_WAYLAND_CFLAGS="$WAYLAND_CFLAGS"
+ else
+ if test -n "$PKG_CONFIG" && \
+ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"wayland-client >= 1.4\""; } >&5
+ ($PKG_CONFIG --exists --print-errors "wayland-client >= 1.4") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }; then
+ pkg_cv_WAYLAND_CFLAGS=`$PKG_CONFIG --cflags "wayland-client >= 1.4" 2>/dev/null`
+else
+ pkg_failed=yes
fi
+ fi
+else
+ pkg_failed=untried
+fi
+if test -n "$PKG_CONFIG"; then
+ if test -n "$WAYLAND_LIBS"; then
+ pkg_cv_WAYLAND_LIBS="$WAYLAND_LIBS"
+ else
+ if test -n "$PKG_CONFIG" && \
+ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"wayland-client >= 1.4\""; } >&5
+ ($PKG_CONFIG --exists --print-errors "wayland-client >= 1.4") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }; then
+ pkg_cv_WAYLAND_LIBS=`$PKG_CONFIG --libs "wayland-client >= 1.4" 2>/dev/null`
+else
+ pkg_failed=yes
+fi
+ fi
+else
+ pkg_failed=untried
+fi
+
+
+
+if test $pkg_failed = yes; then
+
+if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
+ _pkg_short_errors_supported=yes
+else
+ _pkg_short_errors_supported=no
+fi
+ if test $_pkg_short_errors_supported = yes; then
+ WAYLAND_PKG_ERRORS=`$PKG_CONFIG --short-errors --errors-to-stdout --print-errors "wayland-client >= 1.4"`
+ else
+ WAYLAND_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "wayland-client >= 1.4"`
+ fi
+ # Put the nasty error message in config.log where it belongs
+ echo "$WAYLAND_PKG_ERRORS" >&5
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+ GST_VULKAN_HAVE_WINDOW_WAYLAND=0
+elif test $pkg_failed = untried; then
+ GST_VULKAN_HAVE_WINDOW_WAYLAND=0
+else
+ WAYLAND_CFLAGS=$pkg_cv_WAYLAND_CFLAGS
+ WAYLAND_LIBS=$pkg_cv_WAYLAND_LIBS
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+ GST_VULKAN_HAVE_WINDOW_WAYLAND=1
+fi
+ if test "x$GST_VULKAN_HAVE_WINDOW_WAYLAND" = "x1"; then
+ USE_WAYLAND_TRUE=
+ USE_WAYLAND_FALSE='#'
+else
+ USE_WAYLAND_TRUE='#'
+ USE_WAYLAND_FALSE=
+fi
+
+VULKAN_CONFIG_DEFINES="
+#define GST_VULKAN_HAVE_WINDOW_XCB $GST_VULKAN_HAVE_WINDOW_XCB
+#define GST_VULKAN_HAVE_WINDOW_WAYLAND $GST_VULKAN_HAVE_WINDOW_WAYLAND"
ac_config_commands="$ac_config_commands ext/vulkan/vkconfig.h"
@@ -43238,6 +43565,355 @@
echo
+{ $as_echo "$as_me:${as_lineno-$LINENO}: *** checking feature: drm/kms libraries ***" >&5
+$as_echo "$as_me: *** checking feature: drm/kms libraries ***" >&6;}
+if test "xkms" != "x"
+then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: *** for plug-ins: kms ***" >&5
+$as_echo "$as_me: *** for plug-ins: kms ***" >&6;}
+fi
+NOUSE=
+if test "x$USE_KMS" = "xno"; then
+ NOUSE="yes"
+fi
+# Check whether --enable-kms was given.
+if test "${enable_kms+set}" = set; then :
+ enableval=$enable_kms; case "${enableval}" in
+ yes) USE_KMS=yes;;
+ no) USE_KMS=no;;
+ *) as_fn_error $? "bad value ${enableval} for --enable-kms" "$LINENO" 5 ;;
+ esac
+else
+ USE_KMS=yes
+fi
+
+if test "x$NOUSE" = "xyes"; then
+ USE_KMS="no"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: *** kms pre-configured not to be built" >&5
+$as_echo "$as_me: WARNING: *** kms pre-configured not to be built" >&2;}
+fi
+NOUSE=
+
+if echo " $GST_PLUGINS_NONPORTED " | tr , ' ' | grep -i " KMS " > /dev/null; then
+ USE_KMS="no"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: *** kms not ported" >&5
+$as_echo "$as_me: WARNING: *** kms not ported" >&2;}
+fi
+
+
+if test x$USE_KMS = xyes; then
+
+ gst_check_save_LIBS=$LIBS
+ gst_check_save_LDFLAGS=$LDFLAGS
+ gst_check_save_CFLAGS=$CFLAGS
+ gst_check_save_CPPFLAGS=$CPPFLAGS
+ gst_check_save_CXXFLAGS=$CXXFLAGS
+
+ HAVE_KMS=no
+
+
+ which="gstreamer-video-1.0"
+ required="no"
+
+
+pkg_failed=no
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for GST_VIDEO" >&5
+$as_echo_n "checking for GST_VIDEO... " >&6; }
+
+if test -n "$PKG_CONFIG"; then
+ if test -n "$GST_VIDEO_CFLAGS"; then
+ pkg_cv_GST_VIDEO_CFLAGS="$GST_VIDEO_CFLAGS"
+ else
+ if test -n "$PKG_CONFIG" && \
+ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"\$which\""; } >&5
+ ($PKG_CONFIG --exists --print-errors "$which") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }; then
+ pkg_cv_GST_VIDEO_CFLAGS=`$PKG_CONFIG --cflags "$which" 2>/dev/null`
+else
+ pkg_failed=yes
+fi
+ fi
+else
+ pkg_failed=untried
+fi
+if test -n "$PKG_CONFIG"; then
+ if test -n "$GST_VIDEO_LIBS"; then
+ pkg_cv_GST_VIDEO_LIBS="$GST_VIDEO_LIBS"
+ else
+ if test -n "$PKG_CONFIG" && \
+ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"\$which\""; } >&5
+ ($PKG_CONFIG --exists --print-errors "$which") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }; then
+ pkg_cv_GST_VIDEO_LIBS=`$PKG_CONFIG --libs "$which" 2>/dev/null`
+else
+ pkg_failed=yes
+fi
+ fi
+else
+ pkg_failed=untried
+fi
+
+
+
+if test $pkg_failed = yes; then
+
+if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
+ _pkg_short_errors_supported=yes
+else
+ _pkg_short_errors_supported=no
+fi
+ if test $_pkg_short_errors_supported = yes; then
+ GST_VIDEO_PKG_ERRORS=`$PKG_CONFIG --short-errors --errors-to-stdout --print-errors "$which"`
+ else
+ GST_VIDEO_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "$which"`
+ fi
+ # Put the nasty error message in config.log where it belongs
+ echo "$GST_VIDEO_PKG_ERRORS" >&5
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+
+ HAVE_GST_VIDEO="no"
+ if test "x$required" = "xyes"; then
+ as_fn_error $? "$GST_VIDEO_PKG_ERRORS" "$LINENO" 5
+ else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: $GST_VIDEO_PKG_ERRORS" >&5
+$as_echo "$as_me: $GST_VIDEO_PKG_ERRORS" >&6;}
+ fi
+
+elif test $pkg_failed = untried; then
+
+ HAVE_GST_VIDEO="no"
+ if test "x$required" = "xyes"; then
+ as_fn_error $? "$GST_VIDEO_PKG_ERRORS" "$LINENO" 5
+ else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: $GST_VIDEO_PKG_ERRORS" >&5
+$as_echo "$as_me: $GST_VIDEO_PKG_ERRORS" >&6;}
+ fi
+
+else
+ GST_VIDEO_CFLAGS=$pkg_cv_GST_VIDEO_CFLAGS
+ GST_VIDEO_LIBS=$pkg_cv_GST_VIDEO_LIBS
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+
+ HAVE_GST_VIDEO="yes"
+
+fi
+
+
+
+ which="gstreamer-allocators-1.0"
+ required="no"
+
+
+pkg_failed=no
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for GST_ALLOCATORS" >&5
+$as_echo_n "checking for GST_ALLOCATORS... " >&6; }
+
+if test -n "$PKG_CONFIG"; then
+ if test -n "$GST_ALLOCATORS_CFLAGS"; then
+ pkg_cv_GST_ALLOCATORS_CFLAGS="$GST_ALLOCATORS_CFLAGS"
+ else
+ if test -n "$PKG_CONFIG" && \
+ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"\$which\""; } >&5
+ ($PKG_CONFIG --exists --print-errors "$which") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }; then
+ pkg_cv_GST_ALLOCATORS_CFLAGS=`$PKG_CONFIG --cflags "$which" 2>/dev/null`
+else
+ pkg_failed=yes
+fi
+ fi
+else
+ pkg_failed=untried
+fi
+if test -n "$PKG_CONFIG"; then
+ if test -n "$GST_ALLOCATORS_LIBS"; then
+ pkg_cv_GST_ALLOCATORS_LIBS="$GST_ALLOCATORS_LIBS"
+ else
+ if test -n "$PKG_CONFIG" && \
+ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"\$which\""; } >&5
+ ($PKG_CONFIG --exists --print-errors "$which") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }; then
+ pkg_cv_GST_ALLOCATORS_LIBS=`$PKG_CONFIG --libs "$which" 2>/dev/null`
+else
+ pkg_failed=yes
+fi
+ fi
+else
+ pkg_failed=untried
+fi
+
+
+
+if test $pkg_failed = yes; then
+
+if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
+ _pkg_short_errors_supported=yes
+else
+ _pkg_short_errors_supported=no
+fi
+ if test $_pkg_short_errors_supported = yes; then
+ GST_ALLOCATORS_PKG_ERRORS=`$PKG_CONFIG --short-errors --errors-to-stdout --print-errors "$which"`
+ else
+ GST_ALLOCATORS_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "$which"`
+ fi
+ # Put the nasty error message in config.log where it belongs
+ echo "$GST_ALLOCATORS_PKG_ERRORS" >&5
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+
+ HAVE_GST_ALLOCATORS="no"
+ if test "x$required" = "xyes"; then
+ as_fn_error $? "$GST_ALLOCATORS_PKG_ERRORS" "$LINENO" 5
+ else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: $GST_ALLOCATORS_PKG_ERRORS" >&5
+$as_echo "$as_me: $GST_ALLOCATORS_PKG_ERRORS" >&6;}
+ fi
+
+elif test $pkg_failed = untried; then
+
+ HAVE_GST_ALLOCATORS="no"
+ if test "x$required" = "xyes"; then
+ as_fn_error $? "$GST_ALLOCATORS_PKG_ERRORS" "$LINENO" 5
+ else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: $GST_ALLOCATORS_PKG_ERRORS" >&5
+$as_echo "$as_me: $GST_ALLOCATORS_PKG_ERRORS" >&6;}
+ fi
+
+else
+ GST_ALLOCATORS_CFLAGS=$pkg_cv_GST_ALLOCATORS_CFLAGS
+ GST_ALLOCATORS_LIBS=$pkg_cv_GST_ALLOCATORS_LIBS
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+
+ HAVE_GST_ALLOCATORS="yes"
+
+fi
+
+
+
+pkg_failed=no
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for DRM" >&5
+$as_echo_n "checking for DRM... " >&6; }
+
+if test -n "$PKG_CONFIG"; then
+ if test -n "$DRM_CFLAGS"; then
+ pkg_cv_DRM_CFLAGS="$DRM_CFLAGS"
+ else
+ if test -n "$PKG_CONFIG" && \
+ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libdrm libkms\""; } >&5
+ ($PKG_CONFIG --exists --print-errors "libdrm libkms") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }; then
+ pkg_cv_DRM_CFLAGS=`$PKG_CONFIG --cflags "libdrm libkms" 2>/dev/null`
+else
+ pkg_failed=yes
+fi
+ fi
+else
+ pkg_failed=untried
+fi
+if test -n "$PKG_CONFIG"; then
+ if test -n "$DRM_LIBS"; then
+ pkg_cv_DRM_LIBS="$DRM_LIBS"
+ else
+ if test -n "$PKG_CONFIG" && \
+ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libdrm libkms\""; } >&5
+ ($PKG_CONFIG --exists --print-errors "libdrm libkms") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }; then
+ pkg_cv_DRM_LIBS=`$PKG_CONFIG --libs "libdrm libkms" 2>/dev/null`
+else
+ pkg_failed=yes
+fi
+ fi
+else
+ pkg_failed=untried
+fi
+
+
+
+if test $pkg_failed = yes; then
+
+if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
+ _pkg_short_errors_supported=yes
+else
+ _pkg_short_errors_supported=no
+fi
+ if test $_pkg_short_errors_supported = yes; then
+ DRM_PKG_ERRORS=`$PKG_CONFIG --short-errors --errors-to-stdout --print-errors "libdrm libkms"`
+ else
+ DRM_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "libdrm libkms"`
+ fi
+ # Put the nasty error message in config.log where it belongs
+ echo "$DRM_PKG_ERRORS" >&5
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+ HAVE_KMS=no
+elif test $pkg_failed = untried; then
+ HAVE_KMS=no
+else
+ DRM_CFLAGS=$pkg_cv_DRM_CFLAGS
+ DRM_LIBS=$pkg_cv_DRM_LIBS
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+ HAVE_KMS=yes
+fi
+
+
+ LIBS=$gst_check_save_LIBS
+ LDFLAGS=$gst_check_save_LDFLAGS
+ CFLAGS=$gst_check_save_CFLAGS
+ CPPFLAGS=$gst_check_save_CPPFLAGS
+ CXXFLAGS=$gst_check_save_CXXFLAGS
+
+ if test x$HAVE_KMS = xno; then
+ USE_KMS=no
+ else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: *** These plugins will be built: kms" >&5
+$as_echo "$as_me: *** These plugins will be built: kms" >&6;}
+ fi
+fi
+if test x$USE_KMS = xyes; then
+ :
+ if test "xkms" != "x"; then
+ GST_PLUGINS_YES="\tkms\n$GST_PLUGINS_YES"
+ fi
+
+$as_echo "#define HAVE_KMS /**/" >>confdefs.h
+
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: *** These plugins will not be built: kms" >&5
+$as_echo "$as_me: *** These plugins will not be built: kms" >&6;}
+ if test "xkms" != "x"; then
+ GST_PLUGINS_NO="\tkms\n$GST_PLUGINS_NO"
+ fi
+ :
+fi
+ if test x$USE_KMS = xyes; then
+ USE_KMS_TRUE=
+ USE_KMS_FALSE='#'
+else
+ USE_KMS_TRUE='#'
+ USE_KMS_FALSE=
+fi
+
+
+
+echo
{ $as_echo "$as_me:${as_lineno-$LINENO}: *** checking feature: ladspa ***" >&5
$as_echo "$as_me: *** checking feature: ladspa ***" >&6;}
if test "xladspa" != "x"
@@ -43461,20 +44137,20 @@
pkg_failed=no
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for SLV2" >&5
-$as_echo_n "checking for SLV2... " >&6; }
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for LILV" >&5
+$as_echo_n "checking for LILV... " >&6; }
if test -n "$PKG_CONFIG"; then
- if test -n "$SLV2_CFLAGS"; then
- pkg_cv_SLV2_CFLAGS="$SLV2_CFLAGS"
+ if test -n "$LILV_CFLAGS"; then
+ pkg_cv_LILV_CFLAGS="$LILV_CFLAGS"
else
if test -n "$PKG_CONFIG" && \
- { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"slv2 >= 0.6.6\""; } >&5
- ($PKG_CONFIG --exists --print-errors "slv2 >= 0.6.6") 2>&5
+ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"lilv-0 >= 0.6.6\""; } >&5
+ ($PKG_CONFIG --exists --print-errors "lilv-0 >= 0.6.6") 2>&5
ac_status=$?
$as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; }; then
- pkg_cv_SLV2_CFLAGS=`$PKG_CONFIG --cflags "slv2 >= 0.6.6" 2>/dev/null`
+ pkg_cv_LILV_CFLAGS=`$PKG_CONFIG --cflags "lilv-0 >= 0.6.6" 2>/dev/null`
else
pkg_failed=yes
fi
@@ -43483,16 +44159,16 @@
pkg_failed=untried
fi
if test -n "$PKG_CONFIG"; then
- if test -n "$SLV2_LIBS"; then
- pkg_cv_SLV2_LIBS="$SLV2_LIBS"
+ if test -n "$LILV_LIBS"; then
+ pkg_cv_LILV_LIBS="$LILV_LIBS"
else
if test -n "$PKG_CONFIG" && \
- { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"slv2 >= 0.6.6\""; } >&5
- ($PKG_CONFIG --exists --print-errors "slv2 >= 0.6.6") 2>&5
+ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"lilv-0 >= 0.6.6\""; } >&5
+ ($PKG_CONFIG --exists --print-errors "lilv-0 >= 0.6.6") 2>&5
ac_status=$?
$as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; }; then
- pkg_cv_SLV2_LIBS=`$PKG_CONFIG --libs "slv2 >= 0.6.6" 2>/dev/null`
+ pkg_cv_LILV_LIBS=`$PKG_CONFIG --libs "lilv-0 >= 0.6.6" 2>/dev/null`
else
pkg_failed=yes
fi
@@ -43511,12 +44187,12 @@
_pkg_short_errors_supported=no
fi
if test $_pkg_short_errors_supported = yes; then
- SLV2_PKG_ERRORS=`$PKG_CONFIG --short-errors --errors-to-stdout --print-errors "slv2 >= 0.6.6"`
+ LILV_PKG_ERRORS=`$PKG_CONFIG --short-errors --errors-to-stdout --print-errors "lilv-0 >= 0.6.6"`
else
- SLV2_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "slv2 >= 0.6.6"`
+ LILV_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "lilv-0 >= 0.6.6"`
fi
# Put the nasty error message in config.log where it belongs
- echo "$SLV2_PKG_ERRORS" >&5
+ echo "$LILV_PKG_ERRORS" >&5
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
$as_echo "no" >&6; }
@@ -43524,8 +44200,8 @@
elif test $pkg_failed = untried; then
HAVE_LV2="no"
else
- SLV2_CFLAGS=$pkg_cv_SLV2_CFLAGS
- SLV2_LIBS=$pkg_cv_SLV2_LIBS
+ LILV_CFLAGS=$pkg_cv_LILV_CFLAGS
+ LILV_LIBS=$pkg_cv_LILV_LIBS
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
$as_echo "yes" >&6; }
HAVE_LV2="yes"
@@ -46250,12 +46926,12 @@
pkg_cv_OPENCV_CFLAGS="$OPENCV_CFLAGS"
else
if test -n "$PKG_CONFIG" && \
- { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"opencv >= 2.3.0 opencv < 2.5.0 \""; } >&5
- ($PKG_CONFIG --exists --print-errors "opencv >= 2.3.0 opencv < 2.5.0 ") 2>&5
+ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"opencv >= 2.3.0 opencv <= 3.1.0 \""; } >&5
+ ($PKG_CONFIG --exists --print-errors "opencv >= 2.3.0 opencv <= 3.1.0 ") 2>&5
ac_status=$?
$as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; }; then
- pkg_cv_OPENCV_CFLAGS=`$PKG_CONFIG --cflags "opencv >= 2.3.0 opencv < 2.5.0 " 2>/dev/null`
+ pkg_cv_OPENCV_CFLAGS=`$PKG_CONFIG --cflags "opencv >= 2.3.0 opencv <= 3.1.0 " 2>/dev/null`
else
pkg_failed=yes
fi
@@ -46268,12 +46944,12 @@
pkg_cv_OPENCV_LIBS="$OPENCV_LIBS"
else
if test -n "$PKG_CONFIG" && \
- { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"opencv >= 2.3.0 opencv < 2.5.0 \""; } >&5
- ($PKG_CONFIG --exists --print-errors "opencv >= 2.3.0 opencv < 2.5.0 ") 2>&5
+ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"opencv >= 2.3.0 opencv <= 3.1.0 \""; } >&5
+ ($PKG_CONFIG --exists --print-errors "opencv >= 2.3.0 opencv <= 3.1.0 ") 2>&5
ac_status=$?
$as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
test $ac_status = 0; }; then
- pkg_cv_OPENCV_LIBS=`$PKG_CONFIG --libs "opencv >= 2.3.0 opencv < 2.5.0 " 2>/dev/null`
+ pkg_cv_OPENCV_LIBS=`$PKG_CONFIG --libs "opencv >= 2.3.0 opencv <= 3.1.0 " 2>/dev/null`
else
pkg_failed=yes
fi
@@ -46292,9 +46968,9 @@
_pkg_short_errors_supported=no
fi
if test $_pkg_short_errors_supported = yes; then
- OPENCV_PKG_ERRORS=`$PKG_CONFIG --short-errors --errors-to-stdout --print-errors "opencv >= 2.3.0 opencv < 2.5.0 "`
+ OPENCV_PKG_ERRORS=`$PKG_CONFIG --short-errors --errors-to-stdout --print-errors "opencv >= 2.3.0 opencv <= 3.1.0 "`
else
- OPENCV_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "opencv >= 2.3.0 opencv < 2.5.0 "`
+ OPENCV_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "opencv >= 2.3.0 opencv <= 3.1.0 "`
fi
# Put the nasty error message in config.log where it belongs
echo "$OPENCV_PKG_ERRORS" >&5
@@ -46708,15 +47384,11 @@
OLD_CPPFLAGS=$CPPFLAGS
CPPFLAGS=$OPENCV_CFLAGS
something_not_found=no
- for ac_header in opencv2/contrib/contrib.hpp \
- opencv2/core/core_c.h \
- opencv2/core/types_c.h \
+ for ac_header in opencv2/core/core_c.h \
opencv2/core/version.hpp \
opencv2/highgui/highgui_c.h \
opencv2/imgproc/imgproc.hpp \
opencv2/imgproc/imgproc_c.h \
- opencv2/legacy/compat.hpp \
- opencv2/legacy/legacy.hpp \
opencv2/objdetect/objdetect.hpp \
opencv2/video/background_segm.hpp
do :
@@ -49137,6 +49809,17 @@
else
HAVE_QT="yes"
HAVE_QT_WINDOWING="no"
+ QT_VERSION="`$PKG_CONFIG --modversion Qt5Core`"
+ QPA_INCLUDE_PATH=`$PKG_CONFIG --variable=includedir Qt5Core`/QtGui/${QT_VERSION}/QtGui
+ if test -f "$QPA_INCLUDE_PATH/qpa/qplatformnativeinterface.h"; then :
+
+ QT_CFLAGS="$QT_CFLAGS -I$QPA_INCLUDE_PATH"
+ HAVE_QT_QPA_HEADER="yes"
+
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Cannot find QPA" >&5
+$as_echo "$as_me: Cannot find QPA" >&6;}
+fi
if test "x$GST_GL_HAVE_WINDOW_X11" = "x1" -a "x$GST_GL_HAVE_PLATFORM_GLX" = "x1"; then
pkg_failed=no
@@ -49219,7 +49902,7 @@
fi
fi
- if test "x$GST_GL_HAVE_WINDOW_WAYLAND" = "x1" -a "x$GST_GL_HAVE_PLATFORM_EGL" = "x1"; then
+ if test "x$GST_GL_HAVE_WINDOW_WAYLAND" = "x1" -a "x$GST_GL_HAVE_PLATFORM_EGL" = "x1" -a "x$HAVE_QT_QPA_HEADER" = "xyes"; then
pkg_failed=no
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for QT_WAYLAND" >&5
@@ -49301,7 +49984,8 @@
fi
fi
- if test "x$GST_GL_HAVE_WINDOW_ANDROID" = "x1" -a "x$GST_GL_HAVE_PLATFORM_EGL" = "x1"; then
+ if test "x$GST_GL_HAVE_PLATFORM_EGL" = "x1"; then
+ if test "x$GST_GL_HAVE_WINDOW_ANDROID" = "x1"; then
pkg_failed=no
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for QT_ANDROID" >&5
@@ -49374,10 +50058,10 @@
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
$as_echo "yes" >&6; }
- # c++ on android requires a standard library and there are multiple
- # choices. cerbero provides a pkg-config file the describes a choice
- # so try to use that. Outside cerbero one has to pass these flags
- # manually for the library one is using
+ # c++ on android requires a standard library and there are multiple
+ # choices. cerbero provides a pkg-config file the describes a choice
+ # so try to use that. Outside cerbero one has to pass these flags
+ # manually for the library one is using
pkg_failed=no
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNUSTL" >&5
@@ -49440,11 +50124,11 @@
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
$as_echo "no" >&6; }
- { $as_echo "$as_me:${as_lineno-$LINENO}: Could not find Standard C++ library" >&5
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Could not find Standard C++ library" >&5
$as_echo "$as_me: Could not find Standard C++ library" >&6;}
elif test $pkg_failed = untried; then
- { $as_echo "$as_me:${as_lineno-$LINENO}: Could not find Standard C++ library" >&5
+ { $as_echo "$as_me:${as_lineno-$LINENO}: Could not find Standard C++ library" >&5
$as_echo "$as_me: Could not find Standard C++ library" >&6;}
else
GNUSTL_CFLAGS=$pkg_cv_GNUSTL_CFLAGS
@@ -49452,19 +50136,24 @@
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
$as_echo "yes" >&6; }
- QT_CFLAGS="$QT_CFLAGS $GNUSTL_CFLAGS"
- QT_LIBS="$QT_LIBS $GNUSTL_LIBS"
+ QT_CFLAGS="$QT_CFLAGS $GNUSTL_CFLAGS"
+ QT_LIBS="$QT_LIBS $GNUSTL_LIBS"
fi
+$as_echo "#define HAVE_QT_EGLFS /**/" >>confdefs.h
-$as_echo "#define HAVE_QT_ANDROID /**/" >>confdefs.h
-
- QT_CFLAGS="$QT_CFLAGS $QT_ANDROID_CFLAGS"
- QT_LIBS="$QT_LIBS $QT_ANDROID_LIBS"
- HAVE_QT_WINDOWING="yes"
+ QT_CFLAGS="$QT_CFLAGS $QT_ANDROID_CFLAGS"
+ QT_LIBS="$QT_LIBS $QT_ANDROID_LIBS"
+ HAVE_QT_WINDOWING="yes"
fi
+ else
+
+$as_echo "#define HAVE_QT_EGLFS /**/" >>confdefs.h
+
+ HAVE_QT_WINDOWING="yes"
+ fi
fi
if test "x$GST_GL_HAVE_WINDOW_COCOA" = "x1" -a "x$GST_GL_HAVE_PLATFORM_CGL" = "x1"; then
@@ -57171,6 +57860,212 @@
+echo
+{ $as_echo "$as_me:${as_lineno-$LINENO}: *** checking feature: WebRTC Audio Processing ***" >&5
+$as_echo "$as_me: *** checking feature: WebRTC Audio Processing ***" >&6;}
+if test "xwebrtcdsp" != "x"
+then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: *** for plug-ins: webrtcdsp ***" >&5
+$as_echo "$as_me: *** for plug-ins: webrtcdsp ***" >&6;}
+fi
+NOUSE=
+if test "x$USE_WEBRTCDSP" = "xno"; then
+ NOUSE="yes"
+fi
+# Check whether --enable-webrtcdsp was given.
+if test "${enable_webrtcdsp+set}" = set; then :
+ enableval=$enable_webrtcdsp; case "${enableval}" in
+ yes) USE_WEBRTCDSP=yes;;
+ no) USE_WEBRTCDSP=no;;
+ *) as_fn_error $? "bad value ${enableval} for --enable-webrtcdsp" "$LINENO" 5 ;;
+ esac
+else
+ USE_WEBRTCDSP=yes
+fi
+
+if test "x$NOUSE" = "xyes"; then
+ USE_WEBRTCDSP="no"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: *** webrtcdsp pre-configured not to be built" >&5
+$as_echo "$as_me: WARNING: *** webrtcdsp pre-configured not to be built" >&2;}
+fi
+NOUSE=
+
+if echo " $GST_PLUGINS_NONPORTED " | tr , ' ' | grep -i " WEBRTCDSP " > /dev/null; then
+ USE_WEBRTCDSP="no"
+ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: *** webrtcdsp not ported" >&5
+$as_echo "$as_me: WARNING: *** webrtcdsp not ported" >&2;}
+fi
+
+
+if test x$USE_WEBRTCDSP = xyes; then
+
+ gst_check_save_LIBS=$LIBS
+ gst_check_save_LDFLAGS=$LDFLAGS
+ gst_check_save_CFLAGS=$CFLAGS
+ gst_check_save_CPPFLAGS=$CPPFLAGS
+ gst_check_save_CXXFLAGS=$CXXFLAGS
+
+ HAVE_WEBRTCDSP=no
+
+ ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+ old_CPPFLAGS=$CPPFLAGS
+ CPPFLAGS="-std=c++11 $CPPFLAGS"
+
+ which="webrtc-audio-processing = 0.2"
+ required="no"
+
+
+pkg_failed=no
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for WEBRTCDSP" >&5
+$as_echo_n "checking for WEBRTCDSP... " >&6; }
+
+if test -n "$PKG_CONFIG"; then
+ if test -n "$WEBRTCDSP_CFLAGS"; then
+ pkg_cv_WEBRTCDSP_CFLAGS="$WEBRTCDSP_CFLAGS"
+ else
+ if test -n "$PKG_CONFIG" && \
+ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"\$which\""; } >&5
+ ($PKG_CONFIG --exists --print-errors "$which") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }; then
+ pkg_cv_WEBRTCDSP_CFLAGS=`$PKG_CONFIG --cflags "$which" 2>/dev/null`
+else
+ pkg_failed=yes
+fi
+ fi
+else
+ pkg_failed=untried
+fi
+if test -n "$PKG_CONFIG"; then
+ if test -n "$WEBRTCDSP_LIBS"; then
+ pkg_cv_WEBRTCDSP_LIBS="$WEBRTCDSP_LIBS"
+ else
+ if test -n "$PKG_CONFIG" && \
+ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"\$which\""; } >&5
+ ($PKG_CONFIG --exists --print-errors "$which") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }; then
+ pkg_cv_WEBRTCDSP_LIBS=`$PKG_CONFIG --libs "$which" 2>/dev/null`
+else
+ pkg_failed=yes
+fi
+ fi
+else
+ pkg_failed=untried
+fi
+
+
+
+if test $pkg_failed = yes; then
+
+if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then
+ _pkg_short_errors_supported=yes
+else
+ _pkg_short_errors_supported=no
+fi
+ if test $_pkg_short_errors_supported = yes; then
+ WEBRTCDSP_PKG_ERRORS=`$PKG_CONFIG --short-errors --errors-to-stdout --print-errors "$which"`
+ else
+ WEBRTCDSP_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "$which"`
+ fi
+ # Put the nasty error message in config.log where it belongs
+ echo "$WEBRTCDSP_PKG_ERRORS" >&5
+
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+
+ HAVE_WEBRTCDSP="no"
+ if test "x$required" = "xyes"; then
+ as_fn_error $? "$WEBRTCDSP_PKG_ERRORS" "$LINENO" 5
+ else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: $WEBRTCDSP_PKG_ERRORS" >&5
+$as_echo "$as_me: $WEBRTCDSP_PKG_ERRORS" >&6;}
+ fi
+
+elif test $pkg_failed = untried; then
+
+ HAVE_WEBRTCDSP="no"
+ if test "x$required" = "xyes"; then
+ as_fn_error $? "$WEBRTCDSP_PKG_ERRORS" "$LINENO" 5
+ else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: $WEBRTCDSP_PKG_ERRORS" >&5
+$as_echo "$as_me: $WEBRTCDSP_PKG_ERRORS" >&6;}
+ fi
+
+else
+ WEBRTCDSP_CFLAGS=$pkg_cv_WEBRTCDSP_CFLAGS
+ WEBRTCDSP_LIBS=$pkg_cv_WEBRTCDSP_LIBS
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+$as_echo "yes" >&6; }
+
+ HAVE_WEBRTCDSP="yes"
+
+fi
+
+
+ ac_fn_cxx_check_header_mongrel "$LINENO" "typeindex" "ac_cv_header_typeindex" "$ac_includes_default"
+if test "x$ac_cv_header_typeindex" = xyes; then :
+
+else
+ HAVE_WEBRTCDSP=no
+fi
+
+
+ CPPFLAGS=$old_CPPFLAGS
+ ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+
+ LIBS=$gst_check_save_LIBS
+ LDFLAGS=$gst_check_save_LDFLAGS
+ CFLAGS=$gst_check_save_CFLAGS
+ CPPFLAGS=$gst_check_save_CPPFLAGS
+ CXXFLAGS=$gst_check_save_CXXFLAGS
+
+ if test x$HAVE_WEBRTCDSP = xno; then
+ USE_WEBRTCDSP=no
+ else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: *** These plugins will be built: webrtcdsp" >&5
+$as_echo "$as_me: *** These plugins will be built: webrtcdsp" >&6;}
+ fi
+fi
+if test x$USE_WEBRTCDSP = xyes; then
+ :
+ if test "xwebrtcdsp" != "x"; then
+ GST_PLUGINS_YES="\twebrtcdsp\n$GST_PLUGINS_YES"
+ fi
+
+$as_echo "#define HAVE_WEBRTCDSP /**/" >>confdefs.h
+
+else
+ { $as_echo "$as_me:${as_lineno-$LINENO}: *** These plugins will not be built: webrtcdsp" >&5
+$as_echo "$as_me: *** These plugins will not be built: webrtcdsp" >&6;}
+ if test "xwebrtcdsp" != "x"; then
+ GST_PLUGINS_NO="\twebrtcdsp\n$GST_PLUGINS_NO"
+ fi
+ :
+fi
+ if test x$USE_WEBRTCDSP = xyes; then
+ USE_WEBRTCDSP_TRUE=
+ USE_WEBRTCDSP_FALSE='#'
+else
+ USE_WEBRTCDSP_TRUE='#'
+ USE_WEBRTCDSP_FALSE=
+fi
+
+
+
else
@@ -57415,6 +58310,14 @@
fi
if false; then
+ USE_KMS_TRUE=
+ USE_KMS_FALSE='#'
+else
+ USE_KMS_TRUE='#'
+ USE_KMS_FALSE=
+fi
+
+ if false; then
USE_TIGER_TRUE=
USE_TIGER_FALSE='#'
else
@@ -57837,7 +58740,7 @@
-GST_CFLAGS="$GST_CFLAGS -DGST_USE_UNSTABLE_API"
+GST_CFLAGS="$GST_CFLAGS $GST_STATIC_CFLAGS -DGST_USE_UNSTABLE_API"
GST_CXXFLAGS="$GST_CFLAGS $GLIB_EXTRA_CFLAGS \$(GST_OPTION_CXXFLAGS)"
GST_OBJCFLAGS="$GST_CFLAGS $GLIB_EXTRA_CFLAGS \$(GST_OPTION_OBJCFLAGS)"
GST_CFLAGS="$GST_CFLAGS $GLIB_EXTRA_CFLAGS \$(GST_OPTION_CFLAGS)"
@@ -57868,7 +58771,7 @@
$MKDIR_P tests/check/orc
-ac_config_files="$ac_config_files Makefile common/Makefile common/m4/Makefile gst-plugins-bad.spec gst/Makefile gst/accurip/Makefile gst/adpcmdec/Makefile gst/adpcmenc/Makefile gst/aiff/Makefile gst/videoframe_audiolevel/Makefile gst/asfmux/Makefile gst/audiofxbad/Makefile gst/audiomixer/Makefile gst/audiovisualizers/Makefile gst/autoconvert/Makefile gst/bayer/Makefile gst/camerabin2/Makefile gst/cdxaparse/Makefile gst/coloreffects/Makefile gst/dataurisrc/Makefile gst/dccp/Makefile gst/debugutils/Makefile gst/dvbsuboverlay/Makefile gst/dvdspu/Makefile gst/faceoverlay/Makefile gst/festival/Makefile gst/fieldanalysis/Makefile gst/freeverb/Makefile gst/frei0r/Makefile gst/gaudieffects/Makefile gst/geometrictransform/Makefile gst/gdp/Makefile gst/hdvparse/Makefile gst/id3tag/Makefile gst/inter/Makefile gst/interlace/Makefile gst/ivfparse/Makefile gst/ivtc/Makefile gst/jp2kdecimator/Makefile gst/jpegformat/Makefile gst/librfb/Makefile gst/midi/Makefile gst/mpegdemux/Makefile gst/mpegtsdemux/Makefile gst/mpegtsmux/Makefile gst/mpegtsmux/tsmux/Makefile gst/mpegpsmux/Makefile gst/mve/Makefile gst/mxf/Makefile gst/netsim/Makefile gst/nuvdemux/Makefile gst/onvif/Makefile gst/patchdetect/Makefile gst/pcapparse/Makefile gst/pnm/Makefile gst/rawparse/Makefile gst/removesilence/Makefile gst/sdi/Makefile gst/sdp/Makefile gst/segmentclip/Makefile gst/siren/Makefile gst/smooth/Makefile gst/speed/Makefile gst/subenc/Makefile gst/stereo/Makefile gst/tta/Makefile gst/videofilters/Makefile gst/videomeasure/Makefile gst/videoparsers/Makefile gst/videosignal/Makefile gst/vmnc/Makefile gst/y4m/Makefile gst/yadif/Makefile gst/compositor/Makefile gst-libs/Makefile gst-libs/gst/Makefile gst-libs/gst/adaptivedemux/Makefile gst-libs/gst/basecamerabinsrc/Makefile gst-libs/gst/gl/Makefile gst-libs/gst/gl/android/Makefile gst-libs/gst/gl/cocoa/Makefile gst-libs/gst/gl/dispmanx/Makefile gst-libs/gst/gl/glprototypes/Makefile gst-libs/gst/gl/eagl/Makefile gst-libs/gst/gl/egl/Makefile gst-libs/gst/gl/wayland/Makefile gst-libs/gst/gl/win32/Makefile gst-libs/gst/gl/x11/Makefile gst-libs/gst/insertbin/Makefile gst-libs/gst/interfaces/Makefile gst-libs/gst/codecparsers/Makefile gst-libs/gst/mpegts/Makefile gst-libs/gst/uridownloader/Makefile gst-libs/gst/wayland/Makefile gst-libs/gst/base/Makefile gst-libs/gst/player/Makefile gst-libs/gst/video/Makefile gst-libs/gst/audio/Makefile sys/Makefile sys/dshowdecwrapper/Makefile sys/acmenc/Makefile sys/acmmp3dec/Makefile sys/androidmedia/Makefile sys/applemedia/Makefile sys/applemedia-nonpublic/Makefile sys/avc/Makefile sys/bluez/Makefile sys/d3dvideosink/Makefile sys/decklink/Makefile sys/directsound/Makefile sys/dshowsrcwrapper/Makefile sys/dshowvideosink/Makefile sys/dvb/Makefile sys/fbdev/Makefile sys/linsys/Makefile sys/nvenc/Makefile sys/opensles/Makefile sys/shm/Makefile sys/tinyalsa/Makefile sys/uvch264/Makefile sys/vcd/Makefile sys/vdpau/Makefile sys/pvr2d/Makefile sys/wasapi/Makefile sys/wininet/Makefile sys/winks/Makefile sys/winscreencap/Makefile tests/Makefile tests/check/Makefile tests/files/Makefile tests/examples/Makefile tests/examples/avsamplesink/Makefile tests/examples/camerabin2/Makefile tests/examples/codecparsers/Makefile tests/examples/directfb/Makefile tests/examples/gl/Makefile tests/examples/gl/cocoa/Makefile tests/examples/gl/clutter/Makefile tests/examples/gl/generic/Makefile tests/examples/gl/generic/cube/Makefile tests/examples/gl/generic/cubeyuv/Makefile tests/examples/gl/generic/doublecube/Makefile tests/examples/gl/generic/recordgraphic/Makefile tests/examples/gl/gtk/Makefile tests/examples/gl/gtk/gtkvideooverlay/Makefile tests/examples/gl/gtk/3dvideo/Makefile tests/examples/gl/gtk/filternovideooverlay/Makefile tests/examples/gl/gtk/filtervideooverlay/Makefile tests/examples/gl/gtk/fxtest/Makefile tests/examples/gl/gtk/switchvideooverlay/Makefile tests/examples/gl/qt/Makefile tests/examples/gl/sdl/Makefile tests/examples/gtk/Makefile tests/examples/mpegts/Makefile tests/examples/mxf/Makefile tests/examples/opencv/Makefile tests/examples/uvch264/Makefile tests/examples/waylandsink/Makefile tests/icles/Makefile ext/voamrwbenc/Makefile ext/voaacenc/Makefile ext/assrender/Makefile ext/apexsink/Makefile ext/bs2b/Makefile ext/bz2/Makefile ext/chromaprint/Makefile ext/curl/Makefile ext/dash/Makefile ext/dc1394/Makefile ext/directfb/Makefile ext/wayland/Makefile ext/daala/Makefile ext/dts/Makefile ext/gl/Makefile ext/gtk/Makefile ext/faac/Makefile ext/faad/Makefile ext/flite/Makefile ext/fluidsynth/Makefile ext/gsm/Makefile ext/hls/Makefile ext/kate/Makefile ext/ladspa/Makefile ext/lv2/Makefile ext/libde265/Makefile ext/libmms/Makefile ext/libvisual/Makefile ext/Makefile ext/modplug/Makefile ext/mpeg2enc/Makefile ext/mimic/Makefile ext/mplex/Makefile ext/musepack/Makefile ext/nas/Makefile ext/neon/Makefile ext/ofa/Makefile ext/openal/Makefile ext/opencv/Makefile ext/openexr/Makefile ext/openh264/Makefile ext/openjpeg/Makefile ext/openni2/Makefile ext/opus/Makefile ext/qt/Makefile ext/rsvg/Makefile ext/resindvd/Makefile ext/rtmp/Makefile ext/sbc/Makefile ext/schroedinger/Makefile ext/sdl/Makefile ext/smoothstreaming/Makefile ext/sndfile/Makefile ext/soundtouch/Makefile ext/spandsp/Makefile ext/sndio/Makefile ext/srtp/Makefile ext/teletextdec/Makefile ext/gme/Makefile ext/spc/Makefile ext/timidity/Makefile ext/vulkan/Makefile ext/vulkan/xcb/Makefile ext/webp/Makefile ext/x265/Makefile ext/xvid/Makefile ext/zbar/Makefile ext/dtls/Makefile po/Makefile.in docs/Makefile docs/plugins/Makefile docs/libs/Makefile docs/version.entities pkgconfig/Makefile pkgconfig/gstreamer-plugins-bad.pc pkgconfig/gstreamer-plugins-bad-uninstalled.pc pkgconfig/gstreamer-codecparsers.pc pkgconfig/gstreamer-codecparsers-uninstalled.pc pkgconfig/gstreamer-insertbin.pc pkgconfig/gstreamer-insertbin-uninstalled.pc pkgconfig/gstreamer-gl.pc pkgconfig/gstreamer-gl-uninstalled.pc pkgconfig/gstreamer-mpegts.pc pkgconfig/gstreamer-mpegts-uninstalled.pc pkgconfig/gstreamer-player.pc pkgconfig/gstreamer-player-uninstalled.pc pkgconfig/gstreamer-wayland.pc pkgconfig/gstreamer-wayland-uninstalled.pc pkgconfig/gstreamer-bad-base.pc pkgconfig/gstreamer-bad-base-uninstalled.pc pkgconfig/gstreamer-bad-video.pc pkgconfig/gstreamer-bad-video-uninstalled.pc pkgconfig/gstreamer-bad-audio.pc pkgconfig/gstreamer-bad-audio-uninstalled.pc tools/Makefile m4/Makefile"
+ac_config_files="$ac_config_files Makefile common/Makefile common/m4/Makefile gst-plugins-bad.spec gst/Makefile gst/accurip/Makefile gst/adpcmdec/Makefile gst/adpcmenc/Makefile gst/aiff/Makefile gst/videoframe_audiolevel/Makefile gst/asfmux/Makefile gst/audiofxbad/Makefile gst/audiomixer/Makefile gst/audiovisualizers/Makefile gst/autoconvert/Makefile gst/bayer/Makefile gst/camerabin2/Makefile gst/cdxaparse/Makefile gst/coloreffects/Makefile gst/dataurisrc/Makefile gst/dccp/Makefile gst/debugutils/Makefile gst/dvbsuboverlay/Makefile gst/dvdspu/Makefile gst/faceoverlay/Makefile gst/festival/Makefile gst/fieldanalysis/Makefile gst/freeverb/Makefile gst/frei0r/Makefile gst/gaudieffects/Makefile gst/geometrictransform/Makefile gst/gdp/Makefile gst/hdvparse/Makefile gst/id3tag/Makefile gst/inter/Makefile gst/interlace/Makefile gst/ivfparse/Makefile gst/ivtc/Makefile gst/jp2kdecimator/Makefile gst/jpegformat/Makefile gst/librfb/Makefile gst/midi/Makefile gst/mpegdemux/Makefile gst/mpegtsdemux/Makefile gst/mpegtsmux/Makefile gst/mpegtsmux/tsmux/Makefile gst/mpegpsmux/Makefile gst/mve/Makefile gst/mxf/Makefile gst/netsim/Makefile gst/nuvdemux/Makefile gst/onvif/Makefile gst/patchdetect/Makefile gst/pcapparse/Makefile gst/pnm/Makefile gst/rawparse/Makefile gst/removesilence/Makefile gst/sdi/Makefile gst/sdp/Makefile gst/segmentclip/Makefile gst/siren/Makefile gst/smooth/Makefile gst/speed/Makefile gst/subenc/Makefile gst/stereo/Makefile gst/tta/Makefile gst/videofilters/Makefile gst/videomeasure/Makefile gst/videoparsers/Makefile gst/videosignal/Makefile gst/vmnc/Makefile gst/y4m/Makefile gst/yadif/Makefile gst/compositor/Makefile gst-libs/Makefile gst-libs/gst/Makefile gst-libs/gst/adaptivedemux/Makefile gst-libs/gst/basecamerabinsrc/Makefile gst-libs/gst/gl/Makefile gst-libs/gst/gl/android/Makefile gst-libs/gst/gl/cocoa/Makefile gst-libs/gst/gl/dispmanx/Makefile gst-libs/gst/gl/glprototypes/Makefile gst-libs/gst/gl/eagl/Makefile gst-libs/gst/gl/egl/Makefile gst-libs/gst/gl/wayland/Makefile gst-libs/gst/gl/win32/Makefile gst-libs/gst/gl/x11/Makefile gst-libs/gst/insertbin/Makefile gst-libs/gst/interfaces/Makefile gst-libs/gst/codecparsers/Makefile gst-libs/gst/mpegts/Makefile gst-libs/gst/uridownloader/Makefile gst-libs/gst/wayland/Makefile gst-libs/gst/base/Makefile gst-libs/gst/player/Makefile gst-libs/gst/video/Makefile gst-libs/gst/audio/Makefile sys/Makefile sys/dshowdecwrapper/Makefile sys/acmenc/Makefile sys/acmmp3dec/Makefile sys/androidmedia/Makefile sys/applemedia/Makefile sys/applemedia-nonpublic/Makefile sys/avc/Makefile sys/bluez/Makefile sys/d3dvideosink/Makefile sys/decklink/Makefile sys/directsound/Makefile sys/dshowsrcwrapper/Makefile sys/dshowvideosink/Makefile sys/dvb/Makefile sys/fbdev/Makefile sys/kms/Makefile sys/linsys/Makefile sys/nvenc/Makefile sys/opensles/Makefile sys/shm/Makefile sys/tinyalsa/Makefile sys/uvch264/Makefile sys/vcd/Makefile sys/vdpau/Makefile sys/pvr2d/Makefile sys/wasapi/Makefile sys/wininet/Makefile sys/winks/Makefile sys/winscreencap/Makefile tests/Makefile tests/check/Makefile tests/files/Makefile tests/examples/Makefile tests/examples/avsamplesink/Makefile tests/examples/camerabin2/Makefile tests/examples/codecparsers/Makefile tests/examples/directfb/Makefile tests/examples/gl/Makefile tests/examples/gl/cocoa/Makefile tests/examples/gl/clutter/Makefile tests/examples/gl/generic/Makefile tests/examples/gl/generic/cube/Makefile tests/examples/gl/generic/cubeyuv/Makefile tests/examples/gl/generic/doublecube/Makefile tests/examples/gl/generic/recordgraphic/Makefile tests/examples/gl/gtk/Makefile tests/examples/gl/gtk/3dvideo/Makefile tests/examples/gl/gtk/filternovideooverlay/Makefile tests/examples/gl/gtk/filtervideooverlay/Makefile tests/examples/gl/gtk/fxtest/Makefile tests/examples/gl/gtk/switchvideooverlay/Makefile tests/examples/gl/qt/Makefile tests/examples/gl/sdl/Makefile tests/examples/gtk/Makefile tests/examples/mpegts/Makefile tests/examples/mxf/Makefile tests/examples/opencv/Makefile tests/examples/uvch264/Makefile tests/examples/waylandsink/Makefile tests/icles/Makefile ext/voamrwbenc/Makefile ext/voaacenc/Makefile ext/assrender/Makefile ext/apexsink/Makefile ext/bs2b/Makefile ext/bz2/Makefile ext/chromaprint/Makefile ext/curl/Makefile ext/dash/Makefile ext/dc1394/Makefile ext/directfb/Makefile ext/wayland/Makefile ext/daala/Makefile ext/dts/Makefile ext/gl/Makefile ext/gtk/Makefile ext/faac/Makefile ext/faad/Makefile ext/flite/Makefile ext/fluidsynth/Makefile ext/gsm/Makefile ext/hls/Makefile ext/kate/Makefile ext/ladspa/Makefile ext/lv2/Makefile ext/libde265/Makefile ext/libmms/Makefile ext/libvisual/Makefile ext/Makefile ext/modplug/Makefile ext/mpeg2enc/Makefile ext/mimic/Makefile ext/mplex/Makefile ext/musepack/Makefile ext/nas/Makefile ext/neon/Makefile ext/ofa/Makefile ext/openal/Makefile ext/opencv/Makefile ext/openexr/Makefile ext/openh264/Makefile ext/openjpeg/Makefile ext/openni2/Makefile ext/opus/Makefile ext/qt/Makefile ext/rsvg/Makefile ext/resindvd/Makefile ext/rtmp/Makefile ext/sbc/Makefile ext/schroedinger/Makefile ext/sdl/Makefile ext/smoothstreaming/Makefile ext/sndfile/Makefile ext/soundtouch/Makefile ext/spandsp/Makefile ext/sndio/Makefile ext/srtp/Makefile ext/teletextdec/Makefile ext/gme/Makefile ext/spc/Makefile ext/timidity/Makefile ext/vulkan/Makefile ext/vulkan/xcb/Makefile ext/vulkan/wayland/Makefile ext/webp/Makefile ext/x265/Makefile ext/xvid/Makefile ext/zbar/Makefile ext/dtls/Makefile ext/webrtcdsp/Makefile po/Makefile.in docs/Makefile docs/plugins/Makefile docs/libs/Makefile docs/version.entities pkgconfig/Makefile pkgconfig/gstreamer-plugins-bad.pc pkgconfig/gstreamer-plugins-bad-uninstalled.pc pkgconfig/gstreamer-codecparsers.pc pkgconfig/gstreamer-codecparsers-uninstalled.pc pkgconfig/gstreamer-insertbin.pc pkgconfig/gstreamer-insertbin-uninstalled.pc pkgconfig/gstreamer-gl.pc pkgconfig/gstreamer-gl-uninstalled.pc pkgconfig/gstreamer-mpegts.pc pkgconfig/gstreamer-mpegts-uninstalled.pc pkgconfig/gstreamer-player.pc pkgconfig/gstreamer-player-uninstalled.pc pkgconfig/gstreamer-wayland.pc pkgconfig/gstreamer-wayland-uninstalled.pc pkgconfig/gstreamer-bad-base.pc pkgconfig/gstreamer-bad-base-uninstalled.pc pkgconfig/gstreamer-bad-video.pc pkgconfig/gstreamer-bad-video-uninstalled.pc pkgconfig/gstreamer-bad-audio.pc pkgconfig/gstreamer-bad-audio-uninstalled.pc tools/Makefile m4/Makefile"
sed \
@@ -58607,6 +59510,10 @@
as_fn_error $? "conditional \"USE_XCB\" was never defined.
Usually this means the macro was only invoked conditionally." "$LINENO" 5
fi
+if test -z "${USE_WAYLAND_TRUE}" && test -z "${USE_WAYLAND_FALSE}"; then
+ as_fn_error $? "conditional \"USE_WAYLAND\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
if test -z "${USE_DIRECTSOUND_TRUE}" && test -z "${USE_DIRECTSOUND_FALSE}"; then
as_fn_error $? "conditional \"USE_DIRECTSOUND\" was never defined.
Usually this means the macro was only invoked conditionally." "$LINENO" 5
@@ -58787,6 +59694,10 @@
as_fn_error $? "conditional \"USE_KATE\" was never defined.
Usually this means the macro was only invoked conditionally." "$LINENO" 5
fi
+if test -z "${USE_KMS_TRUE}" && test -z "${USE_KMS_FALSE}"; then
+ as_fn_error $? "conditional \"USE_KMS\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
if test -z "${USE_LADSPA_TRUE}" && test -z "${USE_LADSPA_FALSE}"; then
as_fn_error $? "conditional \"USE_LADSPA\" was never defined.
Usually this means the macro was only invoked conditionally." "$LINENO" 5
@@ -58999,6 +59910,10 @@
as_fn_error $? "conditional \"USE_X265\" was never defined.
Usually this means the macro was only invoked conditionally." "$LINENO" 5
fi
+if test -z "${USE_WEBRTCDSP_TRUE}" && test -z "${USE_WEBRTCDSP_FALSE}"; then
+ as_fn_error $? "conditional \"USE_WEBRTCDSP\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
if test -z "${USE_ASSRENDER_TRUE}" && test -z "${USE_ASSRENDER_FALSE}"; then
as_fn_error $? "conditional \"USE_ASSRENDER\" was never defined.
Usually this means the macro was only invoked conditionally." "$LINENO" 5
@@ -59119,6 +60034,10 @@
as_fn_error $? "conditional \"USE_KATE\" was never defined.
Usually this means the macro was only invoked conditionally." "$LINENO" 5
fi
+if test -z "${USE_KMS_TRUE}" && test -z "${USE_KMS_FALSE}"; then
+ as_fn_error $? "conditional \"USE_KMS\" was never defined.
+Usually this means the macro was only invoked conditionally." "$LINENO" 5
+fi
if test -z "${USE_TIGER_TRUE}" && test -z "${USE_TIGER_FALSE}"; then
as_fn_error $? "conditional \"USE_TIGER\" was never defined.
Usually this means the macro was only invoked conditionally." "$LINENO" 5
@@ -59716,7 +60635,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.8.2, which was
+This file was extended by GStreamer Bad Plug-ins $as_me 1.9.1, which was
generated by GNU Autoconf 2.69. Invocation command line was
CONFIG_FILES = $CONFIG_FILES
@@ -59782,7 +60701,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.8.2
+GStreamer Bad Plug-ins config.status 1.9.1
configured by $0, generated by GNU Autoconf 2.69,
with options \\"\$ac_cs_config\\"
@@ -60446,6 +61365,7 @@
"sys/dshowvideosink/Makefile") CONFIG_FILES="$CONFIG_FILES sys/dshowvideosink/Makefile" ;;
"sys/dvb/Makefile") CONFIG_FILES="$CONFIG_FILES sys/dvb/Makefile" ;;
"sys/fbdev/Makefile") CONFIG_FILES="$CONFIG_FILES sys/fbdev/Makefile" ;;
+ "sys/kms/Makefile") CONFIG_FILES="$CONFIG_FILES sys/kms/Makefile" ;;
"sys/linsys/Makefile") CONFIG_FILES="$CONFIG_FILES sys/linsys/Makefile" ;;
"sys/nvenc/Makefile") CONFIG_FILES="$CONFIG_FILES sys/nvenc/Makefile" ;;
"sys/opensles/Makefile") CONFIG_FILES="$CONFIG_FILES sys/opensles/Makefile" ;;
@@ -60476,7 +61396,6 @@
"tests/examples/gl/generic/doublecube/Makefile") CONFIG_FILES="$CONFIG_FILES tests/examples/gl/generic/doublecube/Makefile" ;;
"tests/examples/gl/generic/recordgraphic/Makefile") CONFIG_FILES="$CONFIG_FILES tests/examples/gl/generic/recordgraphic/Makefile" ;;
"tests/examples/gl/gtk/Makefile") CONFIG_FILES="$CONFIG_FILES tests/examples/gl/gtk/Makefile" ;;
- "tests/examples/gl/gtk/gtkvideooverlay/Makefile") CONFIG_FILES="$CONFIG_FILES tests/examples/gl/gtk/gtkvideooverlay/Makefile" ;;
"tests/examples/gl/gtk/3dvideo/Makefile") CONFIG_FILES="$CONFIG_FILES tests/examples/gl/gtk/3dvideo/Makefile" ;;
"tests/examples/gl/gtk/filternovideooverlay/Makefile") CONFIG_FILES="$CONFIG_FILES tests/examples/gl/gtk/filternovideooverlay/Makefile" ;;
"tests/examples/gl/gtk/filtervideooverlay/Makefile") CONFIG_FILES="$CONFIG_FILES tests/examples/gl/gtk/filtervideooverlay/Makefile" ;;
@@ -60554,11 +61473,13 @@
"ext/timidity/Makefile") CONFIG_FILES="$CONFIG_FILES ext/timidity/Makefile" ;;
"ext/vulkan/Makefile") CONFIG_FILES="$CONFIG_FILES ext/vulkan/Makefile" ;;
"ext/vulkan/xcb/Makefile") CONFIG_FILES="$CONFIG_FILES ext/vulkan/xcb/Makefile" ;;
+ "ext/vulkan/wayland/Makefile") CONFIG_FILES="$CONFIG_FILES ext/vulkan/wayland/Makefile" ;;
"ext/webp/Makefile") CONFIG_FILES="$CONFIG_FILES ext/webp/Makefile" ;;
"ext/x265/Makefile") CONFIG_FILES="$CONFIG_FILES ext/x265/Makefile" ;;
"ext/xvid/Makefile") CONFIG_FILES="$CONFIG_FILES ext/xvid/Makefile" ;;
"ext/zbar/Makefile") CONFIG_FILES="$CONFIG_FILES ext/zbar/Makefile" ;;
"ext/dtls/Makefile") CONFIG_FILES="$CONFIG_FILES ext/dtls/Makefile" ;;
+ "ext/webrtcdsp/Makefile") CONFIG_FILES="$CONFIG_FILES ext/webrtcdsp/Makefile" ;;
"po/Makefile.in") CONFIG_FILES="$CONFIG_FILES po/Makefile.in" ;;
"docs/Makefile") CONFIG_FILES="$CONFIG_FILES docs/Makefile" ;;
"docs/plugins/Makefile") CONFIG_FILES="$CONFIG_FILES docs/plugins/Makefile" ;;
diff --git a/configure.ac b/configure.ac
index 6297183..cac9954 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.8.2],[http://bugzilla.gnome.org/enter_bug.cgi?product=GStreamer],[gst-plugins-bad])
+AC_INIT([GStreamer Bad Plug-ins],[1.9.1],[http://bugzilla.gnome.org/enter_bug.cgi?product=GStreamer],[gst-plugins-bad])
AG_GST_INIT
@@ -51,11 +51,11 @@
dnl - interfaces added -> increment AGE
dnl - interfaces removed -> AGE = 0
dnl sets GST_LT_LDFLAGS
-AS_LIBTOOL(GST, 802, 0, 802)
+AS_LIBTOOL(GST, 901, 0, 901)
dnl *** required versions of GStreamer stuff ***
-GST_REQ=1.8.0
-GSTPB_REQ=1.8.0
+GST_REQ=1.9.1
+GSTPB_REQ=1.9.1
dnl *** autotools stuff ****
@@ -396,6 +396,12 @@
AC_SUBST(GST_PLUGIN_LIBTOOLFLAGS)
AM_CONDITIONAL(GST_PLUGIN_BUILD_STATIC, test "x$enable_static_plugins" = "xyes")
+dnl If only building static libraries, define GST_STATIC_COMPILATION. This is
+dnl needed only on Windows, but it doesn't hurt to have it everywhere.
+if test x$enable_static = xyes -a x$enable_shared = xno; then
+ GST_STATIC_CFLAGS="-DGST_STATIC_COMPILATION"
+fi
+
AC_ARG_WITH([player-tests],
AS_HELP_STRING([--with-player-tests],[Enable GstPlayer tests that need network access (default: no)]))
if test x$with_player_tests = xyes; then
@@ -450,10 +456,11 @@
sdi tta \
videomeasure \
linsys \
- apexsink dc1394 \
- musepack nas sdl timidity \
+ apexsink \
+ nas sdl timidity \
wininet \
- xvid lv2 sndio libvisual"
+ xvid sndio libvisual"
+
AC_SUBST(GST_PLUGINS_NONPORTED)
dnl these are all the gst plug-ins, compilable without additional libs
@@ -681,6 +688,7 @@
HAVE_GL=no
HAVE_GLES2=no
+HAVE_GLES3_H=no
HAVE_WAYLAND_EGL=no
HAVE_EGL_RPI=no
@@ -707,6 +715,7 @@
if test "x$HAVE_GLES2" != "xyes"; then
AG_GST_CHECK_LIBHEADER(GLES2, GLESv2, glTexImage2D,, GLES2/gl2.h)
fi
+ AC_CHECK_HEADER([GLES3/gl3.h], [HAVE_GLES3_H=yes])
fi
if test "x$NEED_EGL" != "xno"; then
AG_GST_PKG_CHECK_MODULES(EGL, egl)
@@ -857,6 +866,10 @@
dnl check if we can include both GL and GLES2 at the same time
if test "x$HAVE_GL" = "xyes" -a "x$HAVE_GLES2" = "xyes"; then
+ GLES3_H_DEFINE=0
+ if test "x$HAVE_GLES3_H" == "xyes"; then
+ GLES3_H_DEFINE=1
+ fi
GL_INCLUDES="
#ifdef __GNUC__
# pragma GCC diagnostic push
@@ -869,8 +882,13 @@
# include <OpenGLES/ES2/gl.h>
# include <OpenGLES/ES2/glext.h>
# else
-# include <GLES2/gl2.h>
-# include <GLES2/gl2ext.h>
+# if $GLES3_H_DEFINE
+# include <GLES3/gl3.h>
+# include <GLES3/gl3ext.h>
+# else
+# include <GLES2/gl2.h>
+# include <GLES2/gl2ext.h>
+# endif
# endif
# ifdef __APPLE__
# include <OpenGL/OpenGL.h>
@@ -906,6 +924,7 @@
else
AC_MSG_WARN([Disabling GL|ES 2.0 support])
HAVE_GLES2=no
+ HAVE_GLES3_H=no
fi
])
CFLAGS="$save_CFLAGS"
@@ -1149,6 +1168,9 @@
if test "x$USE_GLES2" = "xyes"; then
GL_APIS="gles2 $GL_APIS"
GST_GL_HAVE_GLES2=1
+ if test "x$HAVE_GLES3_H" = "xyes"; then
+ GST_GL_HAVE_GLES3=1
+ fi
fi
GL_CONFIG_DEFINES="$GL_CONFIG_DEFINES
@@ -1318,8 +1340,13 @@
# include <OpenGLES/ES2/gl.h>
# include <OpenGLES/ES2/glext.h>
# else
-# include <GLES2/gl2.h>
-# include <GLES2/gl2ext.h>
+# if $GST_GL_HAVE_GLES3
+# include <GLES3/gl3.h>
+# include <GLES3/gl3ext.h>
+# else
+# include <GLES2/gl2.h>
+# include <GLES2/gl2ext.h>
+# endif
# endif
"
fi
@@ -1470,15 +1497,14 @@
AM_CONDITIONAL(HAVE_JPEG, test "x$HAVE_JPEG" = "xyes")
dnl Vulkan
-VULKAN_CONFIG_DEFINES=""
+PKG_CHECK_MODULES(XCB, xcb >= 1.10, GST_VULKAN_HAVE_WINDOW_XCB=1, GST_VULKAN_HAVE_WINDOW_XCB=0)
+AM_CONDITIONAL(USE_XCB, test "x$GST_VULKAN_HAVE_WINDOW_XCB" = "x1")
-PKG_CHECK_MODULES(XCB, xcb >= 1.10, HAVE_XCB=yes, HAVE_XCB=no)
-
-AM_CONDITIONAL(USE_XCB, test "x$HAVE_XCB" = "xyes")
-if test "x$HAVE_XCB" = "xyes"; then
- VULKAN_CONFIG_DEFINES="$VULKAN_CONFIG_DEFINES
- #define GST_VULKAN_HAVE_WINDOW_XCB 1"
-fi
+PKG_CHECK_MODULES(WAYLAND, wayland-client >= 1.4, GST_VULKAN_HAVE_WINDOW_WAYLAND=1, GST_VULKAN_HAVE_WINDOW_WAYLAND=0)
+AM_CONDITIONAL(USE_WAYLAND, test "x$GST_VULKAN_HAVE_WINDOW_WAYLAND" = "x1")
+VULKAN_CONFIG_DEFINES="
+#define GST_VULKAN_HAVE_WINDOW_XCB $GST_VULKAN_HAVE_WINDOW_XCB
+#define GST_VULKAN_HAVE_WINDOW_WAYLAND $GST_VULKAN_HAVE_WINDOW_WAYLAND"
AC_CONFIG_COMMANDS([ext/vulkan/vkconfig.h], [
outfile=vkconfig.h-tmp
@@ -2311,6 +2337,14 @@
AC_SUBST(TIGER_LIBS)
],,,[AM_CONDITIONAL(USE_TIGER, false)])
+dnl *** kms ***
+translit(dnm, m, l) AM_CONDITIONAL(USE_KMS, true)
+AG_GST_CHECK_FEATURE(KMS, [drm/kms libraries], kms, [
+ AG_GST_PKG_CHECK_MODULES(GST_VIDEO, gstreamer-video-1.0)
+ AG_GST_PKG_CHECK_MODULES(GST_ALLOCATORS, gstreamer-allocators-1.0)
+ PKG_CHECK_MODULES([DRM], [libdrm libkms], HAVE_KMS=yes, HAVE_KMS=no)
+])
+
dnl *** ladspa ***
translit(dnm, m, l) AM_CONDITIONAL(USE_LADSPA, true)
AG_GST_CHECK_FEATURE(LADSPA, [ladspa], ladspa, [
@@ -2327,9 +2361,9 @@
dnl *** LV2 ***
translit(dnm, m, l) AM_CONDITIONAL(USE_LV2, true)
AG_GST_CHECK_FEATURE(LV2, [lv2], lv2, [
- PKG_CHECK_MODULES(SLV2, slv2 >= 0.6.6, HAVE_LV2="yes", HAVE_LV2="no")
- AC_SUBST(SLV2_CFLAGS)
- AC_SUBST(SLV2_LIBS)
+ PKG_CHECK_MODULES(LILV, lilv-0 >= 0.6.6, HAVE_LV2="yes", HAVE_LV2="no")
+ AC_SUBST(LILV_CFLAGS)
+ AC_SUBST(LILV_LIBS)
])
dnl *** libde265 ***
@@ -2657,21 +2691,17 @@
dnl a new version and the no-backward-compatibility define. (There doesn't
dnl seem to be a switch to suppress the warnings the cvcompat.h header
dnl causes.)
- PKG_CHECK_MODULES(OPENCV, opencv >= 2.3.0 opencv < 2.5.0 , [
+ PKG_CHECK_MODULES(OPENCV, opencv >= 2.3.0 opencv <= 3.1.0 , [
AC_PROG_CXX
AC_LANG([C++])
OLD_CPPFLAGS=$CPPFLAGS
CPPFLAGS=$OPENCV_CFLAGS
something_not_found=no
- AC_CHECK_HEADERS([opencv2/contrib/contrib.hpp \
- opencv2/core/core_c.h \
- opencv2/core/types_c.h \
+ AC_CHECK_HEADERS([opencv2/core/core_c.h \
opencv2/core/version.hpp \
opencv2/highgui/highgui_c.h \
opencv2/imgproc/imgproc.hpp \
opencv2/imgproc/imgproc_c.h \
- opencv2/legacy/compat.hpp \
- opencv2/legacy/legacy.hpp \
opencv2/objdetect/objdetect.hpp \
opencv2/video/background_segm.hpp], [], [something_not_found=yes])
CPPFLAGS=$OLD_CPPFLAGS
@@ -2842,6 +2872,12 @@
else
HAVE_QT="yes"
HAVE_QT_WINDOWING="no"
+ QT_VERSION="`$PKG_CONFIG --modversion Qt5Core`"
+ QPA_INCLUDE_PATH=`$PKG_CONFIG --variable=includedir Qt5Core`/QtGui/${QT_VERSION}/QtGui
+ AS_IF([test -f "$QPA_INCLUDE_PATH/qpa/qplatformnativeinterface.h"], [
+ QT_CFLAGS="$QT_CFLAGS -I$QPA_INCLUDE_PATH"
+ HAVE_QT_QPA_HEADER="yes"
+ ], [AC_MSG_NOTICE([Cannot find QPA])])
if test "x$GST_GL_HAVE_WINDOW_X11" = "x1" -a "x$GST_GL_HAVE_PLATFORM_GLX" = "x1"; then
PKG_CHECK_MODULES(QT_X11, Qt5X11Extras, [
AC_DEFINE([HAVE_QT_X11], [], [Define if Qt X11 integration is installed])
@@ -2850,7 +2886,7 @@
HAVE_QT_WINDOWING="yes"
], [AC_MSG_NOTICE([Could not find Qt X11 integration])])
fi
- if test "x$GST_GL_HAVE_WINDOW_WAYLAND" = "x1" -a "x$GST_GL_HAVE_PLATFORM_EGL" = "x1"; then
+ if test "x$GST_GL_HAVE_WINDOW_WAYLAND" = "x1" -a "x$GST_GL_HAVE_PLATFORM_EGL" = "x1" -a "x$HAVE_QT_QPA_HEADER" = "xyes"; then
PKG_CHECK_MODULES(QT_WAYLAND, Qt5WaylandClient, [
AC_DEFINE([HAVE_QT_WAYLAND], [],
[Define if Qt Wayland integration is installed])
@@ -2859,24 +2895,29 @@
HAVE_QT_WINDOWING="yes"
], [AC_MSG_NOTICE([Could not find Qt Wayland integration])])
fi
- if test "x$GST_GL_HAVE_WINDOW_ANDROID" = "x1" -a "x$GST_GL_HAVE_PLATFORM_EGL" = "x1"; then
- PKG_CHECK_MODULES(QT_ANDROID, Qt5AndroidExtras, [
- # c++ on android requires a standard library and there are multiple
- # choices. cerbero provides a pkg-config file the describes a choice
- # so try to use that. Outside cerbero one has to pass these flags
- # manually for the library one is using
- PKG_CHECK_MODULES(GNUSTL, gnustl, [
- QT_CFLAGS="$QT_CFLAGS $GNUSTL_CFLAGS"
- QT_LIBS="$QT_LIBS $GNUSTL_LIBS"
- ], [
- AC_MSG_NOTICE([Could not find Standard C++ library])])
-
- AC_DEFINE([HAVE_QT_ANDROID], [],
- [Define if Qt Android integration is installed])
- QT_CFLAGS="$QT_CFLAGS $QT_ANDROID_CFLAGS"
- QT_LIBS="$QT_LIBS $QT_ANDROID_LIBS"
- HAVE_QT_WINDOWING="yes"
- ], [AC_MSG_NOTICE([Could not find Qt Android integration])])
+ if test "x$GST_GL_HAVE_PLATFORM_EGL" = "x1"; then
+ if test "x$GST_GL_HAVE_WINDOW_ANDROID" = "x1"; then
+ PKG_CHECK_MODULES(QT_ANDROID, Qt5AndroidExtras, [
+ # c++ on android requires a standard library and there are multiple
+ # choices. cerbero provides a pkg-config file the describes a choice
+ # so try to use that. Outside cerbero one has to pass these flags
+ # manually for the library one is using
+ PKG_CHECK_MODULES(GNUSTL, gnustl, [
+ QT_CFLAGS="$QT_CFLAGS $GNUSTL_CFLAGS"
+ QT_LIBS="$QT_LIBS $GNUSTL_LIBS"
+ ], [
+ AC_MSG_NOTICE([Could not find Standard C++ library])])
+ AC_DEFINE([HAVE_QT_EGLFS], [],
+ [Define if Qt eglfs integration is installed])
+ QT_CFLAGS="$QT_CFLAGS $QT_ANDROID_CFLAGS"
+ QT_LIBS="$QT_LIBS $QT_ANDROID_LIBS"
+ HAVE_QT_WINDOWING="yes"
+ ], [AC_MSG_NOTICE([Could not find Qt Android integration])])
+ else
+ AC_DEFINE([HAVE_QT_EGLFS], [],
+ [Define if Qt eglfs integration is installed])
+ HAVE_QT_WINDOWING="yes"
+ fi
fi
if test "x$GST_GL_HAVE_WINDOW_COCOA" = "x1" -a "x$GST_GL_HAVE_PLATFORM_CGL" = "x1"; then
PKG_CHECK_MODULES(QT_MAC, Qt5MacExtras, [
@@ -3323,6 +3364,19 @@
AG_GST_PKG_CHECK_MODULES(X265, x265)
])
+dnl *** WebRTC Audio Processing ***
+dnl Note: We test for a specific version as there is no API stability
+translit(dnm, m, l) AM_CONDITIONAL(USE_WEBRTCDSP, true)
+AG_GST_CHECK_FEATURE(WEBRTCDSP, [WebRTC Audio Processing], webrtcdsp, [
+ AC_LANG_PUSH([C++])
+ old_CPPFLAGS=$CPPFLAGS
+ CPPFLAGS="-std=c++11 $CPPFLAGS"
+ AG_GST_PKG_CHECK_MODULES(WEBRTCDSP, webrtc-audio-processing = 0.2)
+ AC_CHECK_HEADER([typeindex],[],[HAVE_WEBRTCDSP=no])
+ CPPFLAGS=$old_CPPFLAGS
+ AC_LANG_POP([C++])
+])
+
else
dnl not building plugins with external dependencies,
@@ -3358,6 +3412,7 @@
AM_CONDITIONAL(USE_GTK3_GL, false)
AM_CONDITIONAL(USE_HLS, false)
AM_CONDITIONAL(USE_KATE, false)
+AM_CONDITIONAL(USE_KMS, false)
AM_CONDITIONAL(USE_TIGER, false)
AM_CONDITIONAL(USE_LADSPA, false)
AM_CONDITIONAL(USE_LV2, false)
@@ -3448,7 +3503,7 @@
dnl prefer internal headers to already installed ones
dnl also add builddir include for enumtypes and marshal
dnl add GST_OPTION_CFLAGS, but overridable
-GST_CFLAGS="$GST_CFLAGS -DGST_USE_UNSTABLE_API"
+GST_CFLAGS="$GST_CFLAGS $GST_STATIC_CFLAGS -DGST_USE_UNSTABLE_API"
GST_CXXFLAGS="$GST_CFLAGS $GLIB_EXTRA_CFLAGS \$(GST_OPTION_CXXFLAGS)"
GST_OBJCFLAGS="$GST_CFLAGS $GLIB_EXTRA_CFLAGS \$(GST_OPTION_OBJCFLAGS)"
GST_CFLAGS="$GST_CFLAGS $GLIB_EXTRA_CFLAGS \$(GST_OPTION_CFLAGS)"
@@ -3604,6 +3659,7 @@
sys/dshowvideosink/Makefile
sys/dvb/Makefile
sys/fbdev/Makefile
+sys/kms/Makefile
sys/linsys/Makefile
sys/nvenc/Makefile
sys/opensles/Makefile
@@ -3634,7 +3690,6 @@
tests/examples/gl/generic/doublecube/Makefile
tests/examples/gl/generic/recordgraphic/Makefile
tests/examples/gl/gtk/Makefile
-tests/examples/gl/gtk/gtkvideooverlay/Makefile
tests/examples/gl/gtk/3dvideo/Makefile
tests/examples/gl/gtk/filternovideooverlay/Makefile
tests/examples/gl/gtk/filtervideooverlay/Makefile
@@ -3712,11 +3767,13 @@
ext/timidity/Makefile
ext/vulkan/Makefile
ext/vulkan/xcb/Makefile
+ext/vulkan/wayland/Makefile
ext/webp/Makefile
ext/x265/Makefile
ext/xvid/Makefile
ext/zbar/Makefile
ext/dtls/Makefile
+ext/webrtcdsp/Makefile
po/Makefile.in
docs/Makefile
docs/plugins/Makefile
diff --git a/docs/Makefile.in b/docs/Makefile.in
index 052f2d0..df8e4f1 100644
--- a/docs/Makefile.in
+++ b/docs/Makefile.in
@@ -275,6 +275,8 @@
DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
DSYMUTIL = @DSYMUTIL@
DTLS_CFLAGS = @DTLS_CFLAGS@
DTLS_LIBS = @DTLS_LIBS@
@@ -490,6 +492,8 @@
LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
LIPO = @LIPO@
LN_S = @LN_S@
LOCALEDIR = @LOCALEDIR@
@@ -616,8 +620,6 @@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
SNDIO_LIBS = @SNDIO_LIBS@
@@ -662,6 +664,8 @@
WAYLAND_LIBS = @WAYLAND_LIBS@
WEBP_CFLAGS = @WEBP_CFLAGS@
WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
WGET = @WGET@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
diff --git a/docs/libs/Makefile.in b/docs/libs/Makefile.in
index dec78aa..d97c7d2 100644
--- a/docs/libs/Makefile.in
+++ b/docs/libs/Makefile.in
@@ -237,6 +237,8 @@
DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
DSYMUTIL = @DSYMUTIL@
DTLS_CFLAGS = @DTLS_CFLAGS@
DTLS_LIBS = @DTLS_LIBS@
@@ -452,6 +454,8 @@
LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
LIPO = @LIPO@
LN_S = @LN_S@
LOCALEDIR = @LOCALEDIR@
@@ -578,8 +582,6 @@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
SNDIO_LIBS = @SNDIO_LIBS@
@@ -624,6 +626,8 @@
WAYLAND_LIBS = @WAYLAND_LIBS@
WEBP_CFLAGS = @WEBP_CFLAGS@
WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
WGET = @WGET@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
@@ -1143,7 +1147,11 @@
@ENABLE_GTK_DOC_TRUE@sgml-build.stamp: setup-build.stamp $(DOC_MODULE)-decl.txt $(SCANOBJ_FILES) $(DOC_MODULE)-sections.txt $(expand_content_files)
@ENABLE_GTK_DOC_TRUE@ @echo ' DOC Building XML'
-@ENABLE_GTK_DOC_TRUE@ @gtkdoc-mkdb --module=$(DOC_MODULE) --source-dir=$(DOC_SOURCE_DIR) --expand-content-files="$(expand_content_files)" --main-sgml-file=$(DOC_MAIN_SGML_FILE) --output-format=xml $(MKDB_OPTIONS)
+@ENABLE_GTK_DOC_TRUE@ @_source_dir='' ; \
+@ENABLE_GTK_DOC_TRUE@ for i in $(DOC_SOURCE_DIR) ; do \
+@ENABLE_GTK_DOC_TRUE@ _source_dir="$${_source_dir} --source-dir=$$i" ; \
+@ENABLE_GTK_DOC_TRUE@ done ; \
+@ENABLE_GTK_DOC_TRUE@ gtkdoc-mkdb --module=$(DOC_MODULE) $$(_source_dir) --expand-content-files="$(expand_content_files)" --main-sgml-file=$(DOC_MAIN_SGML_FILE) --output-format=xml $(MKDB_OPTIONS)
@ENABLE_GTK_DOC_TRUE@ @cp ../version.entities xml
@ENABLE_GTK_DOC_TRUE@ @touch sgml-build.stamp
diff --git a/docs/libs/gst-plugins-bad-libs-sections.txt b/docs/libs/gst-plugins-bad-libs-sections.txt
index 922da0f..fdcdf2e 100644
--- a/docs/libs/gst-plugins-bad-libs-sections.txt
+++ b/docs/libs/gst-plugins-bad-libs-sections.txt
@@ -1184,6 +1184,7 @@
gst_gl_video_allocation_params_init_full
gst_gl_video_allocation_params_new
gst_gl_video_allocation_params_new_wrapped_data
+gst_gl_video_allocation_params_new_wrapped_gl_handle
gst_gl_video_allocation_params_new_wrapped_texture
GstGLMemoryAllocator
GstGLMemoryAllocatorClass
@@ -1660,7 +1661,7 @@
GST_VIDEO_AGGREGATOR
GST_VIDEO_AGGREGATOR_CLASS
GST_VIDEO_AGGREGATOR_GET_CLASS
-gst_videoaggregator_get_type
+gst_video_aggregator_get_type
GstVideoAggregatorPrivate
</SECTION>
@@ -1676,7 +1677,7 @@
GST_VIDEO_AGGREGATOR_PAD
GST_VIDEO_AGGREGATOR_PAD_CLASS
GST_VIDEO_AGGREGATOR_PAD_GET_CLASS
-gst_videoaggregator_pad_get_type
+gst_video_aggregator_pad_get_type
</SECTION>
<SECTION>
@@ -1745,6 +1746,14 @@
gst_player_set_color_balance
gst_player_get_color_balance
+gst_player_get_multiview_mode
+gst_player_set_multiview_mode
+gst_player_get_multiview_flags
+gst_player_set_multiview_flags
+
+gst_player_get_audio_video_offset
+gst_player_set_audio_video_offset
+
gst_player_get_rate
gst_player_set_rate
@@ -1858,6 +1867,7 @@
gst_player_media_info_get_title
gst_player_media_info_get_container_format
gst_player_media_info_is_seekable
+gst_player_media_info_is_live
gst_player_media_info_get_image_sample
gst_player_media_info_get_tags
gst_player_media_info_get_stream_list
diff --git a/docs/libs/html/GstGLBaseFilter.html b/docs/libs/html/GstGLBaseFilter.html
index ad644db..c5f480e 100644
--- a/docs/libs/html/GstGLBaseFilter.html
+++ b/docs/libs/html/GstGLBaseFilter.html
@@ -29,7 +29,7 @@
<div class="refnamediv"><table width="100%"><tr>
<td valign="top">
<h2><span class="refentrytitle"><a name="GstGLBaseFilter.top_of_page"></a>GstGLBaseFilter</span></h2>
-<p>GstGLBaseFilter — <a href="/usr/share/gtk-doc/html/gstreamer-libs-1.0GstBaseTransform.html#GstBaseTransform-struct"><span class="type">GstBaseTransform</span></a> subclass for transformin OpenGL resources</p>
+<p>GstGLBaseFilter</p>
</td>
<td class="gallery_image" valign="top" align="right"></td>
</tr></table></div>
@@ -81,10 +81,6 @@
</div>
<div class="refsect1">
<a name="GstGLBaseFilter.description"></a><h2>Description</h2>
-<p><a class="link" href="GstGLBaseFilter.html" title="GstGLBaseFilter"><span class="type">GstGLBaseFilter</span></a> handles the nitty gritty details of retrieving an OpenGL
-context. It also provided some wrappers around <a href="/usr/share/gtk-doc/html/gstreamer-libs-1.0GstBaseTransform.html#GstBaseTransform-struct"><span class="type">GstBaseTransform</span></a>'s
-<code class="function">start()</code>, <code class="function">stop()</code> and <code class="function">set_caps()</code> virtual methods that ensure an OpenGL context
-is available and current in the calling thread.</p>
</div>
<div class="refsect1">
<a name="GstGLBaseFilter.functions_details"></a><h2>Functions</h2>
@@ -95,17 +91,6 @@
<div class="refsect2">
<a name="GstGLBaseFilter-struct"></a><h3>GstGLBaseFilter</h3>
<pre class="programlisting">typedef struct _GstGLBaseFilter GstGLBaseFilter;</pre>
-<div class="refsect3">
-<a name="GstGLBaseFilter.members"></a><h4>Members</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="300px" class="struct_members_name">
-<col class="struct_members_description">
-<col width="200px" class="struct_members_annotations">
-</colgroup>
-<tbody></tbody>
-</table></div>
-</div>
</div>
<hr>
<div class="refsect2">
@@ -119,39 +104,6 @@
gboolean (*gl_set_caps) (GstGLBaseFilter *filter, GstCaps * incaps, GstCaps * outcaps);
} GstGLBaseFilterClass;
</pre>
-<div class="refsect3">
-<a name="GstGLBaseFilterClass.members"></a><h4>Members</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="300px" class="struct_members_name">
-<col class="struct_members_description">
-<col width="200px" class="struct_members_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="struct_member_name"><p><a class="link" href="gst-plugins-bad-libs-GstGLAPI.html#GstGLAPI" title="enum GstGLAPI"><span class="type">GstGLAPI</span></a> <em class="structfield"><code><a name="GstGLBaseFilterClass.supported-gl-api"></a>supported_gl_api</code></em>;</p></td>
-<td class="struct_member_description"><p>the logical-OR of <a class="link" href="gst-plugins-bad-libs-GstGLAPI.html#GstGLAPI" title="enum GstGLAPI"><span class="type">GstGLAPI</span></a>'s supported by this element</p></td>
-<td class="struct_member_annotations"> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><em class="structfield"><code><a name="GstGLBaseFilterClass.gl-start"></a>gl_start</code></em> ()</p></td>
-<td class="struct_member_description"><p>called in the GL thread to setup the element GL state.</p></td>
-<td class="struct_member_annotations"> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><em class="structfield"><code><a name="GstGLBaseFilterClass.gl-stop"></a>gl_stop</code></em> ()</p></td>
-<td class="struct_member_description"><p>called in the GL thread to setup the element GL state.</p></td>
-<td class="struct_member_annotations"> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><em class="structfield"><code><a name="GstGLBaseFilterClass.gl-set-caps"></a>gl_set_caps</code></em> ()</p></td>
-<td class="struct_member_description"><p>called in the GL thread when caps are set on <em class="parameter"><code>filter</code></em>
-.</p></td>
-<td class="struct_member_annotations"> </td>
-</tr>
-</tbody>
-</table></div>
-</div>
</div>
</div>
<div class="refsect1">
@@ -163,10 +115,6 @@
<p>Flags: Read</p>
</div>
</div>
-<div class="refsect1">
-<a name="GstGLBaseFilter.see-also"></a><h2>See Also</h2>
-<p><a href="/usr/share/gtk-doc/html/gstreamer-libs-1.0GstBaseTransform.html#GstBaseTransform-struct"><span class="type">GstBaseTransform</span></a></p>
-</div>
</div>
<div class="footer">
<hr>Generated by GTK-Doc V1.25</div>
diff --git a/docs/libs/html/GstGLBufferPool.html b/docs/libs/html/GstGLBufferPool.html
index 7ada86d..9142729 100644
--- a/docs/libs/html/GstGLBufferPool.html
+++ b/docs/libs/html/GstGLBufferPool.html
@@ -28,7 +28,7 @@
<div class="refnamediv"><table width="100%"><tr>
<td valign="top">
<h2><span class="refentrytitle"><a name="GstGLBufferPool.top_of_page"></a>GstGLBufferPool</span></h2>
-<p>GstGLBufferPool — buffer pool for <a class="link" href="gst-plugins-bad-libs-GstGLMemory.html#GstGLMemory" title="GstGLMemory"><span class="type">GstGLMemory</span></a> objects</p>
+<p>GstGLBufferPool</p>
</td>
<td class="gallery_image" valign="top" align="right"></td>
</tr></table></div>
@@ -97,10 +97,6 @@
</div>
<div class="refsect1">
<a name="GstGLBufferPool.description"></a><h2>Description</h2>
-<p>a <a class="link" href="GstGLBufferPool.html" title="GstGLBufferPool"><span class="type">GstGLBufferPool</span></a> is an object that allocates buffers with <a class="link" href="gst-plugins-bad-libs-GstGLMemory.html#GstGLMemory" title="GstGLMemory"><span class="type">GstGLMemory</span></a></p>
-<p>A <a class="link" href="GstGLBufferPool.html" title="GstGLBufferPool"><span class="type">GstGLBufferPool</span></a> is created with <a class="link" href="GstGLBufferPool.html#gst-gl-buffer-pool-new" title="gst_gl_buffer_pool_new ()"><code class="function">gst_gl_buffer_pool_new()</code></a></p>
-<p><a class="link" href="GstGLBufferPool.html" title="GstGLBufferPool"><span class="type">GstGLBufferPool</span></a> implements the VideoMeta buffer pool option
-<a href="/usr/share/gtk-doc/html/gst-plugins-base-libs-1.0gst-plugins-base-libs-GstVideoPool.html#GST-BUFFER-POOL-OPTION-VIDEO-META:CAPS"><span class="type">GST_BUFFER_POOL_OPTION_VIDEO_META</span></a></p>
</div>
<div class="refsect1">
<a name="GstGLBufferPool.functions_details"></a><h2>Functions</h2>
@@ -108,25 +104,6 @@
<a name="gst-gl-buffer-pool-new"></a><h3>gst_gl_buffer_pool_new ()</h3>
<pre class="programlisting"><a href="/usr/share/gtk-doc/html/gstreamer-1.0GstBufferPool.html#GstBufferPool-struct"><span class="returnvalue">GstBufferPool</span></a> *
gst_gl_buffer_pool_new (<em class="parameter"><code><a class="link" href="GstGLContext.html" title="GstGLContext"><span class="type">GstGLContext</span></a> *context</code></em>);</pre>
-<div class="refsect3">
-<a name="gst-gl-buffer-pool-new.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody><tr>
-<td class="parameter_name"><p>context</p></td>
-<td class="parameter_description"><p>the <a class="link" href="GstGLContext.html" title="GstGLContext"><span class="type">GstGLContext</span></a> to use</p></td>
-<td class="parameter_annotations"> </td>
-</tr></tbody>
-</table></div>
-</div>
-<div class="refsect3">
-<a name="gst-gl-buffer-pool-new.returns"></a><h4>Returns</h4>
-<p> a <a href="/usr/share/gtk-doc/html/gstreamer-1.0GstBufferPool.html#GstBufferPool-struct"><span class="type">GstBufferPool</span></a> that allocates buffers with <a class="link" href="gst-plugins-bad-libs-GstGLMemory.html#GstGLMemory" title="GstGLMemory"><span class="type">GstGLMemory</span></a></p>
-</div>
</div>
<hr>
<div class="refsect2">
@@ -134,26 +111,6 @@
<pre class="programlisting"><a class="link" href="gst-plugins-bad-libs-gstglbasememory.html#GstGLAllocationParams" title="struct GstGLAllocationParams"><span class="returnvalue">GstGLAllocationParams</span></a> *
gst_buffer_pool_config_get_gl_allocation_params
(<em class="parameter"><code><a href="/usr/share/gtk-doc/html/gstreamer-1.0GstStructure.html#GstStructure-struct"><span class="type">GstStructure</span></a> *config</code></em>);</pre>
-<div class="refsect3">
-<a name="gst-buffer-pool-config-get-gl-allocation-params.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody><tr>
-<td class="parameter_name"><p>config</p></td>
-<td class="parameter_description"><p>a buffer pool config</p></td>
-<td class="parameter_annotations"> </td>
-</tr></tbody>
-</table></div>
-</div>
-<div class="refsect3">
-<a name="gst-buffer-pool-config-get-gl-allocation-params.returns"></a><h4>Returns</h4>
-<p> the currently set <a class="link" href="gst-plugins-bad-libs-gstglbasememory.html#GstGLAllocationParams" title="struct GstGLAllocationParams"><span class="type">GstGLAllocationParams</span></a> or <a href="/usr/share/gtk-doc/html/glibglib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a>. </p>
-<p><span class="annotation">[<acronym title="Free data after the code is done."><span class="acronym">transfer full</span></acronym>]</span></p>
-</div>
</div>
<hr>
<div class="refsect2">
@@ -162,31 +119,6 @@
gst_buffer_pool_config_set_gl_allocation_params
(<em class="parameter"><code><a href="/usr/share/gtk-doc/html/gstreamer-1.0GstStructure.html#GstStructure-struct"><span class="type">GstStructure</span></a> *config</code></em>,
<em class="parameter"><code><a class="link" href="gst-plugins-bad-libs-gstglbasememory.html#GstGLAllocationParams" title="struct GstGLAllocationParams"><span class="type">GstGLAllocationParams</span></a> *params</code></em>);</pre>
-<p>Sets <em class="parameter"><code>params</code></em>
- on <em class="parameter"><code>config</code></em>
-</p>
-<div class="refsect3">
-<a name="gst-buffer-pool-config-set-gl-allocation-params.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="parameter_name"><p>config</p></td>
-<td class="parameter_description"><p>a buffer pool config</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>params</p></td>
-<td class="parameter_description"><p> a <a class="link" href="gst-plugins-bad-libs-gstglbasememory.html#GstGLAllocationParams" title="struct GstGLAllocationParams"><span class="type">GstGLAllocationParams</span></a>. </p></td>
-<td class="parameter_annotations"><span class="annotation">[<acronym title="Don't free data after the code is done."><span class="acronym">transfer none</span></acronym>]</span></td>
-</tr>
-</tbody>
-</table></div>
-</div>
</div>
</div>
<div class="refsect1">
@@ -194,7 +126,6 @@
<div class="refsect2">
<a name="GstGLBufferPool-struct"></a><h3>GstGLBufferPool</h3>
<pre class="programlisting">typedef struct _GstGLBufferPool GstGLBufferPool;</pre>
-<p>Opaque GstGLBufferPool struct</p>
</div>
<hr>
<div class="refsect2">
@@ -203,13 +134,8 @@
GstBufferPoolClass parent_class;
} GstGLBufferPoolClass;
</pre>
-<p>The <a class="link" href="GstGLBufferPool.html#GstGLBufferPoolClass" title="GstGLBufferPoolClass"><span class="type">GstGLBufferPoolClass</span></a> structure contains only private data</p>
</div>
</div>
-<div class="refsect1">
-<a name="GstGLBufferPool.see-also"></a><h2>See Also</h2>
-<p><a href="/usr/share/gtk-doc/html/gstreamer-1.0GstBufferPool.html#GstBufferPool-struct"><span class="type">GstBufferPool</span></a>, <a class="link" href="gst-plugins-bad-libs-GstGLMemory.html#GstGLMemory" title="GstGLMemory"><span class="type">GstGLMemory</span></a></p>
-</div>
</div>
<div class="footer">
<hr>Generated by GTK-Doc V1.25</div>
diff --git a/docs/libs/html/GstGLColorConvert.html b/docs/libs/html/GstGLColorConvert.html
index 6f32eab..03f84cf 100644
--- a/docs/libs/html/GstGLColorConvert.html
+++ b/docs/libs/html/GstGLColorConvert.html
@@ -28,7 +28,7 @@
<div class="refnamediv"><table width="100%"><tr>
<td valign="top">
<h2><span class="refentrytitle"><a name="GstGLColorConvert.top_of_page"></a>GstGLColorConvert</span></h2>
-<p>GstGLColorConvert — an object that converts between color spaces/formats</p>
+<p>GstGLColorConvert</p>
</td>
<td class="gallery_image" valign="top" align="right"></td>
</tr></table></div>
@@ -128,9 +128,6 @@
</div>
<div class="refsect1">
<a name="GstGLColorConvert.description"></a><h2>Description</h2>
-<p><a class="link" href="GstGLColorConvert.html" title="GstGLColorConvert"><span class="type">GstGLColorConvert</span></a> is an object that converts between color spaces and/or
-formats using OpenGL Shaders.</p>
-<p>A <a class="link" href="GstGLColorConvert.html" title="GstGLColorConvert"><span class="type">GstGLColorConvert</span></a> can be created with <a class="link" href="GstGLColorConvert.html#gst-gl-color-convert-new" title="gst_gl_color_convert_new ()"><code class="function">gst_gl_color_convert_new()</code></a>.</p>
</div>
<div class="refsect1">
<a name="GstGLColorConvert.functions_details"></a><h2>Functions</h2>
@@ -138,25 +135,6 @@
<a name="gst-gl-color-convert-new"></a><h3>gst_gl_color_convert_new ()</h3>
<pre class="programlisting"><a class="link" href="GstGLColorConvert.html" title="GstGLColorConvert"><span class="returnvalue">GstGLColorConvert</span></a> *
gst_gl_color_convert_new (<em class="parameter"><code><a class="link" href="GstGLContext.html" title="GstGLContext"><span class="type">GstGLContext</span></a> *context</code></em>);</pre>
-<div class="refsect3">
-<a name="gst-gl-color-convert-new.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody><tr>
-<td class="parameter_name"><p>context</p></td>
-<td class="parameter_description"><p>a <a class="link" href="GstGLContext.html" title="GstGLContext"><span class="type">GstGLContext</span></a></p></td>
-<td class="parameter_annotations"> </td>
-</tr></tbody>
-</table></div>
-</div>
-<div class="refsect3">
-<a name="gst-gl-color-convert-new.returns"></a><h4>Returns</h4>
-<p> a new <a class="link" href="GstGLColorConvert.html" title="GstGLColorConvert"><span class="type">GstGLColorConvert</span></a> object</p>
-</div>
</div>
<hr>
<div class="refsect2">
@@ -165,35 +143,6 @@
gst_gl_color_convert_set_caps (<em class="parameter"><code><a class="link" href="GstGLColorConvert.html" title="GstGLColorConvert"><span class="type">GstGLColorConvert</span></a> *convert</code></em>,
<em class="parameter"><code><a href="/usr/share/gtk-doc/html/gstreamer-1.0GstCaps.html#GstCaps-struct"><span class="type">GstCaps</span></a> *in_caps</code></em>,
<em class="parameter"><code><a href="/usr/share/gtk-doc/html/gstreamer-1.0GstCaps.html#GstCaps-struct"><span class="type">GstCaps</span></a> *out_caps</code></em>);</pre>
-<p>Initializes <em class="parameter"><code>convert</code></em>
- with the information required for conversion.</p>
-<div class="refsect3">
-<a name="gst-gl-color-convert-set-caps.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="parameter_name"><p>convert</p></td>
-<td class="parameter_description"><p>a <a class="link" href="GstGLColorConvert.html" title="GstGLColorConvert"><span class="type">GstGLColorConvert</span></a></p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>in_caps</p></td>
-<td class="parameter_description"><p>input <a href="/usr/share/gtk-doc/html/gstreamer-1.0GstCaps.html#GstCaps-struct"><span class="type">GstCaps</span></a></p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>out_caps</p></td>
-<td class="parameter_description"><p>output <a href="/usr/share/gtk-doc/html/gstreamer-1.0GstCaps.html#GstCaps-struct"><span class="type">GstCaps</span></a></p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-</tbody>
-</table></div>
-</div>
</div>
<hr>
<div class="refsect2">
@@ -227,35 +176,6 @@
<pre class="programlisting"><a href="/usr/share/gtk-doc/html/gstreamer-1.0GstBuffer.html#GstBuffer-struct"><span class="returnvalue">GstBuffer</span></a> *
gst_gl_color_convert_perform (<em class="parameter"><code><a class="link" href="GstGLColorConvert.html" title="GstGLColorConvert"><span class="type">GstGLColorConvert</span></a> *convert</code></em>,
<em class="parameter"><code><a href="/usr/share/gtk-doc/html/gstreamer-1.0GstBuffer.html#GstBuffer-struct"><span class="type">GstBuffer</span></a> *inbuf</code></em>);</pre>
-<p>Converts the data contained by <em class="parameter"><code>inbuf</code></em>
- using the formats specified by the
-<a href="/usr/share/gtk-doc/html/gst-plugins-base-libs-1.0gst-plugins-base-libs-gstvideo.html#GstVideoInfo"><span class="type">GstVideoInfo</span></a>s passed to <a class="link" href="GstGLColorConvert.html#gst-gl-color-convert-set-caps" title="gst_gl_color_convert_set_caps ()"><code class="function">gst_gl_color_convert_set_caps()</code></a></p>
-<div class="refsect3">
-<a name="gst-gl-color-convert-perform.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="parameter_name"><p>convert</p></td>
-<td class="parameter_description"><p>a <a class="link" href="GstGLColorConvert.html" title="GstGLColorConvert"><span class="type">GstGLColorConvert</span></a></p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>inbuf</p></td>
-<td class="parameter_description"><p>the texture ids for input formatted according to in_info</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<div class="refsect3">
-<a name="gst-gl-color-convert-perform.returns"></a><h4>Returns</h4>
-<p> a converted <a href="/usr/share/gtk-doc/html/gstreamer-1.0GstBuffer.html#GstBuffer-struct"><span class="type">GstBuffer</span></a> or <a href="/usr/share/gtk-doc/html/glibglib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a>%</p>
-</div>
</div>
</div>
<div class="refsect1">
@@ -263,19 +183,16 @@
<div class="refsect2">
<a name="GST-GL-COLOR-CONVERT-FORMATS:CAPS"></a><h3>GST_GL_COLOR_CONVERT_FORMATS</h3>
<pre class="programlisting">#define GST_GL_COLOR_CONVERT_FORMATS</pre>
-<p>The currently supported formats that can be converted</p>
</div>
<hr>
<div class="refsect2">
<a name="GST-GL-COLOR-CONVERT-VIDEO-CAPS"></a><h3>GST_GL_COLOR_CONVERT_VIDEO_CAPS</h3>
<pre class="programlisting">#define GST_GL_COLOR_CONVERT_VIDEO_CAPS</pre>
-<p>The currently supported <a href="/usr/share/gtk-doc/html/gstreamer-1.0GstCaps.html#GstCaps-struct"><span class="type">GstCaps</span></a> that can be converted</p>
</div>
<hr>
<div class="refsect2">
<a name="GstGLColorConvert-struct"></a><h3>GstGLColorConvert</h3>
<pre class="programlisting">typedef struct _GstGLColorConvert GstGLColorConvert;</pre>
-<p>Opaque <a class="link" href="GstGLColorConvert.html" title="GstGLColorConvert"><span class="type">GstGLColorConvert</span></a> object</p>
</div>
<hr>
<div class="refsect2">
@@ -284,13 +201,8 @@
GstObjectClass object_class;
} GstGLColorConvertClass;
</pre>
-<p>The <a class="link" href="GstGLColorConvert.html#GstGLColorConvertClass" title="GstGLColorConvertClass"><span class="type">GstGLColorConvertClass</span></a> struct only contains private data</p>
</div>
</div>
-<div class="refsect1">
-<a name="GstGLColorConvert.see-also"></a><h2>See Also</h2>
-<p><a class="link" href="GstGLUpload.html" title="GstGLUpload"><span class="type">GstGLUpload</span></a>, <a class="link" href="gst-plugins-bad-libs-GstGLMemory.html#GstGLMemory" title="GstGLMemory"><span class="type">GstGLMemory</span></a>, <a class="link" href="gst-plugins-bad-libs-gstglbasememory.html#GstGLBaseMemory" title="GstGLBaseMemory"><span class="type">GstGLBaseMemory</span></a></p>
-</div>
</div>
<div class="footer">
<hr>Generated by GTK-Doc V1.25</div>
diff --git a/docs/libs/html/GstGLContext.html b/docs/libs/html/GstGLContext.html
index 4bf6a87..3b4c25a 100644
--- a/docs/libs/html/GstGLContext.html
+++ b/docs/libs/html/GstGLContext.html
@@ -28,7 +28,7 @@
<div class="refnamediv"><table width="100%"><tr>
<td valign="top">
<h2><span class="refentrytitle"><a name="GstGLContext.top_of_page"></a>GstGLContext</span></h2>
-<p>GstGLContext — OpenGL context abstraction</p>
+<p>GstGLContext</p>
</td>
<td class="gallery_image" valign="top" align="right"></td>
</tr></table></div>
@@ -300,9 +300,6 @@
</div>
<div class="refsect1">
<a name="GstGLContext.description"></a><h2>Description</h2>
-<p><a class="link" href="GstGLContext.html" title="GstGLContext"><span class="type">GstGLContext</span></a> wraps an OpenGL context object in a uniform API. As a result
-of the limitation on OpenGL context, this object is not thread safe unless
-specified and must only be activated in a single thread.</p>
</div>
<div class="refsect1">
<a name="GstGLContext.functions_details"></a><h2>Functions</h2>
@@ -317,59 +314,12 @@
<pre class="programlisting"><span class="returnvalue">void</span>
<span class="c_punctuation">(</span>*GstGLContextThreadFunc<span class="c_punctuation">)</span> (<em class="parameter"><code><a class="link" href="GstGLContext.html" title="GstGLContext"><span class="type">GstGLContext</span></a> *context</code></em>,
<em class="parameter"><code><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a> data</code></em>);</pre>
-<p>Represents a function to run in the GL thread with <em class="parameter"><code>context</code></em>
- and <em class="parameter"><code>data</code></em>
-</p>
-<div class="refsect3">
-<a name="GstGLContextThreadFunc.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="parameter_name"><p>context</p></td>
-<td class="parameter_description"><p>a <a class="link" href="GstGLContext.html" title="GstGLContext"><span class="type">GstGLContext</span></a></p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>data</p></td>
-<td class="parameter_description"><p>user data</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-</tbody>
-</table></div>
-</div>
</div>
<hr>
<div class="refsect2">
<a name="gst-gl-context-new"></a><h3>gst_gl_context_new ()</h3>
<pre class="programlisting"><a class="link" href="GstGLContext.html" title="GstGLContext"><span class="returnvalue">GstGLContext</span></a> *
gst_gl_context_new (<em class="parameter"><code><a class="link" href="GstGLDisplay.html" title="GstGLDisplay"><span class="type">GstGLDisplay</span></a> *display</code></em>);</pre>
-<p>Create a new <a class="link" href="GstGLContext.html" title="GstGLContext"><span class="type">GstGLContext</span></a> with the specified <em class="parameter"><code>display</code></em>
-</p>
-<div class="refsect3">
-<a name="gst-gl-context-new.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody><tr>
-<td class="parameter_name"><p>display</p></td>
-<td class="parameter_description"><p>a <a class="link" href="GstGLDisplay.html" title="GstGLDisplay"><span class="type">GstGLDisplay</span></a></p></td>
-<td class="parameter_annotations"> </td>
-</tr></tbody>
-</table></div>
-</div>
-<div class="refsect3">
-<a name="gst-gl-context-new.returns"></a><h4>Returns</h4>
-<p> a new <a class="link" href="GstGLContext.html" title="GstGLContext"><span class="type">GstGLContext</span></a></p>
-</div>
-<p class="since">Since: 1.4</p>
</div>
<hr>
<div class="refsect2">
@@ -379,47 +329,6 @@
<em class="parameter"><code><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guintptr"><span class="type">guintptr</span></a> handle</code></em>,
<em class="parameter"><code><a class="link" href="gst-plugins-bad-libs-GstGLAPI.html#GstGLPlatform" title="enum GstGLPlatform"><span class="type">GstGLPlatform</span></a> context_type</code></em>,
<em class="parameter"><code><a class="link" href="gst-plugins-bad-libs-GstGLAPI.html#GstGLAPI" title="enum GstGLAPI"><span class="type">GstGLAPI</span></a> available_apis</code></em>);</pre>
-<p>Wraps an existing OpenGL context into a <a class="link" href="GstGLContext.html" title="GstGLContext"><span class="type">GstGLContext</span></a>.</p>
-<div class="refsect3">
-<a name="gst-gl-context-new-wrapped.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="parameter_name"><p>display</p></td>
-<td class="parameter_description"><p>a <a class="link" href="GstGLDisplay.html" title="GstGLDisplay"><span class="type">GstGLDisplay</span></a></p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>handle</p></td>
-<td class="parameter_description"><p>the OpenGL context to wrap</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>context_type</p></td>
-<td class="parameter_description"><p>a <a class="link" href="gst-plugins-bad-libs-GstGLAPI.html#GstGLPlatform" title="enum GstGLPlatform"><span class="type">GstGLPlatform</span></a> specifying the type of context in <em class="parameter"><code>handle</code></em>
-</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>available_apis</p></td>
-<td class="parameter_description"><p>a <a class="link" href="gst-plugins-bad-libs-GstGLAPI.html#GstGLAPI" title="enum GstGLAPI"><span class="type">GstGLAPI</span></a> containing the available OpenGL apis in <em class="parameter"><code>handle</code></em>
-</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<div class="refsect3">
-<a name="gst-gl-context-new-wrapped.returns"></a><h4>Returns</h4>
-<p> a <a class="link" href="GstGLContext.html" title="GstGLContext"><span class="type">GstGLContext</span></a> wrapping <em class="parameter"><code>handle</code></em>
-</p>
-</div>
-<p class="since">Since: 1.4</p>
</div>
<hr>
<div class="refsect2">
@@ -428,71 +337,12 @@
gst_gl_context_create (<em class="parameter"><code><a class="link" href="GstGLContext.html" title="GstGLContext"><span class="type">GstGLContext</span></a> *context</code></em>,
<em class="parameter"><code><a class="link" href="GstGLContext.html" title="GstGLContext"><span class="type">GstGLContext</span></a> *other_context</code></em>,
<em class="parameter"><code><a href="/usr/share/gtk-doc/html/glibglib-Error-Reporting.html#GError"><span class="type">GError</span></a> **error</code></em>);</pre>
-<p>Creates an OpenGL context in the current thread with the specified
-<em class="parameter"><code>other_context</code></em>
- as a context to share shareable OpenGL objects with. See the
-OpenGL specification for what is shared between contexts.</p>
-<p>If an error occurs, and <em class="parameter"><code>error</code></em>
- is not <a href="/usr/share/gtk-doc/html/glibglib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a>, then error will contain details
-of the error and <a href="/usr/share/gtk-doc/html/glibglib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a> will be returned.</p>
-<p>Should only be called once.</p>
-<div class="refsect3">
-<a name="gst-gl-context-create.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="parameter_name"><p>context</p></td>
-<td class="parameter_description"><p>a <a class="link" href="GstGLContext.html" title="GstGLContext"><span class="type">GstGLContext</span></a>:</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>other_context</p></td>
-<td class="parameter_description"><p> a <a class="link" href="GstGLContext.html" title="GstGLContext"><span class="type">GstGLContext</span></a> to share OpenGL objects with. </p></td>
-<td class="parameter_annotations"><span class="annotation">[<acronym title="NULL is OK, both for passing and for returning."><span class="acronym">allow-none</span></acronym>]</span></td>
-</tr>
-<tr>
-<td class="parameter_name"><p>error</p></td>
-<td class="parameter_description"><p> a <a href="/usr/share/gtk-doc/html/glibglib-Error-Reporting.html#GError"><span class="type">GError</span></a>. </p></td>
-<td class="parameter_annotations"><span class="annotation">[<acronym title="NULL is OK, both for passing and for returning."><span class="acronym">allow-none</span></acronym>]</span></td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<div class="refsect3">
-<a name="gst-gl-context-create.returns"></a><h4>Returns</h4>
-<p> whether the context could successfully be created</p>
-</div>
-<p class="since">Since: 1.4</p>
</div>
<hr>
<div class="refsect2">
<a name="gst-gl-context-destroy"></a><h3>gst_gl_context_destroy ()</h3>
<pre class="programlisting"><span class="returnvalue">void</span>
gst_gl_context_destroy (<em class="parameter"><code><a class="link" href="GstGLContext.html" title="GstGLContext"><span class="type">GstGLContext</span></a> *context</code></em>);</pre>
-<p>Destroys an OpenGL context.</p>
-<p>Should only be called after <a class="link" href="GstGLContext.html#gst-gl-context-create" title="gst_gl_context_create ()"><code class="function">gst_gl_context_create()</code></a> has been successfully
-called for this context.</p>
-<div class="refsect3">
-<a name="gst-gl-context-destroy.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody><tr>
-<td class="parameter_name"><p>context</p></td>
-<td class="parameter_description"><p>a <a class="link" href="GstGLContext.html" title="GstGLContext"><span class="type">GstGLContext</span></a>:</p></td>
-<td class="parameter_annotations"> </td>
-</tr></tbody>
-</table></div>
-</div>
-<p class="since">Since: 1.6</p>
</div>
<hr>
<div class="refsect2">
@@ -500,37 +350,6 @@
<pre class="programlisting"><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
gst_gl_context_activate (<em class="parameter"><code><a class="link" href="GstGLContext.html" title="GstGLContext"><span class="type">GstGLContext</span></a> *context</code></em>,
<em class="parameter"><code><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a> activate</code></em>);</pre>
-<p>(De)activate the OpenGL context represented by this <em class="parameter"><code>context</code></em>
-.</p>
-<p>In OpenGL terms, calls eglMakeCurrent or similar with this context and the
-currently set window. See <a class="link" href="GstGLContext.html#gst-gl-context-set-window" title="gst_gl_context_set_window ()"><code class="function">gst_gl_context_set_window()</code></a> for details.</p>
-<div class="refsect3">
-<a name="gst-gl-context-activate.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="parameter_name"><p>context</p></td>
-<td class="parameter_description"><p>a <a class="link" href="GstGLContext.html" title="GstGLContext"><span class="type">GstGLContext</span></a></p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>activate</p></td>
-<td class="parameter_description"><p><a href="/usr/share/gtk-doc/html/glibglib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> to activate, <a href="/usr/share/gtk-doc/html/glibglib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a> to deactivate</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<div class="refsect3">
-<a name="gst-gl-context-activate.returns"></a><h4>Returns</h4>
-<p> Whether the activation succeeded</p>
-</div>
-<p class="since">Since: 1.4</p>
</div>
<hr>
<div class="refsect2">
@@ -546,38 +365,6 @@
<pre class="programlisting"><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gpointer"><span class="returnvalue">gpointer</span></a>
gst_gl_context_get_proc_address (<em class="parameter"><code><a class="link" href="GstGLContext.html" title="GstGLContext"><span class="type">GstGLContext</span></a> *context</code></em>,
<em class="parameter"><code>const <a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *name</code></em>);</pre>
-<p>Get a function pointer to a specified opengl function, <em class="parameter"><code>name</code></em>
-. If the the
-specific function does not exist, NULL is returned instead.</p>
-<p>Platform specfic functions (names starting 'egl', 'glX', 'wgl', etc) can also
-be retrieved using this method.</p>
-<div class="refsect3">
-<a name="gst-gl-context-get-proc-address.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="parameter_name"><p>context</p></td>
-<td class="parameter_description"><p>a <a class="link" href="GstGLContext.html" title="GstGLContext"><span class="type">GstGLContext</span></a></p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>name</p></td>
-<td class="parameter_description"><p>an opengl function name</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<div class="refsect3">
-<a name="gst-gl-context-get-proc-address.returns"></a><h4>Returns</h4>
-<p> a function pointer or NULL</p>
-</div>
-<p class="since">Since: 1.4</p>
</div>
<hr>
<div class="refsect2">
@@ -593,26 +380,6 @@
<a name="gst-gl-context-get-window"></a><h3>gst_gl_context_get_window ()</h3>
<pre class="programlisting"><a class="link" href="GstGLWindow.html" title="GstGLWindow"><span class="returnvalue">GstGLWindow</span></a> *
gst_gl_context_get_window (<em class="parameter"><code><a class="link" href="GstGLContext.html" title="GstGLContext"><span class="type">GstGLContext</span></a> *context</code></em>);</pre>
-<div class="refsect3">
-<a name="gst-gl-context-get-window.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody><tr>
-<td class="parameter_name"><p>context</p></td>
-<td class="parameter_description"><p>a <a class="link" href="GstGLContext.html" title="GstGLContext"><span class="type">GstGLContext</span></a></p></td>
-<td class="parameter_annotations"> </td>
-</tr></tbody>
-</table></div>
-</div>
-<div class="refsect3">
-<a name="gst-gl-context-get-window.returns"></a><h4>Returns</h4>
-<p> the currently set window</p>
-</div>
-<p class="since">Since: 1.4</p>
</div>
<hr>
<div class="refsect2">
@@ -620,39 +387,6 @@
<pre class="programlisting"><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
gst_gl_context_set_window (<em class="parameter"><code><a class="link" href="GstGLContext.html" title="GstGLContext"><span class="type">GstGLContext</span></a> *context</code></em>,
<em class="parameter"><code><a class="link" href="GstGLWindow.html" title="GstGLWindow"><span class="type">GstGLWindow</span></a> *window</code></em>);</pre>
-<p>Set's the current window on <em class="parameter"><code>context</code></em>
- to <em class="parameter"><code>window</code></em>
-. The window can only be
-changed before <a class="link" href="GstGLContext.html#gst-gl-context-create" title="gst_gl_context_create ()"><code class="function">gst_gl_context_create()</code></a> has been called and the <em class="parameter"><code>window</code></em>
- is not
-already running.</p>
-<div class="refsect3">
-<a name="gst-gl-context-set-window.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="parameter_name"><p>context</p></td>
-<td class="parameter_description"><p>a <a class="link" href="GstGLContext.html" title="GstGLContext"><span class="type">GstGLContext</span></a></p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>window</p></td>
-<td class="parameter_description"><p> a <a class="link" href="GstGLWindow.html" title="GstGLWindow"><span class="type">GstGLWindow</span></a>. </p></td>
-<td class="parameter_annotations"><span class="annotation">[<acronym title="Free data after the code is done."><span class="acronym">transfer full</span></acronym>]</span></td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<div class="refsect3">
-<a name="gst-gl-context-set-window.returns"></a><h4>Returns</h4>
-<p> Whether the window was successfully updated</p>
-</div>
-<p class="since">Since: 1.4</p>
</div>
<hr>
<div class="refsect2">
@@ -661,178 +395,36 @@
gst_gl_context_thread_add (<em class="parameter"><code><a class="link" href="GstGLContext.html" title="GstGLContext"><span class="type">GstGLContext</span></a> *context</code></em>,
<em class="parameter"><code><a class="link" href="GstGLContext.html#GstGLContextThreadFunc" title="GstGLContextThreadFunc ()"><span class="type">GstGLContextThreadFunc</span></a> func</code></em>,
<em class="parameter"><code><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a> data</code></em>);</pre>
-<p>Execute <em class="parameter"><code>func</code></em>
- in the OpenGL thread of <em class="parameter"><code>context</code></em>
- with <em class="parameter"><code>data</code></em>
-</p>
-<p>MT-safe</p>
-<div class="refsect3">
-<a name="gst-gl-context-thread-add.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="parameter_name"><p>context</p></td>
-<td class="parameter_description"><p>a <a class="link" href="GstGLContext.html" title="GstGLContext"><span class="type">GstGLContext</span></a></p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>func</p></td>
-<td class="parameter_description"><p>a <a class="link" href="GstGLContext.html#GstGLContextThreadFunc" title="GstGLContextThreadFunc ()"><span class="type">GstGLContextThreadFunc</span></a></p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>data</p></td>
-<td class="parameter_description"><p> user data to call <em class="parameter"><code>func</code></em>
-with. </p></td>
-<td class="parameter_annotations"><span class="annotation">[<acronym title="This parameter is a 'user_data', for callbacks; many bindings can pass NULL here."><span class="acronym">closure</span></acronym>]</span></td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<p class="since">Since: 1.4</p>
</div>
<hr>
<div class="refsect2">
<a name="gst-gl-context-get-display"></a><h3>gst_gl_context_get_display ()</h3>
<pre class="programlisting"><a class="link" href="GstGLDisplay.html" title="GstGLDisplay"><span class="returnvalue">GstGLDisplay</span></a> *
gst_gl_context_get_display (<em class="parameter"><code><a class="link" href="GstGLContext.html" title="GstGLContext"><span class="type">GstGLContext</span></a> *context</code></em>);</pre>
-<div class="refsect3">
-<a name="gst-gl-context-get-display.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody><tr>
-<td class="parameter_name"><p>context</p></td>
-<td class="parameter_description"><p>a <a class="link" href="GstGLContext.html" title="GstGLContext"><span class="type">GstGLContext</span></a>:</p></td>
-<td class="parameter_annotations"> </td>
-</tr></tbody>
-</table></div>
-</div>
-<div class="refsect3">
-<a name="gst-gl-context-get-display.returns"></a><h4>Returns</h4>
-<p> the <a class="link" href="GstGLDisplay.html" title="GstGLDisplay"><span class="type">GstGLDisplay</span></a> associated with this <em class="parameter"><code>context</code></em>
-</p>
-</div>
-<p class="since">Since: 1.4</p>
</div>
<hr>
<div class="refsect2">
<a name="gst-gl-context-get-gl-api"></a><h3>gst_gl_context_get_gl_api ()</h3>
<pre class="programlisting"><a class="link" href="gst-plugins-bad-libs-GstGLAPI.html#GstGLAPI" title="enum GstGLAPI"><span class="returnvalue">GstGLAPI</span></a>
gst_gl_context_get_gl_api (<em class="parameter"><code><a class="link" href="GstGLContext.html" title="GstGLContext"><span class="type">GstGLContext</span></a> *context</code></em>);</pre>
-<p>Get the currently enabled OpenGL api.</p>
-<p>The currently available API may be limited by the <a class="link" href="GstGLDisplay.html" title="GstGLDisplay"><span class="type">GstGLDisplay</span></a> in use and/or
-the <a class="link" href="GstGLWindow.html" title="GstGLWindow"><span class="type">GstGLWindow</span></a> chosen.</p>
-<div class="refsect3">
-<a name="gst-gl-context-get-gl-api.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody><tr>
-<td class="parameter_name"><p>context</p></td>
-<td class="parameter_description"><p>a <a class="link" href="GstGLContext.html" title="GstGLContext"><span class="type">GstGLContext</span></a></p></td>
-<td class="parameter_annotations"> </td>
-</tr></tbody>
-</table></div>
-</div>
-<div class="refsect3">
-<a name="gst-gl-context-get-gl-api.returns"></a><h4>Returns</h4>
-<p> the available OpenGL api</p>
-</div>
-<p class="since">Since: 1.4</p>
</div>
<hr>
<div class="refsect2">
<a name="gst-gl-context-get-gl-context"></a><h3>gst_gl_context_get_gl_context ()</h3>
<pre class="programlisting"><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guintptr"><span class="returnvalue">guintptr</span></a>
gst_gl_context_get_gl_context (<em class="parameter"><code><a class="link" href="GstGLContext.html" title="GstGLContext"><span class="type">GstGLContext</span></a> *context</code></em>);</pre>
-<p>Gets the backing OpenGL context used by <em class="parameter"><code>context</code></em>
-.</p>
-<div class="refsect3">
-<a name="gst-gl-context-get-gl-context.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody><tr>
-<td class="parameter_name"><p>context</p></td>
-<td class="parameter_description"><p>a <a class="link" href="GstGLContext.html" title="GstGLContext"><span class="type">GstGLContext</span></a>:</p></td>
-<td class="parameter_annotations"> </td>
-</tr></tbody>
-</table></div>
-</div>
-<div class="refsect3">
-<a name="gst-gl-context-get-gl-context.returns"></a><h4>Returns</h4>
-<p> The platform specific backing OpenGL context</p>
-</div>
-<p class="since">Since: 1.4</p>
</div>
<hr>
<div class="refsect2">
<a name="gst-gl-context-get-gl-platform"></a><h3>gst_gl_context_get_gl_platform ()</h3>
<pre class="programlisting"><a class="link" href="gst-plugins-bad-libs-GstGLAPI.html#GstGLPlatform" title="enum GstGLPlatform"><span class="returnvalue">GstGLPlatform</span></a>
gst_gl_context_get_gl_platform (<em class="parameter"><code><a class="link" href="GstGLContext.html" title="GstGLContext"><span class="type">GstGLContext</span></a> *context</code></em>);</pre>
-<p>Gets the OpenGL platform that used by <em class="parameter"><code>context</code></em>
-.</p>
-<div class="refsect3">
-<a name="gst-gl-context-get-gl-platform.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody><tr>
-<td class="parameter_name"><p>context</p></td>
-<td class="parameter_description"><p>a <a class="link" href="GstGLContext.html" title="GstGLContext"><span class="type">GstGLContext</span></a>:</p></td>
-<td class="parameter_annotations"> </td>
-</tr></tbody>
-</table></div>
-</div>
-<div class="refsect3">
-<a name="gst-gl-context-get-gl-platform.returns"></a><h4>Returns</h4>
-<p> The platform specific backing OpenGL context</p>
-</div>
-<p class="since">Since: 1.4</p>
</div>
<hr>
<div class="refsect2">
<a name="gst-gl-context-get-current-gl-context"></a><h3>gst_gl_context_get_current_gl_context ()</h3>
<pre class="programlisting"><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guintptr"><span class="returnvalue">guintptr</span></a>
gst_gl_context_get_current_gl_context (<em class="parameter"><code><a class="link" href="gst-plugins-bad-libs-GstGLAPI.html#GstGLPlatform" title="enum GstGLPlatform"><span class="type">GstGLPlatform</span></a> context_type</code></em>);</pre>
-<div class="refsect3">
-<a name="gst-gl-context-get-current-gl-context.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody><tr>
-<td class="parameter_name"><p>context_type</p></td>
-<td class="parameter_description"><p>a <a class="link" href="gst-plugins-bad-libs-GstGLAPI.html#GstGLPlatform" title="enum GstGLPlatform"><span class="type">GstGLPlatform</span></a> specifying the type of context to retrieve</p></td>
-<td class="parameter_annotations"> </td>
-</tr></tbody>
-</table></div>
-</div>
-<div class="refsect3">
-<a name="gst-gl-context-get-current-gl-context.returns"></a><h4>Returns</h4>
-<p> The OpenGL context handle current in the calling thread or <a href="/usr/share/gtk-doc/html/glibglib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a></p>
-</div>
-<p class="since">Since: 1.6</p>
</div>
<hr>
<div class="refsect2">
@@ -841,71 +433,12 @@
gst_gl_context_get_current_gl_api (<em class="parameter"><code><a class="link" href="gst-plugins-bad-libs-GstGLAPI.html#GstGLPlatform" title="enum GstGLPlatform"><span class="type">GstGLPlatform</span></a> platform</code></em>,
<em class="parameter"><code><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint"><span class="type">guint</span></a> *major</code></em>,
<em class="parameter"><code><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint"><span class="type">guint</span></a> *minor</code></em>);</pre>
-<p>If an error occurs, <em class="parameter"><code>major</code></em>
- and <em class="parameter"><code>minor</code></em>
- aren't modified and <a class="link" href="gst-plugins-bad-libs-GstGLAPI.html#GST-GL-API-NONE:CAPS"><code class="literal">GST_GL_API_NONE</code></a> is
-returned.</p>
-<div class="refsect3">
-<a name="gst-gl-context-get-current-gl-api.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="parameter_name"><p>platform</p></td>
-<td class="parameter_description"><p>the <a class="link" href="gst-plugins-bad-libs-GstGLAPI.html#GstGLPlatform" title="enum GstGLPlatform"><span class="type">GstGLPlatform</span></a> to retrieve the API for</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>major</p></td>
-<td class="parameter_description"><p> (allow-none): the major version. </p></td>
-<td class="parameter_annotations"><span class="annotation">[<acronym title="Parameter for returning results. Default is transfer full."><span class="acronym">out</span></acronym>]</span></td>
-</tr>
-<tr>
-<td class="parameter_name"><p>minor</p></td>
-<td class="parameter_description"><p> (allow-none): the minor version. </p></td>
-<td class="parameter_annotations"><span class="annotation">[<acronym title="Parameter for returning results. Default is transfer full."><span class="acronym">out</span></acronym>]</span></td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<div class="refsect3">
-<a name="gst-gl-context-get-current-gl-api.returns"></a><h4>Returns</h4>
-<p> The version supported by the OpenGL context current in the calling
-thread or <a class="link" href="gst-plugins-bad-libs-GstGLAPI.html#GST-GL-API-NONE:CAPS"><code class="literal">GST_GL_API_NONE</code></a></p>
-</div>
-<p class="since">Since: 1.6</p>
</div>
<hr>
<div class="refsect2">
<a name="gst-gl-context-get-thread"></a><h3>gst_gl_context_get_thread ()</h3>
<pre class="programlisting"><a href="/usr/share/gtk-doc/html/glibglib-Threads.html#GThread"><span class="returnvalue">GThread</span></a> *
gst_gl_context_get_thread (<em class="parameter"><code><a class="link" href="GstGLContext.html" title="GstGLContext"><span class="type">GstGLContext</span></a> *context</code></em>);</pre>
-<div class="refsect3">
-<a name="gst-gl-context-get-thread.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody><tr>
-<td class="parameter_name"><p>context</p></td>
-<td class="parameter_description"><p>a <a class="link" href="GstGLContext.html" title="GstGLContext"><span class="type">GstGLContext</span></a></p></td>
-<td class="parameter_annotations"> </td>
-</tr></tbody>
-</table></div>
-</div>
-<div class="refsect3">
-<a name="gst-gl-context-get-thread.returns"></a><h4>Returns</h4>
-<p> The <a href="/usr/share/gtk-doc/html/glibglib-Threads.html#GThread"><span class="type">GThread</span></a>, <em class="parameter"><code>context</code></em>
-is current in or NULL. </p>
-<p><span class="annotation">[<acronym title="Free data after the code is done."><span class="acronym">transfer full</span></acronym>]</span></p>
-</div>
-<p class="since">Since: 1.6</p>
</div>
<hr>
<div class="refsect2">
@@ -913,63 +446,12 @@
<pre class="programlisting"><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
gst_gl_context_can_share (<em class="parameter"><code><a class="link" href="GstGLContext.html" title="GstGLContext"><span class="type">GstGLContext</span></a> *context</code></em>,
<em class="parameter"><code><a class="link" href="GstGLContext.html" title="GstGLContext"><span class="type">GstGLContext</span></a> *other_context</code></em>);</pre>
-<p>Note: This will always fail for two wrapped <a class="link" href="GstGLContext.html" title="GstGLContext"><span class="type">GstGLContext</span></a>'s</p>
-<div class="refsect3">
-<a name="gst-gl-context-can-share.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="parameter_name"><p>context</p></td>
-<td class="parameter_description"><p>a <a class="link" href="GstGLContext.html" title="GstGLContext"><span class="type">GstGLContext</span></a></p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>other_context</p></td>
-<td class="parameter_description"><p>another <a class="link" href="GstGLContext.html" title="GstGLContext"><span class="type">GstGLContext</span></a></p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<div class="refsect3">
-<a name="gst-gl-context-can-share.returns"></a><h4>Returns</h4>
-<p> whether <em class="parameter"><code>context</code></em>
-and <em class="parameter"><code>other_context</code></em>
-are able to share OpenGL
-resources.</p>
-</div>
-<p class="since">Since: 1.6</p>
</div>
<hr>
<div class="refsect2">
<a name="gst-gl-context-is-shared"></a><h3>gst_gl_context_is_shared ()</h3>
<pre class="programlisting"><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
gst_gl_context_is_shared (<em class="parameter"><code><a class="link" href="GstGLContext.html" title="GstGLContext"><span class="type">GstGLContext</span></a> *context</code></em>);</pre>
-<div class="refsect3">
-<a name="gst-gl-context-is-shared.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody><tr>
-<td class="parameter_name"><p>context</p></td>
-<td class="parameter_description"><p>a <a class="link" href="GstGLContext.html" title="GstGLContext"><span class="type">GstGLContext</span></a></p></td>
-<td class="parameter_annotations"> </td>
-</tr></tbody>
-</table></div>
-</div>
-<div class="refsect3">
-<a name="gst-gl-context-is-shared.returns"></a><h4>Returns</h4>
-<p> Whether the <a class="link" href="GstGLContext.html" title="GstGLContext"><span class="type">GstGLContext</span></a> has been shared with another <a class="link" href="GstGLContext.html" title="GstGLContext"><span class="type">GstGLContext</span></a></p>
-</div>
-<p class="since">Since: 1.8</p>
</div>
<hr>
<div class="refsect2">
@@ -977,32 +459,6 @@
<pre class="programlisting"><span class="returnvalue">void</span>
gst_gl_context_set_shared_with (<em class="parameter"><code><a class="link" href="GstGLContext.html" title="GstGLContext"><span class="type">GstGLContext</span></a> *context</code></em>,
<em class="parameter"><code><a class="link" href="GstGLContext.html" title="GstGLContext"><span class="type">GstGLContext</span></a> *share</code></em>);</pre>
-<p>Will internally set <em class="parameter"><code>context</code></em>
- as shared with <em class="parameter"><code>share</code></em>
-</p>
-<div class="refsect3">
-<a name="gst-gl-context-set-shared-with.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="parameter_name"><p>context</p></td>
-<td class="parameter_description"><p>a wrapped <a class="link" href="GstGLContext.html" title="GstGLContext"><span class="type">GstGLContext</span></a></p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>share</p></td>
-<td class="parameter_description"><p>another <a class="link" href="GstGLContext.html" title="GstGLContext"><span class="type">GstGLContext</span></a></p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<p class="since">Since: 1.8</p>
</div>
<hr>
<div class="refsect2">
@@ -1010,37 +466,6 @@
<pre class="programlisting"><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
gst_gl_context_check_feature (<em class="parameter"><code><a class="link" href="GstGLContext.html" title="GstGLContext"><span class="type">GstGLContext</span></a> *context</code></em>,
<em class="parameter"><code>const <a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *feature</code></em>);</pre>
-<p>Some features require that the context be created before it is possible to
-determine their existence and so will fail if that is not the case.</p>
-<div class="refsect3">
-<a name="gst-gl-context-check-feature.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="parameter_name"><p>context</p></td>
-<td class="parameter_description"><p>a <a class="link" href="GstGLContext.html" title="GstGLContext"><span class="type">GstGLContext</span></a></p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>feature</p></td>
-<td class="parameter_description"><p>a platform specific feature</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<div class="refsect3">
-<a name="gst-gl-context-check-feature.returns"></a><h4>Returns</h4>
-<p> Whether <em class="parameter"><code>feature</code></em>
-is supported by <em class="parameter"><code>context</code></em>
-</p>
-</div>
-<p class="since">Since: 1.4</p>
</div>
<hr>
<div class="refsect2">
@@ -1050,44 +475,6 @@
<em class="parameter"><code><a class="link" href="gst-plugins-bad-libs-GstGLAPI.html#GstGLAPI" title="enum GstGLAPI"><span class="type">GstGLAPI</span></a> api</code></em>,
<em class="parameter"><code><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gint"><span class="type">gint</span></a> maj</code></em>,
<em class="parameter"><code><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gint"><span class="type">gint</span></a> min</code></em>);</pre>
-<div class="refsect3">
-<a name="gst-gl-context-check-gl-version.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="parameter_name"><p>context</p></td>
-<td class="parameter_description"><p>a <a class="link" href="GstGLContext.html" title="GstGLContext"><span class="type">GstGLContext</span></a></p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>api</p></td>
-<td class="parameter_description"><p>api type required</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>maj</p></td>
-<td class="parameter_description"><p>major version required</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>min</p></td>
-<td class="parameter_description"><p>minor version required</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<div class="refsect3">
-<a name="gst-gl-context-check-gl-version.returns"></a><h4>Returns</h4>
-<p> whether OpenGL context implements the required api and specified
-version.</p>
-</div>
-<p class="since">Since: 1.4</p>
</div>
<hr>
<div class="refsect2">
@@ -1096,39 +483,6 @@
gst_gl_context_get_gl_version (<em class="parameter"><code><a class="link" href="GstGLContext.html" title="GstGLContext"><span class="type">GstGLContext</span></a> *context</code></em>,
<em class="parameter"><code><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gint"><span class="type">gint</span></a> *maj</code></em>,
<em class="parameter"><code><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gint"><span class="type">gint</span></a> *min</code></em>);</pre>
-<p>Returns the OpenGL version implemented by <em class="parameter"><code>context</code></em>
-. See
-<a class="link" href="GstGLContext.html#gst-gl-context-get-gl-api" title="gst_gl_context_get_gl_api ()"><code class="function">gst_gl_context_get_gl_api()</code></a> for retreiving the OpenGL api implemented by
-<em class="parameter"><code>context</code></em>
-.</p>
-<div class="refsect3">
-<a name="gst-gl-context-get-gl-version.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="parameter_name"><p>context</p></td>
-<td class="parameter_description"><p>a <a class="link" href="GstGLContext.html" title="GstGLContext"><span class="type">GstGLContext</span></a></p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>maj</p></td>
-<td class="parameter_description"><p> resulting major version. </p></td>
-<td class="parameter_annotations"><span class="annotation">[<acronym title="Parameter for returning results. Default is transfer full."><span class="acronym">out</span></acronym>]</span></td>
-</tr>
-<tr>
-<td class="parameter_name"><p>min</p></td>
-<td class="parameter_description"><p> resulting minor version. </p></td>
-<td class="parameter_annotations"><span class="annotation">[<acronym title="Parameter for returning results. Default is transfer full."><span class="acronym">out</span></acronym>]</span></td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<p class="since">Since: 1.4</p>
</div>
<hr>
<div class="refsect2">
@@ -1136,38 +490,12 @@
<pre class="programlisting"><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
gst_gl_context_fill_info (<em class="parameter"><code><a class="link" href="GstGLContext.html" title="GstGLContext"><span class="type">GstGLContext</span></a> *context</code></em>,
<em class="parameter"><code><a href="/usr/share/gtk-doc/html/glibglib-Error-Reporting.html#GError"><span class="type">GError</span></a> **error</code></em>);</pre>
-<p>Fills <em class="parameter"><code>context</code></em>
-'s info (version, extensions, vtable, etc) from the GL
-context in the current thread. Typically used with wrapped contexts to
-allow wrapped contexts to be used as regular <a class="link" href="GstGLContext.html" title="GstGLContext"><span class="type">GstGLContext</span></a>'s.</p>
-<div class="refsect3">
-<a name="gst-gl-context-fill-info.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody><tr>
-<td class="parameter_name"><p>context</p></td>
-<td class="parameter_description"><p>a <a class="link" href="GstGLContext.html" title="GstGLContext"><span class="type">GstGLContext</span></a>:</p></td>
-<td class="parameter_annotations"> </td>
-</tr></tbody>
-</table></div>
-</div>
-<p class="since">Since: 1.6</p>
</div>
<hr>
<div class="refsect2">
<a name="gst-gl-context-get-current"></a><h3>gst_gl_context_get_current ()</h3>
<pre class="programlisting"><a class="link" href="GstGLContext.html" title="GstGLContext"><span class="returnvalue">GstGLContext</span></a> *
gst_gl_context_get_current (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
-<p>See also <a class="link" href="GstGLContext.html#gst-gl-context-activate" title="gst_gl_context_activate ()"><code class="function">gst_gl_context_activate()</code></a>.</p>
-<div class="refsect3">
-<a name="gst-gl-context-get-current.returns"></a><h4>Returns</h4>
-<p> the <a class="link" href="GstGLContext.html" title="GstGLContext"><span class="type">GstGLContext</span></a> active in the current thread or <a href="/usr/share/gtk-doc/html/glibglib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a></p>
-</div>
-<p class="since">Since: 1.6</p>
</div>
</div>
<div class="refsect1">
@@ -1227,13 +555,8 @@
<div class="refsect2">
<a name="GstGLContext-struct"></a><h3>GstGLContext</h3>
<pre class="programlisting">typedef struct _GstGLContext GstGLContext;</pre>
-<p>Opaque <a class="link" href="GstGLContext.html" title="GstGLContext"><span class="type">GstGLContext</span></a> object</p>
</div>
</div>
-<div class="refsect1">
-<a name="GstGLContext.see-also"></a><h2>See Also</h2>
-<p><a class="link" href="GstGLDisplay.html" title="GstGLDisplay"><span class="type">GstGLDisplay</span></a>, <a class="link" href="GstGLWindow.html" title="GstGLWindow"><span class="type">GstGLWindow</span></a></p>
-</div>
</div>
<div class="footer">
<hr>Generated by GTK-Doc V1.25</div>
diff --git a/docs/libs/html/GstGLDisplay.html b/docs/libs/html/GstGLDisplay.html
index 77eb76b..c567285 100644
--- a/docs/libs/html/GstGLDisplay.html
+++ b/docs/libs/html/GstGLDisplay.html
@@ -29,7 +29,7 @@
<div class="refnamediv"><table width="100%"><tr>
<td valign="top">
<h2><span class="refentrytitle"><a name="GstGLDisplay.top_of_page"></a>GstGLDisplay</span></h2>
-<p>GstGLDisplay — window system display connection abstraction</p>
+<p>GstGLDisplay</p>
</td>
<td class="gallery_image" valign="top" align="right"></td>
</tr></table></div>
@@ -173,26 +173,6 @@
</div>
<div class="refsect1">
<a name="GstGLDisplay.description"></a><h2>Description</h2>
-<p><a class="link" href="GstGLDisplay.html" title="GstGLDisplay"><span class="type">GstGLDisplay</span></a> represents a connection to the underlying windowing system.
-Elements are required to make use of <a href="/usr/share/gtk-doc/html/gstreamer-1.0GstContext.html#GstContext-struct"><span class="type">GstContext</span></a> to share and propogate
-a <a class="link" href="GstGLDisplay.html" title="GstGLDisplay"><span class="type">GstGLDisplay</span></a>.</p>
-<p>There are a number of environment variables that influence the choice of
-platform and window system specific functionality.</p>
-<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
-<li class="listitem"><p>GST_GL_WINDOW influences the window system to use. Common values are
-'x11', 'wayland', 'win32' or 'cocoa'.</p></li>
-<li class="listitem"><p>GST_GL_PLATFORM influences the OpenGL platform to use. Common values are
-'egl', 'glx', 'wgl' or 'cgl'.</p></li>
-<li class="listitem"><p>GST_GL_API influences the OpenGL API requested by the OpenGL platform.
-Common values are 'opengl' and 'gles2'.</p></li>
-</ul></div>
-<div class="note">Certain window systems require a special function to be called to
-initialize threading support. As this GStreamer GL library does not preclude
-concurrent access to the windowing system, it is strongly advised that
-applications ensure that threading support has been initialized before any
-other toolkit/library functionality is accessed. Failure to do so could
-result in sudden application abortion during execution. The most notably
-example of such a function is X11's <code class="function">XInitThreads()</code>.</div>
</div>
<div class="refsect1">
<a name="GstGLDisplay.functions_details"></a><h2>Functions</h2>
@@ -200,39 +180,12 @@
<a name="gst-gl-display-new"></a><h3>gst_gl_display_new ()</h3>
<pre class="programlisting"><a class="link" href="GstGLDisplay.html" title="GstGLDisplay"><span class="returnvalue">GstGLDisplay</span></a> *
gst_gl_display_new (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
-<div class="refsect3">
-<a name="gst-gl-display-new.returns"></a><h4>Returns</h4>
-<p> a new <a class="link" href="GstGLDisplay.html" title="GstGLDisplay"><span class="type">GstGLDisplay</span></a>. </p>
-<p><span class="annotation">[<acronym title="Free data after the code is done."><span class="acronym">transfer full</span></acronym>]</span></p>
-</div>
-<p class="since">Since: 1.4</p>
</div>
<hr>
<div class="refsect2">
<a name="gst-gl-display-get-handle-type"></a><h3>gst_gl_display_get_handle_type ()</h3>
<pre class="programlisting"><a class="link" href="GstGLDisplay.html#GstGLDisplayType" title="enum GstGLDisplayType"><span class="returnvalue">GstGLDisplayType</span></a>
gst_gl_display_get_handle_type (<em class="parameter"><code><a class="link" href="GstGLDisplay.html" title="GstGLDisplay"><span class="type">GstGLDisplay</span></a> *display</code></em>);</pre>
-<div class="refsect3">
-<a name="gst-gl-display-get-handle-type.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody><tr>
-<td class="parameter_name"><p>display</p></td>
-<td class="parameter_description"><p>a <a class="link" href="GstGLDisplay.html" title="GstGLDisplay"><span class="type">GstGLDisplay</span></a></p></td>
-<td class="parameter_annotations"> </td>
-</tr></tbody>
-</table></div>
-</div>
-<div class="refsect3">
-<a name="gst-gl-display-get-handle-type.returns"></a><h4>Returns</h4>
-<p> the <a class="link" href="GstGLDisplay.html#GstGLDisplayType" title="enum GstGLDisplayType"><span class="type">GstGLDisplayType</span></a> of <em class="parameter"><code>display</code></em>
-</p>
-</div>
-<p class="since">Since: 1.4</p>
</div>
<hr>
<div class="refsect2">
@@ -240,60 +193,12 @@
<pre class="programlisting"><span class="returnvalue">void</span>
gst_gl_display_filter_gl_api (<em class="parameter"><code><a class="link" href="GstGLDisplay.html" title="GstGLDisplay"><span class="type">GstGLDisplay</span></a> *display</code></em>,
<em class="parameter"><code><a class="link" href="gst-plugins-bad-libs-GstGLAPI.html#GstGLAPI" title="enum GstGLAPI"><span class="type">GstGLAPI</span></a> gl_api</code></em>);</pre>
-<p>limit the use of OpenGL to the requested <em class="parameter"><code>gl_api</code></em>
-. This is intended to allow
-application and elements to request a specific set of OpenGL API's based on
-what they support. See <a class="link" href="GstGLContext.html#gst-gl-context-get-gl-api" title="gst_gl_context_get_gl_api ()"><code class="function">gst_gl_context_get_gl_api()</code></a> for the retreiving the
-API supported by a <a class="link" href="GstGLContext.html" title="GstGLContext"><span class="type">GstGLContext</span></a>.</p>
-<div class="refsect3">
-<a name="gst-gl-display-filter-gl-api.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="parameter_name"><p>display</p></td>
-<td class="parameter_description"><p>a <a class="link" href="GstGLDisplay.html" title="GstGLDisplay"><span class="type">GstGLDisplay</span></a></p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>gl_api</p></td>
-<td class="parameter_description"><p>a <a class="link" href="gst-plugins-bad-libs-GstGLAPI.html#GstGLAPI" title="enum GstGLAPI"><span class="type">GstGLAPI</span></a> to filter with</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-</tbody>
-</table></div>
-</div>
</div>
<hr>
<div class="refsect2">
<a name="gst-gl-display-get-gl-api"></a><h3>gst_gl_display_get_gl_api ()</h3>
<pre class="programlisting"><a class="link" href="gst-plugins-bad-libs-GstGLAPI.html#GstGLAPI" title="enum GstGLAPI"><span class="returnvalue">GstGLAPI</span></a>
gst_gl_display_get_gl_api (<em class="parameter"><code><a class="link" href="GstGLDisplay.html" title="GstGLDisplay"><span class="type">GstGLDisplay</span></a> *display</code></em>);</pre>
-<p>see <a class="link" href="GstGLDisplay.html#gst-gl-display-filter-gl-api" title="gst_gl_display_filter_gl_api ()"><code class="function">gst_gl_display_filter_gl_api()</code></a> for what the returned value represents</p>
-<div class="refsect3">
-<a name="gst-gl-display-get-gl-api.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody><tr>
-<td class="parameter_name"><p>display</p></td>
-<td class="parameter_description"><p>a <a class="link" href="GstGLDisplay.html" title="GstGLDisplay"><span class="type">GstGLDisplay</span></a></p></td>
-<td class="parameter_annotations"> </td>
-</tr></tbody>
-</table></div>
-</div>
-<div class="refsect3">
-<a name="gst-gl-display-get-gl-api.returns"></a><h4>Returns</h4>
-<p> the <a class="link" href="gst-plugins-bad-libs-GstGLAPI.html#GstGLAPI" title="enum GstGLAPI"><span class="type">GstGLAPI</span></a> configured for <em class="parameter"><code>display</code></em>
-</p>
-</div>
</div>
<hr>
<div class="refsect2">
@@ -301,37 +206,6 @@
<pre class="programlisting"><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
gst_gl_display_add_context (<em class="parameter"><code><a class="link" href="GstGLDisplay.html" title="GstGLDisplay"><span class="type">GstGLDisplay</span></a> *display</code></em>,
<em class="parameter"><code><a class="link" href="GstGLContext.html" title="GstGLContext"><span class="type">GstGLContext</span></a> *context</code></em>);</pre>
-<div class="refsect3">
-<a name="gst-gl-display-add-context.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="parameter_name"><p>display</p></td>
-<td class="parameter_description"><p>a <a class="link" href="GstGLDisplay.html" title="GstGLDisplay"><span class="type">GstGLDisplay</span></a></p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>context</p></td>
-<td class="parameter_description"><p> a <a class="link" href="GstGLContext.html" title="GstGLContext"><span class="type">GstGLContext</span></a>. </p></td>
-<td class="parameter_annotations"><span class="annotation">[<acronym title="Don't free data after the code is done."><span class="acronym">transfer none</span></acronym>]</span></td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<div class="refsect3">
-<a name="gst-gl-display-add-context.returns"></a><h4>Returns</h4>
-<p> whether <em class="parameter"><code>context</code></em>
-was successfully added. <a href="/usr/share/gtk-doc/html/glibglib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a> may be returned
-if there already exists another context for <em class="parameter"><code>context</code></em>
-'s active thread.</p>
-<p>Must be called with the object lock held.</p>
-</div>
-<p class="since">Since: 1.6</p>
</div>
<hr>
<div class="refsect2">
@@ -340,36 +214,6 @@
gst_gl_display_get_gl_context_for_thread
(<em class="parameter"><code><a class="link" href="GstGLDisplay.html" title="GstGLDisplay"><span class="type">GstGLDisplay</span></a> *display</code></em>,
<em class="parameter"><code><a href="/usr/share/gtk-doc/html/glibglib-Threads.html#GThread"><span class="type">GThread</span></a> *thread</code></em>);</pre>
-<div class="refsect3">
-<a name="gst-gl-display-get-gl-context-for-thread.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="parameter_name"><p>display</p></td>
-<td class="parameter_description"><p>a <a class="link" href="GstGLDisplay.html" title="GstGLDisplay"><span class="type">GstGLDisplay</span></a></p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>thread</p></td>
-<td class="parameter_description"><p>a <a href="/usr/share/gtk-doc/html/glibglib-Threads.html#GThread"><span class="type">GThread</span></a></p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<div class="refsect3">
-<a name="gst-gl-display-get-gl-context-for-thread.returns"></a><h4>Returns</h4>
-<p> the <a class="link" href="GstGLContext.html" title="GstGLContext"><span class="type">GstGLContext</span></a> current on <em class="parameter"><code>thread</code></em>
-or <a href="/usr/share/gtk-doc/html/glibglib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a></p>
-<p>Must be called with the object lock held. </p>
-<p><span class="annotation">[<acronym title="Free data after the code is done."><span class="acronym">transfer full</span></acronym>]</span></p>
-</div>
-<p class="since">Since: 1.6</p>
</div>
<hr>
<div class="refsect2">
@@ -385,44 +229,6 @@
<em class="parameter"><code><a class="link" href="GstGLContext.html" title="GstGLContext"><span class="type">GstGLContext</span></a> *other_context</code></em>,
<em class="parameter"><code><a class="link" href="GstGLContext.html" title="GstGLContext"><span class="type">GstGLContext</span></a> **p_context</code></em>,
<em class="parameter"><code><a href="/usr/share/gtk-doc/html/glibglib-Error-Reporting.html#GError"><span class="type">GError</span></a> **error</code></em>);</pre>
-<p>It requires the display's object lock to be held.</p>
-<div class="refsect3">
-<a name="gst-gl-display-create-context.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="parameter_name"><p>display</p></td>
-<td class="parameter_description"><p>a <a class="link" href="GstGLDisplay.html" title="GstGLDisplay"><span class="type">GstGLDisplay</span></a></p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>other_context</p></td>
-<td class="parameter_description"><p>other <a class="link" href="GstGLContext.html" title="GstGLContext"><span class="type">GstGLContext</span></a> to share resources with.</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>p_context</p></td>
-<td class="parameter_description"><p>resulting <a class="link" href="GstGLContext.html" title="GstGLContext"><span class="type">GstGLContext</span></a></p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>error</p></td>
-<td class="parameter_description"><p>resulting <a href="/usr/share/gtk-doc/html/glibglib-Error-Reporting.html#GError"><span class="type">GError</span></a></p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<div class="refsect3">
-<a name="gst-gl-display-create-context.returns"></a><h4>Returns</h4>
-<p> whether a new context could be created.</p>
-</div>
-<p class="since">Since: 1.6</p>
</div>
<hr>
<div class="refsect2">
@@ -430,35 +236,6 @@
<pre class="programlisting"><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
gst_context_get_gl_display (<em class="parameter"><code><a href="/usr/share/gtk-doc/html/gstreamer-1.0GstContext.html#GstContext-struct"><span class="type">GstContext</span></a> *context</code></em>,
<em class="parameter"><code><a class="link" href="GstGLDisplay.html" title="GstGLDisplay"><span class="type">GstGLDisplay</span></a> **display</code></em>);</pre>
-<div class="refsect3">
-<a name="gst-context-get-gl-display.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="parameter_name"><p>context</p></td>
-<td class="parameter_description"><p>a <a href="/usr/share/gtk-doc/html/gstreamer-1.0GstContext.html#GstContext-struct"><span class="type">GstContext</span></a></p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>display</p></td>
-<td class="parameter_description"><p>resulting <a class="link" href="GstGLDisplay.html" title="GstGLDisplay"><span class="type">GstGLDisplay</span></a></p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<div class="refsect3">
-<a name="gst-context-get-gl-display.returns"></a><h4>Returns</h4>
-<p> Whether <em class="parameter"><code>display</code></em>
-was in <em class="parameter"><code>context</code></em>
-</p>
-</div>
-<p class="since">Since: 1.4</p>
</div>
<hr>
<div class="refsect2">
@@ -466,32 +243,6 @@
<pre class="programlisting"><span class="returnvalue">void</span>
gst_context_set_gl_display (<em class="parameter"><code><a href="/usr/share/gtk-doc/html/gstreamer-1.0GstContext.html#GstContext-struct"><span class="type">GstContext</span></a> *context</code></em>,
<em class="parameter"><code><a class="link" href="GstGLDisplay.html" title="GstGLDisplay"><span class="type">GstGLDisplay</span></a> *display</code></em>);</pre>
-<p>Sets <em class="parameter"><code>display</code></em>
- on <em class="parameter"><code>context</code></em>
-</p>
-<div class="refsect3">
-<a name="gst-context-set-gl-display.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="parameter_name"><p>context</p></td>
-<td class="parameter_description"><p>a <a href="/usr/share/gtk-doc/html/gstreamer-1.0GstContext.html#GstContext-struct"><span class="type">GstContext</span></a></p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>display</p></td>
-<td class="parameter_description"><p>resulting <a class="link" href="GstGLDisplay.html" title="GstGLDisplay"><span class="type">GstGLDisplay</span></a></p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<p class="since">Since: 1.4</p>
</div>
</div>
<div class="refsect1">
@@ -515,59 +266,43 @@
<tbody>
<tr>
<td class="enum_member_name"><p><a name="GST-GL-DISPLAY-TYPE-NONE:CAPS"></a>GST_GL_DISPLAY_TYPE_NONE</p></td>
-<td class="enum_member_description">
-<p>no display type</p>
-</td>
-<td class="enum_member_annotations"> </td>
+<td> </td>
+<td> </td>
</tr>
<tr>
<td class="enum_member_name"><p><a name="GST-GL-DISPLAY-TYPE-X11:CAPS"></a>GST_GL_DISPLAY_TYPE_X11</p></td>
-<td class="enum_member_description">
-<p>X11 display</p>
-</td>
-<td class="enum_member_annotations"> </td>
+<td> </td>
+<td> </td>
</tr>
<tr>
<td class="enum_member_name"><p><a name="GST-GL-DISPLAY-TYPE-WAYLAND:CAPS"></a>GST_GL_DISPLAY_TYPE_WAYLAND</p></td>
-<td class="enum_member_description">
-<p>Wayland display</p>
-</td>
-<td class="enum_member_annotations"> </td>
+<td> </td>
+<td> </td>
</tr>
<tr>
<td class="enum_member_name"><p><a name="GST-GL-DISPLAY-TYPE-COCOA:CAPS"></a>GST_GL_DISPLAY_TYPE_COCOA</p></td>
-<td class="enum_member_description">
-<p>Cocoa display</p>
-</td>
-<td class="enum_member_annotations"> </td>
+<td> </td>
+<td> </td>
</tr>
<tr>
<td class="enum_member_name"><p><a name="GST-GL-DISPLAY-TYPE-WIN32:CAPS"></a>GST_GL_DISPLAY_TYPE_WIN32</p></td>
-<td class="enum_member_description">
-<p>Win32 display</p>
-</td>
-<td class="enum_member_annotations"> </td>
+<td> </td>
+<td> </td>
</tr>
<tr>
<td class="enum_member_name"><p><a name="GST-GL-DISPLAY-TYPE-DISPMANX:CAPS"></a>GST_GL_DISPLAY_TYPE_DISPMANX</p></td>
-<td class="enum_member_description">
-<p>Dispmanx display</p>
-</td>
-<td class="enum_member_annotations"> </td>
+<td> </td>
+<td> </td>
</tr>
<tr>
<td class="enum_member_name"><p><a name="GST-GL-DISPLAY-TYPE-EGL:CAPS"></a>GST_GL_DISPLAY_TYPE_EGL</p></td>
-<td class="enum_member_description">
-<p>EGL display</p>
-</td>
-<td class="enum_member_annotations"> </td>
+<td> </td>
+<td> </td>
</tr>
<tr>
<td class="enum_member_name"><p><a name="GST-GL-DISPLAY-TYPE-ANY:CAPS"></a>GST_GL_DISPLAY_TYPE_ANY</p></td>
-<td class="enum_member_description">
-<p>any display type</p>
-</td>
-<td class="enum_member_annotations"> </td>
+<td> </td>
+<td> </td>
</tr>
</tbody>
</table></div>
@@ -577,8 +312,6 @@
<div class="refsect2">
<a name="GstGLDisplay-struct"></a><h3>GstGLDisplay</h3>
<pre class="programlisting">typedef struct _GstGLDisplay GstGLDisplay;</pre>
-<p>The contents of a <a class="link" href="GstGLDisplay.html" title="GstGLDisplay"><span class="type">GstGLDisplay</span></a> are private and should only be accessed
-through the provided API</p>
</div>
</div>
<div class="refsect1">
@@ -586,51 +319,12 @@
<div class="refsect2">
<a name="GstGLDisplay-create-context"></a><h3>The <code class="literal">“create-context”</code> signal</h3>
<pre class="programlisting"><a class="link" href="GstGLContext.html" title="GstGLContext"><span class="returnvalue">GstGLContext</span></a>*
-user_function (<a class="link" href="GstGLDisplay.html" title="GstGLDisplay"><span class="type">GstGLDisplay</span></a> *object,
- <a class="link" href="GstGLContext.html" title="GstGLContext"><span class="type">GstGLContext</span></a> *context,
+user_function (<a class="link" href="GstGLDisplay.html" title="GstGLDisplay"><span class="type">GstGLDisplay</span></a> *gstgldisplay,
+ <a class="link" href="GstGLContext.html" title="GstGLContext"><span class="type">GstGLContext</span></a> *arg1,
<a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a> user_data)</pre>
-<p>Overrides the <em class="parameter"><code>GstGLContext</code></em>
- creation mechanism.
-It can be called in any thread and it is emitted with
-display's object lock held.</p>
-<div class="refsect3">
-<a name="GstGLDisplay-create-context.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="parameter_name"><p>object</p></td>
-<td class="parameter_description"><p>the <a class="link" href="GstGLDisplay.html" title="GstGLDisplay"><span class="type">GstGLDisplay</span></a></p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>context</p></td>
-<td class="parameter_description"><p>other context to share resources with.</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>user_data</p></td>
-<td class="parameter_description"><p>user data set when the signal handler was connected.</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<div class="refsect3">
-<a name="GstGLDisplay-create-context.returns"></a><h4>Returns</h4>
-<p> the new context.</p>
-</div>
<p>Flags: <a href="/usr/share/gtk-doc/html/gobjectgobject-Signals.html#G-SIGNAL-RUN-LAST:CAPS">Run Last</a></p>
</div>
</div>
-<div class="refsect1">
-<a name="GstGLDisplay.see-also"></a><h2>See Also</h2>
-<p><a href="/usr/share/gtk-doc/html/gstreamer-1.0GstContext.html#GstContext-struct"><span class="type">GstContext</span></a>, <a class="link" href="GstGLContext.html" title="GstGLContext"><span class="type">GstGLContext</span></a>, <a class="link" href="GstGLWindow.html" title="GstGLWindow"><span class="type">GstGLWindow</span></a></p>
-</div>
</div>
<div class="footer">
<hr>Generated by GTK-Doc V1.25</div>
diff --git a/docs/libs/html/GstGLFilter.html b/docs/libs/html/GstGLFilter.html
index 5915661..8d88e45 100644
--- a/docs/libs/html/GstGLFilter.html
+++ b/docs/libs/html/GstGLFilter.html
@@ -117,43 +117,6 @@
<em class="parameter"><code><span class="type">GLuint</span> texture</code></em>,
<em class="parameter"><code><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint"><span class="type">guint</span></a> width</code></em>,
<em class="parameter"><code><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint"><span class="type">guint</span></a> height</code></em>);</pre>
-<p>Draws <em class="parameter"><code>texture</code></em>
- into the OpenGL scene at the specified <em class="parameter"><code>width</code></em>
- and <em class="parameter"><code>height</code></em>
-.</p>
-<div class="refsect3">
-<a name="gst-gl-filter-draw-texture.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="parameter_name"><p>filter</p></td>
-<td class="parameter_description"><p>a <a class="link" href="GstGLFilter.html" title="GstGLFilter"><span class="type">GstGLFilter</span></a></p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>texture</p></td>
-<td class="parameter_description"><p>the texture to draw</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>width</p></td>
-<td class="parameter_description"><p>width of <em class="parameter"><code>texture</code></em>
-</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>height</p></td>
-<td class="parameter_description"><p>height of texture</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-</tbody>
-</table></div>
-</div>
</div>
<hr>
<div class="refsect2">
@@ -165,61 +128,6 @@
<em class="parameter"><code><span class="type">GLuint</span> target</code></em>,
<em class="parameter"><code><a class="link" href="gst-plugins-bad-libs-OpenGL-Miscellaneous-Utilities.html#GLCB:CAPS" title="GLCB ()"><span class="type">GLCB</span></a> func</code></em>,
<em class="parameter"><code><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a> data</code></em>);</pre>
-<p>Transforms <em class="parameter"><code>input</code></em>
- into <em class="parameter"><code>output</code></em>
- using <em class="parameter"><code>func</code></em>
- on through FBO. <em class="parameter"><code>resize</code></em>
- should
-only ever be <a href="/usr/share/gtk-doc/html/glibglib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> whenever <em class="parameter"><code>input</code></em>
- is the input texture of <em class="parameter"><code>filter</code></em>
-.</p>
-<div class="refsect3">
-<a name="gst-gl-filter-render-to-target.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="parameter_name"><p>filter</p></td>
-<td class="parameter_description"><p>a <a class="link" href="GstGLFilter.html" title="GstGLFilter"><span class="type">GstGLFilter</span></a></p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>resize</p></td>
-<td class="parameter_description"><p>whether to automatically resize the texture between the input size
-and the output size</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>input</p></td>
-<td class="parameter_description"><p>the input texture</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>target</p></td>
-<td class="parameter_description"><p>the output texture</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>func</p></td>
-<td class="parameter_description"><p>the function to transform <em class="parameter"><code>input</code></em>
-into <em class="parameter"><code>output</code></em>
-. called with <em class="parameter"><code>data</code></em>
-</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>data</p></td>
-<td class="parameter_description"><p>the data associated with <em class="parameter"><code>func</code></em>
-</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-</tbody>
-</table></div>
-</div>
</div>
<hr>
<div class="refsect2">
@@ -231,53 +139,6 @@
<em class="parameter"><code><span class="type">GLuint</span> input</code></em>,
<em class="parameter"><code><span class="type">GLuint</span> target</code></em>,
<em class="parameter"><code><a class="link" href="GstGLShader.html" title="GstGLShader"><span class="type">GstGLShader</span></a> *shader</code></em>);</pre>
-<p>Transforms <em class="parameter"><code>input</code></em>
- into <em class="parameter"><code>output</code></em>
- using <em class="parameter"><code>shader</code></em>
- on FBO. <em class="parameter"><code>resize</code></em>
- should
-only ever be <a href="/usr/share/gtk-doc/html/glibglib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> whenever <em class="parameter"><code>input</code></em>
- is the input texture of <em class="parameter"><code>filter</code></em>
-.</p>
-<p>See also: <a class="link" href="GstGLFilter.html#gst-gl-filter-render-to-target" title="gst_gl_filter_render_to_target ()"><code class="function">gst_gl_filter_render_to_target()</code></a></p>
-<div class="refsect3">
-<a name="gst-gl-filter-render-to-target-with-shader.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="parameter_name"><p>filter</p></td>
-<td class="parameter_description"><p>a <a class="link" href="GstGLFilter.html" title="GstGLFilter"><span class="type">GstGLFilter</span></a></p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>resize</p></td>
-<td class="parameter_description"><p>whether to automatically resize the texture between the input size
-and the output size</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>input</p></td>
-<td class="parameter_description"><p>the input texture</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>target</p></td>
-<td class="parameter_description"><p>the output texture</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>shader</p></td>
-<td class="parameter_description"><p>the shader to use.</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-</tbody>
-</table></div>
-</div>
</div>
<hr>
<div class="refsect2">
@@ -286,39 +147,6 @@
gst_gl_filter_filter_texture (<em class="parameter"><code><a class="link" href="GstGLFilter.html" title="GstGLFilter"><span class="type">GstGLFilter</span></a> *filter</code></em>,
<em class="parameter"><code><a href="/usr/share/gtk-doc/html/gstreamer-1.0GstBuffer.html#GstBuffer-struct"><span class="type">GstBuffer</span></a> *inbuf</code></em>,
<em class="parameter"><code><a href="/usr/share/gtk-doc/html/gstreamer-1.0GstBuffer.html#GstBuffer-struct"><span class="type">GstBuffer</span></a> *outbuf</code></em>);</pre>
-<p>Perform automatic upload if needed, call filter_texture vfunc and then an
-automatic download if needed.</p>
-<div class="refsect3">
-<a name="gst-gl-filter-filter-texture.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="parameter_name"><p>filter</p></td>
-<td class="parameter_description"><p>a <a class="link" href="GstGLFilter.html" title="GstGLFilter"><span class="type">GstGLFilter</span></a></p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>inbuf</p></td>
-<td class="parameter_description"><p>an input buffer</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>outbuf</p></td>
-<td class="parameter_description"><p>an output buffer</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<div class="refsect3">
-<a name="gst-gl-filter-filter-texture.returns"></a><h4>Returns</h4>
-<p> whether the transformation succeeded</p>
-</div>
</div>
</div>
<div class="refsect1">
@@ -326,20 +154,6 @@
<div class="refsect2">
<a name="GstGLFilter-struct"></a><h3>GstGLFilter</h3>
<pre class="programlisting">typedef struct _GstGLFilter GstGLFilter;</pre>
-<p><a class="link" href="GstGLFilter.html" title="GstGLFilter"><span class="type">GstGLFilter</span></a> is a base class that provides the logic of getting the GL context
-from downstream and automatic upload/download for non-<a class="link" href="gst-plugins-bad-libs-GstGLMemory.html#GstGLMemory" title="GstGLMemory"><span class="type">GstGLMemory</span></a>
-<a href="/usr/share/gtk-doc/html/gstreamer-1.0GstBuffer.html#GstBuffer-struct"><span class="type">GstBuffer</span></a>s.</p>
-<div class="refsect3">
-<a name="GstGLFilter.members"></a><h4>Members</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="300px" class="struct_members_name">
-<col class="struct_members_description">
-<col width="200px" class="struct_members_annotations">
-</colgroup>
-<tbody></tbody>
-</table></div>
-</div>
</div>
<hr>
<div class="refsect2">
@@ -360,63 +174,6 @@
void (*display_reset_cb) (GstGLFilter *filter);
} GstGLFilterClass;
</pre>
-<div class="refsect3">
-<a name="GstGLFilterClass.members"></a><h4>Members</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="300px" class="struct_members_name">
-<col class="struct_members_description">
-<col width="200px" class="struct_members_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="struct_member_name"><p><em class="structfield"><code><a name="GstGLFilterClass.set-caps"></a>set_caps</code></em> ()</p></td>
-<td class="struct_member_description"><p>mirror from <a href="/usr/share/gtk-doc/html/gstreamer-libs-1.0GstBaseTransform.html#GstBaseTransform-struct"><span class="type">GstBaseTransform</span></a></p></td>
-<td class="struct_member_annotations"> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><em class="structfield"><code><a name="GstGLFilterClass.filter"></a>filter</code></em> ()</p></td>
-<td class="struct_member_description"><p>perform operations on the input and output buffers. In general,
-you should avoid using this method if at all possible. One valid
-use-case for using this is keeping previous buffers for future calculations.
-Note: If <em class="parameter"><code>filter</code></em>
-exists, then <em class="parameter"><code>filter_texture</code></em>
-is not run</p></td>
-<td class="struct_member_annotations"> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><em class="structfield"><code><a name="GstGLFilterClass.filter-texture"></a>filter_texture</code></em> ()</p></td>
-<td class="struct_member_description"><p>given <em class="parameter"><code>in_tex</code></em>
-, transform it into <em class="parameter"><code>out_tex</code></em>
-. Not used
-if <em class="parameter"><code>filter</code></em>
-exists</p></td>
-<td class="struct_member_annotations"> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><em class="structfield"><code><a name="GstGLFilterClass.init-fbo"></a>init_fbo</code></em> ()</p></td>
-<td class="struct_member_description"><p>perform initialization when the Framebuffer object is created</p></td>
-<td class="struct_member_annotations"> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><em class="structfield"><code><a name="GstGLFilterClass.transform-internal-caps"></a>transform_internal_caps</code></em> ()</p></td>
-<td class="struct_member_description"><p>Perform sub-class specific modifications of the
-caps to be processed between upload on input and before download for output.</p></td>
-<td class="struct_member_annotations"> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><em class="structfield"><code><a name="GstGLFilterClass.display-init-cb"></a>display_init_cb</code></em> ()</p></td>
-<td class="struct_member_description"><p>execute arbitrary gl code on start</p></td>
-<td class="struct_member_annotations"> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><em class="structfield"><code><a name="GstGLFilterClass.display-reset-cb"></a>display_reset_cb</code></em> ()</p></td>
-<td class="struct_member_description"><p>execute arbitrary gl code at stop</p></td>
-<td class="struct_member_annotations"> </td>
-</tr>
-</tbody>
-</table></div>
-</div>
</div>
</div>
</div>
diff --git a/docs/libs/html/GstGLShader.html b/docs/libs/html/GstGLShader.html
index e7152fa..44388c9 100644
--- a/docs/libs/html/GstGLShader.html
+++ b/docs/libs/html/GstGLShader.html
@@ -29,7 +29,7 @@
<div class="refnamediv"><table width="100%"><tr>
<td valign="top">
<h2><span class="refentrytitle"><a name="GstGLShader.top_of_page"></a>GstGLShader</span></h2>
-<p>GstGLShader — object representing an OpenGL shader program</p>
+<p>GstGLShader</p>
</td>
<td class="gallery_image" valign="top" align="right"></td>
</tr></table></div>
@@ -425,28 +425,6 @@
<a name="gst-gl-shader-new"></a><h3>gst_gl_shader_new ()</h3>
<pre class="programlisting"><a class="link" href="GstGLShader.html" title="GstGLShader"><span class="returnvalue">GstGLShader</span></a> *
gst_gl_shader_new (<em class="parameter"><code><a class="link" href="GstGLContext.html" title="GstGLContext"><span class="type">GstGLContext</span></a> *context</code></em>);</pre>
-<p>Note: must be called in the GL thread</p>
-<div class="refsect3">
-<a name="gst-gl-shader-new.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody><tr>
-<td class="parameter_name"><p>context</p></td>
-<td class="parameter_description"><p>a <a class="link" href="GstGLContext.html" title="GstGLContext"><span class="type">GstGLContext</span></a></p></td>
-<td class="parameter_annotations"> </td>
-</tr></tbody>
-</table></div>
-</div>
-<div class="refsect3">
-<a name="gst-gl-shader-new.returns"></a><h4>Returns</h4>
-<p> a new empty <em class="parameter"><code>shader</code></em>
-. </p>
-<p><span class="annotation">[<acronym title="Free data after the code is done."><span class="acronym">transfer full</span></acronym>]</span></p>
-</div>
</div>
<hr>
<div class="refsect2">
@@ -454,36 +432,6 @@
<pre class="programlisting"><a class="link" href="GstGLShader.html" title="GstGLShader"><span class="returnvalue">GstGLShader</span></a> *
gst_gl_shader_new_default (<em class="parameter"><code><a class="link" href="GstGLContext.html" title="GstGLContext"><span class="type">GstGLContext</span></a> *context</code></em>,
<em class="parameter"><code><a href="/usr/share/gtk-doc/html/glibglib-Error-Reporting.html#GError"><span class="type">GError</span></a> **error</code></em>);</pre>
-<p>Note: must be called in the GL thread</p>
-<div class="refsect3">
-<a name="gst-gl-shader-new-default.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="parameter_name"><p>context</p></td>
-<td class="parameter_description"><p>a <a class="link" href="GstGLContext.html" title="GstGLContext"><span class="type">GstGLContext</span></a></p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>error</p></td>
-<td class="parameter_description"><p>a <a href="/usr/share/gtk-doc/html/glibglib-Error-Reporting.html#GError"><span class="type">GError</span></a> that is filled on failure</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<div class="refsect3">
-<a name="gst-gl-shader-new-default.returns"></a><h4>Returns</h4>
-<p> a default <em class="parameter"><code>shader</code></em>
-or <a href="/usr/share/gtk-doc/html/glibglib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a> on failure. </p>
-<p><span class="annotation">[<acronym title="Free data after the code is done."><span class="acronym">transfer full</span></acronym>]</span></p>
-</div>
-<p class="since">Since: 1.8</p>
</div>
<hr>
<div class="refsect2">
@@ -492,46 +440,6 @@
gst_gl_shader_new_link_with_stages (<em class="parameter"><code><a class="link" href="GstGLContext.html" title="GstGLContext"><span class="type">GstGLContext</span></a> *context</code></em>,
<em class="parameter"><code><a href="/usr/share/gtk-doc/html/glibglib-Error-Reporting.html#GError"><span class="type">GError</span></a> **error</code></em>,
<em class="parameter"><code>...</code></em>);</pre>
-<p>Each stage will attempt to be compiled and attached to <em class="parameter"><code>shader</code></em>
-. Then
-the shader will be linked. On error, <a href="/usr/share/gtk-doc/html/glibglib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a> will be returned and <em class="parameter"><code>error</code></em>
- will
-contain the details of the error.</p>
-<p>Note: must be called in the GL thread</p>
-<div class="refsect3">
-<a name="gst-gl-shader-new-link-with-stages.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="parameter_name"><p>context</p></td>
-<td class="parameter_description"><p>a <a class="link" href="GstGLContext.html" title="GstGLContext"><span class="type">GstGLContext</span></a></p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>error</p></td>
-<td class="parameter_description"><p>a <a href="/usr/share/gtk-doc/html/glibglib-Error-Reporting.html#GError"><span class="type">GError</span></a></p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>...</p></td>
-<td class="parameter_description"><p>a NULL terminated list of <a class="link" href=".html#GstGLSLStage"><span class="type">GstGLSLStage</span></a>'s</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<div class="refsect3">
-<a name="gst-gl-shader-new-link-with-stages.returns"></a><h4>Returns</h4>
-<p> a new <em class="parameter"><code>shader</code></em>
-with the specified stages. </p>
-<p><span class="annotation">[<acronym title="Free data after the code is done."><span class="acronym">transfer full</span></acronym>]</span></p>
-</div>
-<p class="since">Since: 1.8</p>
</div>
<hr>
<div class="refsect2">
@@ -540,144 +448,30 @@
gst_gl_shader_new_with_stages (<em class="parameter"><code><a class="link" href="GstGLContext.html" title="GstGLContext"><span class="type">GstGLContext</span></a> *context</code></em>,
<em class="parameter"><code><a href="/usr/share/gtk-doc/html/glibglib-Error-Reporting.html#GError"><span class="type">GError</span></a> **error</code></em>,
<em class="parameter"><code>...</code></em>);</pre>
-<p>Each stage will attempt to be compiled and attached to <em class="parameter"><code>shader</code></em>
-. On error,
-<a href="/usr/share/gtk-doc/html/glibglib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a> will be returned and <em class="parameter"><code>error</code></em>
- will contain the details of the error.</p>
-<p>Note: must be called in the GL thread</p>
-<div class="refsect3">
-<a name="gst-gl-shader-new-with-stages.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="parameter_name"><p>context</p></td>
-<td class="parameter_description"><p>a <a class="link" href="GstGLContext.html" title="GstGLContext"><span class="type">GstGLContext</span></a></p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>error</p></td>
-<td class="parameter_description"><p>a <a href="/usr/share/gtk-doc/html/glibglib-Error-Reporting.html#GError"><span class="type">GError</span></a></p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>...</p></td>
-<td class="parameter_description"><p>a NULL terminated list of <a class="link" href=".html#GstGLSLStage"><span class="type">GstGLSLStage</span></a>'s</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<div class="refsect3">
-<a name="gst-gl-shader-new-with-stages.returns"></a><h4>Returns</h4>
-<p> a new <em class="parameter"><code>shader</code></em>
-with the specified stages. </p>
-<p><span class="annotation">[<acronym title="Free data after the code is done."><span class="acronym">transfer full</span></acronym>]</span></p>
-</div>
-<p class="since">Since: 1.8</p>
</div>
<hr>
<div class="refsect2">
<a name="gst-gl-shader-use"></a><h3>gst_gl_shader_use ()</h3>
<pre class="programlisting"><span class="returnvalue">void</span>
gst_gl_shader_use (<em class="parameter"><code><a class="link" href="GstGLShader.html" title="GstGLShader"><span class="type">GstGLShader</span></a> *shader</code></em>);</pre>
-<p>Mark's <em class="parameter"><code>shader</code></em>
- as being used for the next GL draw command.</p>
-<p>Note: must be called in the GL thread and <em class="parameter"><code>shader</code></em>
- must have been linked.</p>
-<div class="refsect3">
-<a name="gst-gl-shader-use.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody><tr>
-<td class="parameter_name"><p>shader</p></td>
-<td class="parameter_description"><p>a <a class="link" href="GstGLShader.html" title="GstGLShader"><span class="type">GstGLShader</span></a></p></td>
-<td class="parameter_annotations"> </td>
-</tr></tbody>
-</table></div>
-</div>
</div>
<hr>
<div class="refsect2">
<a name="gst-gl-shader-get-program-handle"></a><h3>gst_gl_shader_get_program_handle ()</h3>
<pre class="programlisting"><span class="returnvalue">int</span>
gst_gl_shader_get_program_handle (<em class="parameter"><code><a class="link" href="GstGLShader.html" title="GstGLShader"><span class="type">GstGLShader</span></a> *shader</code></em>);</pre>
-<div class="refsect3">
-<a name="gst-gl-shader-get-program-handle.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody><tr>
-<td class="parameter_name"><p>shader</p></td>
-<td class="parameter_description"><p>a <a class="link" href="GstGLShader.html" title="GstGLShader"><span class="type">GstGLShader</span></a></p></td>
-<td class="parameter_annotations"> </td>
-</tr></tbody>
-</table></div>
-</div>
-<div class="refsect3">
-<a name="gst-gl-shader-get-program-handle.returns"></a><h4>Returns</h4>
-<p> the GL program handle for this shader</p>
-</div>
-<p class="since">Since: 1.8</p>
</div>
<hr>
<div class="refsect2">
<a name="gst-gl-shader-release"></a><h3>gst_gl_shader_release ()</h3>
<pre class="programlisting"><span class="returnvalue">void</span>
gst_gl_shader_release (<em class="parameter"><code><a class="link" href="GstGLShader.html" title="GstGLShader"><span class="type">GstGLShader</span></a> *shader</code></em>);</pre>
-<p>Releases the shader and stages.</p>
-<p>Note: must be called in the GL thread</p>
-<div class="refsect3">
-<a name="gst-gl-shader-release.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody><tr>
-<td class="parameter_name"><p>shader</p></td>
-<td class="parameter_description"><p>a <a class="link" href="GstGLShader.html" title="GstGLShader"><span class="type">GstGLShader</span></a></p></td>
-<td class="parameter_annotations"> </td>
-</tr></tbody>
-</table></div>
-</div>
-<p class="since">Since: 1.8</p>
</div>
<hr>
<div class="refsect2">
<a name="gst-gl-shader-release-unlocked"></a><h3>gst_gl_shader_release_unlocked ()</h3>
<pre class="programlisting"><span class="returnvalue">void</span>
gst_gl_shader_release_unlocked (<em class="parameter"><code><a class="link" href="GstGLShader.html" title="GstGLShader"><span class="type">GstGLShader</span></a> *shader</code></em>);</pre>
-<p>Releases the shader and stages.</p>
-<p>Note: must be called in the GL thread</p>
-<div class="refsect3">
-<a name="gst-gl-shader-release-unlocked.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody><tr>
-<td class="parameter_name"><p>shader</p></td>
-<td class="parameter_description"><p>a <a class="link" href="GstGLShader.html" title="GstGLShader"><span class="type">GstGLShader</span></a></p></td>
-<td class="parameter_annotations"> </td>
-</tr></tbody>
-</table></div>
-</div>
-<p class="since">Since: 1.8</p>
</div>
<hr>
<div class="refsect2">
@@ -685,41 +479,6 @@
<pre class="programlisting"><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
gst_gl_shader_attach (<em class="parameter"><code><a class="link" href="GstGLShader.html" title="GstGLShader"><span class="type">GstGLShader</span></a> *shader</code></em>,
<em class="parameter"><code><a class="link" href=".html#GstGLSLStage"><span class="type">GstGLSLStage</span></a> *stage</code></em>);</pre>
-<p>Attaches <em class="parameter"><code>stage</code></em>
- to <em class="parameter"><code>shader</code></em>
-. <em class="parameter"><code>stage</code></em>
- must have been successfully compiled
-with <code class="function">gst_glsl_stage_compile()</code>.</p>
-<p>Note: must be called in the GL thread</p>
-<div class="refsect3">
-<a name="gst-gl-shader-attach.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="parameter_name"><p>shader</p></td>
-<td class="parameter_description"><p>a <a class="link" href="GstGLShader.html" title="GstGLShader"><span class="type">GstGLShader</span></a></p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>stage</p></td>
-<td class="parameter_description"><p>a <a class="link" href=".html#GstGLSLStage"><span class="type">GstGLSLStage</span></a> to attach</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<div class="refsect3">
-<a name="gst-gl-shader-attach.returns"></a><h4>Returns</h4>
-<p> whether <em class="parameter"><code>stage</code></em>
-could be attached to <em class="parameter"><code>shader</code></em>
-</p>
-</div>
-<p class="since">Since: 1.8</p>
</div>
<hr>
<div class="refsect2">
@@ -727,41 +486,6 @@
<pre class="programlisting"><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
gst_gl_shader_attach_unlocked (<em class="parameter"><code><a class="link" href="GstGLShader.html" title="GstGLShader"><span class="type">GstGLShader</span></a> *shader</code></em>,
<em class="parameter"><code><a class="link" href=".html#GstGLSLStage"><span class="type">GstGLSLStage</span></a> *stage</code></em>);</pre>
-<p>Attaches <em class="parameter"><code>stage</code></em>
- to <em class="parameter"><code>shader</code></em>
-. <em class="parameter"><code>stage</code></em>
- must have been successfully compiled
-with <code class="function">gst_glsl_stage_compile()</code>.</p>
-<p>Note: must be called in the GL thread</p>
-<div class="refsect3">
-<a name="gst-gl-shader-attach-unlocked.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="parameter_name"><p>shader</p></td>
-<td class="parameter_description"><p>a <a class="link" href="GstGLShader.html" title="GstGLShader"><span class="type">GstGLShader</span></a></p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>stage</p></td>
-<td class="parameter_description"><p>a <a class="link" href=".html#GstGLSLStage"><span class="type">GstGLSLStage</span></a> to attach</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<div class="refsect3">
-<a name="gst-gl-shader-attach-unlocked.returns"></a><h4>Returns</h4>
-<p> whether <em class="parameter"><code>stage</code></em>
-could be attached to <em class="parameter"><code>shader</code></em>
-</p>
-</div>
-<p class="since">Since: 1.8</p>
</div>
<hr>
<div class="refsect2">
@@ -770,44 +494,6 @@
gst_gl_shader_compile_attach_stage (<em class="parameter"><code><a class="link" href="GstGLShader.html" title="GstGLShader"><span class="type">GstGLShader</span></a> *shader</code></em>,
<em class="parameter"><code><a class="link" href=".html#GstGLSLStage"><span class="type">GstGLSLStage</span></a> *stage</code></em>,
<em class="parameter"><code><a href="/usr/share/gtk-doc/html/glibglib-Error-Reporting.html#GError"><span class="type">GError</span></a> **error</code></em>);</pre>
-<p>Compiles <em class="parameter"><code>stage</code></em>
- and attaches it to <em class="parameter"><code>shader</code></em>
-.</p>
-<p>Note: must be called in the GL thread</p>
-<div class="refsect3">
-<a name="gst-gl-shader-compile-attach-stage.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="parameter_name"><p>shader</p></td>
-<td class="parameter_description"><p>a <a class="link" href="GstGLShader.html" title="GstGLShader"><span class="type">GstGLShader</span></a></p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>stage</p></td>
-<td class="parameter_description"><p>a <a class="link" href=".html#GstGLSLStage"><span class="type">GstGLSLStage</span></a> to attach</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>error</p></td>
-<td class="parameter_description"><p>a <a href="/usr/share/gtk-doc/html/glibglib-Error-Reporting.html#GError"><span class="type">GError</span></a></p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<div class="refsect3">
-<a name="gst-gl-shader-compile-attach-stage.returns"></a><h4>Returns</h4>
-<p> whether <em class="parameter"><code>stage</code></em>
-could be compiled and attached to <em class="parameter"><code>shader</code></em>
-</p>
-</div>
-<p class="since">Since: 1.8</p>
</div>
<hr>
<div class="refsect2">
@@ -815,36 +501,6 @@
<pre class="programlisting"><span class="returnvalue">void</span>
gst_gl_shader_detach (<em class="parameter"><code><a class="link" href="GstGLShader.html" title="GstGLShader"><span class="type">GstGLShader</span></a> *shader</code></em>,
<em class="parameter"><code><a class="link" href=".html#GstGLSLStage"><span class="type">GstGLSLStage</span></a> *stage</code></em>);</pre>
-<p>Detaches <em class="parameter"><code>stage</code></em>
- from <em class="parameter"><code>shader</code></em>
-. <em class="parameter"><code>stage</code></em>
- must have been successfully attached
-to <em class="parameter"><code>shader</code></em>
- with <a class="link" href="GstGLShader.html#gst-gl-shader-attach" title="gst_gl_shader_attach ()"><code class="function">gst_gl_shader_attach()</code></a> or <a class="link" href="GstGLShader.html#gst-gl-shader-attach-unlocked" title="gst_gl_shader_attach_unlocked ()"><code class="function">gst_gl_shader_attach_unlocked()</code></a>.</p>
-<p>Note: must be called in the GL thread</p>
-<div class="refsect3">
-<a name="gst-gl-shader-detach.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="parameter_name"><p>shader</p></td>
-<td class="parameter_description"><p>a <a class="link" href="GstGLShader.html" title="GstGLShader"><span class="type">GstGLShader</span></a></p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>stage</p></td>
-<td class="parameter_description"><p>a <a class="link" href=".html#GstGLSLStage"><span class="type">GstGLSLStage</span></a> to attach</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<p class="since">Since: 1.8</p>
</div>
<hr>
<div class="refsect2">
@@ -852,64 +508,12 @@
<pre class="programlisting"><span class="returnvalue">void</span>
gst_gl_shader_detach_unlocked (<em class="parameter"><code><a class="link" href="GstGLShader.html" title="GstGLShader"><span class="type">GstGLShader</span></a> *shader</code></em>,
<em class="parameter"><code><a class="link" href=".html#GstGLSLStage"><span class="type">GstGLSLStage</span></a> *stage</code></em>);</pre>
-<p>Detaches <em class="parameter"><code>stage</code></em>
- from <em class="parameter"><code>shader</code></em>
-. <em class="parameter"><code>stage</code></em>
- must have been successfully attached
-to <em class="parameter"><code>shader</code></em>
- with <a class="link" href="GstGLShader.html#gst-gl-shader-attach" title="gst_gl_shader_attach ()"><code class="function">gst_gl_shader_attach()</code></a> or <a class="link" href="GstGLShader.html#gst-gl-shader-attach-unlocked" title="gst_gl_shader_attach_unlocked ()"><code class="function">gst_gl_shader_attach_unlocked()</code></a>.</p>
-<p>Note: must be called in the GL thread</p>
-<div class="refsect3">
-<a name="gst-gl-shader-detach-unlocked.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="parameter_name"><p>shader</p></td>
-<td class="parameter_description"><p>a <a class="link" href="GstGLShader.html" title="GstGLShader"><span class="type">GstGLShader</span></a></p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>stage</p></td>
-<td class="parameter_description"><p>a <a class="link" href=".html#GstGLSLStage"><span class="type">GstGLSLStage</span></a> to attach</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<p class="since">Since: 1.8</p>
</div>
<hr>
<div class="refsect2">
<a name="gst-gl-shader-is-linked"></a><h3>gst_gl_shader_is_linked ()</h3>
<pre class="programlisting"><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
gst_gl_shader_is_linked (<em class="parameter"><code><a class="link" href="GstGLShader.html" title="GstGLShader"><span class="type">GstGLShader</span></a> *shader</code></em>);</pre>
-<p>Note: must be called in the GL thread</p>
-<div class="refsect3">
-<a name="gst-gl-shader-is-linked.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody><tr>
-<td class="parameter_name"><p>shader</p></td>
-<td class="parameter_description"><p>a <a class="link" href="GstGLShader.html" title="GstGLShader"><span class="type">GstGLShader</span></a></p></td>
-<td class="parameter_annotations"> </td>
-</tr></tbody>
-</table></div>
-</div>
-<div class="refsect3">
-<a name="gst-gl-shader-is-linked.returns"></a><h4>Returns</h4>
-<p> whether <em class="parameter"><code>shader</code></em>
-has been successfully linked</p>
-</div>
-<p class="since">Since: 1.8</p>
</div>
<hr>
<div class="refsect2">
@@ -917,37 +521,6 @@
<pre class="programlisting"><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
gst_gl_shader_link (<em class="parameter"><code><a class="link" href="GstGLShader.html" title="GstGLShader"><span class="type">GstGLShader</span></a> *shader</code></em>,
<em class="parameter"><code><a href="/usr/share/gtk-doc/html/glibglib-Error-Reporting.html#GError"><span class="type">GError</span></a> **error</code></em>);</pre>
-<p>Links the current list of <a class="link" href=".html#GstGLSLStage"><span class="type">GstGLSLStage</span></a>'s in <em class="parameter"><code>shader</code></em>
-.</p>
-<p>Note: must be called in the GL thread</p>
-<div class="refsect3">
-<a name="gst-gl-shader-link.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="parameter_name"><p>shader</p></td>
-<td class="parameter_description"><p>a <a class="link" href="GstGLShader.html" title="GstGLShader"><span class="type">GstGLShader</span></a></p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>error</p></td>
-<td class="parameter_description"><p>a <a href="/usr/share/gtk-doc/html/glibglib-Error-Reporting.html#GError"><span class="type">GError</span></a></p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<div class="refsect3">
-<a name="gst-gl-shader-link.returns"></a><h4>Returns</h4>
-<p> whether <em class="parameter"><code>shader</code></em>
-could be linked together.</p>
-</div>
-<p class="since">Since: 1.8</p>
</div>
<hr>
<div class="refsect2">
@@ -1226,10 +799,6 @@
<p>Default value: FALSE</p>
</div>
</div>
-<div class="refsect1">
-<a name="GstGLShader.see-also"></a><h2>See Also</h2>
-<p><a class="link" href=".html#GstGLSLStage"><span class="type">GstGLSLStage</span></a></p>
-</div>
</div>
<div class="footer">
<hr>Generated by GTK-Doc V1.25</div>
diff --git a/docs/libs/html/GstGLUpload.html b/docs/libs/html/GstGLUpload.html
index 2c66ebd..80e21a8 100644
--- a/docs/libs/html/GstGLUpload.html
+++ b/docs/libs/html/GstGLUpload.html
@@ -28,7 +28,7 @@
<div class="refnamediv"><table width="100%"><tr>
<td valign="top">
<h2><span class="refentrytitle"><a name="GstGLUpload.top_of_page"></a>GstGLUpload</span></h2>
-<p>GstGLUpload — an object that uploads to GL textures</p>
+<p>GstGLUpload</p>
</td>
<td class="gallery_image" valign="top" align="right"></td>
</tr></table></div>
@@ -122,8 +122,6 @@
</div>
<div class="refsect1">
<a name="GstGLUpload.description"></a><h2>Description</h2>
-<p><a class="link" href="GstGLUpload.html" title="GstGLUpload"><span class="type">GstGLUpload</span></a> is an object that uploads data from system memory into GL textures.</p>
-<p>A <a class="link" href="GstGLUpload.html" title="GstGLUpload"><span class="type">GstGLUpload</span></a> can be created with <a class="link" href="GstGLUpload.html#gst-gl-upload-new" title="gst_gl_upload_new ()"><code class="function">gst_gl_upload_new()</code></a></p>
</div>
<div class="refsect1">
<a name="GstGLUpload.functions_details"></a><h2>Functions</h2>
@@ -131,25 +129,6 @@
<a name="gst-gl-upload-new"></a><h3>gst_gl_upload_new ()</h3>
<pre class="programlisting"><a class="link" href="GstGLUpload.html" title="GstGLUpload"><span class="returnvalue">GstGLUpload</span></a> *
gst_gl_upload_new (<em class="parameter"><code><a class="link" href="GstGLContext.html" title="GstGLContext"><span class="type">GstGLContext</span></a> *context</code></em>);</pre>
-<div class="refsect3">
-<a name="gst-gl-upload-new.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody><tr>
-<td class="parameter_name"><p>context</p></td>
-<td class="parameter_description"><p>a <a class="link" href="GstGLContext.html" title="GstGLContext"><span class="type">GstGLContext</span></a></p></td>
-<td class="parameter_annotations"> </td>
-</tr></tbody>
-</table></div>
-</div>
-<div class="refsect3">
-<a name="gst-gl-upload-new.returns"></a><h4>Returns</h4>
-<p> a new <a class="link" href="GstGLUpload.html" title="GstGLUpload"><span class="type">GstGLUpload</span></a> object</p>
-</div>
</div>
<hr>
<div class="refsect2">
@@ -158,38 +137,6 @@
gst_gl_upload_get_caps (<em class="parameter"><code><a class="link" href="GstGLUpload.html" title="GstGLUpload"><span class="type">GstGLUpload</span></a> *upload</code></em>,
<em class="parameter"><code><a href="/usr/share/gtk-doc/html/gstreamer-1.0GstCaps.html#GstCaps-struct"><span class="type">GstCaps</span></a> **in_caps</code></em>,
<em class="parameter"><code><a href="/usr/share/gtk-doc/html/gstreamer-1.0GstCaps.html#GstCaps-struct"><span class="type">GstCaps</span></a> **out_caps</code></em>);</pre>
-<div class="refsect3">
-<a name="gst-gl-upload-get-caps.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="parameter_name"><p>upload</p></td>
-<td class="parameter_description"><p>a <a class="link" href="GstGLUpload.html" title="GstGLUpload"><span class="type">GstGLUpload</span></a></p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>in_caps</p></td>
-<td class="parameter_description"><p> the input <a href="/usr/share/gtk-doc/html/gstreamer-1.0GstCaps.html#GstCaps-struct"><span class="type">GstCaps</span></a>. </p></td>
-<td class="parameter_annotations"><span class="annotation">[<acronym title="Free data after the code is done."><span class="acronym">transfer full</span></acronym>][<acronym title="NULL is OK, both for passing and for returning."><span class="acronym">allow-none</span></acronym>][<acronym title="Parameter for returning results. Default is transfer full."><span class="acronym">out</span></acronym>]</span></td>
-</tr>
-<tr>
-<td class="parameter_name"><p>out_caps</p></td>
-<td class="parameter_description"><p> the output <a href="/usr/share/gtk-doc/html/gstreamer-1.0GstCaps.html#GstCaps-struct"><span class="type">GstCaps</span></a>. </p></td>
-<td class="parameter_annotations"><span class="annotation">[<acronym title="Free data after the code is done."><span class="acronym">transfer full</span></acronym>][<acronym title="NULL is OK, both for passing and for returning."><span class="acronym">allow-none</span></acronym>][<acronym title="Parameter for returning results. Default is transfer full."><span class="acronym">out</span></acronym>]</span></td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<div class="refsect3">
-<a name="gst-gl-upload-get-caps.returns"></a><h4>Returns</h4>
-<p> The <a href="/usr/share/gtk-doc/html/gstreamer-1.0GstCaps.html#GstCaps-struct"><span class="type">GstCaps</span></a> set by <a class="link" href="GstGLUpload.html#gst-gl-upload-set-caps" title="gst_gl_upload_set_caps ()"><code class="function">gst_gl_upload_set_caps()</code></a>. </p>
-<p><span class="annotation">[<acronym title="Don't free data after the code is done."><span class="acronym">transfer none</span></acronym>]</span></p>
-</div>
</div>
<hr>
<div class="refsect2">
@@ -198,42 +145,6 @@
gst_gl_upload_set_caps (<em class="parameter"><code><a class="link" href="GstGLUpload.html" title="GstGLUpload"><span class="type">GstGLUpload</span></a> *upload</code></em>,
<em class="parameter"><code><a href="/usr/share/gtk-doc/html/gstreamer-1.0GstCaps.html#GstCaps-struct"><span class="type">GstCaps</span></a> *in_caps</code></em>,
<em class="parameter"><code><a href="/usr/share/gtk-doc/html/gstreamer-1.0GstCaps.html#GstCaps-struct"><span class="type">GstCaps</span></a> *out_caps</code></em>);</pre>
-<p>Initializes <em class="parameter"><code>upload</code></em>
- with the information required for upload.</p>
-<div class="refsect3">
-<a name="gst-gl-upload-set-caps.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="parameter_name"><p>upload</p></td>
-<td class="parameter_description"><p>a <a class="link" href="GstGLUpload.html" title="GstGLUpload"><span class="type">GstGLUpload</span></a></p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>in_caps</p></td>
-<td class="parameter_description"><p>input <a href="/usr/share/gtk-doc/html/gstreamer-1.0GstCaps.html#GstCaps-struct"><span class="type">GstCaps</span></a></p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>out_caps</p></td>
-<td class="parameter_description"><p>output <a href="/usr/share/gtk-doc/html/gstreamer-1.0GstCaps.html#GstCaps-struct"><span class="type">GstCaps</span></a></p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<div class="refsect3">
-<a name="gst-gl-upload-set-caps.returns"></a><h4>Returns</h4>
-<p> whether <em class="parameter"><code>in_caps</code></em>
-and <em class="parameter"><code>out_caps</code></em>
-could be set on <em class="parameter"><code>upload</code></em>
-</p>
-</div>
</div>
<hr>
<div class="refsect2">
@@ -242,34 +153,6 @@
gst_gl_upload_propose_allocation (<em class="parameter"><code><a class="link" href="GstGLUpload.html" title="GstGLUpload"><span class="type">GstGLUpload</span></a> *upload</code></em>,
<em class="parameter"><code><a href="/usr/share/gtk-doc/html/gstreamer-1.0GstQuery.html#GstQuery-struct"><span class="type">GstQuery</span></a> *decide_query</code></em>,
<em class="parameter"><code><a href="/usr/share/gtk-doc/html/gstreamer-1.0GstQuery.html#GstQuery-struct"><span class="type">GstQuery</span></a> *query</code></em>);</pre>
-<p>Adds the required allocation parameters to support uploading.</p>
-<div class="refsect3">
-<a name="gst-gl-upload-propose-allocation.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="parameter_name"><p>upload</p></td>
-<td class="parameter_description"><p>a <a class="link" href="GstGLUpload.html" title="GstGLUpload"><span class="type">GstGLUpload</span></a></p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>decide_query</p></td>
-<td class="parameter_description"><p> a <a href="/usr/share/gtk-doc/html/gstreamer-1.0GstQuery.html#GstQuery-struct"><span class="type">GstQuery</span></a> from a decide allocation. </p></td>
-<td class="parameter_annotations"><span class="annotation">[<acronym title="NULL is OK, both for passing and for returning."><span class="acronym">allow-none</span></acronym>]</span></td>
-</tr>
-<tr>
-<td class="parameter_name"><p>query</p></td>
-<td class="parameter_description"><p>the proposed allocation query</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-</tbody>
-</table></div>
-</div>
</div>
<hr>
<div class="refsect2">
@@ -287,41 +170,6 @@
gst_gl_upload_perform_with_buffer (<em class="parameter"><code><a class="link" href="GstGLUpload.html" title="GstGLUpload"><span class="type">GstGLUpload</span></a> *upload</code></em>,
<em class="parameter"><code><a href="/usr/share/gtk-doc/html/gstreamer-1.0GstBuffer.html#GstBuffer-struct"><span class="type">GstBuffer</span></a> *buffer</code></em>,
<em class="parameter"><code><a href="/usr/share/gtk-doc/html/gstreamer-1.0GstBuffer.html#GstBuffer-struct"><span class="type">GstBuffer</span></a> **outbuf_ptr</code></em>);</pre>
-<p>Uploads <em class="parameter"><code>buffer</code></em>
- using the transformation specified by
-<a class="link" href="GstGLUpload.html#gst-gl-upload-set-caps" title="gst_gl_upload_set_caps ()"><code class="function">gst_gl_upload_set_caps()</code></a> creating a new <a href="/usr/share/gtk-doc/html/gstreamer-1.0GstBuffer.html#GstBuffer-struct"><span class="type">GstBuffer</span></a> in <em class="parameter"><code>outbuf_ptr</code></em>
-.</p>
-<div class="refsect3">
-<a name="gst-gl-upload-perform-with-buffer.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="parameter_name"><p>upload</p></td>
-<td class="parameter_description"><p>a <a class="link" href="GstGLUpload.html" title="GstGLUpload"><span class="type">GstGLUpload</span></a></p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>buffer</p></td>
-<td class="parameter_description"><p>input <a href="/usr/share/gtk-doc/html/gstreamer-1.0GstBuffer.html#GstBuffer-struct"><span class="type">GstBuffer</span></a></p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>outbuf_ptr</p></td>
-<td class="parameter_description"><p>resulting <a href="/usr/share/gtk-doc/html/gstreamer-1.0GstBuffer.html#GstBuffer-struct"><span class="type">GstBuffer</span></a></p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<div class="refsect3">
-<a name="gst-gl-upload-perform-with-buffer.returns"></a><h4>Returns</h4>
-<p> whether the upload was successful</p>
-</div>
</div>
<hr>
<div class="refsect2">
@@ -335,13 +183,8 @@
<div class="refsect2">
<a name="GstGLUpload-struct"></a><h3>GstGLUpload</h3>
<pre class="programlisting">typedef struct _GstGLUpload GstGLUpload;</pre>
-<p>Opaque <a class="link" href="GstGLUpload.html" title="GstGLUpload"><span class="type">GstGLUpload</span></a> object</p>
</div>
</div>
-<div class="refsect1">
-<a name="GstGLUpload.see-also"></a><h2>See Also</h2>
-<p><span class="type">GstGLDownload</span>, <a class="link" href="gst-plugins-bad-libs-GstGLMemory.html#GstGLMemory" title="GstGLMemory"><span class="type">GstGLMemory</span></a></p>
-</div>
</div>
<div class="footer">
<hr>Generated by GTK-Doc V1.25</div>
diff --git a/docs/libs/html/GstGLWindow.html b/docs/libs/html/GstGLWindow.html
index 4ce4cb6..3845f6a 100644
--- a/docs/libs/html/GstGLWindow.html
+++ b/docs/libs/html/GstGLWindow.html
@@ -29,7 +29,7 @@
<div class="refnamediv"><table width="100%"><tr>
<td valign="top">
<h2><span class="refentrytitle"><a name="GstGLWindow.top_of_page"></a>GstGLWindow</span></h2>
-<p>GstGLWindow — window/surface abstraction</p>
+<p>GstGLWindow</p>
</td>
<td class="gallery_image" valign="top" align="right"></td>
</tr></table></div>
@@ -283,8 +283,6 @@
</div>
<div class="refsect1">
<a name="GstGLWindow.description"></a><h2>Description</h2>
-<p>GstGLWindow represents a window that elements can render into. A window can
-either be a user visible window (onscreen) or hidden (offscreen).</p>
</div>
<div class="refsect1">
<a name="GstGLWindow.functions_details"></a><h2>Functions</h2>
@@ -324,175 +322,42 @@
<a name="gst-gl-window-new"></a><h3>gst_gl_window_new ()</h3>
<pre class="programlisting"><a class="link" href="GstGLWindow.html" title="GstGLWindow"><span class="returnvalue">GstGLWindow</span></a> *
gst_gl_window_new (<em class="parameter"><code><a class="link" href="GstGLDisplay.html" title="GstGLDisplay"><span class="type">GstGLDisplay</span></a> *display</code></em>);</pre>
-<div class="refsect3">
-<a name="gst-gl-window-new.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody><tr>
-<td class="parameter_name"><p>display</p></td>
-<td class="parameter_description"><p>a <a class="link" href="GstGLDisplay.html" title="GstGLDisplay"><span class="type">GstGLDisplay</span></a></p></td>
-<td class="parameter_annotations"> </td>
-</tr></tbody>
-</table></div>
-</div>
-<div class="refsect3">
-<a name="gst-gl-window-new.returns"></a><h4>Returns</h4>
-<p> a new <a class="link" href="GstGLWindow.html" title="GstGLWindow"><span class="type">GstGLWindow</span></a> using <em class="parameter"><code>display</code></em>
-'s connection. </p>
-<p><span class="annotation">[<acronym title="Free data after the code is done."><span class="acronym">transfer full</span></acronym>]</span></p>
-</div>
-<p class="since">Since: 1.4</p>
</div>
<hr>
<div class="refsect2">
<a name="gst-gl-window-draw"></a><h3>gst_gl_window_draw ()</h3>
<pre class="programlisting"><span class="returnvalue">void</span>
gst_gl_window_draw (<em class="parameter"><code><a class="link" href="GstGLWindow.html" title="GstGLWindow"><span class="type">GstGLWindow</span></a> *window</code></em>);</pre>
-<p>Redraw the window contents. Implementations should invoke the draw callback.</p>
-<div class="refsect3">
-<a name="gst-gl-window-draw.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody><tr>
-<td class="parameter_name"><p>window</p></td>
-<td class="parameter_description"><p>a <a class="link" href="GstGLWindow.html" title="GstGLWindow"><span class="type">GstGLWindow</span></a></p></td>
-<td class="parameter_annotations"> </td>
-</tr></tbody>
-</table></div>
-</div>
-<p class="since">Since: 1.4</p>
</div>
<hr>
<div class="refsect2">
<a name="gst-gl-window-is-running"></a><h3>gst_gl_window_is_running ()</h3>
<pre class="programlisting"><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
gst_gl_window_is_running (<em class="parameter"><code><a class="link" href="GstGLWindow.html" title="GstGLWindow"><span class="type">GstGLWindow</span></a> *window</code></em>);</pre>
-<p>Whether the runloop is running</p>
-<div class="refsect3">
-<a name="gst-gl-window-is-running.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody><tr>
-<td class="parameter_name"><p>window</p></td>
-<td class="parameter_description"><p>a <a class="link" href="GstGLWindow.html" title="GstGLWindow"><span class="type">GstGLWindow</span></a></p></td>
-<td class="parameter_annotations"> </td>
-</tr></tbody>
-</table></div>
-</div>
-<p class="since">Since: 1.4</p>
</div>
<hr>
<div class="refsect2">
<a name="gst-gl-window-quit"></a><h3>gst_gl_window_quit ()</h3>
<pre class="programlisting"><span class="returnvalue">void</span>
gst_gl_window_quit (<em class="parameter"><code><a class="link" href="GstGLWindow.html" title="GstGLWindow"><span class="type">GstGLWindow</span></a> *window</code></em>);</pre>
-<p>Quit the runloop's execution.</p>
-<div class="refsect3">
-<a name="gst-gl-window-quit.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody><tr>
-<td class="parameter_name"><p>window</p></td>
-<td class="parameter_description"><p>a <a class="link" href="GstGLWindow.html" title="GstGLWindow"><span class="type">GstGLWindow</span></a></p></td>
-<td class="parameter_annotations"> </td>
-</tr></tbody>
-</table></div>
-</div>
-<p class="since">Since: 1.4</p>
</div>
<hr>
<div class="refsect2">
<a name="gst-gl-window-run"></a><h3>gst_gl_window_run ()</h3>
<pre class="programlisting"><span class="returnvalue">void</span>
gst_gl_window_run (<em class="parameter"><code><a class="link" href="GstGLWindow.html" title="GstGLWindow"><span class="type">GstGLWindow</span></a> *window</code></em>);</pre>
-<p>Start the execution of the runloop.</p>
-<div class="refsect3">
-<a name="gst-gl-window-run.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody><tr>
-<td class="parameter_name"><p>window</p></td>
-<td class="parameter_description"><p>a <a class="link" href="GstGLWindow.html" title="GstGLWindow"><span class="type">GstGLWindow</span></a></p></td>
-<td class="parameter_annotations"> </td>
-</tr></tbody>
-</table></div>
-</div>
-<p class="since">Since: 1.4</p>
</div>
<hr>
<div class="refsect2">
<a name="gst-gl-window-get-context"></a><h3>gst_gl_window_get_context ()</h3>
<pre class="programlisting"><a class="link" href="GstGLContext.html" title="GstGLContext"><span class="returnvalue">GstGLContext</span></a> *
gst_gl_window_get_context (<em class="parameter"><code><a class="link" href="GstGLWindow.html" title="GstGLWindow"><span class="type">GstGLWindow</span></a> *window</code></em>);</pre>
-<div class="refsect3">
-<a name="gst-gl-window-get-context.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody><tr>
-<td class="parameter_name"><p>window</p></td>
-<td class="parameter_description"><p>a <a class="link" href="GstGLWindow.html" title="GstGLWindow"><span class="type">GstGLWindow</span></a></p></td>
-<td class="parameter_annotations"> </td>
-</tr></tbody>
-</table></div>
-</div>
-<div class="refsect3">
-<a name="gst-gl-window-get-context.returns"></a><h4>Returns</h4>
-<p> the <a class="link" href="GstGLContext.html" title="GstGLContext"><span class="type">GstGLContext</span></a> associated with this <em class="parameter"><code>window</code></em>
-. </p>
-<p><span class="annotation">[<acronym title="Free data after the code is done."><span class="acronym">transfer full</span></acronym>]</span></p>
-</div>
-<p class="since">Since: 1.4</p>
</div>
<hr>
<div class="refsect2">
<a name="gst-gl-window-get-display"></a><h3>gst_gl_window_get_display ()</h3>
<pre class="programlisting"><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guintptr"><span class="returnvalue">guintptr</span></a>
gst_gl_window_get_display (<em class="parameter"><code><a class="link" href="GstGLWindow.html" title="GstGLWindow"><span class="type">GstGLWindow</span></a> *window</code></em>);</pre>
-<div class="refsect3">
-<a name="gst-gl-window-get-display.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody><tr>
-<td class="parameter_name"><p>window</p></td>
-<td class="parameter_description"><p>a <a class="link" href="GstGLWindow.html" title="GstGLWindow"><span class="type">GstGLWindow</span></a></p></td>
-<td class="parameter_annotations"> </td>
-</tr></tbody>
-</table></div>
-</div>
-<div class="refsect3">
-<a name="gst-gl-window-get-display.returns"></a><h4>Returns</h4>
-<p> the windowing system display handle for this <em class="parameter"><code>window</code></em>
-</p>
-</div>
-<p class="since">Since: 1.4</p>
</div>
<hr>
<div class="refsect2">
@@ -501,39 +366,6 @@
gst_gl_window_send_message (<em class="parameter"><code><a class="link" href="GstGLWindow.html" title="GstGLWindow"><span class="type">GstGLWindow</span></a> *window</code></em>,
<em class="parameter"><code><a class="link" href="GstGLWindow.html#GstGLWindowCB" title="GstGLWindowCB ()"><span class="type">GstGLWindowCB</span></a> callback</code></em>,
<em class="parameter"><code><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a> data</code></em>);</pre>
-<p>Invoke <em class="parameter"><code>callback</code></em>
- with data on the window thread. <em class="parameter"><code>callback</code></em>
- is guarenteed to
-have executed when this function returns.</p>
-<div class="refsect3">
-<a name="gst-gl-window-send-message.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="parameter_name"><p>window</p></td>
-<td class="parameter_description"><p>a <a class="link" href="GstGLWindow.html" title="GstGLWindow"><span class="type">GstGLWindow</span></a></p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>callback</p></td>
-<td class="parameter_description"><p> function to invoke. </p></td>
-<td class="parameter_annotations"><span class="annotation">[<acronym title="The callback is valid until first called."><span class="acronym">scope async</span></acronym>]</span></td>
-</tr>
-<tr>
-<td class="parameter_name"><p>data</p></td>
-<td class="parameter_description"><p> data to invoke <em class="parameter"><code>callback</code></em>
-with. </p></td>
-<td class="parameter_annotations"><span class="annotation">[<acronym title="This parameter is a 'user_data', for callbacks; many bindings can pass NULL here."><span class="acronym">closure</span></acronym>]</span></td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<p class="since">Since: 1.4</p>
</div>
<hr>
<div class="refsect2">
@@ -543,45 +375,6 @@
<em class="parameter"><code><a class="link" href="GstGLWindow.html#GstGLWindowCB" title="GstGLWindowCB ()"><span class="type">GstGLWindowCB</span></a> callback</code></em>,
<em class="parameter"><code><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a> data</code></em>,
<em class="parameter"><code><a href="/usr/share/gtk-doc/html/glibglib-Datasets.html#GDestroyNotify"><span class="type">GDestroyNotify</span></a> destroy</code></em>);</pre>
-<p>Invoke <em class="parameter"><code>callback</code></em>
- with <em class="parameter"><code>data</code></em>
- on the window thread. The callback may not
-have been executed when this function returns.</p>
-<div class="refsect3">
-<a name="gst-gl-window-send-message-async.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="parameter_name"><p>window</p></td>
-<td class="parameter_description"><p>a <a class="link" href="GstGLWindow.html" title="GstGLWindow"><span class="type">GstGLWindow</span></a></p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>callback</p></td>
-<td class="parameter_description"><p> function to invoke. </p></td>
-<td class="parameter_annotations"><span class="annotation">[<acronym title="The callback is valid until first called."><span class="acronym">scope async</span></acronym>]</span></td>
-</tr>
-<tr>
-<td class="parameter_name"><p>data</p></td>
-<td class="parameter_description"><p> data to invoke <em class="parameter"><code>callback</code></em>
-with. </p></td>
-<td class="parameter_annotations"><span class="annotation">[<acronym title="This parameter is a 'user_data', for callbacks; many bindings can pass NULL here."><span class="acronym">closure</span></acronym>]</span></td>
-</tr>
-<tr>
-<td class="parameter_name"><p>destroy</p></td>
-<td class="parameter_description"><p> called when <em class="parameter"><code>data</code></em>
-is not needed anymore. </p></td>
-<td class="parameter_annotations"><span class="annotation">[<acronym title="This parameter is a 'destroy_data', for callbacks."><span class="acronym">destroy</span></acronym>]</span></td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<p class="since">Since: 1.4</p>
</div>
<hr>
<div class="refsect2">
@@ -591,42 +384,6 @@
<em class="parameter"><code><a class="link" href="GstGLWindow.html#GstGLWindowCB" title="GstGLWindowCB ()"><span class="type">GstGLWindowCB</span></a> callback</code></em>,
<em class="parameter"><code><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a> data</code></em>,
<em class="parameter"><code><a href="/usr/share/gtk-doc/html/glibglib-Datasets.html#GDestroyNotify"><span class="type">GDestroyNotify</span></a> destroy_notify</code></em>);</pre>
-<p>Sets the callback called when the window is about to close.</p>
-<div class="refsect3">
-<a name="gst-gl-window-set-close-callback.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="parameter_name"><p>window</p></td>
-<td class="parameter_description"><p>a <a class="link" href="GstGLWindow.html" title="GstGLWindow"><span class="type">GstGLWindow</span></a></p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>callback</p></td>
-<td class="parameter_description"><p> function to invoke. </p></td>
-<td class="parameter_annotations"><span class="annotation">[<acronym title="The callback is valid until the GDestroyNotify argument is called."><span class="acronym">scope notified</span></acronym>]</span></td>
-</tr>
-<tr>
-<td class="parameter_name"><p>data</p></td>
-<td class="parameter_description"><p> data to invoke <em class="parameter"><code>callback</code></em>
-with. </p></td>
-<td class="parameter_annotations"><span class="annotation">[<acronym title="This parameter is a 'user_data', for callbacks; many bindings can pass NULL here."><span class="acronym">closure</span></acronym>]</span></td>
-</tr>
-<tr>
-<td class="parameter_name"><p>destroy_notify</p></td>
-<td class="parameter_description"><p> called when <em class="parameter"><code>data</code></em>
-is not needed any more. </p></td>
-<td class="parameter_annotations"><span class="annotation">[<acronym title="This parameter is a 'destroy_data', for callbacks."><span class="acronym">destroy</span></acronym>]</span></td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<p class="since">Since: 1.4</p>
</div>
<hr>
<div class="refsect2">
@@ -636,42 +393,6 @@
<em class="parameter"><code><a class="link" href="GstGLWindow.html#GstGLWindowCB" title="GstGLWindowCB ()"><span class="type">GstGLWindowCB</span></a> callback</code></em>,
<em class="parameter"><code><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a> data</code></em>,
<em class="parameter"><code><a href="/usr/share/gtk-doc/html/glibglib-Datasets.html#GDestroyNotify"><span class="type">GDestroyNotify</span></a> destroy_notify</code></em>);</pre>
-<p>Sets the draw callback called everytime <a class="link" href="GstGLWindow.html#gst-gl-window-draw" title="gst_gl_window_draw ()"><code class="function">gst_gl_window_draw()</code></a> is called</p>
-<div class="refsect3">
-<a name="gst-gl-window-set-draw-callback.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="parameter_name"><p>window</p></td>
-<td class="parameter_description"><p>a <a class="link" href="GstGLWindow.html" title="GstGLWindow"><span class="type">GstGLWindow</span></a></p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>callback</p></td>
-<td class="parameter_description"><p> function to invoke. </p></td>
-<td class="parameter_annotations"><span class="annotation">[<acronym title="The callback is valid until the GDestroyNotify argument is called."><span class="acronym">scope notified</span></acronym>]</span></td>
-</tr>
-<tr>
-<td class="parameter_name"><p>data</p></td>
-<td class="parameter_description"><p> data to invoke <em class="parameter"><code>callback</code></em>
-with. </p></td>
-<td class="parameter_annotations"><span class="annotation">[<acronym title="This parameter is a 'user_data', for callbacks; many bindings can pass NULL here."><span class="acronym">closure</span></acronym>]</span></td>
-</tr>
-<tr>
-<td class="parameter_name"><p>destroy_notify</p></td>
-<td class="parameter_description"><p> called when <em class="parameter"><code>data</code></em>
-is not needed any more. </p></td>
-<td class="parameter_annotations"><span class="annotation">[<acronym title="This parameter is a 'destroy_data', for callbacks."><span class="acronym">destroy</span></acronym>]</span></td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<p class="since">Since: 1.4</p>
</div>
<hr>
<div class="refsect2">
@@ -681,42 +402,6 @@
<em class="parameter"><code><a class="link" href="GstGLWindow.html#GstGLWindowResizeCB" title="GstGLWindowResizeCB ()"><span class="type">GstGLWindowResizeCB</span></a> callback</code></em>,
<em class="parameter"><code><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a> data</code></em>,
<em class="parameter"><code><a href="/usr/share/gtk-doc/html/glibglib-Datasets.html#GDestroyNotify"><span class="type">GDestroyNotify</span></a> destroy_notify</code></em>);</pre>
-<p>Sets the resize callback called everytime a resize of the window occurs.</p>
-<div class="refsect3">
-<a name="gst-gl-window-set-resize-callback.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="parameter_name"><p>window</p></td>
-<td class="parameter_description"><p>a <a class="link" href="GstGLWindow.html" title="GstGLWindow"><span class="type">GstGLWindow</span></a></p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>callback</p></td>
-<td class="parameter_description"><p> function to invoke. </p></td>
-<td class="parameter_annotations"><span class="annotation">[<acronym title="The callback is valid until the GDestroyNotify argument is called."><span class="acronym">scope notified</span></acronym>]</span></td>
-</tr>
-<tr>
-<td class="parameter_name"><p>data</p></td>
-<td class="parameter_description"><p> data to invoke <em class="parameter"><code>callback</code></em>
-with. </p></td>
-<td class="parameter_annotations"><span class="annotation">[<acronym title="This parameter is a 'user_data', for callbacks; many bindings can pass NULL here."><span class="acronym">closure</span></acronym>]</span></td>
-</tr>
-<tr>
-<td class="parameter_name"><p>destroy_notify</p></td>
-<td class="parameter_description"><p> called when <em class="parameter"><code>data</code></em>
-is not needed any more. </p></td>
-<td class="parameter_annotations"><span class="annotation">[<acronym title="This parameter is a 'destroy_data', for callbacks."><span class="acronym">destroy</span></acronym>]</span></td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<p class="since">Since: 1.4</p>
</div>
<hr>
<div class="refsect2">
@@ -724,58 +409,12 @@
<pre class="programlisting"><span class="returnvalue">void</span>
gst_gl_window_set_window_handle (<em class="parameter"><code><a class="link" href="GstGLWindow.html" title="GstGLWindow"><span class="type">GstGLWindow</span></a> *window</code></em>,
<em class="parameter"><code><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guintptr"><span class="type">guintptr</span></a> handle</code></em>);</pre>
-<p>Sets the window that this <em class="parameter"><code>window</code></em>
- should render into. Some implementations
-require this to be called with a valid handle before drawing can commence.</p>
-<div class="refsect3">
-<a name="gst-gl-window-set-window-handle.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="parameter_name"><p>window</p></td>
-<td class="parameter_description"><p>a <a class="link" href="GstGLWindow.html" title="GstGLWindow"><span class="type">GstGLWindow</span></a></p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>handle</p></td>
-<td class="parameter_description"><p>handle to the window</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<p class="since">Since: 1.4</p>
</div>
<hr>
<div class="refsect2">
<a name="gst-gl-window-get-window-handle"></a><h3>gst_gl_window_get_window_handle ()</h3>
<pre class="programlisting"><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guintptr"><span class="returnvalue">guintptr</span></a>
gst_gl_window_get_window_handle (<em class="parameter"><code><a class="link" href="GstGLWindow.html" title="GstGLWindow"><span class="type">GstGLWindow</span></a> *window</code></em>);</pre>
-<div class="refsect3">
-<a name="gst-gl-window-get-window-handle.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody><tr>
-<td class="parameter_name"><p>window</p></td>
-<td class="parameter_description"><p>a <a class="link" href="GstGLWindow.html" title="GstGLWindow"><span class="type">GstGLWindow</span></a></p></td>
-<td class="parameter_annotations"> </td>
-</tr></tbody>
-</table></div>
-</div>
-<div class="refsect3">
-<a name="gst-gl-window-get-window-handle.returns"></a><h4>Returns</h4>
-<p> the window handle we are currently rendering into</p>
-</div>
-<p class="since">Since: 1.4</p>
</div>
<hr>
<div class="refsect2">
@@ -784,59 +423,12 @@
gst_gl_window_set_preferred_size (<em class="parameter"><code><a class="link" href="GstGLWindow.html" title="GstGLWindow"><span class="type">GstGLWindow</span></a> *window</code></em>,
<em class="parameter"><code><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gint"><span class="type">gint</span></a> width</code></em>,
<em class="parameter"><code><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gint"><span class="type">gint</span></a> height</code></em>);</pre>
-<p>Set the preferred width and height of the window. Implementations are free
-to ignore this information.</p>
-<div class="refsect3">
-<a name="gst-gl-window-set-preferred-size.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="parameter_name"><p>window</p></td>
-<td class="parameter_description"><p>a <a class="link" href="GstGLWindow.html" title="GstGLWindow"><span class="type">GstGLWindow</span></a></p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>width</p></td>
-<td class="parameter_description"><p>new preferred width</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>height</p></td>
-<td class="parameter_description"><p>new preferred height</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<p class="since">Since: 1.6</p>
</div>
<hr>
<div class="refsect2">
<a name="gst-gl-window-show"></a><h3>gst_gl_window_show ()</h3>
<pre class="programlisting"><span class="returnvalue">void</span>
gst_gl_window_show (<em class="parameter"><code><a class="link" href="GstGLWindow.html" title="GstGLWindow"><span class="type">GstGLWindow</span></a> *window</code></em>);</pre>
-<p>Present the window to the screen.</p>
-<div class="refsect3">
-<a name="gst-gl-window-show.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody><tr>
-<td class="parameter_name"><p>window</p></td>
-<td class="parameter_description"><p>a <a class="link" href="GstGLWindow.html" title="GstGLWindow"><span class="type">GstGLWindow</span></a></p></td>
-<td class="parameter_annotations"> </td>
-</tr></tbody>
-</table></div>
-</div>
-<p class="since">Since: 1.6</p>
</div>
<hr>
<div class="refsect2">
@@ -845,34 +437,6 @@
gst_gl_window_get_surface_dimensions (<em class="parameter"><code><a class="link" href="GstGLWindow.html" title="GstGLWindow"><span class="type">GstGLWindow</span></a> *window</code></em>,
<em class="parameter"><code><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint"><span class="type">guint</span></a> *width</code></em>,
<em class="parameter"><code><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint"><span class="type">guint</span></a> *height</code></em>);</pre>
-<div class="refsect3">
-<a name="gst-gl-window-get-surface-dimensions.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="parameter_name"><p>window</p></td>
-<td class="parameter_description"><p>a <a class="link" href="GstGLWindow.html" title="GstGLWindow"><span class="type">GstGLWindow</span></a></p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>width</p></td>
-<td class="parameter_description"><p> resulting surface width. </p></td>
-<td class="parameter_annotations"><span class="annotation">[<acronym title="Parameter for returning results. Default is transfer full."><span class="acronym">out</span></acronym>]</span></td>
-</tr>
-<tr>
-<td class="parameter_name"><p>height</p></td>
-<td class="parameter_description"><p> resulting surface height. </p></td>
-<td class="parameter_annotations"><span class="annotation">[<acronym title="Parameter for returning results. Default is transfer full."><span class="acronym">out</span></acronym>]</span></td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<p class="since">Since: 1.6</p>
</div>
<hr>
<div class="refsect2">
@@ -880,35 +444,6 @@
<pre class="programlisting"><span class="returnvalue">void</span>
gst_gl_window_handle_events (<em class="parameter"><code><a class="link" href="GstGLWindow.html" title="GstGLWindow"><span class="type">GstGLWindow</span></a> *window</code></em>,
<em class="parameter"><code><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a> handle_events</code></em>);</pre>
-<p>Tell a <em class="parameter"><code>window</code></em>
- that it should handle events from the window system. These
-events are forwarded upstream as navigation events. In some window systems
-events are not propagated in the window hierarchy if a client is listening
-for them. This method allows you to disable events handling completely
-from the <em class="parameter"><code>window</code></em>
-.</p>
-<div class="refsect3">
-<a name="gst-gl-window-handle-events.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="parameter_name"><p>window</p></td>
-<td class="parameter_description"><p>a <a class="link" href="GstGLWindow.html" title="GstGLWindow"><span class="type">GstGLWindow</span></a></p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>handle_events</p></td>
-<td class="parameter_description"><p>a <a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a> indicating if events should be handled or not.</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-</tbody>
-</table></div>
-</div>
</div>
</div>
<div class="refsect1">
@@ -953,8 +488,6 @@
<div class="refsect2">
<a name="GstGLWindow-struct"></a><h3>GstGLWindow</h3>
<pre class="programlisting">typedef struct _GstGLWindow GstGLWindow;</pre>
-<p><a class="link" href="GstGLWindow.html" title="GstGLWindow"><span class="type">GstGLWindow</span></a> is an opaque struct and should only be accessed through the
-provided api.</p>
</div>
<hr>
<div class="refsect2">
@@ -980,99 +513,6 @@
void (*queue_resize) (GstGLWindow *window);
} GstGLWindowClass;
</pre>
-<div class="refsect3">
-<a name="GstGLWindowClass.members"></a><h4>Members</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="300px" class="struct_members_name">
-<col class="struct_members_description">
-<col width="200px" class="struct_members_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="struct_member_name"><p><em class="structfield"><code><a name="GstGLWindowClass.get-display"></a>get_display</code></em> ()</p></td>
-<td class="struct_member_description"><p>Gets the current windowing system display connection</p></td>
-<td class="struct_member_annotations"> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><em class="structfield"><code><a name="GstGLWindowClass.set-window-handle"></a>set_window_handle</code></em> ()</p></td>
-<td class="struct_member_description"><p>Set a window to render into</p></td>
-<td class="struct_member_annotations"> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><em class="structfield"><code><a name="GstGLWindowClass.get-window-handle"></a>get_window_handle</code></em> ()</p></td>
-<td class="struct_member_description"><p>Gets the current window that this <a class="link" href="GstGLWindow.html" title="GstGLWindow"><span class="type">GstGLWindow</span></a> is
-rendering into</p></td>
-<td class="struct_member_annotations"> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><em class="structfield"><code><a name="GstGLWindowClass.draw"></a>draw</code></em> ()</p></td>
-<td class="struct_member_description"><p>redraw the window with the specified dimensions</p></td>
-<td class="struct_member_annotations"> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><em class="structfield"><code><a name="GstGLWindowClass.run"></a>run</code></em> ()</p></td>
-<td class="struct_member_description"><p>run the mainloop</p></td>
-<td class="struct_member_annotations"> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><em class="structfield"><code><a name="GstGLWindowClass.quit"></a>quit</code></em> ()</p></td>
-<td class="struct_member_description"><p>send a quit to the mainloop</p></td>
-<td class="struct_member_annotations"> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><em class="structfield"><code><a name="GstGLWindowClass.send-message"></a>send_message</code></em> ()</p></td>
-<td class="struct_member_description"><p>invoke a function on the window thread. Required to be reentrant.</p></td>
-<td class="struct_member_annotations"> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><em class="structfield"><code><a name="GstGLWindowClass.send-message-async"></a>send_message_async</code></em> ()</p></td>
-<td class="struct_member_description"><p>invoke a function on the window thread. <em class="parameter"><code>run</code></em>
-may or may
-not have been called. Required to be reentrant.</p></td>
-<td class="struct_member_annotations"> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><em class="structfield"><code><a name="GstGLWindowClass.open"></a>open</code></em> ()</p></td>
-<td class="struct_member_description"><p>open the connection to the display</p></td>
-<td class="struct_member_annotations"> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><em class="structfield"><code><a name="GstGLWindowClass.close"></a>close</code></em> ()</p></td>
-<td class="struct_member_description"><p>close the connection to the display</p></td>
-<td class="struct_member_annotations"> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><em class="structfield"><code><a name="GstGLWindowClass.handle-events"></a>handle_events</code></em> ()</p></td>
-<td class="struct_member_description"><p>whether to handle 'extra' events from the windowing system.
-Basic events like surface moves and resizes are still valid
-things to listen for.</p></td>
-<td class="struct_member_annotations"> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><em class="structfield"><code><a name="GstGLWindowClass.set-preferred-size"></a>set_preferred_size</code></em> ()</p></td>
-<td class="struct_member_description"><p>request that the window change surface size. The
-implementation is free to ignore this information.</p></td>
-<td class="struct_member_annotations"> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><em class="structfield"><code><a name="GstGLWindowClass.show"></a>show</code></em> ()</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><em class="structfield"><code><a name="GstGLWindowClass.set-render-rectangle"></a>set_render_rectangle</code></em> ()</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><em class="structfield"><code><a name="GstGLWindowClass.queue-resize"></a>queue_resize</code></em> ()</p></td>
-<td> </td>
-<td> </td>
-</tr>
-</tbody>
-</table></div>
-</div>
</div>
</div>
<div class="refsect1">
@@ -1080,107 +520,25 @@
<div class="refsect2">
<a name="GstGLWindow-key-event"></a><h3>The <code class="literal">“key-event”</code> signal</h3>
<pre class="programlisting"><span class="returnvalue">void</span>
-user_function (<a class="link" href="GstGLWindow.html" title="GstGLWindow"><span class="type">GstGLWindow</span></a> *object,
- <a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *id,
- <a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *key,
+user_function (<a class="link" href="GstGLWindow.html" title="GstGLWindow"><span class="type">GstGLWindow</span></a> *gstglwindow,
+ <a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *arg1,
+ <a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *arg2,
<a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a> user_data)</pre>
-<p>Will be emitted when a key event is received by the GstGLwindow.</p>
-<div class="refsect3">
-<a name="GstGLWindow-key-event.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="parameter_name"><p>object</p></td>
-<td class="parameter_description"><p>the <a class="link" href="GstGLWindow.html" title="GstGLWindow"><span class="type">GstGLWindow</span></a></p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>id</p></td>
-<td class="parameter_description"><p>the name of the event</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>key</p></td>
-<td class="parameter_description"><p>the id of the key pressed</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>user_data</p></td>
-<td class="parameter_description"><p>user data set when the signal handler was connected.</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-</tbody>
-</table></div>
-</div>
<p>Flags: <a href="/usr/share/gtk-doc/html/gobjectgobject-Signals.html#G-SIGNAL-RUN-LAST:CAPS">Run Last</a></p>
-<p class="since">Since: 1.6</p>
</div>
<hr>
<div class="refsect2">
<a name="GstGLWindow-mouse-event"></a><h3>The <code class="literal">“mouse-event”</code> signal</h3>
<pre class="programlisting"><span class="returnvalue">void</span>
-user_function (<a class="link" href="GstGLWindow.html" title="GstGLWindow"><span class="type">GstGLWindow</span></a> *object,
- <a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *id,
- <a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gint"><span class="type">gint</span></a> button,
- <a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gdouble"><span class="type">gdouble</span></a> x,
- <a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gdouble"><span class="type">gdouble</span></a> y,
+user_function (<a class="link" href="GstGLWindow.html" title="GstGLWindow"><span class="type">GstGLWindow</span></a> *gstglwindow,
+ <a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *arg1,
+ <a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gint"><span class="type">gint</span></a> arg2,
+ <a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gdouble"><span class="type">gdouble</span></a> arg3,
+ <a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gdouble"><span class="type">gdouble</span></a> arg4,
<a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a> user_data)</pre>
-<p>Will be emitted when a mouse event is received by the GstGLwindow.</p>
-<div class="refsect3">
-<a name="GstGLWindow-mouse-event.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="parameter_name"><p>object</p></td>
-<td class="parameter_description"><p>the <a class="link" href="GstGLWindow.html" title="GstGLWindow"><span class="type">GstGLWindow</span></a></p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>id</p></td>
-<td class="parameter_description"><p>the name of the event</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>button</p></td>
-<td class="parameter_description"><p>the id of the button</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>x</p></td>
-<td class="parameter_description"><p>the x coordinate of the mouse event</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>y</p></td>
-<td class="parameter_description"><p>the y coordinate of the mouse event</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>user_data</p></td>
-<td class="parameter_description"><p>user data set when the signal handler was connected.</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-</tbody>
-</table></div>
-</div>
<p>Flags: <a href="/usr/share/gtk-doc/html/gobjectgobject-Signals.html#G-SIGNAL-RUN-LAST:CAPS">Run Last</a></p>
-<p class="since">Since: 1.6</p>
</div>
</div>
-<div class="refsect1">
-<a name="GstGLWindow.see-also"></a><h2>See Also</h2>
-<p><a class="link" href="GstGLContext.html" title="GstGLContext"><span class="type">GstGLContext</span></a>, <a class="link" href="GstGLDisplay.html" title="GstGLDisplay"><span class="type">GstGLDisplay</span></a></p>
-</div>
</div>
<div class="footer">
<hr>Generated by GTK-Doc V1.25</div>
diff --git a/docs/libs/html/annotation-glossary.html b/docs/libs/html/annotation-glossary.html
deleted file mode 100644
index 8780676..0000000
--- a/docs/libs/html/annotation-glossary.html
+++ /dev/null
@@ -1,89 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>Annotation Glossary: GStreamer Bad Plugins 1.0 Library Reference Manual</title>
-<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
-<link rel="home" href="index.html" title="GStreamer Bad Plugins 1.0 Library Reference Manual">
-<link rel="up" href="index.html" title="GStreamer Bad Plugins 1.0 Library Reference Manual">
-<link rel="prev" href="api-index-deprecated.html" title="Index of deprecated API">
-<meta name="generator" content="GTK-Doc V1.25 (XML mode)">
-<link rel="stylesheet" href="style.css" type="text/css">
-</head>
-<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
-<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="5"><tr valign="middle">
-<td width="100%" align="left" class="shortcuts"><span id="nav_glossary"><a class="shortcut" href="#glsA">A</a>
- <span class="dim">|</span>
- <a class="shortcut" href="#glsC">C</a>
- <span class="dim">|</span>
- <a class="shortcut" href="#glsD">D</a>
- <span class="dim">|</span>
- <a class="shortcut" href="#glsE">E</a>
- <span class="dim">|</span>
- <a class="shortcut" href="#glsO">O</a>
- <span class="dim">|</span>
- <a class="shortcut" href="#glsS">S</a>
- <span class="dim">|</span>
- <a class="shortcut" href="#glsT">T</a>
- <span class="dim">|</span>
- <a class="shortcut" href="#glsU">U</a></span></td>
-<td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
-<td><img src="up-insensitive.png" width="16" height="16" border="0"></td>
-<td><a accesskey="p" href="api-index-deprecated.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
-<td><img src="right-insensitive.png" width="16" height="16" border="0"></td>
-</tr></table>
-<div class="glossary">
-<div class="titlepage"><div><div><h1 class="title">
-<a name="annotation-glossary"></a>Annotation Glossary</h1></div></div></div>
-<a name="glsA"></a><h3 class="title">A</h3>
-<dt><span class="glossterm"><a name="annotation-glossterm-allow-none"></a>allow-none</span></dt>
-<dd class="glossdef"><p>NULL is OK, both for passing and for returning.</p></dd>
-<dt><span class="glossterm"><a name="annotation-glossterm-array"></a>array</span></dt>
-<dd class="glossdef"><p>Parameter points to an array of items.</p></dd>
-<a name="glsC"></a><h3 class="title">C</h3>
-<dt><span class="glossterm"><a name="annotation-glossterm-closure"></a>closure</span></dt>
-<dd class="glossdef"><p>This parameter is a 'user_data', for callbacks; many bindings can pass NULL here.</p></dd>
-<a name="glsD"></a><h3 class="title">D</h3>
-<dt><span class="glossterm"><a name="annotation-glossterm-destroy"></a>destroy</span></dt>
-<dd class="glossdef"><p>This parameter is a 'destroy_data', for callbacks.</p></dd>
-<a name="glsE"></a><h3 class="title">E</h3>
-<dt><span class="glossterm"><a name="annotation-glossterm-element-type"></a>element-type</span></dt>
-<dd class="glossdef"><p>Generics and defining elements of containers and arrays.</p></dd>
-<a name="glsO"></a><h3 class="title">O</h3>
-<dt><span class="glossterm"><a name="annotation-glossterm-out"></a>out</span></dt>
-<dd class="glossdef"><p>Parameter for returning results. Default is <acronym title="Free data after the code is done."><span class="acronym">transfer full</span></acronym>.</p></dd>
-<a name="glsS"></a><h3 class="title">S</h3>
-<dt><span class="glossterm"><a name="annotation-glossterm-scope%20async"></a>scope async</span></dt>
-<dd class="glossdef"><p>The callback is valid until first called.</p></dd>
-<dt><span class="glossterm"><a name="annotation-glossterm-scope%20call"></a>scope call</span></dt>
-<dd class="glossdef"><p>The callback is valid only during the call to the method.</p></dd>
-<dt><span class="glossterm"><a name="annotation-glossterm-scope%20notified"></a>scope notified</span></dt>
-<dd class="glossdef"><p>The callback is valid until the GDestroyNotify argument is called.</p></dd>
-<a name="glsT"></a><h3 class="title">T</h3>
-<dt><span class="glossterm"><a name="annotation-glossterm-transfer%20container"></a>transfer container</span></dt>
-<dd class="glossdef"><p>Free data container after the code is done.</p></dd>
-<dt><span class="glossterm"><a name="annotation-glossterm-transfer%20full"></a>transfer full</span></dt>
-<dd class="glossdef"><p>Free data after the code is done.</p></dd>
-<dt><span class="glossterm"><a name="annotation-glossterm-transfer%20none"></a>transfer none</span></dt>
-<dd class="glossdef"><p>Don't free data after the code is done.</p></dd>
-<a name="glsU"></a><h3 class="title">U</h3>
-<dt><span class="glossterm"><a name="annotation-glossterm-Unstable"></a>Unstable</span></dt>
-<dd class="glossdef"><p>Unstable interfaces are experimental or transitional. They are typically used to
-give outside developers early access to new or rapidly changing technology, or
-to provide an interim solution to a problem where a more general solution is
-anticipated. No claims are made about either source or binary compatibility from
-one minor release to the next.
-
-The Unstable interface level is a warning that these interfaces are subject to
-change without warning and should not be used in unbundled products.
-
-Given such caveats, customer impact need not be a factor when considering
-incompatible changes to an Unstable interface in a major or minor release.
-Nonetheless, when such changes are introduced, the changes should still be
-mentioned in the release notes for the affected release.
-</p></dd>
-</div>
-<div class="footer">
-<hr>Generated by GTK-Doc V1.25</div>
-</body>
-</html>
\ No newline at end of file
diff --git a/docs/libs/html/api-index-deprecated.html b/docs/libs/html/api-index-deprecated.html
index fbcd723..8361576 100644
--- a/docs/libs/html/api-index-deprecated.html
+++ b/docs/libs/html/api-index-deprecated.html
@@ -7,7 +7,6 @@
<link rel="home" href="index.html" title="GStreamer Bad Plugins 1.0 Library Reference Manual">
<link rel="up" href="index.html" title="GStreamer Bad Plugins 1.0 Library Reference Manual">
<link rel="prev" href="api-index-full.html" title="Index">
-<link rel="next" href="annotation-glossary.html" title="Annotation Glossary">
<meta name="generator" content="GTK-Doc V1.25 (XML mode)">
<link rel="stylesheet" href="style.css" type="text/css">
</head>
@@ -17,7 +16,7 @@
<td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
<td><img src="up-insensitive.png" width="16" height="16" border="0"></td>
<td><a accesskey="p" href="api-index-full.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
-<td><a accesskey="n" href="annotation-glossary.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
+<td><img src="right-insensitive.png" width="16" height="16" border="0"></td>
</tr></table>
<div class="index">
<div class="titlepage"><div><div><h1 class="title">
diff --git a/docs/libs/html/api-index-full.html b/docs/libs/html/api-index-full.html
index 94ff3e1..89ed096 100644
--- a/docs/libs/html/api-index-full.html
+++ b/docs/libs/html/api-index-full.html
@@ -216,10 +216,6 @@
</dt>
<dd></dd>
<dt>
-<a class="link" href="gst-plugins-bad-libs-GstEGLImageMemory.html#GST-CAPS-FEATURE-MEMORY-EGL-IMAGE:CAPS" title="GST_CAPS_FEATURE_MEMORY_EGL_IMAGE">GST_CAPS_FEATURE_MEMORY_EGL_IMAGE</a>, macro in <a class="link" href="gst-plugins-bad-libs-GstEGLImageMemory.html" title="GstEGLImageMemory">GstEGLImageMemory</a>
-</dt>
-<dd></dd>
-<dt>
<a class="link" href="gst-plugins-bad-libs-GstGLBuffer.html#GST-CAPS-FEATURE-MEMORY-GL-BUFFER:CAPS" title="GST_CAPS_FEATURE_MEMORY_GL_BUFFER">GST_CAPS_FEATURE_MEMORY_GL_BUFFER</a>, macro in <a class="link" href="gst-plugins-bad-libs-GstGLBuffer.html" title="GstGLBuffer">GstGLBuffer</a>
</dt>
<dd></dd>
@@ -266,35 +262,7 @@
<dd></dd>
<a name="idxE"></a><h3 class="title">E</h3>
<dt>
-<a class="link" href="gst-plugins-bad-libs-GstEGLImageMemory.html#gst-egl-image-memory-get-display" title="gst_egl_image_memory_get_display ()">gst_egl_image_memory_get_display</a>, function in <a class="link" href="gst-plugins-bad-libs-GstEGLImageMemory.html" title="GstEGLImageMemory">GstEGLImageMemory</a>
-</dt>
-<dd></dd>
-<dt>
-<a class="link" href="gst-plugins-bad-libs-GstEGLImageMemory.html#gst-egl-image-memory-get-image" title="gst_egl_image_memory_get_image ()">gst_egl_image_memory_get_image</a>, function in <a class="link" href="gst-plugins-bad-libs-GstEGLImageMemory.html" title="GstEGLImageMemory">GstEGLImageMemory</a>
-</dt>
-<dd></dd>
-<dt>
-<a class="link" href="gst-plugins-bad-libs-GstEGLImageMemory.html#gst-egl-image-memory-get-orientation" title="gst_egl_image_memory_get_orientation ()">gst_egl_image_memory_get_orientation</a>, function in <a class="link" href="gst-plugins-bad-libs-GstEGLImageMemory.html" title="GstEGLImageMemory">GstEGLImageMemory</a>
-</dt>
-<dd></dd>
-<dt>
-<a class="link" href="gst-plugins-bad-libs-GstEGLImageMemory.html#gst-egl-image-memory-init" title="gst_egl_image_memory_init ()">gst_egl_image_memory_init</a>, function in <a class="link" href="gst-plugins-bad-libs-GstEGLImageMemory.html" title="GstEGLImageMemory">GstEGLImageMemory</a>
-</dt>
-<dd></dd>
-<dt>
-<a class="link" href="gst-plugins-bad-libs-GstEGLImageMemory.html#gst-egl-image-memory-setup-buffer" title="gst_egl_image_memory_setup_buffer ()">gst_egl_image_memory_setup_buffer</a>, function in <a class="link" href="gst-plugins-bad-libs-GstEGLImageMemory.html" title="GstEGLImageMemory">GstEGLImageMemory</a>
-</dt>
-<dd></dd>
-<dt>
-<a class="link" href="gst-plugins-bad-libs-GstEGLImageMemory.html#gst-egl-image-memory-set-orientation" title="gst_egl_image_memory_set_orientation ()">gst_egl_image_memory_set_orientation</a>, function in <a class="link" href="gst-plugins-bad-libs-GstEGLImageMemory.html" title="GstEGLImageMemory">GstEGLImageMemory</a>
-</dt>
-<dd></dd>
-<dt>
-<a class="link" href="gst-plugins-bad-libs-GstEGLImageMemory.html#GST-EGL-IMAGE-MEMORY-TYPE:CAPS" title="GST_EGL_IMAGE_MEMORY_TYPE">GST_EGL_IMAGE_MEMORY_TYPE</a>, macro in <a class="link" href="gst-plugins-bad-libs-GstEGLImageMemory.html" title="GstEGLImageMemory">GstEGLImageMemory</a>
-</dt>
-<dd></dd>
-<dt>
-<a class="link" href="gst-plugins-bad-libs-Base-MPEG-TS-sections.html#gst-event-parse-mpegts-section" title="gst_event_parse_mpegts_section ()">gst_event_parse_mpegts_section</a>, function in <a class="link" href="gst-plugins-bad-libs-Base-MPEG-TS-sections.html" title="Base MPEG-TS sections">Base MPEG-TS sections</a>
+<a class="link" href="gst-plugins-bad-libs-gstmpegtssection.html#gst-event-parse-mpegts-section" title="gst_event_parse_mpegts_section ()">gst_event_parse_mpegts_section</a>, function in <a class="link" href="gst-plugins-bad-libs-gstmpegtssection.html" title="gstmpegtssection">gstmpegtssection</a>
</dt>
<dd></dd>
<a name="idxG"></a><h3 class="title">G</h3>
@@ -315,11 +283,11 @@
</dt>
<dd></dd>
<dt>
-<a class="link" href="gst-plugins-bad-libs-OpenGL-debugging.html#GstGLAsyncDebug" title="struct GstGLAsyncDebug">GstGLAsyncDebug</a>, struct in <a class="link" href="gst-plugins-bad-libs-OpenGL-debugging.html" title="OpenGL debugging">OpenGL Debugging</a>
+<a class="link" href="gst-plugins-bad-libs-gstgldebug.html#GstGLAsyncDebug" title="struct GstGLAsyncDebug">GstGLAsyncDebug</a>, struct in <a class="link" href="gst-plugins-bad-libs-gstgldebug.html" title="OpenGL Debugging">OpenGL Debugging</a>
</dt>
<dd></dd>
<dt>
-<a class="link" href="gst-plugins-bad-libs-OpenGL-debugging.html#GstGLAsyncDebugLogGetMessage" title="GstGLAsyncDebugLogGetMessage ()">GstGLAsyncDebugLogGetMessage</a>, user_function in <a class="link" href="gst-plugins-bad-libs-OpenGL-debugging.html" title="OpenGL debugging">OpenGL debugging</a>
+<a class="link" href="gst-plugins-bad-libs-gstgldebug.html#GstGLAsyncDebugLogGetMessage" title="GstGLAsyncDebugLogGetMessage ()">GstGLAsyncDebugLogGetMessage</a>, user_function in <a class="link" href="gst-plugins-bad-libs-gstgldebug.html" title="OpenGL Debugging">gstgldebug</a>
</dt>
<dd></dd>
<dt>
@@ -811,47 +779,47 @@
</dt>
<dd></dd>
<dt>
-<a class="link" href="gst-plugins-bad-libs-OpenGL-debugging.html#GST-GL-ASYNC-CAT-LEVEL-LOG:CAPS" title="GST_GL_ASYNC_CAT_LEVEL_LOG()">GST_GL_ASYNC_CAT_LEVEL_LOG</a>, macro in <a class="link" href="gst-plugins-bad-libs-OpenGL-debugging.html" title="OpenGL debugging">OpenGL Debugging</a>
+<a class="link" href="gst-plugins-bad-libs-gstgldebug.html#GST-GL-ASYNC-CAT-LEVEL-LOG:CAPS" title="GST_GL_ASYNC_CAT_LEVEL_LOG()">GST_GL_ASYNC_CAT_LEVEL_LOG</a>, macro in <a class="link" href="gst-plugins-bad-libs-gstgldebug.html" title="OpenGL Debugging">OpenGL Debugging</a>
</dt>
<dd></dd>
<dt>
-<a class="link" href="gst-plugins-bad-libs-OpenGL-debugging.html#GST-GL-ASYNC-CAT-LEVEL-LOG-valist" title="GST_GL_ASYNC_CAT_LEVEL_LOG_valist()">GST_GL_ASYNC_CAT_LEVEL_LOG_valist</a>, macro in <a class="link" href="gst-plugins-bad-libs-OpenGL-debugging.html" title="OpenGL debugging">OpenGL Debugging</a>
+<a class="link" href="gst-plugins-bad-libs-gstgldebug.html#GST-GL-ASYNC-CAT-LEVEL-LOG-valist" title="GST_GL_ASYNC_CAT_LEVEL_LOG_valist()">GST_GL_ASYNC_CAT_LEVEL_LOG_valist</a>, macro in <a class="link" href="gst-plugins-bad-libs-gstgldebug.html" title="OpenGL Debugging">OpenGL Debugging</a>
</dt>
<dd></dd>
<dt>
-<a class="link" href="gst-plugins-bad-libs-OpenGL-debugging.html#gst-gl-async-debug-free" title="gst_gl_async_debug_free ()">gst_gl_async_debug_free</a>, function in <a class="link" href="gst-plugins-bad-libs-OpenGL-debugging.html" title="OpenGL debugging">OpenGL Debugging</a>
+<a class="link" href="gst-plugins-bad-libs-gstgldebug.html#gst-gl-async-debug-free" title="gst_gl_async_debug_free ()">gst_gl_async_debug_free</a>, function in <a class="link" href="gst-plugins-bad-libs-gstgldebug.html" title="OpenGL Debugging">OpenGL Debugging</a>
</dt>
<dd></dd>
<dt>
-<a class="link" href="gst-plugins-bad-libs-OpenGL-debugging.html#gst-gl-async-debug-freeze" title="gst_gl_async_debug_freeze ()">gst_gl_async_debug_freeze</a>, function in <a class="link" href="gst-plugins-bad-libs-OpenGL-debugging.html" title="OpenGL debugging">OpenGL Debugging</a>
+<a class="link" href="gst-plugins-bad-libs-gstgldebug.html#gst-gl-async-debug-freeze" title="gst_gl_async_debug_freeze ()">gst_gl_async_debug_freeze</a>, function in <a class="link" href="gst-plugins-bad-libs-gstgldebug.html" title="OpenGL Debugging">OpenGL Debugging</a>
</dt>
<dd></dd>
<dt>
-<a class="link" href="gst-plugins-bad-libs-OpenGL-debugging.html#gst-gl-async-debug-init" title="gst_gl_async_debug_init ()">gst_gl_async_debug_init</a>, function in <a class="link" href="gst-plugins-bad-libs-OpenGL-debugging.html" title="OpenGL debugging">OpenGL Debugging</a>
+<a class="link" href="gst-plugins-bad-libs-gstgldebug.html#gst-gl-async-debug-init" title="gst_gl_async_debug_init ()">gst_gl_async_debug_init</a>, function in <a class="link" href="gst-plugins-bad-libs-gstgldebug.html" title="OpenGL Debugging">OpenGL Debugging</a>
</dt>
<dd></dd>
<dt>
-<a class="link" href="gst-plugins-bad-libs-OpenGL-debugging.html#gst-gl-async-debug-new" title="gst_gl_async_debug_new ()">gst_gl_async_debug_new</a>, function in <a class="link" href="gst-plugins-bad-libs-OpenGL-debugging.html" title="OpenGL debugging">OpenGL Debugging</a>
+<a class="link" href="gst-plugins-bad-libs-gstgldebug.html#gst-gl-async-debug-new" title="gst_gl_async_debug_new ()">gst_gl_async_debug_new</a>, function in <a class="link" href="gst-plugins-bad-libs-gstgldebug.html" title="OpenGL Debugging">OpenGL Debugging</a>
</dt>
<dd></dd>
<dt>
-<a class="link" href="gst-plugins-bad-libs-OpenGL-debugging.html#gst-gl-async-debug-output-log-msg" title="gst_gl_async_debug_output_log_msg ()">gst_gl_async_debug_output_log_msg</a>, function in <a class="link" href="gst-plugins-bad-libs-OpenGL-debugging.html" title="OpenGL debugging">OpenGL Debugging</a>
+<a class="link" href="gst-plugins-bad-libs-gstgldebug.html#gst-gl-async-debug-output-log-msg" title="gst_gl_async_debug_output_log_msg ()">gst_gl_async_debug_output_log_msg</a>, function in <a class="link" href="gst-plugins-bad-libs-gstgldebug.html" title="OpenGL Debugging">OpenGL Debugging</a>
</dt>
<dd></dd>
<dt>
-<a class="link" href="gst-plugins-bad-libs-OpenGL-debugging.html#gst-gl-async-debug-store-log-msg" title="gst_gl_async_debug_store_log_msg ()">gst_gl_async_debug_store_log_msg</a>, function in <a class="link" href="gst-plugins-bad-libs-OpenGL-debugging.html" title="OpenGL debugging">OpenGL Debugging</a>
+<a class="link" href="gst-plugins-bad-libs-gstgldebug.html#gst-gl-async-debug-store-log-msg" title="gst_gl_async_debug_store_log_msg ()">gst_gl_async_debug_store_log_msg</a>, function in <a class="link" href="gst-plugins-bad-libs-gstgldebug.html" title="OpenGL Debugging">OpenGL Debugging</a>
</dt>
<dd></dd>
<dt>
-<a class="link" href="gst-plugins-bad-libs-OpenGL-debugging.html#gst-gl-async-debug-store-log-msg-valist" title="gst_gl_async_debug_store_log_msg_valist ()">gst_gl_async_debug_store_log_msg_valist</a>, function in <a class="link" href="gst-plugins-bad-libs-OpenGL-debugging.html" title="OpenGL debugging">OpenGL Debugging</a>
+<a class="link" href="gst-plugins-bad-libs-gstgldebug.html#gst-gl-async-debug-store-log-msg-valist" title="gst_gl_async_debug_store_log_msg_valist ()">gst_gl_async_debug_store_log_msg_valist</a>, function in <a class="link" href="gst-plugins-bad-libs-gstgldebug.html" title="OpenGL Debugging">OpenGL Debugging</a>
</dt>
<dd></dd>
<dt>
-<a class="link" href="gst-plugins-bad-libs-OpenGL-debugging.html#gst-gl-async-debug-thaw" title="gst_gl_async_debug_thaw ()">gst_gl_async_debug_thaw</a>, function in <a class="link" href="gst-plugins-bad-libs-OpenGL-debugging.html" title="OpenGL debugging">OpenGL Debugging</a>
+<a class="link" href="gst-plugins-bad-libs-gstgldebug.html#gst-gl-async-debug-thaw" title="gst_gl_async_debug_thaw ()">gst_gl_async_debug_thaw</a>, function in <a class="link" href="gst-plugins-bad-libs-gstgldebug.html" title="OpenGL Debugging">OpenGL Debugging</a>
</dt>
<dd></dd>
<dt>
-<a class="link" href="gst-plugins-bad-libs-OpenGL-debugging.html#gst-gl-async-debug-unset" title="gst_gl_async_debug_unset ()">gst_gl_async_debug_unset</a>, function in <a class="link" href="gst-plugins-bad-libs-OpenGL-debugging.html" title="OpenGL debugging">OpenGL Debugging</a>
+<a class="link" href="gst-plugins-bad-libs-gstgldebug.html#gst-gl-async-debug-unset" title="gst_gl_async_debug_unset ()">gst_gl_async_debug_unset</a>, function in <a class="link" href="gst-plugins-bad-libs-gstgldebug.html" title="OpenGL Debugging">OpenGL Debugging</a>
</dt>
<dd></dd>
<dt>
@@ -991,10 +959,6 @@
</dt>
<dd></dd>
<dt>
-<a class="link" href="gst-plugins-bad-libs-OpenGL-Miscellaneous-Utilities.html#gst-gl-context-del-texture" title="gst_gl_context_del_texture ()">gst_gl_context_del_texture</a>, function in <a class="link" href="gst-plugins-bad-libs-OpenGL-Miscellaneous-Utilities.html" title="OpenGL Miscellaneous Utilities">OpenGL Miscellaneous Utilities</a>
-</dt>
-<dd></dd>
-<dt>
<a class="link" href="GstGLContext.html#gst-gl-context-destroy" title="gst_gl_context_destroy ()">gst_gl_context_destroy</a>, function in <a class="link" href="GstGLContext.html" title="GstGLContext">GstGLContext</a>
</dt>
<dd></dd>
@@ -1039,10 +1003,6 @@
</dt>
<dd></dd>
<dt>
-<a class="link" href="gst-plugins-bad-libs-OpenGL-Miscellaneous-Utilities.html#gst-gl-context-gen-texture" title="gst_gl_context_gen_texture ()">gst_gl_context_gen_texture</a>, function in <a class="link" href="gst-plugins-bad-libs-OpenGL-Miscellaneous-Utilities.html" title="OpenGL Miscellaneous Utilities">OpenGL Miscellaneous Utilities</a>
-</dt>
-<dd></dd>
-<dt>
<a class="link" href="GstGLContext.html#gst-gl-context-get-current" title="gst_gl_context_get_current ()">gst_gl_context_get_current</a>, function in <a class="link" href="GstGLContext.html" title="GstGLContext">GstGLContext</a>
</dt>
<dd></dd>
@@ -1235,10 +1195,6 @@
</dt>
<dd></dd>
<dt>
-<a class="link" href="gst-plugins-bad-libs-OpenGL-Miscellaneous-Utilities.html#gst-gl-generate-texture-full" title="gst_gl_generate_texture_full ()">gst_gl_generate_texture_full</a>, function in <a class="link" href="gst-plugins-bad-libs-OpenGL-Miscellaneous-Utilities.html" title="OpenGL Miscellaneous Utilities">OpenGL Miscellaneous Utilities</a>
-</dt>
-<dd></dd>
-<dt>
<a class="link" href="gst-plugins-bad-libs-OpenGL-Miscellaneous-Utilities.html#gst-gl-get-plane-data-size" title="gst_gl_get_plane_data_size ()">gst_gl_get_plane_data_size</a>, function in <a class="link" href="gst-plugins-bad-libs-OpenGL-Miscellaneous-Utilities.html" title="OpenGL Miscellaneous Utilities">OpenGL Miscellaneous Utilities</a>
</dt>
<dd></dd>
@@ -1255,7 +1211,7 @@
</dt>
<dd></dd>
<dt>
-<a class="link" href="gst-plugins-bad-libs-OpenGL-debugging.html#gst-gl-insert-debug-marker" title="gst_gl_insert_debug_marker ()">gst_gl_insert_debug_marker</a>, function in <a class="link" href="gst-plugins-bad-libs-OpenGL-debugging.html" title="OpenGL debugging">OpenGL Debugging</a>
+<a class="link" href="gst-plugins-bad-libs-gstgldebug.html#gst-gl-insert-debug-marker" title="gst_gl_insert_debug_marker ()">gst_gl_insert_debug_marker</a>, function in <a class="link" href="gst-plugins-bad-libs-gstgldebug.html" title="OpenGL Debugging">OpenGL Debugging</a>
</dt>
<dd></dd>
<dt>
@@ -1647,6 +1603,10 @@
</dt>
<dd></dd>
<dt>
+<a class="link" href="gst-plugins-bad-libs-GstGLMemory.html#gst-gl-video-allocation-params-new-wrapped-gl-handle" title="gst_gl_video_allocation_params_new_wrapped_gl_handle ()">gst_gl_video_allocation_params_new_wrapped_gl_handle</a>, function in <a class="link" href="gst-plugins-bad-libs-GstGLMemory.html" title="GstGLMemory">GstGLMemory</a>
+</dt>
+<dd></dd>
+<dt>
<a class="link" href="gst-plugins-bad-libs-GstGLMemory.html#gst-gl-video-allocation-params-new-wrapped-texture" title="gst_gl_video_allocation_params_new_wrapped_texture ()">gst_gl_video_allocation_params_new_wrapped_texture</a>, function in <a class="link" href="gst-plugins-bad-libs-GstGLMemory.html" title="GstGLMemory">GstGLMemory</a>
</dt>
<dd></dd>
@@ -2049,10 +2009,6 @@
</dt>
<dd></dd>
<dt>
-<a class="link" href="gst-plugins-bad-libs-GstEGLImageMemory.html#gst-is-egl-image-memory" title="gst_is_egl_image_memory ()">gst_is_egl_image_memory</a>, function in <a class="link" href="gst-plugins-bad-libs-GstEGLImageMemory.html" title="GstEGLImageMemory">GstEGLImageMemory</a>
-</dt>
-<dd></dd>
-<dt>
<a class="link" href="gst-plugins-bad-libs-gstglbasememory.html#gst-is-gl-base-memory" title="gst_is_gl_base_memory ()">gst_is_gl_base_memory</a>, function in <a class="link" href="gst-plugins-bad-libs-gstglbasememory.html" title="GstGLBaseMemory">GstGLBaseMemory</a>
</dt>
<dd></dd>
@@ -2191,11 +2147,11 @@
</dt>
<dd></dd>
<dt>
-<a class="link" href="gst-plugins-bad-libs-Base-MPEG-TS-sections.html#gst-message-new-mpegts-section" title="gst_message_new_mpegts_section ()">gst_message_new_mpegts_section</a>, function in <a class="link" href="gst-plugins-bad-libs-Base-MPEG-TS-sections.html" title="Base MPEG-TS sections">Base MPEG-TS sections</a>
+<a class="link" href="gst-plugins-bad-libs-gstmpegtssection.html#gst-message-new-mpegts-section" title="gst_message_new_mpegts_section ()">gst_message_new_mpegts_section</a>, function in <a class="link" href="gst-plugins-bad-libs-gstmpegtssection.html" title="gstmpegtssection">gstmpegtssection</a>
</dt>
<dd></dd>
<dt>
-<a class="link" href="gst-plugins-bad-libs-Base-MPEG-TS-sections.html#gst-message-parse-mpegts-section" title="gst_message_parse_mpegts_section ()">gst_message_parse_mpegts_section</a>, function in <a class="link" href="gst-plugins-bad-libs-Base-MPEG-TS-sections.html" title="Base MPEG-TS sections">Base MPEG-TS sections</a>
+<a class="link" href="gst-plugins-bad-libs-gstmpegtssection.html#gst-message-parse-mpegts-section" title="gst_message_parse_mpegts_section ()">gst_message_parse_mpegts_section</a>, function in <a class="link" href="gst-plugins-bad-libs-gstmpegtssection.html" title="gstmpegtssection">gstmpegtssection</a>
</dt>
<dd></dd>
<dt>
@@ -2311,647 +2267,647 @@
</dt>
<dd></dd>
<dt>
-<a class="link" href="gst-plugins-bad-libs-ATSC-variants-of-MPEG-TS-descriptors.html#GstMpegtsATSCDescriptorType" title="enum GstMpegtsATSCDescriptorType">GstMpegtsATSCDescriptorType</a>, enum in <a class="link" href="gst-plugins-bad-libs-ATSC-variants-of-MPEG-TS-descriptors.html" title="ATSC variants of MPEG-TS descriptors">ATSC variants of MPEG-TS descriptors</a>
+<a class="link" href="gst-plugins-bad-libs-gst-atsc-descriptor.html#GstMpegtsATSCDescriptorType" title="enum GstMpegtsATSCDescriptorType">GstMpegtsATSCDescriptorType</a>, enum in <a class="link" href="gst-plugins-bad-libs-gst-atsc-descriptor.html" title="gst-atsc-descriptor">gst-atsc-descriptor</a>
</dt>
<dd></dd>
<dt>
-<a class="link" href="gst-plugins-bad-libs-ATSC-variants-of-MPEG-TS-sections.html#GstMpegtsAtscEIT" title="struct GstMpegtsAtscEIT">GstMpegtsAtscEIT</a>, struct in <a class="link" href="gst-plugins-bad-libs-ATSC-variants-of-MPEG-TS-sections.html" title="ATSC variants of MPEG-TS sections">ATSC variants of MPEG-TS sections</a>
+<a class="link" href="gst-plugins-bad-libs-gst-atsc-section.html#GstMpegtsAtscEIT" title="struct GstMpegtsAtscEIT">GstMpegtsAtscEIT</a>, struct in <a class="link" href="gst-plugins-bad-libs-gst-atsc-section.html" title="gst-atsc-section">gst-atsc-section</a>
</dt>
<dd></dd>
<dt>
-<a class="link" href="gst-plugins-bad-libs-ATSC-variants-of-MPEG-TS-sections.html#GstMpegtsAtscEITEvent" title="struct GstMpegtsAtscEITEvent">GstMpegtsAtscEITEvent</a>, struct in <a class="link" href="gst-plugins-bad-libs-ATSC-variants-of-MPEG-TS-sections.html" title="ATSC variants of MPEG-TS sections">ATSC variants of MPEG-TS sections</a>
+<a class="link" href="gst-plugins-bad-libs-gst-atsc-section.html#GstMpegtsAtscEITEvent" title="struct GstMpegtsAtscEITEvent">GstMpegtsAtscEITEvent</a>, struct in <a class="link" href="gst-plugins-bad-libs-gst-atsc-section.html" title="gst-atsc-section">gst-atsc-section</a>
</dt>
<dd></dd>
<dt>
-<a class="link" href="gst-plugins-bad-libs-ATSC-variants-of-MPEG-TS-sections.html#GstMpegtsAtscETT" title="struct GstMpegtsAtscETT">GstMpegtsAtscETT</a>, struct in <a class="link" href="gst-plugins-bad-libs-ATSC-variants-of-MPEG-TS-sections.html" title="ATSC variants of MPEG-TS sections">ATSC variants of MPEG-TS sections</a>
+<a class="link" href="gst-plugins-bad-libs-gst-atsc-section.html#GstMpegtsAtscETT" title="struct GstMpegtsAtscETT">GstMpegtsAtscETT</a>, struct in <a class="link" href="gst-plugins-bad-libs-gst-atsc-section.html" title="gst-atsc-section">gst-atsc-section</a>
</dt>
<dd></dd>
<dt>
-<a class="link" href="gst-plugins-bad-libs-ATSC-variants-of-MPEG-TS-sections.html#GstMpegtsAtscMGT" title="struct GstMpegtsAtscMGT">GstMpegtsAtscMGT</a>, struct in <a class="link" href="gst-plugins-bad-libs-ATSC-variants-of-MPEG-TS-sections.html" title="ATSC variants of MPEG-TS sections">ATSC variants of MPEG-TS sections</a>
+<a class="link" href="gst-plugins-bad-libs-gst-atsc-section.html#GstMpegtsAtscMGT" title="struct GstMpegtsAtscMGT">GstMpegtsAtscMGT</a>, struct in <a class="link" href="gst-plugins-bad-libs-gst-atsc-section.html" title="gst-atsc-section">gst-atsc-section</a>
</dt>
<dd></dd>
<dt>
-<a class="link" href="gst-plugins-bad-libs-ATSC-variants-of-MPEG-TS-sections.html#GstMpegtsAtscMGTTable" title="struct GstMpegtsAtscMGTTable">GstMpegtsAtscMGTTable</a>, struct in <a class="link" href="gst-plugins-bad-libs-ATSC-variants-of-MPEG-TS-sections.html" title="ATSC variants of MPEG-TS sections">ATSC variants of MPEG-TS sections</a>
+<a class="link" href="gst-plugins-bad-libs-gst-atsc-section.html#GstMpegtsAtscMGTTable" title="struct GstMpegtsAtscMGTTable">GstMpegtsAtscMGTTable</a>, struct in <a class="link" href="gst-plugins-bad-libs-gst-atsc-section.html" title="gst-atsc-section">gst-atsc-section</a>
</dt>
<dd></dd>
<dt>
-<a class="link" href="gst-plugins-bad-libs-ATSC-variants-of-MPEG-TS-sections.html#GstMpegtsAtscMGTTableType" title="enum GstMpegtsAtscMGTTableType">GstMpegtsAtscMGTTableType</a>, enum in <a class="link" href="gst-plugins-bad-libs-ATSC-variants-of-MPEG-TS-sections.html" title="ATSC variants of MPEG-TS sections">ATSC variants of MPEG-TS sections</a>
+<a class="link" href="gst-plugins-bad-libs-gst-atsc-section.html#GstMpegtsAtscMGTTableType" title="enum GstMpegtsAtscMGTTableType">GstMpegtsAtscMGTTableType</a>, enum in <a class="link" href="gst-plugins-bad-libs-gst-atsc-section.html" title="gst-atsc-section">gst-atsc-section</a>
</dt>
<dd></dd>
<dt>
-<a class="link" href="gst-plugins-bad-libs-ATSC-variants-of-MPEG-TS-sections.html#GstMpegtsAtscMultString" title="struct GstMpegtsAtscMultString">GstMpegtsAtscMultString</a>, struct in <a class="link" href="gst-plugins-bad-libs-ATSC-variants-of-MPEG-TS-sections.html" title="ATSC variants of MPEG-TS sections">ATSC variants of MPEG-TS sections</a>
+<a class="link" href="gst-plugins-bad-libs-gst-atsc-section.html#GstMpegtsAtscMultString" title="struct GstMpegtsAtscMultString">GstMpegtsAtscMultString</a>, struct in <a class="link" href="gst-plugins-bad-libs-gst-atsc-section.html" title="gst-atsc-section">gst-atsc-section</a>
</dt>
<dd></dd>
<dt>
-<a class="link" href="gst-plugins-bad-libs-ATSC-variants-of-MPEG-TS-sections.html#GstMpegtsAtscSTT" title="struct GstMpegtsAtscSTT">GstMpegtsAtscSTT</a>, struct in <a class="link" href="gst-plugins-bad-libs-ATSC-variants-of-MPEG-TS-sections.html" title="ATSC variants of MPEG-TS sections">ATSC variants of MPEG-TS sections</a>
+<a class="link" href="gst-plugins-bad-libs-gst-atsc-section.html#GstMpegtsAtscSTT" title="struct GstMpegtsAtscSTT">GstMpegtsAtscSTT</a>, struct in <a class="link" href="gst-plugins-bad-libs-gst-atsc-section.html" title="gst-atsc-section">gst-atsc-section</a>
</dt>
<dd></dd>
<dt>
-<a class="link" href="gst-plugins-bad-libs-ATSC-variants-of-MPEG-TS-sections.html#GstMpegtsAtscVCT" title="struct GstMpegtsAtscVCT">GstMpegtsAtscVCT</a>, struct in <a class="link" href="gst-plugins-bad-libs-ATSC-variants-of-MPEG-TS-sections.html" title="ATSC variants of MPEG-TS sections">ATSC variants of MPEG-TS sections</a>
+<a class="link" href="gst-plugins-bad-libs-gst-atsc-section.html#GstMpegtsAtscVCT" title="struct GstMpegtsAtscVCT">GstMpegtsAtscVCT</a>, struct in <a class="link" href="gst-plugins-bad-libs-gst-atsc-section.html" title="gst-atsc-section">gst-atsc-section</a>
</dt>
<dd></dd>
<dt>
-<a class="link" href="gst-plugins-bad-libs-ATSC-variants-of-MPEG-TS-sections.html#GstMpegtsAtscVCTSource" title="struct GstMpegtsAtscVCTSource">GstMpegtsAtscVCTSource</a>, struct in <a class="link" href="gst-plugins-bad-libs-ATSC-variants-of-MPEG-TS-sections.html" title="ATSC variants of MPEG-TS sections">ATSC variants of MPEG-TS sections</a>
+<a class="link" href="gst-plugins-bad-libs-gst-atsc-section.html#GstMpegtsAtscVCTSource" title="struct GstMpegtsAtscVCTSource">GstMpegtsAtscVCTSource</a>, struct in <a class="link" href="gst-plugins-bad-libs-gst-atsc-section.html" title="gst-atsc-section">gst-atsc-section</a>
</dt>
<dd></dd>
<dt>
-<a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-sections.html#GstMpegtsBAT" title="struct GstMpegtsBAT">GstMpegtsBAT</a>, struct in <a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-sections.html" title="DVB variants of MPEG-TS sections">DVB variants of MPEG-TS sections</a>
+<a class="link" href="gst-plugins-bad-libs-gst-dvb-section.html#GstMpegtsBAT" title="struct GstMpegtsBAT">GstMpegtsBAT</a>, struct in <a class="link" href="gst-plugins-bad-libs-gst-dvb-section.html" title="gst-dvb-section">gst-dvb-section</a>
</dt>
<dd></dd>
<dt>
-<a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-sections.html#GstMpegtsBATStream" title="struct GstMpegtsBATStream">GstMpegtsBATStream</a>, struct in <a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-sections.html" title="DVB variants of MPEG-TS sections">DVB variants of MPEG-TS sections</a>
+<a class="link" href="gst-plugins-bad-libs-gst-dvb-section.html#GstMpegtsBATStream" title="struct GstMpegtsBATStream">GstMpegtsBATStream</a>, struct in <a class="link" href="gst-plugins-bad-libs-gst-dvb-section.html" title="gst-dvb-section">gst-dvb-section</a>
</dt>
<dd></dd>
<dt>
-<a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GstMpegtsCableDeliverySystemDescriptor" title="struct GstMpegtsCableDeliverySystemDescriptor">GstMpegtsCableDeliverySystemDescriptor</a>, struct in <a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html" title="DVB variants of MPEG-TS descriptors">DVB variants of MPEG-TS descriptors</a>
+<a class="link" href="gst-plugins-bad-libs-gst-dvb-descriptor.html#GstMpegtsCableDeliverySystemDescriptor" title="struct GstMpegtsCableDeliverySystemDescriptor">GstMpegtsCableDeliverySystemDescriptor</a>, struct in <a class="link" href="gst-plugins-bad-libs-gst-dvb-descriptor.html" title="gst-dvb-descriptor">gst-dvb-descriptor</a>
</dt>
<dd></dd>
<dt>
-<a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GstMpegtsCableOuterFECScheme" title="enum GstMpegtsCableOuterFECScheme">GstMpegtsCableOuterFECScheme</a>, enum in <a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html" title="DVB variants of MPEG-TS descriptors">DVB variants of MPEG-TS descriptors</a>
+<a class="link" href="gst-plugins-bad-libs-gst-dvb-descriptor.html#GstMpegtsCableOuterFECScheme" title="enum GstMpegtsCableOuterFECScheme">GstMpegtsCableOuterFECScheme</a>, enum in <a class="link" href="gst-plugins-bad-libs-gst-dvb-descriptor.html" title="gst-dvb-descriptor">gst-dvb-descriptor</a>
</dt>
<dd></dd>
<dt>
-<a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GstMpegtsComponentDescriptor" title="struct GstMpegtsComponentDescriptor">GstMpegtsComponentDescriptor</a>, struct in <a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html" title="DVB variants of MPEG-TS descriptors">DVB variants of MPEG-TS descriptors</a>
+<a class="link" href="gst-plugins-bad-libs-gst-dvb-descriptor.html#GstMpegtsComponentDescriptor" title="struct GstMpegtsComponentDescriptor">GstMpegtsComponentDescriptor</a>, struct in <a class="link" href="gst-plugins-bad-libs-gst-dvb-descriptor.html" title="gst-dvb-descriptor">gst-dvb-descriptor</a>
</dt>
<dd></dd>
<dt>
-<a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GstMpegtsContent" title="struct GstMpegtsContent">GstMpegtsContent</a>, struct in <a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html" title="DVB variants of MPEG-TS descriptors">DVB variants of MPEG-TS descriptors</a>
+<a class="link" href="gst-plugins-bad-libs-gst-dvb-descriptor.html#GstMpegtsContent" title="struct GstMpegtsContent">GstMpegtsContent</a>, struct in <a class="link" href="gst-plugins-bad-libs-gst-dvb-descriptor.html" title="gst-dvb-descriptor">gst-dvb-descriptor</a>
</dt>
<dd></dd>
<dt>
-<a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GstMpegtsDataBroadcastDescriptor" title="struct GstMpegtsDataBroadcastDescriptor">GstMpegtsDataBroadcastDescriptor</a>, struct in <a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html" title="DVB variants of MPEG-TS descriptors">DVB variants of MPEG-TS descriptors</a>
+<a class="link" href="gst-plugins-bad-libs-gst-dvb-descriptor.html#GstMpegtsDataBroadcastDescriptor" title="struct GstMpegtsDataBroadcastDescriptor">GstMpegtsDataBroadcastDescriptor</a>, struct in <a class="link" href="gst-plugins-bad-libs-gst-dvb-descriptor.html" title="gst-dvb-descriptor">gst-dvb-descriptor</a>
</dt>
<dd></dd>
<dt>
-<a class="link" href="gst-plugins-bad-libs-Base-MPEG-TS-descriptors.html#GstMpegtsDescriptor-struct" title="struct GstMpegtsDescriptor">GstMpegtsDescriptor</a>, struct in <a class="link" href="gst-plugins-bad-libs-Base-MPEG-TS-descriptors.html" title="Base MPEG-TS descriptors">Base MPEG-TS descriptors</a>
+<a class="link" href="gst-plugins-bad-libs-gstmpegtsdescriptor.html#GstMpegtsDescriptor-struct" title="struct GstMpegtsDescriptor">GstMpegtsDescriptor</a>, struct in <a class="link" href="gst-plugins-bad-libs-gstmpegtsdescriptor.html" title="gstmpegtsdescriptor">gstmpegtsdescriptor</a>
</dt>
<dd></dd>
<dt>
-<a class="link" href="gst-plugins-bad-libs-Base-MPEG-TS-descriptors.html#GstMpegtsDescriptorType" title="enum GstMpegtsDescriptorType">GstMpegtsDescriptorType</a>, enum in <a class="link" href="gst-plugins-bad-libs-Base-MPEG-TS-descriptors.html" title="Base MPEG-TS descriptors">Base MPEG-TS descriptors</a>
+<a class="link" href="gst-plugins-bad-libs-gstmpegtsdescriptor.html#GstMpegtsDescriptorType" title="enum GstMpegtsDescriptorType">GstMpegtsDescriptorType</a>, enum in <a class="link" href="gst-plugins-bad-libs-gstmpegtsdescriptor.html" title="gstmpegtsdescriptor">gstmpegtsdescriptor</a>
</dt>
<dd></dd>
<dt>
-<a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GstMpegtsDVBCodeRate" title="enum GstMpegtsDVBCodeRate">GstMpegtsDVBCodeRate</a>, enum in <a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html" title="DVB variants of MPEG-TS descriptors">DVB variants of MPEG-TS descriptors</a>
+<a class="link" href="gst-plugins-bad-libs-gst-dvb-descriptor.html#GstMpegtsDVBCodeRate" title="enum GstMpegtsDVBCodeRate">GstMpegtsDVBCodeRate</a>, enum in <a class="link" href="gst-plugins-bad-libs-gst-dvb-descriptor.html" title="gst-dvb-descriptor">gst-dvb-descriptor</a>
</dt>
<dd></dd>
<dt>
-<a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GstMpegtsDVBDescriptorType" title="enum GstMpegtsDVBDescriptorType">GstMpegtsDVBDescriptorType</a>, enum in <a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html" title="DVB variants of MPEG-TS descriptors">DVB variants of MPEG-TS descriptors</a>
+<a class="link" href="gst-plugins-bad-libs-gst-dvb-descriptor.html#GstMpegtsDVBDescriptorType" title="enum GstMpegtsDVBDescriptorType">GstMpegtsDVBDescriptorType</a>, enum in <a class="link" href="gst-plugins-bad-libs-gst-dvb-descriptor.html" title="gst-dvb-descriptor">gst-dvb-descriptor</a>
</dt>
<dd></dd>
<dt>
-<a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GstMpegtsDVBExtendedDescriptorType" title="enum GstMpegtsDVBExtendedDescriptorType">GstMpegtsDVBExtendedDescriptorType</a>, enum in <a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html" title="DVB variants of MPEG-TS descriptors">DVB variants of MPEG-TS descriptors</a>
+<a class="link" href="gst-plugins-bad-libs-gst-dvb-descriptor.html#GstMpegtsDVBExtendedDescriptorType" title="enum GstMpegtsDVBExtendedDescriptorType">GstMpegtsDVBExtendedDescriptorType</a>, enum in <a class="link" href="gst-plugins-bad-libs-gst-dvb-descriptor.html" title="gst-dvb-descriptor">gst-dvb-descriptor</a>
</dt>
<dd></dd>
<dt>
-<a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GstMpegtsDVBLinkageDescriptor" title="struct GstMpegtsDVBLinkageDescriptor">GstMpegtsDVBLinkageDescriptor</a>, struct in <a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html" title="DVB variants of MPEG-TS descriptors">DVB variants of MPEG-TS descriptors</a>
+<a class="link" href="gst-plugins-bad-libs-gst-dvb-descriptor.html#GstMpegtsDVBLinkageDescriptor" title="struct GstMpegtsDVBLinkageDescriptor">GstMpegtsDVBLinkageDescriptor</a>, struct in <a class="link" href="gst-plugins-bad-libs-gst-dvb-descriptor.html" title="gst-dvb-descriptor">gst-dvb-descriptor</a>
</dt>
<dd></dd>
<dt>
-<a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GstMpegtsDVBLinkageEvent" title="struct GstMpegtsDVBLinkageEvent">GstMpegtsDVBLinkageEvent</a>, struct in <a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html" title="DVB variants of MPEG-TS descriptors">DVB variants of MPEG-TS descriptors</a>
+<a class="link" href="gst-plugins-bad-libs-gst-dvb-descriptor.html#GstMpegtsDVBLinkageEvent" title="struct GstMpegtsDVBLinkageEvent">GstMpegtsDVBLinkageEvent</a>, struct in <a class="link" href="gst-plugins-bad-libs-gst-dvb-descriptor.html" title="gst-dvb-descriptor">gst-dvb-descriptor</a>
</dt>
<dd></dd>
<dt>
-<a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GstMpegtsDVBLinkageExtendedEvent" title="struct GstMpegtsDVBLinkageExtendedEvent">GstMpegtsDVBLinkageExtendedEvent</a>, struct in <a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html" title="DVB variants of MPEG-TS descriptors">DVB variants of MPEG-TS descriptors</a>
+<a class="link" href="gst-plugins-bad-libs-gst-dvb-descriptor.html#GstMpegtsDVBLinkageExtendedEvent" title="struct GstMpegtsDVBLinkageExtendedEvent">GstMpegtsDVBLinkageExtendedEvent</a>, struct in <a class="link" href="gst-plugins-bad-libs-gst-dvb-descriptor.html" title="gst-dvb-descriptor">gst-dvb-descriptor</a>
</dt>
<dd></dd>
<dt>
-<a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GstMpegtsDVBLinkageHandOverType" title="enum GstMpegtsDVBLinkageHandOverType">GstMpegtsDVBLinkageHandOverType</a>, enum in <a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html" title="DVB variants of MPEG-TS descriptors">DVB variants of MPEG-TS descriptors</a>
+<a class="link" href="gst-plugins-bad-libs-gst-dvb-descriptor.html#GstMpegtsDVBLinkageHandOverType" title="enum GstMpegtsDVBLinkageHandOverType">GstMpegtsDVBLinkageHandOverType</a>, enum in <a class="link" href="gst-plugins-bad-libs-gst-dvb-descriptor.html" title="gst-dvb-descriptor">gst-dvb-descriptor</a>
</dt>
<dd></dd>
<dt>
-<a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GstMpegtsDVBLinkageMobileHandOver" title="struct GstMpegtsDVBLinkageMobileHandOver">GstMpegtsDVBLinkageMobileHandOver</a>, struct in <a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html" title="DVB variants of MPEG-TS descriptors">DVB variants of MPEG-TS descriptors</a>
+<a class="link" href="gst-plugins-bad-libs-gst-dvb-descriptor.html#GstMpegtsDVBLinkageMobileHandOver" title="struct GstMpegtsDVBLinkageMobileHandOver">GstMpegtsDVBLinkageMobileHandOver</a>, struct in <a class="link" href="gst-plugins-bad-libs-gst-dvb-descriptor.html" title="gst-dvb-descriptor">gst-dvb-descriptor</a>
</dt>
<dd></dd>
<dt>
-<a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GstMpegtsDVBLinkageType" title="enum GstMpegtsDVBLinkageType">GstMpegtsDVBLinkageType</a>, enum in <a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html" title="DVB variants of MPEG-TS descriptors">DVB variants of MPEG-TS descriptors</a>
+<a class="link" href="gst-plugins-bad-libs-gst-dvb-descriptor.html#GstMpegtsDVBLinkageType" title="enum GstMpegtsDVBLinkageType">GstMpegtsDVBLinkageType</a>, enum in <a class="link" href="gst-plugins-bad-libs-gst-dvb-descriptor.html" title="gst-dvb-descriptor">gst-dvb-descriptor</a>
</dt>
<dd></dd>
<dt>
-<a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GstMpegtsDvbMultilingualBouquetNameItem" title="struct GstMpegtsDvbMultilingualBouquetNameItem">GstMpegtsDvbMultilingualBouquetNameItem</a>, struct in <a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html" title="DVB variants of MPEG-TS descriptors">DVB variants of MPEG-TS descriptors</a>
+<a class="link" href="gst-plugins-bad-libs-gst-dvb-descriptor.html#GstMpegtsDvbMultilingualBouquetNameItem" title="struct GstMpegtsDvbMultilingualBouquetNameItem">GstMpegtsDvbMultilingualBouquetNameItem</a>, struct in <a class="link" href="gst-plugins-bad-libs-gst-dvb-descriptor.html" title="gst-dvb-descriptor">gst-dvb-descriptor</a>
</dt>
<dd></dd>
<dt>
-<a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GstMpegtsDvbMultilingualComponentItem" title="struct GstMpegtsDvbMultilingualComponentItem">GstMpegtsDvbMultilingualComponentItem</a>, struct in <a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html" title="DVB variants of MPEG-TS descriptors">DVB variants of MPEG-TS descriptors</a>
+<a class="link" href="gst-plugins-bad-libs-gst-dvb-descriptor.html#GstMpegtsDvbMultilingualComponentItem" title="struct GstMpegtsDvbMultilingualComponentItem">GstMpegtsDvbMultilingualComponentItem</a>, struct in <a class="link" href="gst-plugins-bad-libs-gst-dvb-descriptor.html" title="gst-dvb-descriptor">gst-dvb-descriptor</a>
</dt>
<dd></dd>
<dt>
-<a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GstMpegtsDvbMultilingualNetworkNameItem" title="struct GstMpegtsDvbMultilingualNetworkNameItem">GstMpegtsDvbMultilingualNetworkNameItem</a>, struct in <a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html" title="DVB variants of MPEG-TS descriptors">DVB variants of MPEG-TS descriptors</a>
+<a class="link" href="gst-plugins-bad-libs-gst-dvb-descriptor.html#GstMpegtsDvbMultilingualNetworkNameItem" title="struct GstMpegtsDvbMultilingualNetworkNameItem">GstMpegtsDvbMultilingualNetworkNameItem</a>, struct in <a class="link" href="gst-plugins-bad-libs-gst-dvb-descriptor.html" title="gst-dvb-descriptor">gst-dvb-descriptor</a>
</dt>
<dd></dd>
<dt>
-<a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GstMpegtsDvbMultilingualServiceNameItem" title="struct GstMpegtsDvbMultilingualServiceNameItem">GstMpegtsDvbMultilingualServiceNameItem</a>, struct in <a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html" title="DVB variants of MPEG-TS descriptors">DVB variants of MPEG-TS descriptors</a>
+<a class="link" href="gst-plugins-bad-libs-gst-dvb-descriptor.html#GstMpegtsDvbMultilingualServiceNameItem" title="struct GstMpegtsDvbMultilingualServiceNameItem">GstMpegtsDvbMultilingualServiceNameItem</a>, struct in <a class="link" href="gst-plugins-bad-libs-gst-dvb-descriptor.html" title="gst-dvb-descriptor">gst-dvb-descriptor</a>
</dt>
<dd></dd>
<dt>
-<a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GstMpegtsDVBParentalRatingItem" title="struct GstMpegtsDVBParentalRatingItem">GstMpegtsDVBParentalRatingItem</a>, struct in <a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html" title="DVB variants of MPEG-TS descriptors">DVB variants of MPEG-TS descriptors</a>
+<a class="link" href="gst-plugins-bad-libs-gst-dvb-descriptor.html#GstMpegtsDVBParentalRatingItem" title="struct GstMpegtsDVBParentalRatingItem">GstMpegtsDVBParentalRatingItem</a>, struct in <a class="link" href="gst-plugins-bad-libs-gst-dvb-descriptor.html" title="gst-dvb-descriptor">gst-dvb-descriptor</a>
</dt>
<dd></dd>
<dt>
-<a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GstMpegtsDVBScramblingModeType" title="enum GstMpegtsDVBScramblingModeType">GstMpegtsDVBScramblingModeType</a>, enum in <a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html" title="DVB variants of MPEG-TS descriptors">DVB variants of MPEG-TS descriptors</a>
+<a class="link" href="gst-plugins-bad-libs-gst-dvb-descriptor.html#GstMpegtsDVBScramblingModeType" title="enum GstMpegtsDVBScramblingModeType">GstMpegtsDVBScramblingModeType</a>, enum in <a class="link" href="gst-plugins-bad-libs-gst-dvb-descriptor.html" title="gst-dvb-descriptor">gst-dvb-descriptor</a>
</dt>
<dd></dd>
<dt>
-<a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GstMpegtsDVBServiceListItem" title="struct GstMpegtsDVBServiceListItem">GstMpegtsDVBServiceListItem</a>, struct in <a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html" title="DVB variants of MPEG-TS descriptors">DVB variants of MPEG-TS descriptors</a>
+<a class="link" href="gst-plugins-bad-libs-gst-dvb-descriptor.html#GstMpegtsDVBServiceListItem" title="struct GstMpegtsDVBServiceListItem">GstMpegtsDVBServiceListItem</a>, struct in <a class="link" href="gst-plugins-bad-libs-gst-dvb-descriptor.html" title="gst-dvb-descriptor">gst-dvb-descriptor</a>
</dt>
<dd></dd>
<dt>
-<a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GstMpegtsDVBServiceType" title="enum GstMpegtsDVBServiceType">GstMpegtsDVBServiceType</a>, enum in <a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html" title="DVB variants of MPEG-TS descriptors">DVB variants of MPEG-TS descriptors</a>
+<a class="link" href="gst-plugins-bad-libs-gst-dvb-descriptor.html#GstMpegtsDVBServiceType" title="enum GstMpegtsDVBServiceType">GstMpegtsDVBServiceType</a>, enum in <a class="link" href="gst-plugins-bad-libs-gst-dvb-descriptor.html" title="gst-dvb-descriptor">gst-dvb-descriptor</a>
</dt>
<dd></dd>
<dt>
-<a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GstMpegtsDVBTeletextType" title="enum GstMpegtsDVBTeletextType">GstMpegtsDVBTeletextType</a>, enum in <a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html" title="DVB variants of MPEG-TS descriptors">DVB variants of MPEG-TS descriptors</a>
+<a class="link" href="gst-plugins-bad-libs-gst-dvb-descriptor.html#GstMpegtsDVBTeletextType" title="enum GstMpegtsDVBTeletextType">GstMpegtsDVBTeletextType</a>, enum in <a class="link" href="gst-plugins-bad-libs-gst-dvb-descriptor.html" title="gst-dvb-descriptor">gst-dvb-descriptor</a>
</dt>
<dd></dd>
<dt>
-<a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-sections.html#GstMpegtsEIT" title="struct GstMpegtsEIT">GstMpegtsEIT</a>, struct in <a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-sections.html" title="DVB variants of MPEG-TS sections">DVB variants of MPEG-TS sections</a>
+<a class="link" href="gst-plugins-bad-libs-gst-dvb-section.html#GstMpegtsEIT" title="struct GstMpegtsEIT">GstMpegtsEIT</a>, struct in <a class="link" href="gst-plugins-bad-libs-gst-dvb-section.html" title="gst-dvb-section">gst-dvb-section</a>
</dt>
<dd></dd>
<dt>
-<a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-sections.html#GstMpegtsEITEvent" title="struct GstMpegtsEITEvent">GstMpegtsEITEvent</a>, struct in <a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-sections.html" title="DVB variants of MPEG-TS sections">DVB variants of MPEG-TS sections</a>
+<a class="link" href="gst-plugins-bad-libs-gst-dvb-section.html#GstMpegtsEITEvent" title="struct GstMpegtsEITEvent">GstMpegtsEITEvent</a>, struct in <a class="link" href="gst-plugins-bad-libs-gst-dvb-section.html" title="gst-dvb-section">gst-dvb-section</a>
</dt>
<dd></dd>
<dt>
-<a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GstMpegtsExtendedEventDescriptor" title="struct GstMpegtsExtendedEventDescriptor">GstMpegtsExtendedEventDescriptor</a>, struct in <a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html" title="DVB variants of MPEG-TS descriptors">DVB variants of MPEG-TS descriptors</a>
+<a class="link" href="gst-plugins-bad-libs-gst-dvb-descriptor.html#GstMpegtsExtendedEventDescriptor" title="struct GstMpegtsExtendedEventDescriptor">GstMpegtsExtendedEventDescriptor</a>, struct in <a class="link" href="gst-plugins-bad-libs-gst-dvb-descriptor.html" title="gst-dvb-descriptor">gst-dvb-descriptor</a>
</dt>
<dd></dd>
<dt>
-<a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GstMpegtsExtendedEventItem" title="struct GstMpegtsExtendedEventItem">GstMpegtsExtendedEventItem</a>, struct in <a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html" title="DVB variants of MPEG-TS descriptors">DVB variants of MPEG-TS descriptors</a>
+<a class="link" href="gst-plugins-bad-libs-gst-dvb-descriptor.html#GstMpegtsExtendedEventItem" title="struct GstMpegtsExtendedEventItem">GstMpegtsExtendedEventItem</a>, struct in <a class="link" href="gst-plugins-bad-libs-gst-dvb-descriptor.html" title="gst-dvb-descriptor">gst-dvb-descriptor</a>
</dt>
<dd></dd>
<dt>
-<a class="link" href="gst-plugins-bad-libs-ISDB-variants-of-MPEG-TS-descriptors.html#GstMpegtsISDBDescriptorType" title="enum GstMpegtsISDBDescriptorType">GstMpegtsISDBDescriptorType</a>, enum in <a class="link" href="gst-plugins-bad-libs-ISDB-variants-of-MPEG-TS-descriptors.html" title="ISDB variants of MPEG-TS descriptors">ISDB variants of MPEG-TS descriptors</a>
+<a class="link" href="gst-plugins-bad-libs-gst-isdb-descriptor.html#GstMpegtsISDBDescriptorType" title="enum GstMpegtsISDBDescriptorType">GstMpegtsISDBDescriptorType</a>, enum in <a class="link" href="gst-plugins-bad-libs-gst-isdb-descriptor.html" title="gst-isdb-descriptor">gst-isdb-descriptor</a>
</dt>
<dd></dd>
<dt>
-<a class="link" href="gst-plugins-bad-libs-Base-MPEG-TS-descriptors.html#GstMpegtsIso639AudioType" title="enum GstMpegtsIso639AudioType">GstMpegtsIso639AudioType</a>, enum in <a class="link" href="gst-plugins-bad-libs-Base-MPEG-TS-descriptors.html" title="Base MPEG-TS descriptors">Base MPEG-TS descriptors</a>
+<a class="link" href="gst-plugins-bad-libs-gstmpegtsdescriptor.html#GstMpegtsIso639AudioType" title="enum GstMpegtsIso639AudioType">GstMpegtsIso639AudioType</a>, enum in <a class="link" href="gst-plugins-bad-libs-gstmpegtsdescriptor.html" title="gstmpegtsdescriptor">gstmpegtsdescriptor</a>
</dt>
<dd></dd>
<dt>
-<a class="link" href="gst-plugins-bad-libs-Base-MPEG-TS-descriptors.html#GstMpegtsISO639LanguageDescriptor" title="struct GstMpegtsISO639LanguageDescriptor">GstMpegtsISO639LanguageDescriptor</a>, struct in <a class="link" href="gst-plugins-bad-libs-Base-MPEG-TS-descriptors.html" title="Base MPEG-TS descriptors">Base MPEG-TS descriptors</a>
+<a class="link" href="gst-plugins-bad-libs-gstmpegtsdescriptor.html#GstMpegtsISO639LanguageDescriptor" title="struct GstMpegtsISO639LanguageDescriptor">GstMpegtsISO639LanguageDescriptor</a>, struct in <a class="link" href="gst-plugins-bad-libs-gstmpegtsdescriptor.html" title="gstmpegtsdescriptor">gstmpegtsdescriptor</a>
</dt>
<dd></dd>
<dt>
-<a class="link" href="gst-plugins-bad-libs-Base-MPEG-TS-descriptors.html#GstMpegtsLogicalChannel" title="struct GstMpegtsLogicalChannel">GstMpegtsLogicalChannel</a>, struct in <a class="link" href="gst-plugins-bad-libs-Base-MPEG-TS-descriptors.html" title="Base MPEG-TS descriptors">Base MPEG-TS descriptors</a>
+<a class="link" href="gst-plugins-bad-libs-gstmpegtsdescriptor.html#GstMpegtsLogicalChannel" title="struct GstMpegtsLogicalChannel">GstMpegtsLogicalChannel</a>, struct in <a class="link" href="gst-plugins-bad-libs-gstmpegtsdescriptor.html" title="gstmpegtsdescriptor">gstmpegtsdescriptor</a>
</dt>
<dd></dd>
<dt>
-<a class="link" href="gst-plugins-bad-libs-Base-MPEG-TS-descriptors.html#GstMpegtsLogicalChannelDescriptor" title="struct GstMpegtsLogicalChannelDescriptor">GstMpegtsLogicalChannelDescriptor</a>, struct in <a class="link" href="gst-plugins-bad-libs-Base-MPEG-TS-descriptors.html" title="Base MPEG-TS descriptors">Base MPEG-TS descriptors</a>
+<a class="link" href="gst-plugins-bad-libs-gstmpegtsdescriptor.html#GstMpegtsLogicalChannelDescriptor" title="struct GstMpegtsLogicalChannelDescriptor">GstMpegtsLogicalChannelDescriptor</a>, struct in <a class="link" href="gst-plugins-bad-libs-gstmpegtsdescriptor.html" title="gstmpegtsdescriptor">gstmpegtsdescriptor</a>
</dt>
<dd></dd>
<dt>
-<a class="link" href="gst-plugins-bad-libs-Base-MPEG-TS-descriptors.html#GstMpegtsMiscDescriptorType" title="enum GstMpegtsMiscDescriptorType">GstMpegtsMiscDescriptorType</a>, enum in <a class="link" href="gst-plugins-bad-libs-Base-MPEG-TS-descriptors.html" title="Base MPEG-TS descriptors">Base MPEG-TS descriptors</a>
+<a class="link" href="gst-plugins-bad-libs-gstmpegtsdescriptor.html#GstMpegtsMiscDescriptorType" title="enum GstMpegtsMiscDescriptorType">GstMpegtsMiscDescriptorType</a>, enum in <a class="link" href="gst-plugins-bad-libs-gstmpegtsdescriptor.html" title="gstmpegtsdescriptor">gstmpegtsdescriptor</a>
</dt>
<dd></dd>
<dt>
-<a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GstMpegtsModulationType" title="enum GstMpegtsModulationType">GstMpegtsModulationType</a>, enum in <a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html" title="DVB variants of MPEG-TS descriptors">DVB variants of MPEG-TS descriptors</a>
+<a class="link" href="gst-plugins-bad-libs-gst-dvb-descriptor.html#GstMpegtsModulationType" title="enum GstMpegtsModulationType">GstMpegtsModulationType</a>, enum in <a class="link" href="gst-plugins-bad-libs-gst-dvb-descriptor.html" title="gst-dvb-descriptor">gst-dvb-descriptor</a>
</dt>
<dd></dd>
<dt>
-<a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-sections.html#GstMpegtsNIT" title="struct GstMpegtsNIT">GstMpegtsNIT</a>, struct in <a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-sections.html" title="DVB variants of MPEG-TS sections">DVB variants of MPEG-TS sections</a>
+<a class="link" href="gst-plugins-bad-libs-gst-dvb-section.html#GstMpegtsNIT" title="struct GstMpegtsNIT">GstMpegtsNIT</a>, struct in <a class="link" href="gst-plugins-bad-libs-gst-dvb-section.html" title="gst-dvb-section">gst-dvb-section</a>
</dt>
<dd></dd>
<dt>
-<a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-sections.html#GstMpegtsNITStream" title="struct GstMpegtsNITStream">GstMpegtsNITStream</a>, struct in <a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-sections.html" title="DVB variants of MPEG-TS sections">DVB variants of MPEG-TS sections</a>
+<a class="link" href="gst-plugins-bad-libs-gst-dvb-section.html#GstMpegtsNITStream" title="struct GstMpegtsNITStream">GstMpegtsNITStream</a>, struct in <a class="link" href="gst-plugins-bad-libs-gst-dvb-section.html" title="gst-dvb-section">gst-dvb-section</a>
</dt>
<dd></dd>
<dt>
-<a class="link" href="gst-plugins-bad-libs-Base-MPEG-TS-sections.html#GstMpegtsPatProgram" title="struct GstMpegtsPatProgram">GstMpegtsPatProgram</a>, struct in <a class="link" href="gst-plugins-bad-libs-Base-MPEG-TS-sections.html" title="Base MPEG-TS sections">Base MPEG-TS sections</a>
+<a class="link" href="gst-plugins-bad-libs-gstmpegtssection.html#GstMpegtsPatProgram" title="struct GstMpegtsPatProgram">GstMpegtsPatProgram</a>, struct in <a class="link" href="gst-plugins-bad-libs-gstmpegtssection.html" title="gstmpegtssection">gstmpegtssection</a>
</dt>
<dd></dd>
<dt>
-<a class="link" href="gst-plugins-bad-libs-Base-MPEG-TS-sections.html#GstMpegtsPMT" title="struct GstMpegtsPMT">GstMpegtsPMT</a>, struct in <a class="link" href="gst-plugins-bad-libs-Base-MPEG-TS-sections.html" title="Base MPEG-TS sections">Base MPEG-TS sections</a>
+<a class="link" href="gst-plugins-bad-libs-gstmpegtssection.html#GstMpegtsPMT" title="struct GstMpegtsPMT">GstMpegtsPMT</a>, struct in <a class="link" href="gst-plugins-bad-libs-gstmpegtssection.html" title="gstmpegtssection">gstmpegtssection</a>
</dt>
<dd></dd>
<dt>
-<a class="link" href="gst-plugins-bad-libs-Base-MPEG-TS-sections.html#GstMpegtsPMTStream" title="struct GstMpegtsPMTStream">GstMpegtsPMTStream</a>, struct in <a class="link" href="gst-plugins-bad-libs-Base-MPEG-TS-sections.html" title="Base MPEG-TS sections">Base MPEG-TS sections</a>
+<a class="link" href="gst-plugins-bad-libs-gstmpegtssection.html#GstMpegtsPMTStream" title="struct GstMpegtsPMTStream">GstMpegtsPMTStream</a>, struct in <a class="link" href="gst-plugins-bad-libs-gstmpegtssection.html" title="gstmpegtssection">gstmpegtssection</a>
</dt>
<dd></dd>
<dt>
-<a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-sections.html#GstMpegtsRunningStatus" title="enum GstMpegtsRunningStatus">GstMpegtsRunningStatus</a>, enum in <a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-sections.html" title="DVB variants of MPEG-TS sections">DVB variants of MPEG-TS sections</a>
+<a class="link" href="gst-plugins-bad-libs-gst-dvb-section.html#GstMpegtsRunningStatus" title="enum GstMpegtsRunningStatus">GstMpegtsRunningStatus</a>, enum in <a class="link" href="gst-plugins-bad-libs-gst-dvb-section.html" title="gst-dvb-section">gst-dvb-section</a>
</dt>
<dd></dd>
<dt>
-<a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GstMpegtsSatelliteDeliverySystemDescriptor" title="struct GstMpegtsSatelliteDeliverySystemDescriptor">GstMpegtsSatelliteDeliverySystemDescriptor</a>, struct in <a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html" title="DVB variants of MPEG-TS descriptors">DVB variants of MPEG-TS descriptors</a>
+<a class="link" href="gst-plugins-bad-libs-gst-dvb-descriptor.html#GstMpegtsSatelliteDeliverySystemDescriptor" title="struct GstMpegtsSatelliteDeliverySystemDescriptor">GstMpegtsSatelliteDeliverySystemDescriptor</a>, struct in <a class="link" href="gst-plugins-bad-libs-gst-dvb-descriptor.html" title="gst-dvb-descriptor">gst-dvb-descriptor</a>
</dt>
<dd></dd>
<dt>
-<a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GstMpegtsSatellitePolarizationType" title="enum GstMpegtsSatellitePolarizationType">GstMpegtsSatellitePolarizationType</a>, enum in <a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html" title="DVB variants of MPEG-TS descriptors">DVB variants of MPEG-TS descriptors</a>
+<a class="link" href="gst-plugins-bad-libs-gst-dvb-descriptor.html#GstMpegtsSatellitePolarizationType" title="enum GstMpegtsSatellitePolarizationType">GstMpegtsSatellitePolarizationType</a>, enum in <a class="link" href="gst-plugins-bad-libs-gst-dvb-descriptor.html" title="gst-dvb-descriptor">gst-dvb-descriptor</a>
</dt>
<dd></dd>
<dt>
-<a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GstMpegtsSatelliteRolloff" title="enum GstMpegtsSatelliteRolloff">GstMpegtsSatelliteRolloff</a>, enum in <a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html" title="DVB variants of MPEG-TS descriptors">DVB variants of MPEG-TS descriptors</a>
+<a class="link" href="gst-plugins-bad-libs-gst-dvb-descriptor.html#GstMpegtsSatelliteRolloff" title="enum GstMpegtsSatelliteRolloff">GstMpegtsSatelliteRolloff</a>, enum in <a class="link" href="gst-plugins-bad-libs-gst-dvb-descriptor.html" title="gst-dvb-descriptor">gst-dvb-descriptor</a>
</dt>
<dd></dd>
<dt>
-<a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-sections.html#GstMpegtsSDT" title="struct GstMpegtsSDT">GstMpegtsSDT</a>, struct in <a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-sections.html" title="DVB variants of MPEG-TS sections">DVB variants of MPEG-TS sections</a>
+<a class="link" href="gst-plugins-bad-libs-gst-dvb-section.html#GstMpegtsSDT" title="struct GstMpegtsSDT">GstMpegtsSDT</a>, struct in <a class="link" href="gst-plugins-bad-libs-gst-dvb-section.html" title="gst-dvb-section">gst-dvb-section</a>
</dt>
<dd></dd>
<dt>
-<a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-sections.html#GstMpegtsSDTService" title="struct GstMpegtsSDTService">GstMpegtsSDTService</a>, struct in <a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-sections.html" title="DVB variants of MPEG-TS sections">DVB variants of MPEG-TS sections</a>
+<a class="link" href="gst-plugins-bad-libs-gst-dvb-section.html#GstMpegtsSDTService" title="struct GstMpegtsSDTService">GstMpegtsSDTService</a>, struct in <a class="link" href="gst-plugins-bad-libs-gst-dvb-section.html" title="gst-dvb-section">gst-dvb-section</a>
</dt>
<dd></dd>
<dt>
-<a class="link" href="gst-plugins-bad-libs-Base-MPEG-TS-sections.html#GstMpegtsSection-struct" title="struct GstMpegtsSection">GstMpegtsSection</a>, struct in <a class="link" href="gst-plugins-bad-libs-Base-MPEG-TS-sections.html" title="Base MPEG-TS sections">Base MPEG-TS sections</a>
+<a class="link" href="gst-plugins-bad-libs-gstmpegtssection.html#GstMpegtsSection-struct" title="struct GstMpegtsSection">GstMpegtsSection</a>, struct in <a class="link" href="gst-plugins-bad-libs-gstmpegtssection.html" title="gstmpegtssection">gstmpegtssection</a>
</dt>
<dd></dd>
<dt>
-<a class="link" href="gst-plugins-bad-libs-ATSC-variants-of-MPEG-TS-sections.html#GstMpegtsSectionATSCTableID" title="enum GstMpegtsSectionATSCTableID">GstMpegtsSectionATSCTableID</a>, enum in <a class="link" href="gst-plugins-bad-libs-ATSC-variants-of-MPEG-TS-sections.html" title="ATSC variants of MPEG-TS sections">ATSC variants of MPEG-TS sections</a>
+<a class="link" href="gst-plugins-bad-libs-gst-atsc-section.html#GstMpegtsSectionATSCTableID" title="enum GstMpegtsSectionATSCTableID">GstMpegtsSectionATSCTableID</a>, enum in <a class="link" href="gst-plugins-bad-libs-gst-atsc-section.html" title="gst-atsc-section">gst-atsc-section</a>
</dt>
<dd></dd>
<dt>
-<a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-sections.html#GstMpegtsSectionDVBTableID" title="enum GstMpegtsSectionDVBTableID">GstMpegtsSectionDVBTableID</a>, enum in <a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-sections.html" title="DVB variants of MPEG-TS sections">DVB variants of MPEG-TS sections</a>
+<a class="link" href="gst-plugins-bad-libs-gst-dvb-section.html#GstMpegtsSectionDVBTableID" title="enum GstMpegtsSectionDVBTableID">GstMpegtsSectionDVBTableID</a>, enum in <a class="link" href="gst-plugins-bad-libs-gst-dvb-section.html" title="gst-dvb-section">gst-dvb-section</a>
</dt>
<dd></dd>
<dt>
-<a class="link" href="gst-plugins-bad-libs-Base-MPEG-TS-sections.html#GstMpegtsSectionTableID" title="enum GstMpegtsSectionTableID">GstMpegtsSectionTableID</a>, enum in <a class="link" href="gst-plugins-bad-libs-Base-MPEG-TS-sections.html" title="Base MPEG-TS sections">Base MPEG-TS sections</a>
+<a class="link" href="gst-plugins-bad-libs-gstmpegtssection.html#GstMpegtsSectionTableID" title="enum GstMpegtsSectionTableID">GstMpegtsSectionTableID</a>, enum in <a class="link" href="gst-plugins-bad-libs-gstmpegtssection.html" title="gstmpegtssection">gstmpegtssection</a>
</dt>
<dd></dd>
<dt>
-<a class="link" href="gst-plugins-bad-libs-Base-MPEG-TS-sections.html#GstMpegtsSectionType" title="enum GstMpegtsSectionType">GstMpegtsSectionType</a>, enum in <a class="link" href="gst-plugins-bad-libs-Base-MPEG-TS-sections.html" title="Base MPEG-TS sections">Base MPEG-TS sections</a>
+<a class="link" href="gst-plugins-bad-libs-gstmpegtssection.html#GstMpegtsSectionType" title="enum GstMpegtsSectionType">GstMpegtsSectionType</a>, enum in <a class="link" href="gst-plugins-bad-libs-gstmpegtssection.html" title="gstmpegtssection">gstmpegtssection</a>
</dt>
<dd></dd>
<dt>
-<a class="link" href="gst-plugins-bad-libs-Base-MPEG-TS-sections.html#GstMpegtsStreamType" title="enum GstMpegtsStreamType">GstMpegtsStreamType</a>, enum in <a class="link" href="gst-plugins-bad-libs-Base-MPEG-TS-sections.html" title="Base MPEG-TS sections">Base MPEG-TS sections</a>
+<a class="link" href="gst-plugins-bad-libs-gstmpegtssection.html#GstMpegtsStreamType" title="enum GstMpegtsStreamType">GstMpegtsStreamType</a>, enum in <a class="link" href="gst-plugins-bad-libs-gstmpegtssection.html" title="gstmpegtssection">gstmpegtssection</a>
</dt>
<dd></dd>
<dt>
-<a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GstMpegtsT2DeliverySystemCell" title="struct GstMpegtsT2DeliverySystemCell">GstMpegtsT2DeliverySystemCell</a>, struct in <a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html" title="DVB variants of MPEG-TS descriptors">DVB variants of MPEG-TS descriptors</a>
+<a class="link" href="gst-plugins-bad-libs-gst-dvb-descriptor.html#GstMpegtsT2DeliverySystemCell" title="struct GstMpegtsT2DeliverySystemCell">GstMpegtsT2DeliverySystemCell</a>, struct in <a class="link" href="gst-plugins-bad-libs-gst-dvb-descriptor.html" title="gst-dvb-descriptor">gst-dvb-descriptor</a>
</dt>
<dd></dd>
<dt>
-<a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GstMpegtsT2DeliverySystemCellExtension" title="struct GstMpegtsT2DeliverySystemCellExtension">GstMpegtsT2DeliverySystemCellExtension</a>, struct in <a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html" title="DVB variants of MPEG-TS descriptors">DVB variants of MPEG-TS descriptors</a>
+<a class="link" href="gst-plugins-bad-libs-gst-dvb-descriptor.html#GstMpegtsT2DeliverySystemCellExtension" title="struct GstMpegtsT2DeliverySystemCellExtension">GstMpegtsT2DeliverySystemCellExtension</a>, struct in <a class="link" href="gst-plugins-bad-libs-gst-dvb-descriptor.html" title="gst-dvb-descriptor">gst-dvb-descriptor</a>
</dt>
<dd></dd>
<dt>
-<a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GstMpegtsT2DeliverySystemDescriptor" title="struct GstMpegtsT2DeliverySystemDescriptor">GstMpegtsT2DeliverySystemDescriptor</a>, struct in <a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html" title="DVB variants of MPEG-TS descriptors">DVB variants of MPEG-TS descriptors</a>
+<a class="link" href="gst-plugins-bad-libs-gst-dvb-descriptor.html#GstMpegtsT2DeliverySystemDescriptor" title="struct GstMpegtsT2DeliverySystemDescriptor">GstMpegtsT2DeliverySystemDescriptor</a>, struct in <a class="link" href="gst-plugins-bad-libs-gst-dvb-descriptor.html" title="gst-dvb-descriptor">gst-dvb-descriptor</a>
</dt>
<dd></dd>
<dt>
-<a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GstMpegtsTerrestrialDeliverySystemDescriptor" title="struct GstMpegtsTerrestrialDeliverySystemDescriptor">GstMpegtsTerrestrialDeliverySystemDescriptor</a>, struct in <a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html" title="DVB variants of MPEG-TS descriptors">DVB variants of MPEG-TS descriptors</a>
+<a class="link" href="gst-plugins-bad-libs-gst-dvb-descriptor.html#GstMpegtsTerrestrialDeliverySystemDescriptor" title="struct GstMpegtsTerrestrialDeliverySystemDescriptor">GstMpegtsTerrestrialDeliverySystemDescriptor</a>, struct in <a class="link" href="gst-plugins-bad-libs-gst-dvb-descriptor.html" title="gst-dvb-descriptor">gst-dvb-descriptor</a>
</dt>
<dd></dd>
<dt>
-<a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GstMpegtsTerrestrialGuardInterval" title="enum GstMpegtsTerrestrialGuardInterval">GstMpegtsTerrestrialGuardInterval</a>, enum in <a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html" title="DVB variants of MPEG-TS descriptors">DVB variants of MPEG-TS descriptors</a>
+<a class="link" href="gst-plugins-bad-libs-gst-dvb-descriptor.html#GstMpegtsTerrestrialGuardInterval" title="enum GstMpegtsTerrestrialGuardInterval">GstMpegtsTerrestrialGuardInterval</a>, enum in <a class="link" href="gst-plugins-bad-libs-gst-dvb-descriptor.html" title="gst-dvb-descriptor">gst-dvb-descriptor</a>
</dt>
<dd></dd>
<dt>
-<a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GstMpegtsTerrestrialHierarchy" title="enum GstMpegtsTerrestrialHierarchy">GstMpegtsTerrestrialHierarchy</a>, enum in <a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html" title="DVB variants of MPEG-TS descriptors">DVB variants of MPEG-TS descriptors</a>
+<a class="link" href="gst-plugins-bad-libs-gst-dvb-descriptor.html#GstMpegtsTerrestrialHierarchy" title="enum GstMpegtsTerrestrialHierarchy">GstMpegtsTerrestrialHierarchy</a>, enum in <a class="link" href="gst-plugins-bad-libs-gst-dvb-descriptor.html" title="gst-dvb-descriptor">gst-dvb-descriptor</a>
</dt>
<dd></dd>
<dt>
-<a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GstMpegtsTerrestrialTransmissionMode" title="enum GstMpegtsTerrestrialTransmissionMode">GstMpegtsTerrestrialTransmissionMode</a>, enum in <a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html" title="DVB variants of MPEG-TS descriptors">DVB variants of MPEG-TS descriptors</a>
+<a class="link" href="gst-plugins-bad-libs-gst-dvb-descriptor.html#GstMpegtsTerrestrialTransmissionMode" title="enum GstMpegtsTerrestrialTransmissionMode">GstMpegtsTerrestrialTransmissionMode</a>, enum in <a class="link" href="gst-plugins-bad-libs-gst-dvb-descriptor.html" title="gst-dvb-descriptor">gst-dvb-descriptor</a>
</dt>
<dd></dd>
<dt>
-<a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-sections.html#GstMpegtsTOT" title="struct GstMpegtsTOT">GstMpegtsTOT</a>, struct in <a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-sections.html" title="DVB variants of MPEG-TS sections">DVB variants of MPEG-TS sections</a>
+<a class="link" href="gst-plugins-bad-libs-gst-dvb-section.html#GstMpegtsTOT" title="struct GstMpegtsTOT">GstMpegtsTOT</a>, struct in <a class="link" href="gst-plugins-bad-libs-gst-dvb-section.html" title="gst-dvb-section">gst-dvb-section</a>
</dt>
<dd></dd>
<dt>
-<a class="link" href="gst-plugins-bad-libs-ATSC-variants-of-MPEG-TS-sections.html#gst-mpegts-atsc-string-segment-get-string" title="gst_mpegts_atsc_string_segment_get_string ()">gst_mpegts_atsc_string_segment_get_string</a>, function in <a class="link" href="gst-plugins-bad-libs-ATSC-variants-of-MPEG-TS-sections.html" title="ATSC variants of MPEG-TS sections">ATSC variants of MPEG-TS sections</a>
+<a class="link" href="gst-plugins-bad-libs-gst-atsc-section.html#gst-mpegts-atsc-string-segment-get-string" title="gst_mpegts_atsc_string_segment_get_string ()">gst_mpegts_atsc_string_segment_get_string</a>, function in <a class="link" href="gst-plugins-bad-libs-gst-atsc-section.html" title="gst-atsc-section">gst-atsc-section</a>
</dt>
<dd></dd>
<dt>
-<a class="link" href="gst-plugins-bad-libs-ATSC-variants-of-MPEG-TS-sections.html#gst-mpegts-atsc-stt-get-datetime-utc" title="gst_mpegts_atsc_stt_get_datetime_utc ()">gst_mpegts_atsc_stt_get_datetime_utc</a>, function in <a class="link" href="gst-plugins-bad-libs-ATSC-variants-of-MPEG-TS-sections.html" title="ATSC variants of MPEG-TS sections">ATSC variants of MPEG-TS sections</a>
+<a class="link" href="gst-plugins-bad-libs-gst-atsc-section.html#gst-mpegts-atsc-stt-get-datetime-utc" title="gst_mpegts_atsc_stt_get_datetime_utc ()">gst_mpegts_atsc_stt_get_datetime_utc</a>, function in <a class="link" href="gst-plugins-bad-libs-gst-atsc-section.html" title="gst-atsc-section">gst-atsc-section</a>
</dt>
<dd></dd>
<dt>
-<a class="link" href="gst-plugins-bad-libs-Base-MPEG-TS-descriptors.html#gst-mpegts-descriptor-from-custom" title="gst_mpegts_descriptor_from_custom ()">gst_mpegts_descriptor_from_custom</a>, function in <a class="link" href="gst-plugins-bad-libs-Base-MPEG-TS-descriptors.html" title="Base MPEG-TS descriptors">Base MPEG-TS descriptors</a>
+<a class="link" href="gst-plugins-bad-libs-gstmpegtsdescriptor.html#gst-mpegts-descriptor-from-custom" title="gst_mpegts_descriptor_from_custom ()">gst_mpegts_descriptor_from_custom</a>, function in <a class="link" href="gst-plugins-bad-libs-gstmpegtsdescriptor.html" title="gstmpegtsdescriptor">gstmpegtsdescriptor</a>
</dt>
<dd></dd>
<dt>
-<a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#gst-mpegts-descriptor-from-dvb-network-name" title="gst_mpegts_descriptor_from_dvb_network_name ()">gst_mpegts_descriptor_from_dvb_network_name</a>, function in <a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html" title="DVB variants of MPEG-TS descriptors">DVB variants of MPEG-TS descriptors</a>
+<a class="link" href="gst-plugins-bad-libs-gst-dvb-descriptor.html#gst-mpegts-descriptor-from-dvb-network-name" title="gst_mpegts_descriptor_from_dvb_network_name ()">gst_mpegts_descriptor_from_dvb_network_name</a>, function in <a class="link" href="gst-plugins-bad-libs-gst-dvb-descriptor.html" title="gst-dvb-descriptor">gst-dvb-descriptor</a>
</dt>
<dd></dd>
<dt>
-<a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#gst-mpegts-descriptor-from-dvb-service" title="gst_mpegts_descriptor_from_dvb_service ()">gst_mpegts_descriptor_from_dvb_service</a>, function in <a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html" title="DVB variants of MPEG-TS descriptors">DVB variants of MPEG-TS descriptors</a>
+<a class="link" href="gst-plugins-bad-libs-gst-dvb-descriptor.html#gst-mpegts-descriptor-from-dvb-service" title="gst_mpegts_descriptor_from_dvb_service ()">gst_mpegts_descriptor_from_dvb_service</a>, function in <a class="link" href="gst-plugins-bad-libs-gst-dvb-descriptor.html" title="gst-dvb-descriptor">gst-dvb-descriptor</a>
</dt>
<dd></dd>
<dt>
-<a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#gst-mpegts-descriptor-from-dvb-subtitling" title="gst_mpegts_descriptor_from_dvb_subtitling ()">gst_mpegts_descriptor_from_dvb_subtitling</a>, function in <a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html" title="DVB variants of MPEG-TS descriptors">DVB variants of MPEG-TS descriptors</a>
+<a class="link" href="gst-plugins-bad-libs-gst-dvb-descriptor.html#gst-mpegts-descriptor-from-dvb-subtitling" title="gst_mpegts_descriptor_from_dvb_subtitling ()">gst_mpegts_descriptor_from_dvb_subtitling</a>, function in <a class="link" href="gst-plugins-bad-libs-gst-dvb-descriptor.html" title="gst-dvb-descriptor">gst-dvb-descriptor</a>
</dt>
<dd></dd>
<dt>
-<a class="link" href="gst-plugins-bad-libs-Base-MPEG-TS-descriptors.html#gst-mpegts-descriptor-from-registration" title="gst_mpegts_descriptor_from_registration ()">gst_mpegts_descriptor_from_registration</a>, function in <a class="link" href="gst-plugins-bad-libs-Base-MPEG-TS-descriptors.html" title="Base MPEG-TS descriptors">Base MPEG-TS descriptors</a>
+<a class="link" href="gst-plugins-bad-libs-gstmpegtsdescriptor.html#gst-mpegts-descriptor-from-registration" title="gst_mpegts_descriptor_from_registration ()">gst_mpegts_descriptor_from_registration</a>, function in <a class="link" href="gst-plugins-bad-libs-gstmpegtsdescriptor.html" title="gstmpegtsdescriptor">gstmpegtsdescriptor</a>
</dt>
<dd></dd>
<dt>
-<a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#gst-mpegts-descriptor-parse-cable-delivery-system" title="gst_mpegts_descriptor_parse_cable_delivery_system ()">gst_mpegts_descriptor_parse_cable_delivery_system</a>, function in <a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html" title="DVB variants of MPEG-TS descriptors">DVB variants of MPEG-TS descriptors</a>
+<a class="link" href="gst-plugins-bad-libs-gst-dvb-descriptor.html#gst-mpegts-descriptor-parse-cable-delivery-system" title="gst_mpegts_descriptor_parse_cable_delivery_system ()">gst_mpegts_descriptor_parse_cable_delivery_system</a>, function in <a class="link" href="gst-plugins-bad-libs-gst-dvb-descriptor.html" title="gst-dvb-descriptor">gst-dvb-descriptor</a>
</dt>
<dd></dd>
<dt>
-<a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#gst-mpegts-descriptor-parse-dvb-bouquet-name" title="gst_mpegts_descriptor_parse_dvb_bouquet_name ()">gst_mpegts_descriptor_parse_dvb_bouquet_name</a>, function in <a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html" title="DVB variants of MPEG-TS descriptors">DVB variants of MPEG-TS descriptors</a>
+<a class="link" href="gst-plugins-bad-libs-gst-dvb-descriptor.html#gst-mpegts-descriptor-parse-dvb-bouquet-name" title="gst_mpegts_descriptor_parse_dvb_bouquet_name ()">gst_mpegts_descriptor_parse_dvb_bouquet_name</a>, function in <a class="link" href="gst-plugins-bad-libs-gst-dvb-descriptor.html" title="gst-dvb-descriptor">gst-dvb-descriptor</a>
</dt>
<dd></dd>
<dt>
-<a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#gst-mpegts-descriptor-parse-dvb-ca-identifier" title="gst_mpegts_descriptor_parse_dvb_ca_identifier ()">gst_mpegts_descriptor_parse_dvb_ca_identifier</a>, function in <a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html" title="DVB variants of MPEG-TS descriptors">DVB variants of MPEG-TS descriptors</a>
+<a class="link" href="gst-plugins-bad-libs-gst-dvb-descriptor.html#gst-mpegts-descriptor-parse-dvb-ca-identifier" title="gst_mpegts_descriptor_parse_dvb_ca_identifier ()">gst_mpegts_descriptor_parse_dvb_ca_identifier</a>, function in <a class="link" href="gst-plugins-bad-libs-gst-dvb-descriptor.html" title="gst-dvb-descriptor">gst-dvb-descriptor</a>
</dt>
<dd></dd>
<dt>
-<a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#gst-mpegts-descriptor-parse-dvb-component" title="gst_mpegts_descriptor_parse_dvb_component ()">gst_mpegts_descriptor_parse_dvb_component</a>, function in <a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html" title="DVB variants of MPEG-TS descriptors">DVB variants of MPEG-TS descriptors</a>
+<a class="link" href="gst-plugins-bad-libs-gst-dvb-descriptor.html#gst-mpegts-descriptor-parse-dvb-component" title="gst_mpegts_descriptor_parse_dvb_component ()">gst_mpegts_descriptor_parse_dvb_component</a>, function in <a class="link" href="gst-plugins-bad-libs-gst-dvb-descriptor.html" title="gst-dvb-descriptor">gst-dvb-descriptor</a>
</dt>
<dd></dd>
<dt>
-<a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#gst-mpegts-descriptor-parse-dvb-content" title="gst_mpegts_descriptor_parse_dvb_content ()">gst_mpegts_descriptor_parse_dvb_content</a>, function in <a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html" title="DVB variants of MPEG-TS descriptors">DVB variants of MPEG-TS descriptors</a>
+<a class="link" href="gst-plugins-bad-libs-gst-dvb-descriptor.html#gst-mpegts-descriptor-parse-dvb-content" title="gst_mpegts_descriptor_parse_dvb_content ()">gst_mpegts_descriptor_parse_dvb_content</a>, function in <a class="link" href="gst-plugins-bad-libs-gst-dvb-descriptor.html" title="gst-dvb-descriptor">gst-dvb-descriptor</a>
</dt>
<dd></dd>
<dt>
-<a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#gst-mpegts-descriptor-parse-dvb-data-broadcast" title="gst_mpegts_descriptor_parse_dvb_data_broadcast ()">gst_mpegts_descriptor_parse_dvb_data_broadcast</a>, function in <a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html" title="DVB variants of MPEG-TS descriptors">DVB variants of MPEG-TS descriptors</a>
+<a class="link" href="gst-plugins-bad-libs-gst-dvb-descriptor.html#gst-mpegts-descriptor-parse-dvb-data-broadcast" title="gst_mpegts_descriptor_parse_dvb_data_broadcast ()">gst_mpegts_descriptor_parse_dvb_data_broadcast</a>, function in <a class="link" href="gst-plugins-bad-libs-gst-dvb-descriptor.html" title="gst-dvb-descriptor">gst-dvb-descriptor</a>
</dt>
<dd></dd>
<dt>
-<a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#gst-mpegts-descriptor-parse-dvb-data-broadcast-id" title="gst_mpegts_descriptor_parse_dvb_data_broadcast_id ()">gst_mpegts_descriptor_parse_dvb_data_broadcast_id</a>, function in <a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html" title="DVB variants of MPEG-TS descriptors">DVB variants of MPEG-TS descriptors</a>
+<a class="link" href="gst-plugins-bad-libs-gst-dvb-descriptor.html#gst-mpegts-descriptor-parse-dvb-data-broadcast-id" title="gst_mpegts_descriptor_parse_dvb_data_broadcast_id ()">gst_mpegts_descriptor_parse_dvb_data_broadcast_id</a>, function in <a class="link" href="gst-plugins-bad-libs-gst-dvb-descriptor.html" title="gst-dvb-descriptor">gst-dvb-descriptor</a>
</dt>
<dd></dd>
<dt>
-<a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#gst-mpegts-descriptor-parse-dvb-extended-event" title="gst_mpegts_descriptor_parse_dvb_extended_event ()">gst_mpegts_descriptor_parse_dvb_extended_event</a>, function in <a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html" title="DVB variants of MPEG-TS descriptors">DVB variants of MPEG-TS descriptors</a>
+<a class="link" href="gst-plugins-bad-libs-gst-dvb-descriptor.html#gst-mpegts-descriptor-parse-dvb-extended-event" title="gst_mpegts_descriptor_parse_dvb_extended_event ()">gst_mpegts_descriptor_parse_dvb_extended_event</a>, function in <a class="link" href="gst-plugins-bad-libs-gst-dvb-descriptor.html" title="gst-dvb-descriptor">gst-dvb-descriptor</a>
</dt>
<dd></dd>
<dt>
-<a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#gst-mpegts-descriptor-parse-dvb-frequency-list" title="gst_mpegts_descriptor_parse_dvb_frequency_list ()">gst_mpegts_descriptor_parse_dvb_frequency_list</a>, function in <a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html" title="DVB variants of MPEG-TS descriptors">DVB variants of MPEG-TS descriptors</a>
+<a class="link" href="gst-plugins-bad-libs-gst-dvb-descriptor.html#gst-mpegts-descriptor-parse-dvb-frequency-list" title="gst_mpegts_descriptor_parse_dvb_frequency_list ()">gst_mpegts_descriptor_parse_dvb_frequency_list</a>, function in <a class="link" href="gst-plugins-bad-libs-gst-dvb-descriptor.html" title="gst-dvb-descriptor">gst-dvb-descriptor</a>
</dt>
<dd></dd>
<dt>
-<a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#gst-mpegts-descriptor-parse-dvb-linkage" title="gst_mpegts_descriptor_parse_dvb_linkage ()">gst_mpegts_descriptor_parse_dvb_linkage</a>, function in <a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html" title="DVB variants of MPEG-TS descriptors">DVB variants of MPEG-TS descriptors</a>
+<a class="link" href="gst-plugins-bad-libs-gst-dvb-descriptor.html#gst-mpegts-descriptor-parse-dvb-linkage" title="gst_mpegts_descriptor_parse_dvb_linkage ()">gst_mpegts_descriptor_parse_dvb_linkage</a>, function in <a class="link" href="gst-plugins-bad-libs-gst-dvb-descriptor.html" title="gst-dvb-descriptor">gst-dvb-descriptor</a>
</dt>
<dd></dd>
<dt>
-<a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#gst-mpegts-descriptor-parse-dvb-multilingual-bouquet-name" title="gst_mpegts_descriptor_parse_dvb_multilingual_bouquet_name ()">gst_mpegts_descriptor_parse_dvb_multilingual_bouquet_name</a>, function in <a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html" title="DVB variants of MPEG-TS descriptors">DVB variants of MPEG-TS descriptors</a>
+<a class="link" href="gst-plugins-bad-libs-gst-dvb-descriptor.html#gst-mpegts-descriptor-parse-dvb-multilingual-bouquet-name" title="gst_mpegts_descriptor_parse_dvb_multilingual_bouquet_name ()">gst_mpegts_descriptor_parse_dvb_multilingual_bouquet_name</a>, function in <a class="link" href="gst-plugins-bad-libs-gst-dvb-descriptor.html" title="gst-dvb-descriptor">gst-dvb-descriptor</a>
</dt>
<dd></dd>
<dt>
-<a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#gst-mpegts-descriptor-parse-dvb-multilingual-component" title="gst_mpegts_descriptor_parse_dvb_multilingual_component ()">gst_mpegts_descriptor_parse_dvb_multilingual_component</a>, function in <a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html" title="DVB variants of MPEG-TS descriptors">DVB variants of MPEG-TS descriptors</a>
+<a class="link" href="gst-plugins-bad-libs-gst-dvb-descriptor.html#gst-mpegts-descriptor-parse-dvb-multilingual-component" title="gst_mpegts_descriptor_parse_dvb_multilingual_component ()">gst_mpegts_descriptor_parse_dvb_multilingual_component</a>, function in <a class="link" href="gst-plugins-bad-libs-gst-dvb-descriptor.html" title="gst-dvb-descriptor">gst-dvb-descriptor</a>
</dt>
<dd></dd>
<dt>
-<a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#gst-mpegts-descriptor-parse-dvb-multilingual-network-name" title="gst_mpegts_descriptor_parse_dvb_multilingual_network_name ()">gst_mpegts_descriptor_parse_dvb_multilingual_network_name</a>, function in <a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html" title="DVB variants of MPEG-TS descriptors">DVB variants of MPEG-TS descriptors</a>
+<a class="link" href="gst-plugins-bad-libs-gst-dvb-descriptor.html#gst-mpegts-descriptor-parse-dvb-multilingual-network-name" title="gst_mpegts_descriptor_parse_dvb_multilingual_network_name ()">gst_mpegts_descriptor_parse_dvb_multilingual_network_name</a>, function in <a class="link" href="gst-plugins-bad-libs-gst-dvb-descriptor.html" title="gst-dvb-descriptor">gst-dvb-descriptor</a>
</dt>
<dd></dd>
<dt>
-<a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#gst-mpegts-descriptor-parse-dvb-multilingual-service-name" title="gst_mpegts_descriptor_parse_dvb_multilingual_service_name ()">gst_mpegts_descriptor_parse_dvb_multilingual_service_name</a>, function in <a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html" title="DVB variants of MPEG-TS descriptors">DVB variants of MPEG-TS descriptors</a>
+<a class="link" href="gst-plugins-bad-libs-gst-dvb-descriptor.html#gst-mpegts-descriptor-parse-dvb-multilingual-service-name" title="gst_mpegts_descriptor_parse_dvb_multilingual_service_name ()">gst_mpegts_descriptor_parse_dvb_multilingual_service_name</a>, function in <a class="link" href="gst-plugins-bad-libs-gst-dvb-descriptor.html" title="gst-dvb-descriptor">gst-dvb-descriptor</a>
</dt>
<dd></dd>
<dt>
-<a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#gst-mpegts-descriptor-parse-dvb-network-name" title="gst_mpegts_descriptor_parse_dvb_network_name ()">gst_mpegts_descriptor_parse_dvb_network_name</a>, function in <a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html" title="DVB variants of MPEG-TS descriptors">DVB variants of MPEG-TS descriptors</a>
+<a class="link" href="gst-plugins-bad-libs-gst-dvb-descriptor.html#gst-mpegts-descriptor-parse-dvb-network-name" title="gst_mpegts_descriptor_parse_dvb_network_name ()">gst_mpegts_descriptor_parse_dvb_network_name</a>, function in <a class="link" href="gst-plugins-bad-libs-gst-dvb-descriptor.html" title="gst-dvb-descriptor">gst-dvb-descriptor</a>
</dt>
<dd></dd>
<dt>
-<a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#gst-mpegts-descriptor-parse-dvb-parental-rating" title="gst_mpegts_descriptor_parse_dvb_parental_rating ()">gst_mpegts_descriptor_parse_dvb_parental_rating</a>, function in <a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html" title="DVB variants of MPEG-TS descriptors">DVB variants of MPEG-TS descriptors</a>
+<a class="link" href="gst-plugins-bad-libs-gst-dvb-descriptor.html#gst-mpegts-descriptor-parse-dvb-parental-rating" title="gst_mpegts_descriptor_parse_dvb_parental_rating ()">gst_mpegts_descriptor_parse_dvb_parental_rating</a>, function in <a class="link" href="gst-plugins-bad-libs-gst-dvb-descriptor.html" title="gst-dvb-descriptor">gst-dvb-descriptor</a>
</dt>
<dd></dd>
<dt>
-<a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#gst-mpegts-descriptor-parse-dvb-private-data-specifier" title="gst_mpegts_descriptor_parse_dvb_private_data_specifier ()">gst_mpegts_descriptor_parse_dvb_private_data_specifier</a>, function in <a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html" title="DVB variants of MPEG-TS descriptors">DVB variants of MPEG-TS descriptors</a>
+<a class="link" href="gst-plugins-bad-libs-gst-dvb-descriptor.html#gst-mpegts-descriptor-parse-dvb-private-data-specifier" title="gst_mpegts_descriptor_parse_dvb_private_data_specifier ()">gst_mpegts_descriptor_parse_dvb_private_data_specifier</a>, function in <a class="link" href="gst-plugins-bad-libs-gst-dvb-descriptor.html" title="gst-dvb-descriptor">gst-dvb-descriptor</a>
</dt>
<dd></dd>
<dt>
-<a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#gst-mpegts-descriptor-parse-dvb-scrambling" title="gst_mpegts_descriptor_parse_dvb_scrambling ()">gst_mpegts_descriptor_parse_dvb_scrambling</a>, function in <a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html" title="DVB variants of MPEG-TS descriptors">DVB variants of MPEG-TS descriptors</a>
+<a class="link" href="gst-plugins-bad-libs-gst-dvb-descriptor.html#gst-mpegts-descriptor-parse-dvb-scrambling" title="gst_mpegts_descriptor_parse_dvb_scrambling ()">gst_mpegts_descriptor_parse_dvb_scrambling</a>, function in <a class="link" href="gst-plugins-bad-libs-gst-dvb-descriptor.html" title="gst-dvb-descriptor">gst-dvb-descriptor</a>
</dt>
<dd></dd>
<dt>
-<a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#gst-mpegts-descriptor-parse-dvb-service" title="gst_mpegts_descriptor_parse_dvb_service ()">gst_mpegts_descriptor_parse_dvb_service</a>, function in <a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html" title="DVB variants of MPEG-TS descriptors">DVB variants of MPEG-TS descriptors</a>
+<a class="link" href="gst-plugins-bad-libs-gst-dvb-descriptor.html#gst-mpegts-descriptor-parse-dvb-service" title="gst_mpegts_descriptor_parse_dvb_service ()">gst_mpegts_descriptor_parse_dvb_service</a>, function in <a class="link" href="gst-plugins-bad-libs-gst-dvb-descriptor.html" title="gst-dvb-descriptor">gst-dvb-descriptor</a>
</dt>
<dd></dd>
<dt>
-<a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#gst-mpegts-descriptor-parse-dvb-service-list" title="gst_mpegts_descriptor_parse_dvb_service_list ()">gst_mpegts_descriptor_parse_dvb_service_list</a>, function in <a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html" title="DVB variants of MPEG-TS descriptors">DVB variants of MPEG-TS descriptors</a>
+<a class="link" href="gst-plugins-bad-libs-gst-dvb-descriptor.html#gst-mpegts-descriptor-parse-dvb-service-list" title="gst_mpegts_descriptor_parse_dvb_service_list ()">gst_mpegts_descriptor_parse_dvb_service_list</a>, function in <a class="link" href="gst-plugins-bad-libs-gst-dvb-descriptor.html" title="gst-dvb-descriptor">gst-dvb-descriptor</a>
</dt>
<dd></dd>
<dt>
-<a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#gst-mpegts-descriptor-parse-dvb-short-event" title="gst_mpegts_descriptor_parse_dvb_short_event ()">gst_mpegts_descriptor_parse_dvb_short_event</a>, function in <a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html" title="DVB variants of MPEG-TS descriptors">DVB variants of MPEG-TS descriptors</a>
+<a class="link" href="gst-plugins-bad-libs-gst-dvb-descriptor.html#gst-mpegts-descriptor-parse-dvb-short-event" title="gst_mpegts_descriptor_parse_dvb_short_event ()">gst_mpegts_descriptor_parse_dvb_short_event</a>, function in <a class="link" href="gst-plugins-bad-libs-gst-dvb-descriptor.html" title="gst-dvb-descriptor">gst-dvb-descriptor</a>
</dt>
<dd></dd>
<dt>
-<a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#gst-mpegts-descriptor-parse-dvb-stream-identifier" title="gst_mpegts_descriptor_parse_dvb_stream_identifier ()">gst_mpegts_descriptor_parse_dvb_stream_identifier</a>, function in <a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html" title="DVB variants of MPEG-TS descriptors">DVB variants of MPEG-TS descriptors</a>
+<a class="link" href="gst-plugins-bad-libs-gst-dvb-descriptor.html#gst-mpegts-descriptor-parse-dvb-stream-identifier" title="gst_mpegts_descriptor_parse_dvb_stream_identifier ()">gst_mpegts_descriptor_parse_dvb_stream_identifier</a>, function in <a class="link" href="gst-plugins-bad-libs-gst-dvb-descriptor.html" title="gst-dvb-descriptor">gst-dvb-descriptor</a>
</dt>
<dd></dd>
<dt>
-<a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#gst-mpegts-descriptor-parse-dvb-stuffing" title="gst_mpegts_descriptor_parse_dvb_stuffing ()">gst_mpegts_descriptor_parse_dvb_stuffing</a>, function in <a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html" title="DVB variants of MPEG-TS descriptors">DVB variants of MPEG-TS descriptors</a>
+<a class="link" href="gst-plugins-bad-libs-gst-dvb-descriptor.html#gst-mpegts-descriptor-parse-dvb-stuffing" title="gst_mpegts_descriptor_parse_dvb_stuffing ()">gst_mpegts_descriptor_parse_dvb_stuffing</a>, function in <a class="link" href="gst-plugins-bad-libs-gst-dvb-descriptor.html" title="gst-dvb-descriptor">gst-dvb-descriptor</a>
</dt>
<dd></dd>
<dt>
-<a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#gst-mpegts-descriptor-parse-dvb-subtitling-idx" title="gst_mpegts_descriptor_parse_dvb_subtitling_idx ()">gst_mpegts_descriptor_parse_dvb_subtitling_idx</a>, function in <a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html" title="DVB variants of MPEG-TS descriptors">DVB variants of MPEG-TS descriptors</a>
+<a class="link" href="gst-plugins-bad-libs-gst-dvb-descriptor.html#gst-mpegts-descriptor-parse-dvb-subtitling-idx" title="gst_mpegts_descriptor_parse_dvb_subtitling_idx ()">gst_mpegts_descriptor_parse_dvb_subtitling_idx</a>, function in <a class="link" href="gst-plugins-bad-libs-gst-dvb-descriptor.html" title="gst-dvb-descriptor">gst-dvb-descriptor</a>
</dt>
<dd></dd>
<dt>
-<a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#gst-mpegts-descriptor-parse-dvb-subtitling-nb" title="gst_mpegts_descriptor_parse_dvb_subtitling_nb ()">gst_mpegts_descriptor_parse_dvb_subtitling_nb</a>, function in <a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html" title="DVB variants of MPEG-TS descriptors">DVB variants of MPEG-TS descriptors</a>
+<a class="link" href="gst-plugins-bad-libs-gst-dvb-descriptor.html#gst-mpegts-descriptor-parse-dvb-subtitling-nb" title="gst_mpegts_descriptor_parse_dvb_subtitling_nb ()">gst_mpegts_descriptor_parse_dvb_subtitling_nb</a>, function in <a class="link" href="gst-plugins-bad-libs-gst-dvb-descriptor.html" title="gst-dvb-descriptor">gst-dvb-descriptor</a>
</dt>
<dd></dd>
<dt>
-<a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#gst-mpegts-descriptor-parse-dvb-t2-delivery-system" title="gst_mpegts_descriptor_parse_dvb_t2_delivery_system ()">gst_mpegts_descriptor_parse_dvb_t2_delivery_system</a>, function in <a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html" title="DVB variants of MPEG-TS descriptors">DVB variants of MPEG-TS descriptors</a>
+<a class="link" href="gst-plugins-bad-libs-gst-dvb-descriptor.html#gst-mpegts-descriptor-parse-dvb-t2-delivery-system" title="gst_mpegts_descriptor_parse_dvb_t2_delivery_system ()">gst_mpegts_descriptor_parse_dvb_t2_delivery_system</a>, function in <a class="link" href="gst-plugins-bad-libs-gst-dvb-descriptor.html" title="gst-dvb-descriptor">gst-dvb-descriptor</a>
</dt>
<dd></dd>
<dt>
-<a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#gst-mpegts-descriptor-parse-dvb-teletext-idx" title="gst_mpegts_descriptor_parse_dvb_teletext_idx ()">gst_mpegts_descriptor_parse_dvb_teletext_idx</a>, function in <a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html" title="DVB variants of MPEG-TS descriptors">DVB variants of MPEG-TS descriptors</a>
+<a class="link" href="gst-plugins-bad-libs-gst-dvb-descriptor.html#gst-mpegts-descriptor-parse-dvb-teletext-idx" title="gst_mpegts_descriptor_parse_dvb_teletext_idx ()">gst_mpegts_descriptor_parse_dvb_teletext_idx</a>, function in <a class="link" href="gst-plugins-bad-libs-gst-dvb-descriptor.html" title="gst-dvb-descriptor">gst-dvb-descriptor</a>
</dt>
<dd></dd>
<dt>
-<a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#gst-mpegts-descriptor-parse-dvb-teletext-nb" title="gst_mpegts_descriptor_parse_dvb_teletext_nb ()">gst_mpegts_descriptor_parse_dvb_teletext_nb</a>, function in <a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html" title="DVB variants of MPEG-TS descriptors">DVB variants of MPEG-TS descriptors</a>
+<a class="link" href="gst-plugins-bad-libs-gst-dvb-descriptor.html#gst-mpegts-descriptor-parse-dvb-teletext-nb" title="gst_mpegts_descriptor_parse_dvb_teletext_nb ()">gst_mpegts_descriptor_parse_dvb_teletext_nb</a>, function in <a class="link" href="gst-plugins-bad-libs-gst-dvb-descriptor.html" title="gst-dvb-descriptor">gst-dvb-descriptor</a>
</dt>
<dd></dd>
<dt>
-<a class="link" href="gst-plugins-bad-libs-Base-MPEG-TS-descriptors.html#gst-mpegts-descriptor-parse-iso-639-language" title="gst_mpegts_descriptor_parse_iso_639_language ()">gst_mpegts_descriptor_parse_iso_639_language</a>, function in <a class="link" href="gst-plugins-bad-libs-Base-MPEG-TS-descriptors.html" title="Base MPEG-TS descriptors">Base MPEG-TS descriptors</a>
+<a class="link" href="gst-plugins-bad-libs-gstmpegtsdescriptor.html#gst-mpegts-descriptor-parse-iso-639-language" title="gst_mpegts_descriptor_parse_iso_639_language ()">gst_mpegts_descriptor_parse_iso_639_language</a>, function in <a class="link" href="gst-plugins-bad-libs-gstmpegtsdescriptor.html" title="gstmpegtsdescriptor">gstmpegtsdescriptor</a>
</dt>
<dd></dd>
<dt>
-<a class="link" href="gst-plugins-bad-libs-Base-MPEG-TS-descriptors.html#gst-mpegts-descriptor-parse-iso-639-language-idx" title="gst_mpegts_descriptor_parse_iso_639_language_idx ()">gst_mpegts_descriptor_parse_iso_639_language_idx</a>, function in <a class="link" href="gst-plugins-bad-libs-Base-MPEG-TS-descriptors.html" title="Base MPEG-TS descriptors">Base MPEG-TS descriptors</a>
+<a class="link" href="gst-plugins-bad-libs-gstmpegtsdescriptor.html#gst-mpegts-descriptor-parse-iso-639-language-idx" title="gst_mpegts_descriptor_parse_iso_639_language_idx ()">gst_mpegts_descriptor_parse_iso_639_language_idx</a>, function in <a class="link" href="gst-plugins-bad-libs-gstmpegtsdescriptor.html" title="gstmpegtsdescriptor">gstmpegtsdescriptor</a>
</dt>
<dd></dd>
<dt>
-<a class="link" href="gst-plugins-bad-libs-Base-MPEG-TS-descriptors.html#gst-mpegts-descriptor-parse-iso-639-language-nb" title="gst_mpegts_descriptor_parse_iso_639_language_nb ()">gst_mpegts_descriptor_parse_iso_639_language_nb</a>, function in <a class="link" href="gst-plugins-bad-libs-Base-MPEG-TS-descriptors.html" title="Base MPEG-TS descriptors">Base MPEG-TS descriptors</a>
+<a class="link" href="gst-plugins-bad-libs-gstmpegtsdescriptor.html#gst-mpegts-descriptor-parse-iso-639-language-nb" title="gst_mpegts_descriptor_parse_iso_639_language_nb ()">gst_mpegts_descriptor_parse_iso_639_language_nb</a>, function in <a class="link" href="gst-plugins-bad-libs-gstmpegtsdescriptor.html" title="gstmpegtsdescriptor">gstmpegtsdescriptor</a>
</dt>
<dd></dd>
<dt>
-<a class="link" href="gst-plugins-bad-libs-Base-MPEG-TS-descriptors.html#gst-mpegts-descriptor-parse-logical-channel" title="gst_mpegts_descriptor_parse_logical_channel ()">gst_mpegts_descriptor_parse_logical_channel</a>, function in <a class="link" href="gst-plugins-bad-libs-Base-MPEG-TS-descriptors.html" title="Base MPEG-TS descriptors">Base MPEG-TS descriptors</a>
+<a class="link" href="gst-plugins-bad-libs-gstmpegtsdescriptor.html#gst-mpegts-descriptor-parse-logical-channel" title="gst_mpegts_descriptor_parse_logical_channel ()">gst_mpegts_descriptor_parse_logical_channel</a>, function in <a class="link" href="gst-plugins-bad-libs-gstmpegtsdescriptor.html" title="gstmpegtsdescriptor">gstmpegtsdescriptor</a>
</dt>
<dd></dd>
<dt>
-<a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#gst-mpegts-descriptor-parse-satellite-delivery-system" title="gst_mpegts_descriptor_parse_satellite_delivery_system ()">gst_mpegts_descriptor_parse_satellite_delivery_system</a>, function in <a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html" title="DVB variants of MPEG-TS descriptors">DVB variants of MPEG-TS descriptors</a>
+<a class="link" href="gst-plugins-bad-libs-gst-dvb-descriptor.html#gst-mpegts-descriptor-parse-satellite-delivery-system" title="gst_mpegts_descriptor_parse_satellite_delivery_system ()">gst_mpegts_descriptor_parse_satellite_delivery_system</a>, function in <a class="link" href="gst-plugins-bad-libs-gst-dvb-descriptor.html" title="gst-dvb-descriptor">gst-dvb-descriptor</a>
</dt>
<dd></dd>
<dt>
-<a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#gst-mpegts-descriptor-parse-terrestrial-delivery-system" title="gst_mpegts_descriptor_parse_terrestrial_delivery_system ()">gst_mpegts_descriptor_parse_terrestrial_delivery_system</a>, function in <a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html" title="DVB variants of MPEG-TS descriptors">DVB variants of MPEG-TS descriptors</a>
+<a class="link" href="gst-plugins-bad-libs-gst-dvb-descriptor.html#gst-mpegts-descriptor-parse-terrestrial-delivery-system" title="gst_mpegts_descriptor_parse_terrestrial_delivery_system ()">gst_mpegts_descriptor_parse_terrestrial_delivery_system</a>, function in <a class="link" href="gst-plugins-bad-libs-gst-dvb-descriptor.html" title="gst-dvb-descriptor">gst-dvb-descriptor</a>
</dt>
<dd></dd>
<dt>
-<a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#gst-mpegts-dvb-component-descriptor-free" title="gst_mpegts_dvb_component_descriptor_free ()">gst_mpegts_dvb_component_descriptor_free</a>, function in <a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html" title="DVB variants of MPEG-TS descriptors">DVB variants of MPEG-TS descriptors</a>
+<a class="link" href="gst-plugins-bad-libs-gst-dvb-descriptor.html#gst-mpegts-dvb-component-descriptor-free" title="gst_mpegts_dvb_component_descriptor_free ()">gst_mpegts_dvb_component_descriptor_free</a>, function in <a class="link" href="gst-plugins-bad-libs-gst-dvb-descriptor.html" title="gst-dvb-descriptor">gst-dvb-descriptor</a>
</dt>
<dd></dd>
<dt>
-<a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#gst-mpegts-dvb-data-broadcast-descriptor-free" title="gst_mpegts_dvb_data_broadcast_descriptor_free ()">gst_mpegts_dvb_data_broadcast_descriptor_free</a>, function in <a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html" title="DVB variants of MPEG-TS descriptors">DVB variants of MPEG-TS descriptors</a>
+<a class="link" href="gst-plugins-bad-libs-gst-dvb-descriptor.html#gst-mpegts-dvb-data-broadcast-descriptor-free" title="gst_mpegts_dvb_data_broadcast_descriptor_free ()">gst_mpegts_dvb_data_broadcast_descriptor_free</a>, function in <a class="link" href="gst-plugins-bad-libs-gst-dvb-descriptor.html" title="gst-dvb-descriptor">gst-dvb-descriptor</a>
</dt>
<dd></dd>
<dt>
-<a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#gst-mpegts-dvb-linkage-descriptor-free" title="gst_mpegts_dvb_linkage_descriptor_free ()">gst_mpegts_dvb_linkage_descriptor_free</a>, function in <a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html" title="DVB variants of MPEG-TS descriptors">DVB variants of MPEG-TS descriptors</a>
+<a class="link" href="gst-plugins-bad-libs-gst-dvb-descriptor.html#gst-mpegts-dvb-linkage-descriptor-free" title="gst_mpegts_dvb_linkage_descriptor_free ()">gst_mpegts_dvb_linkage_descriptor_free</a>, function in <a class="link" href="gst-plugins-bad-libs-gst-dvb-descriptor.html" title="gst-dvb-descriptor">gst-dvb-descriptor</a>
</dt>
<dd></dd>
<dt>
-<a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#gst-mpegts-dvb-linkage-descriptor-get-event" title="gst_mpegts_dvb_linkage_descriptor_get_event ()">gst_mpegts_dvb_linkage_descriptor_get_event</a>, function in <a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html" title="DVB variants of MPEG-TS descriptors">DVB variants of MPEG-TS descriptors</a>
+<a class="link" href="gst-plugins-bad-libs-gst-dvb-descriptor.html#gst-mpegts-dvb-linkage-descriptor-get-event" title="gst_mpegts_dvb_linkage_descriptor_get_event ()">gst_mpegts_dvb_linkage_descriptor_get_event</a>, function in <a class="link" href="gst-plugins-bad-libs-gst-dvb-descriptor.html" title="gst-dvb-descriptor">gst-dvb-descriptor</a>
</dt>
<dd></dd>
<dt>
-<a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#gst-mpegts-dvb-linkage-descriptor-get-extended-event" title="gst_mpegts_dvb_linkage_descriptor_get_extended_event ()">gst_mpegts_dvb_linkage_descriptor_get_extended_event</a>, function in <a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html" title="DVB variants of MPEG-TS descriptors">DVB variants of MPEG-TS descriptors</a>
+<a class="link" href="gst-plugins-bad-libs-gst-dvb-descriptor.html#gst-mpegts-dvb-linkage-descriptor-get-extended-event" title="gst_mpegts_dvb_linkage_descriptor_get_extended_event ()">gst_mpegts_dvb_linkage_descriptor_get_extended_event</a>, function in <a class="link" href="gst-plugins-bad-libs-gst-dvb-descriptor.html" title="gst-dvb-descriptor">gst-dvb-descriptor</a>
</dt>
<dd></dd>
<dt>
-<a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#gst-mpegts-dvb-linkage-descriptor-get-mobile-hand-over" title="gst_mpegts_dvb_linkage_descriptor_get_mobile_hand_over ()">gst_mpegts_dvb_linkage_descriptor_get_mobile_hand_over</a>, function in <a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html" title="DVB variants of MPEG-TS descriptors">DVB variants of MPEG-TS descriptors</a>
+<a class="link" href="gst-plugins-bad-libs-gst-dvb-descriptor.html#gst-mpegts-dvb-linkage-descriptor-get-mobile-hand-over" title="gst_mpegts_dvb_linkage_descriptor_get_mobile_hand_over ()">gst_mpegts_dvb_linkage_descriptor_get_mobile_hand_over</a>, function in <a class="link" href="gst-plugins-bad-libs-gst-dvb-descriptor.html" title="gst-dvb-descriptor">gst-dvb-descriptor</a>
</dt>
<dd></dd>
<dt>
-<a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#gst-mpegts-extended-event-descriptor-free" title="gst_mpegts_extended_event_descriptor_free ()">gst_mpegts_extended_event_descriptor_free</a>, function in <a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html" title="DVB variants of MPEG-TS descriptors">DVB variants of MPEG-TS descriptors</a>
+<a class="link" href="gst-plugins-bad-libs-gst-dvb-descriptor.html#gst-mpegts-extended-event-descriptor-free" title="gst_mpegts_extended_event_descriptor_free ()">gst_mpegts_extended_event_descriptor_free</a>, function in <a class="link" href="gst-plugins-bad-libs-gst-dvb-descriptor.html" title="gst-dvb-descriptor">gst-dvb-descriptor</a>
</dt>
<dd></dd>
<dt>
-<a class="link" href="gst-plugins-bad-libs-Base-MPEG-TS-descriptors.html#gst-mpegts-find-descriptor" title="gst_mpegts_find_descriptor ()">gst_mpegts_find_descriptor</a>, function in <a class="link" href="gst-plugins-bad-libs-Base-MPEG-TS-descriptors.html" title="Base MPEG-TS descriptors">Base MPEG-TS descriptors</a>
+<a class="link" href="gst-plugins-bad-libs-gstmpegtsdescriptor.html#gst-mpegts-find-descriptor" title="gst_mpegts_find_descriptor ()">gst_mpegts_find_descriptor</a>, function in <a class="link" href="gst-plugins-bad-libs-gstmpegtsdescriptor.html" title="gstmpegtsdescriptor">gstmpegtsdescriptor</a>
</dt>
<dd></dd>
<dt>
-<a class="link" href="gst-plugins-bad-libs-Mpeg-ts-helper-library.html#gst-mpegts-initialize" title="gst_mpegts_initialize ()">gst_mpegts_initialize</a>, function in <a class="link" href="gst-plugins-bad-libs-Mpeg-ts-helper-library.html" title="Mpeg-ts helper library">Mpeg-ts helper library</a>
+<a class="link" href="gst-plugins-bad-libs-gstmpegts.html#gst-mpegts-initialize" title="gst_mpegts_initialize ()">gst_mpegts_initialize</a>, function in <a class="link" href="gst-plugins-bad-libs-gstmpegts.html" title="gstmpegts">gstmpegts</a>
</dt>
<dd></dd>
<dt>
-<a class="link" href="gst-plugins-bad-libs-Base-MPEG-TS-descriptors.html#gst-mpegts-iso-639-language-descriptor-free" title="gst_mpegts_iso_639_language_descriptor_free ()">gst_mpegts_iso_639_language_descriptor_free</a>, function in <a class="link" href="gst-plugins-bad-libs-Base-MPEG-TS-descriptors.html" title="Base MPEG-TS descriptors">Base MPEG-TS descriptors</a>
+<a class="link" href="gst-plugins-bad-libs-gstmpegtsdescriptor.html#gst-mpegts-iso-639-language-descriptor-free" title="gst_mpegts_iso_639_language_descriptor_free ()">gst_mpegts_iso_639_language_descriptor_free</a>, function in <a class="link" href="gst-plugins-bad-libs-gstmpegtsdescriptor.html" title="gstmpegtsdescriptor">gstmpegtsdescriptor</a>
</dt>
<dd></dd>
<dt>
-<a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-sections.html#gst-mpegts-nit-new" title="gst_mpegts_nit_new ()">gst_mpegts_nit_new</a>, function in <a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-sections.html" title="DVB variants of MPEG-TS sections">DVB variants of MPEG-TS sections</a>
+<a class="link" href="gst-plugins-bad-libs-gst-dvb-section.html#gst-mpegts-nit-new" title="gst_mpegts_nit_new ()">gst_mpegts_nit_new</a>, function in <a class="link" href="gst-plugins-bad-libs-gst-dvb-section.html" title="gst-dvb-section">gst-dvb-section</a>
</dt>
<dd></dd>
<dt>
-<a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-sections.html#gst-mpegts-nit-stream-new" title="gst_mpegts_nit_stream_new ()">gst_mpegts_nit_stream_new</a>, function in <a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-sections.html" title="DVB variants of MPEG-TS sections">DVB variants of MPEG-TS sections</a>
+<a class="link" href="gst-plugins-bad-libs-gst-dvb-section.html#gst-mpegts-nit-stream-new" title="gst_mpegts_nit_stream_new ()">gst_mpegts_nit_stream_new</a>, function in <a class="link" href="gst-plugins-bad-libs-gst-dvb-section.html" title="gst-dvb-section">gst-dvb-section</a>
</dt>
<dd></dd>
<dt>
-<a class="link" href="gst-plugins-bad-libs-Base-MPEG-TS-descriptors.html#gst-mpegts-parse-descriptors" title="gst_mpegts_parse_descriptors ()">gst_mpegts_parse_descriptors</a>, function in <a class="link" href="gst-plugins-bad-libs-Base-MPEG-TS-descriptors.html" title="Base MPEG-TS descriptors">Base MPEG-TS descriptors</a>
+<a class="link" href="gst-plugins-bad-libs-gstmpegtsdescriptor.html#gst-mpegts-parse-descriptors" title="gst_mpegts_parse_descriptors ()">gst_mpegts_parse_descriptors</a>, function in <a class="link" href="gst-plugins-bad-libs-gstmpegtsdescriptor.html" title="gstmpegtsdescriptor">gstmpegtsdescriptor</a>
</dt>
<dd></dd>
<dt>
-<a class="link" href="gst-plugins-bad-libs-Base-MPEG-TS-sections.html#gst-mpegts-pat-new" title="gst_mpegts_pat_new ()">gst_mpegts_pat_new</a>, function in <a class="link" href="gst-plugins-bad-libs-Base-MPEG-TS-sections.html" title="Base MPEG-TS sections">Base MPEG-TS sections</a>
+<a class="link" href="gst-plugins-bad-libs-gstmpegtssection.html#gst-mpegts-pat-new" title="gst_mpegts_pat_new ()">gst_mpegts_pat_new</a>, function in <a class="link" href="gst-plugins-bad-libs-gstmpegtssection.html" title="gstmpegtssection">gstmpegtssection</a>
</dt>
<dd></dd>
<dt>
-<a class="link" href="gst-plugins-bad-libs-Base-MPEG-TS-sections.html#gst-mpegts-pat-program-new" title="gst_mpegts_pat_program_new ()">gst_mpegts_pat_program_new</a>, function in <a class="link" href="gst-plugins-bad-libs-Base-MPEG-TS-sections.html" title="Base MPEG-TS sections">Base MPEG-TS sections</a>
+<a class="link" href="gst-plugins-bad-libs-gstmpegtssection.html#gst-mpegts-pat-program-new" title="gst_mpegts_pat_program_new ()">gst_mpegts_pat_program_new</a>, function in <a class="link" href="gst-plugins-bad-libs-gstmpegtssection.html" title="gstmpegtssection">gstmpegtssection</a>
</dt>
<dd></dd>
<dt>
-<a class="link" href="gst-plugins-bad-libs-Base-MPEG-TS-sections.html#gst-mpegts-pmt-new" title="gst_mpegts_pmt_new ()">gst_mpegts_pmt_new</a>, function in <a class="link" href="gst-plugins-bad-libs-Base-MPEG-TS-sections.html" title="Base MPEG-TS sections">Base MPEG-TS sections</a>
+<a class="link" href="gst-plugins-bad-libs-gstmpegtssection.html#gst-mpegts-pmt-new" title="gst_mpegts_pmt_new ()">gst_mpegts_pmt_new</a>, function in <a class="link" href="gst-plugins-bad-libs-gstmpegtssection.html" title="gstmpegtssection">gstmpegtssection</a>
</dt>
<dd></dd>
<dt>
-<a class="link" href="gst-plugins-bad-libs-Base-MPEG-TS-sections.html#gst-mpegts-pmt-stream-new" title="gst_mpegts_pmt_stream_new ()">gst_mpegts_pmt_stream_new</a>, function in <a class="link" href="gst-plugins-bad-libs-Base-MPEG-TS-sections.html" title="Base MPEG-TS sections">Base MPEG-TS sections</a>
+<a class="link" href="gst-plugins-bad-libs-gstmpegtssection.html#gst-mpegts-pmt-stream-new" title="gst_mpegts_pmt_stream_new ()">gst_mpegts_pmt_stream_new</a>, function in <a class="link" href="gst-plugins-bad-libs-gstmpegtssection.html" title="gstmpegtssection">gstmpegtssection</a>
</dt>
<dd></dd>
<dt>
-<a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-sections.html#gst-mpegts-sdt-new" title="gst_mpegts_sdt_new ()">gst_mpegts_sdt_new</a>, function in <a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-sections.html" title="DVB variants of MPEG-TS sections">DVB variants of MPEG-TS sections</a>
+<a class="link" href="gst-plugins-bad-libs-gst-dvb-section.html#gst-mpegts-sdt-new" title="gst_mpegts_sdt_new ()">gst_mpegts_sdt_new</a>, function in <a class="link" href="gst-plugins-bad-libs-gst-dvb-section.html" title="gst-dvb-section">gst-dvb-section</a>
</dt>
<dd></dd>
<dt>
-<a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-sections.html#gst-mpegts-sdt-service-new" title="gst_mpegts_sdt_service_new ()">gst_mpegts_sdt_service_new</a>, function in <a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-sections.html" title="DVB variants of MPEG-TS sections">DVB variants of MPEG-TS sections</a>
+<a class="link" href="gst-plugins-bad-libs-gst-dvb-section.html#gst-mpegts-sdt-service-new" title="gst_mpegts_sdt_service_new ()">gst_mpegts_sdt_service_new</a>, function in <a class="link" href="gst-plugins-bad-libs-gst-dvb-section.html" title="gst-dvb-section">gst-dvb-section</a>
</dt>
<dd></dd>
<dt>
-<a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-sections.html#gst-mpegts-section-from-nit" title="gst_mpegts_section_from_nit ()">gst_mpegts_section_from_nit</a>, function in <a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-sections.html" title="DVB variants of MPEG-TS sections">DVB variants of MPEG-TS sections</a>
+<a class="link" href="gst-plugins-bad-libs-gst-dvb-section.html#gst-mpegts-section-from-nit" title="gst_mpegts_section_from_nit ()">gst_mpegts_section_from_nit</a>, function in <a class="link" href="gst-plugins-bad-libs-gst-dvb-section.html" title="gst-dvb-section">gst-dvb-section</a>
</dt>
<dd></dd>
<dt>
-<a class="link" href="gst-plugins-bad-libs-Base-MPEG-TS-sections.html#gst-mpegts-section-from-pat" title="gst_mpegts_section_from_pat ()">gst_mpegts_section_from_pat</a>, function in <a class="link" href="gst-plugins-bad-libs-Base-MPEG-TS-sections.html" title="Base MPEG-TS sections">Base MPEG-TS sections</a>
+<a class="link" href="gst-plugins-bad-libs-gstmpegtssection.html#gst-mpegts-section-from-pat" title="gst_mpegts_section_from_pat ()">gst_mpegts_section_from_pat</a>, function in <a class="link" href="gst-plugins-bad-libs-gstmpegtssection.html" title="gstmpegtssection">gstmpegtssection</a>
</dt>
<dd></dd>
<dt>
-<a class="link" href="gst-plugins-bad-libs-Base-MPEG-TS-sections.html#gst-mpegts-section-from-pmt" title="gst_mpegts_section_from_pmt ()">gst_mpegts_section_from_pmt</a>, function in <a class="link" href="gst-plugins-bad-libs-Base-MPEG-TS-sections.html" title="Base MPEG-TS sections">Base MPEG-TS sections</a>
+<a class="link" href="gst-plugins-bad-libs-gstmpegtssection.html#gst-mpegts-section-from-pmt" title="gst_mpegts_section_from_pmt ()">gst_mpegts_section_from_pmt</a>, function in <a class="link" href="gst-plugins-bad-libs-gstmpegtssection.html" title="gstmpegtssection">gstmpegtssection</a>
</dt>
<dd></dd>
<dt>
-<a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-sections.html#gst-mpegts-section-from-sdt" title="gst_mpegts_section_from_sdt ()">gst_mpegts_section_from_sdt</a>, function in <a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-sections.html" title="DVB variants of MPEG-TS sections">DVB variants of MPEG-TS sections</a>
+<a class="link" href="gst-plugins-bad-libs-gst-dvb-section.html#gst-mpegts-section-from-sdt" title="gst_mpegts_section_from_sdt ()">gst_mpegts_section_from_sdt</a>, function in <a class="link" href="gst-plugins-bad-libs-gst-dvb-section.html" title="gst-dvb-section">gst-dvb-section</a>
</dt>
<dd></dd>
<dt>
-<a class="link" href="gst-plugins-bad-libs-ATSC-variants-of-MPEG-TS-sections.html#gst-mpegts-section-get-atsc-cvct" title="gst_mpegts_section_get_atsc_cvct ()">gst_mpegts_section_get_atsc_cvct</a>, function in <a class="link" href="gst-plugins-bad-libs-ATSC-variants-of-MPEG-TS-sections.html" title="ATSC variants of MPEG-TS sections">ATSC variants of MPEG-TS sections</a>
+<a class="link" href="gst-plugins-bad-libs-gst-atsc-section.html#gst-mpegts-section-get-atsc-cvct" title="gst_mpegts_section_get_atsc_cvct ()">gst_mpegts_section_get_atsc_cvct</a>, function in <a class="link" href="gst-plugins-bad-libs-gst-atsc-section.html" title="gst-atsc-section">gst-atsc-section</a>
</dt>
<dd></dd>
<dt>
-<a class="link" href="gst-plugins-bad-libs-ATSC-variants-of-MPEG-TS-sections.html#gst-mpegts-section-get-atsc-eit" title="gst_mpegts_section_get_atsc_eit ()">gst_mpegts_section_get_atsc_eit</a>, function in <a class="link" href="gst-plugins-bad-libs-ATSC-variants-of-MPEG-TS-sections.html" title="ATSC variants of MPEG-TS sections">ATSC variants of MPEG-TS sections</a>
+<a class="link" href="gst-plugins-bad-libs-gst-atsc-section.html#gst-mpegts-section-get-atsc-eit" title="gst_mpegts_section_get_atsc_eit ()">gst_mpegts_section_get_atsc_eit</a>, function in <a class="link" href="gst-plugins-bad-libs-gst-atsc-section.html" title="gst-atsc-section">gst-atsc-section</a>
</dt>
<dd></dd>
<dt>
-<a class="link" href="gst-plugins-bad-libs-ATSC-variants-of-MPEG-TS-sections.html#gst-mpegts-section-get-atsc-ett" title="gst_mpegts_section_get_atsc_ett ()">gst_mpegts_section_get_atsc_ett</a>, function in <a class="link" href="gst-plugins-bad-libs-ATSC-variants-of-MPEG-TS-sections.html" title="ATSC variants of MPEG-TS sections">ATSC variants of MPEG-TS sections</a>
+<a class="link" href="gst-plugins-bad-libs-gst-atsc-section.html#gst-mpegts-section-get-atsc-ett" title="gst_mpegts_section_get_atsc_ett ()">gst_mpegts_section_get_atsc_ett</a>, function in <a class="link" href="gst-plugins-bad-libs-gst-atsc-section.html" title="gst-atsc-section">gst-atsc-section</a>
</dt>
<dd></dd>
<dt>
-<a class="link" href="gst-plugins-bad-libs-ATSC-variants-of-MPEG-TS-sections.html#gst-mpegts-section-get-atsc-mgt" title="gst_mpegts_section_get_atsc_mgt ()">gst_mpegts_section_get_atsc_mgt</a>, function in <a class="link" href="gst-plugins-bad-libs-ATSC-variants-of-MPEG-TS-sections.html" title="ATSC variants of MPEG-TS sections">ATSC variants of MPEG-TS sections</a>
+<a class="link" href="gst-plugins-bad-libs-gst-atsc-section.html#gst-mpegts-section-get-atsc-mgt" title="gst_mpegts_section_get_atsc_mgt ()">gst_mpegts_section_get_atsc_mgt</a>, function in <a class="link" href="gst-plugins-bad-libs-gst-atsc-section.html" title="gst-atsc-section">gst-atsc-section</a>
</dt>
<dd></dd>
<dt>
-<a class="link" href="gst-plugins-bad-libs-ATSC-variants-of-MPEG-TS-sections.html#gst-mpegts-section-get-atsc-stt" title="gst_mpegts_section_get_atsc_stt ()">gst_mpegts_section_get_atsc_stt</a>, function in <a class="link" href="gst-plugins-bad-libs-ATSC-variants-of-MPEG-TS-sections.html" title="ATSC variants of MPEG-TS sections">ATSC variants of MPEG-TS sections</a>
+<a class="link" href="gst-plugins-bad-libs-gst-atsc-section.html#gst-mpegts-section-get-atsc-stt" title="gst_mpegts_section_get_atsc_stt ()">gst_mpegts_section_get_atsc_stt</a>, function in <a class="link" href="gst-plugins-bad-libs-gst-atsc-section.html" title="gst-atsc-section">gst-atsc-section</a>
</dt>
<dd></dd>
<dt>
-<a class="link" href="gst-plugins-bad-libs-ATSC-variants-of-MPEG-TS-sections.html#gst-mpegts-section-get-atsc-tvct" title="gst_mpegts_section_get_atsc_tvct ()">gst_mpegts_section_get_atsc_tvct</a>, function in <a class="link" href="gst-plugins-bad-libs-ATSC-variants-of-MPEG-TS-sections.html" title="ATSC variants of MPEG-TS sections">ATSC variants of MPEG-TS sections</a>
+<a class="link" href="gst-plugins-bad-libs-gst-atsc-section.html#gst-mpegts-section-get-atsc-tvct" title="gst_mpegts_section_get_atsc_tvct ()">gst_mpegts_section_get_atsc_tvct</a>, function in <a class="link" href="gst-plugins-bad-libs-gst-atsc-section.html" title="gst-atsc-section">gst-atsc-section</a>
</dt>
<dd></dd>
<dt>
-<a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-sections.html#gst-mpegts-section-get-bat" title="gst_mpegts_section_get_bat ()">gst_mpegts_section_get_bat</a>, function in <a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-sections.html" title="DVB variants of MPEG-TS sections">DVB variants of MPEG-TS sections</a>
+<a class="link" href="gst-plugins-bad-libs-gst-dvb-section.html#gst-mpegts-section-get-bat" title="gst_mpegts_section_get_bat ()">gst_mpegts_section_get_bat</a>, function in <a class="link" href="gst-plugins-bad-libs-gst-dvb-section.html" title="gst-dvb-section">gst-dvb-section</a>
</dt>
<dd></dd>
<dt>
-<a class="link" href="gst-plugins-bad-libs-Base-MPEG-TS-sections.html#gst-mpegts-section-get-cat" title="gst_mpegts_section_get_cat ()">gst_mpegts_section_get_cat</a>, function in <a class="link" href="gst-plugins-bad-libs-Base-MPEG-TS-sections.html" title="Base MPEG-TS sections">Base MPEG-TS sections</a>
+<a class="link" href="gst-plugins-bad-libs-gstmpegtssection.html#gst-mpegts-section-get-cat" title="gst_mpegts_section_get_cat ()">gst_mpegts_section_get_cat</a>, function in <a class="link" href="gst-plugins-bad-libs-gstmpegtssection.html" title="gstmpegtssection">gstmpegtssection</a>
</dt>
<dd></dd>
<dt>
-<a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-sections.html#gst-mpegts-section-get-eit" title="gst_mpegts_section_get_eit ()">gst_mpegts_section_get_eit</a>, function in <a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-sections.html" title="DVB variants of MPEG-TS sections">DVB variants of MPEG-TS sections</a>
+<a class="link" href="gst-plugins-bad-libs-gst-dvb-section.html#gst-mpegts-section-get-eit" title="gst_mpegts_section_get_eit ()">gst_mpegts_section_get_eit</a>, function in <a class="link" href="gst-plugins-bad-libs-gst-dvb-section.html" title="gst-dvb-section">gst-dvb-section</a>
</dt>
<dd></dd>
<dt>
-<a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-sections.html#gst-mpegts-section-get-nit" title="gst_mpegts_section_get_nit ()">gst_mpegts_section_get_nit</a>, function in <a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-sections.html" title="DVB variants of MPEG-TS sections">DVB variants of MPEG-TS sections</a>
+<a class="link" href="gst-plugins-bad-libs-gst-dvb-section.html#gst-mpegts-section-get-nit" title="gst_mpegts_section_get_nit ()">gst_mpegts_section_get_nit</a>, function in <a class="link" href="gst-plugins-bad-libs-gst-dvb-section.html" title="gst-dvb-section">gst-dvb-section</a>
</dt>
<dd></dd>
<dt>
-<a class="link" href="gst-plugins-bad-libs-Base-MPEG-TS-sections.html#gst-mpegts-section-get-pat" title="gst_mpegts_section_get_pat ()">gst_mpegts_section_get_pat</a>, function in <a class="link" href="gst-plugins-bad-libs-Base-MPEG-TS-sections.html" title="Base MPEG-TS sections">Base MPEG-TS sections</a>
+<a class="link" href="gst-plugins-bad-libs-gstmpegtssection.html#gst-mpegts-section-get-pat" title="gst_mpegts_section_get_pat ()">gst_mpegts_section_get_pat</a>, function in <a class="link" href="gst-plugins-bad-libs-gstmpegtssection.html" title="gstmpegtssection">gstmpegtssection</a>
</dt>
<dd></dd>
<dt>
-<a class="link" href="gst-plugins-bad-libs-Base-MPEG-TS-sections.html#gst-mpegts-section-get-pmt" title="gst_mpegts_section_get_pmt ()">gst_mpegts_section_get_pmt</a>, function in <a class="link" href="gst-plugins-bad-libs-Base-MPEG-TS-sections.html" title="Base MPEG-TS sections">Base MPEG-TS sections</a>
+<a class="link" href="gst-plugins-bad-libs-gstmpegtssection.html#gst-mpegts-section-get-pmt" title="gst_mpegts_section_get_pmt ()">gst_mpegts_section_get_pmt</a>, function in <a class="link" href="gst-plugins-bad-libs-gstmpegtssection.html" title="gstmpegtssection">gstmpegtssection</a>
</dt>
<dd></dd>
<dt>
-<a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-sections.html#gst-mpegts-section-get-sdt" title="gst_mpegts_section_get_sdt ()">gst_mpegts_section_get_sdt</a>, function in <a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-sections.html" title="DVB variants of MPEG-TS sections">DVB variants of MPEG-TS sections</a>
+<a class="link" href="gst-plugins-bad-libs-gst-dvb-section.html#gst-mpegts-section-get-sdt" title="gst_mpegts_section_get_sdt ()">gst_mpegts_section_get_sdt</a>, function in <a class="link" href="gst-plugins-bad-libs-gst-dvb-section.html" title="gst-dvb-section">gst-dvb-section</a>
</dt>
<dd></dd>
<dt>
-<a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-sections.html#gst-mpegts-section-get-tdt" title="gst_mpegts_section_get_tdt ()">gst_mpegts_section_get_tdt</a>, function in <a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-sections.html" title="DVB variants of MPEG-TS sections">DVB variants of MPEG-TS sections</a>
+<a class="link" href="gst-plugins-bad-libs-gst-dvb-section.html#gst-mpegts-section-get-tdt" title="gst_mpegts_section_get_tdt ()">gst_mpegts_section_get_tdt</a>, function in <a class="link" href="gst-plugins-bad-libs-gst-dvb-section.html" title="gst-dvb-section">gst-dvb-section</a>
</dt>
<dd></dd>
<dt>
-<a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-sections.html#gst-mpegts-section-get-tot" title="gst_mpegts_section_get_tot ()">gst_mpegts_section_get_tot</a>, function in <a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-sections.html" title="DVB variants of MPEG-TS sections">DVB variants of MPEG-TS sections</a>
+<a class="link" href="gst-plugins-bad-libs-gst-dvb-section.html#gst-mpegts-section-get-tot" title="gst_mpegts_section_get_tot ()">gst_mpegts_section_get_tot</a>, function in <a class="link" href="gst-plugins-bad-libs-gst-dvb-section.html" title="gst-dvb-section">gst-dvb-section</a>
</dt>
<dd></dd>
<dt>
-<a class="link" href="gst-plugins-bad-libs-Base-MPEG-TS-sections.html#gst-mpegts-section-get-tsdt" title="gst_mpegts_section_get_tsdt ()">gst_mpegts_section_get_tsdt</a>, function in <a class="link" href="gst-plugins-bad-libs-Base-MPEG-TS-sections.html" title="Base MPEG-TS sections">Base MPEG-TS sections</a>
+<a class="link" href="gst-plugins-bad-libs-gstmpegtssection.html#gst-mpegts-section-get-tsdt" title="gst_mpegts_section_get_tsdt ()">gst_mpegts_section_get_tsdt</a>, function in <a class="link" href="gst-plugins-bad-libs-gstmpegtssection.html" title="gstmpegtssection">gstmpegtssection</a>
</dt>
<dd></dd>
<dt>
-<a class="link" href="gst-plugins-bad-libs-Base-MPEG-TS-sections.html#gst-mpegts-section-new" title="gst_mpegts_section_new ()">gst_mpegts_section_new</a>, function in <a class="link" href="gst-plugins-bad-libs-Base-MPEG-TS-sections.html" title="Base MPEG-TS sections">Base MPEG-TS sections</a>
+<a class="link" href="gst-plugins-bad-libs-gstmpegtssection.html#gst-mpegts-section-new" title="gst_mpegts_section_new ()">gst_mpegts_section_new</a>, function in <a class="link" href="gst-plugins-bad-libs-gstmpegtssection.html" title="gstmpegtssection">gstmpegtssection</a>
</dt>
<dd></dd>
<dt>
-<a class="link" href="gst-plugins-bad-libs-Base-MPEG-TS-sections.html#gst-mpegts-section-packetize" title="gst_mpegts_section_packetize ()">gst_mpegts_section_packetize</a>, function in <a class="link" href="gst-plugins-bad-libs-Base-MPEG-TS-sections.html" title="Base MPEG-TS sections">Base MPEG-TS sections</a>
+<a class="link" href="gst-plugins-bad-libs-gstmpegtssection.html#gst-mpegts-section-packetize" title="gst_mpegts_section_packetize ()">gst_mpegts_section_packetize</a>, function in <a class="link" href="gst-plugins-bad-libs-gstmpegtssection.html" title="gstmpegtssection">gstmpegtssection</a>
</dt>
<dd></dd>
<dt>
-<a class="link" href="gst-plugins-bad-libs-Base-MPEG-TS-sections.html#gst-mpegts-section-ref" title="gst_mpegts_section_ref()">gst_mpegts_section_ref</a>, macro in <a class="link" href="gst-plugins-bad-libs-Base-MPEG-TS-sections.html" title="Base MPEG-TS sections">Base MPEG-TS sections</a>
+<a class="link" href="gst-plugins-bad-libs-gstmpegtssection.html#gst-mpegts-section-ref" title="gst_mpegts_section_ref()">gst_mpegts_section_ref</a>, macro in <a class="link" href="gst-plugins-bad-libs-gstmpegtssection.html" title="gstmpegtssection">gstmpegtssection</a>
</dt>
<dd></dd>
<dt>
-<a class="link" href="gst-plugins-bad-libs-Base-MPEG-TS-sections.html#gst-mpegts-section-send-event" title="gst_mpegts_section_send_event ()">gst_mpegts_section_send_event</a>, function in <a class="link" href="gst-plugins-bad-libs-Base-MPEG-TS-sections.html" title="Base MPEG-TS sections">Base MPEG-TS sections</a>
+<a class="link" href="gst-plugins-bad-libs-gstmpegtssection.html#gst-mpegts-section-send-event" title="gst_mpegts_section_send_event ()">gst_mpegts_section_send_event</a>, function in <a class="link" href="gst-plugins-bad-libs-gstmpegtssection.html" title="gstmpegtssection">gstmpegtssection</a>
</dt>
<dd></dd>
<dt>
-<a class="link" href="gst-plugins-bad-libs-Base-MPEG-TS-sections.html#GST-MPEGTS-SECTION-TYPE:CAPS" title="GST_MPEGTS_SECTION_TYPE()">GST_MPEGTS_SECTION_TYPE</a>, macro in <a class="link" href="gst-plugins-bad-libs-Base-MPEG-TS-sections.html" title="Base MPEG-TS sections">Base MPEG-TS sections</a>
+<a class="link" href="gst-plugins-bad-libs-gstmpegtssection.html#GST-MPEGTS-SECTION-TYPE:CAPS" title="GST_MPEGTS_SECTION_TYPE()">GST_MPEGTS_SECTION_TYPE</a>, macro in <a class="link" href="gst-plugins-bad-libs-gstmpegtssection.html" title="gstmpegtssection">gstmpegtssection</a>
</dt>
<dd></dd>
<dt>
-<a class="link" href="gst-plugins-bad-libs-Base-MPEG-TS-sections.html#gst-mpegts-section-unref" title="gst_mpegts_section_unref()">gst_mpegts_section_unref</a>, macro in <a class="link" href="gst-plugins-bad-libs-Base-MPEG-TS-sections.html" title="Base MPEG-TS sections">Base MPEG-TS sections</a>
+<a class="link" href="gst-plugins-bad-libs-gstmpegtssection.html#gst-mpegts-section-unref" title="gst_mpegts_section_unref()">gst_mpegts_section_unref</a>, macro in <a class="link" href="gst-plugins-bad-libs-gstmpegtssection.html" title="gstmpegtssection">gstmpegtssection</a>
</dt>
<dd></dd>
<dt>
-<a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#gst-mpegts-t2-delivery-system-descriptor-free" title="gst_mpegts_t2_delivery_system_descriptor_free ()">gst_mpegts_t2_delivery_system_descriptor_free</a>, function in <a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html" title="DVB variants of MPEG-TS descriptors">DVB variants of MPEG-TS descriptors</a>
+<a class="link" href="gst-plugins-bad-libs-gst-dvb-descriptor.html#gst-mpegts-t2-delivery-system-descriptor-free" title="gst_mpegts_t2_delivery_system_descriptor_free ()">gst_mpegts_t2_delivery_system_descriptor_free</a>, function in <a class="link" href="gst-plugins-bad-libs-gst-dvb-descriptor.html" title="gst-dvb-descriptor">gst-dvb-descriptor</a>
</dt>
<dd></dd>
<dt>
@@ -3340,6 +3296,10 @@
</dt>
<dd></dd>
<dt>
+<a class="link" href="gst-plugins-bad-libs-gstplayer.html#GstPlayer-uri-loaded" title="The “uri-loaded” signal">GstPlayer::uri-loaded</a>, object signal in <a class="link" href="gst-plugins-bad-libs-gstplayer.html" title="gstplayer">gstplayer</a>
+</dt>
+<dd></dd>
+<dt>
<a class="link" href="gst-plugins-bad-libs-gstplayer.html#GstPlayer-video-dimensions-changed" title="The “video-dimensions-changed” signal">GstPlayer::video-dimensions-changed</a>, object signal in <a class="link" href="gst-plugins-bad-libs-gstplayer.html" title="gstplayer">gstplayer</a>
</dt>
<dd></dd>
@@ -3352,6 +3312,10 @@
</dt>
<dd></dd>
<dt>
+<a class="link" href="gst-plugins-bad-libs-gstplayer.html#GstPlayer--audio-video-offset" title="The “audio-video-offset” property">GstPlayer:audio-video-offset</a>, object property in <a class="link" href="gst-plugins-bad-libs-gstplayer.html" title="gstplayer">gstplayer</a>
+</dt>
+<dd></dd>
+<dt>
<a class="link" href="gst-plugins-bad-libs-gstplayer.html#GstPlayer--current-audio-track" title="The “current-audio-track” property">GstPlayer:current-audio-track</a>, object property in <a class="link" href="gst-plugins-bad-libs-gstplayer.html" title="gstplayer">gstplayer</a>
</dt>
<dd></dd>
@@ -3404,6 +3368,14 @@
</dt>
<dd></dd>
<dt>
+<a class="link" href="gst-plugins-bad-libs-gstplayer.html#GstPlayer--video-multiview-flags" title="The “video-multiview-flags” property">GstPlayer:video-multiview-flags</a>, object property in <a class="link" href="gst-plugins-bad-libs-gstplayer.html" title="gstplayer">gstplayer</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gst-plugins-bad-libs-gstplayer.html#GstPlayer--video-multiview-mode" title="The “video-multiview-mode” property">GstPlayer:video-multiview-mode</a>, object property in <a class="link" href="gst-plugins-bad-libs-gstplayer.html" title="gstplayer">gstplayer</a>
+</dt>
+<dd></dd>
+<dt>
<a class="link" href="gst-plugins-bad-libs-gstplayer.html#GstPlayer--video-renderer" title="The “video-renderer” property">GstPlayer:video-renderer</a>, object property in <a class="link" href="gst-plugins-bad-libs-gstplayer.html" title="gstplayer">gstplayer</a>
</dt>
<dd></dd>
@@ -3500,6 +3472,10 @@
</dt>
<dd></dd>
<dt>
+<a class="link" href="gst-plugins-bad-libs-gstplayer.html#gst-player-get-audio-video-offset" title="gst_player_get_audio_video_offset ()">gst_player_get_audio_video_offset</a>, function in <a class="link" href="gst-plugins-bad-libs-gstplayer.html" title="gstplayer">gstplayer</a>
+</dt>
+<dd></dd>
+<dt>
<a class="link" href="gst-plugins-bad-libs-gstplayer.html#gst-player-get-color-balance" title="gst_player_get_color_balance ()">gst_player_get_color_balance</a>, function in <a class="link" href="gst-plugins-bad-libs-gstplayer.html" title="gstplayer">gstplayer</a>
</dt>
<dd></dd>
@@ -3528,6 +3504,14 @@
</dt>
<dd></dd>
<dt>
+<a class="link" href="gst-plugins-bad-libs-gstplayer.html#gst-player-get-multiview-flags" title="gst_player_get_multiview_flags ()">gst_player_get_multiview_flags</a>, function in <a class="link" href="gst-plugins-bad-libs-gstplayer.html" title="gstplayer">gstplayer</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gst-plugins-bad-libs-gstplayer.html#gst-player-get-multiview-mode" title="gst_player_get_multiview_mode ()">gst_player_get_multiview_mode</a>, function in <a class="link" href="gst-plugins-bad-libs-gstplayer.html" title="gstplayer">gstplayer</a>
+</dt>
+<dd></dd>
+<dt>
<a class="link" href="gst-plugins-bad-libs-gstplayer.html#gst-player-get-mute" title="gst_player_get_mute ()">gst_player_get_mute</a>, function in <a class="link" href="gst-plugins-bad-libs-gstplayer.html" title="gstplayer">gstplayer</a>
</dt>
<dd></dd>
@@ -3604,6 +3588,10 @@
</dt>
<dd></dd>
<dt>
+<a class="link" href="gst-plugins-bad-libs-gstplayer-mediainfo.html#gst-player-media-info-is-live" title="gst_player_media_info_is_live ()">gst_player_media_info_is_live</a>, function in <a class="link" href="gst-plugins-bad-libs-gstplayer-mediainfo.html" title="gstplayer-mediainfo">gstplayer-mediainfo</a>
+</dt>
+<dd></dd>
+<dt>
<a class="link" href="gst-plugins-bad-libs-gstplayer-mediainfo.html#gst-player-media-info-is-seekable" title="gst_player_media_info_is_seekable ()">gst_player_media_info_is_seekable</a>, function in <a class="link" href="gst-plugins-bad-libs-gstplayer-mediainfo.html" title="gstplayer-mediainfo">gstplayer-mediainfo</a>
</dt>
<dd></dd>
@@ -3632,10 +3620,22 @@
</dt>
<dd></dd>
<dt>
+<a class="link" href="gst-plugins-bad-libs-gstplayer.html#gst-player-set-audio-video-offset" title="gst_player_set_audio_video_offset ()">gst_player_set_audio_video_offset</a>, function in <a class="link" href="gst-plugins-bad-libs-gstplayer.html" title="gstplayer">gstplayer</a>
+</dt>
+<dd></dd>
+<dt>
<a class="link" href="gst-plugins-bad-libs-gstplayer.html#gst-player-set-color-balance" title="gst_player_set_color_balance ()">gst_player_set_color_balance</a>, function in <a class="link" href="gst-plugins-bad-libs-gstplayer.html" title="gstplayer">gstplayer</a>
</dt>
<dd></dd>
<dt>
+<a class="link" href="gst-plugins-bad-libs-gstplayer.html#gst-player-set-multiview-flags" title="gst_player_set_multiview_flags ()">gst_player_set_multiview_flags</a>, function in <a class="link" href="gst-plugins-bad-libs-gstplayer.html" title="gstplayer">gstplayer</a>
+</dt>
+<dd></dd>
+<dt>
+<a class="link" href="gst-plugins-bad-libs-gstplayer.html#gst-player-set-multiview-mode" title="gst_player_set_multiview_mode ()">gst_player_set_multiview_mode</a>, function in <a class="link" href="gst-plugins-bad-libs-gstplayer.html" title="gstplayer">gstplayer</a>
+</dt>
+<dd></dd>
+<dt>
<a class="link" href="gst-plugins-bad-libs-gstplayer.html#gst-player-set-mute" title="gst_player_set_mute ()">gst_player_set_mute</a>, function in <a class="link" href="gst-plugins-bad-libs-gstplayer.html" title="gstplayer">gstplayer</a>
</dt>
<dd></dd>
diff --git a/docs/libs/html/base.html b/docs/libs/html/base.html
index 2bc7751..6efd348 100644
--- a/docs/libs/html/base.html
+++ b/docs/libs/html/base.html
@@ -24,8 +24,7 @@
<a name="base"></a>GStreamer Base classes from gst-plugins-bad</h2></div></div></div>
<div class="toc"><dl class="toc">
<dt>
-<span class="refentrytitle"><a href="gst-plugins-bad-libs-GstAggregator.html">GstAggregator</a></span><span class="refpurpose"> — manages a set of pads with the purpose of
-aggregating their buffers.</span>
+<span class="refentrytitle"><a href="gst-plugins-bad-libs-GstAggregator.html">GstAggregator</a></span><span class="refpurpose"></span>
</dt>
<dt>
<span class="refentrytitle"><a href="gst-plugins-bad-libs-GstAggregatorPad.html">GstAggregatorPad</a></span><span class="refpurpose"></span>
diff --git a/docs/libs/html/ch08.html b/docs/libs/html/ch08.html
index 985917d..3daceb5 100644
--- a/docs/libs/html/ch08.html
+++ b/docs/libs/html/ch08.html
@@ -23,7 +23,7 @@
<div class="titlepage"><div><div><h2 class="title">
<a name="id-1.2.11"></a>Interfaces</h2></div></div></div>
<div class="toc"><dl class="toc"><dt>
-<span class="refentrytitle"><a href="gst-plugins-bad-libs-GstPhotography.html">GstPhotography</a></span><span class="refpurpose"> — Interface for digital image capture elements</span>
+<span class="refentrytitle"><a href="gst-plugins-bad-libs-GstPhotography.html">GstPhotography</a></span><span class="refpurpose"></span>
</dt></dl></div>
</div>
<div class="footer">
diff --git a/docs/libs/html/codecparsers.html b/docs/libs/html/codecparsers.html
index f03fbe0..35dd0ea 100644
--- a/docs/libs/html/codecparsers.html
+++ b/docs/libs/html/codecparsers.html
@@ -24,23 +24,19 @@
<a name="codecparsers"></a>Bitstream parsing Library</h2></div></div></div>
<div class="toc"><dl class="toc">
<dt>
-<span class="refentrytitle"><a href="gst-plugins-bad-libs-h264parser.html">h264parser</a></span><span class="refpurpose"> — Convenience library for h264 video
-bitstream parsing.</span>
+<span class="refentrytitle"><a href="gst-plugins-bad-libs-h264parser.html">h264parser</a></span><span class="refpurpose"></span>
</dt>
<dt>
-<span class="refentrytitle"><a href="gst-plugins-bad-libs-jpegparser.html">jpegparser</a></span><span class="refpurpose"> — Convenience library for JPEG bitstream parsing.</span>
+<span class="refentrytitle"><a href="gst-plugins-bad-libs-jpegparser.html">jpegparser</a></span><span class="refpurpose"></span>
</dt>
<dt>
-<span class="refentrytitle"><a href="gst-plugins-bad-libs-mpegvideoparser.html">mpegvideoparser</a></span><span class="refpurpose"> — Convenience library for mpeg1 and 2 video
-bitstream parsing.</span>
+<span class="refentrytitle"><a href="gst-plugins-bad-libs-mpegvideoparser.html">mpegvideoparser</a></span><span class="refpurpose"></span>
</dt>
<dt>
-<span class="refentrytitle"><a href="gst-plugins-bad-libs-mpeg4parser.html">mpeg4parser</a></span><span class="refpurpose"> — Convenience library for parsing mpeg4 part 2 video
-bitstream.</span>
+<span class="refentrytitle"><a href="gst-plugins-bad-libs-mpeg4parser.html">mpeg4parser</a></span><span class="refpurpose"></span>
</dt>
<dt>
-<span class="refentrytitle"><a href="gst-plugins-bad-libs-vc1parser.html">vc1parser</a></span><span class="refpurpose"> — Convenience library for parsing vc1 video
-bitstream.</span>
+<span class="refentrytitle"><a href="gst-plugins-bad-libs-vc1parser.html">vc1parser</a></span><span class="refpurpose"></span>
</dt>
<dt>
<span class="refentrytitle"><a href="gst-plugins-bad-libs-gstmpegvideometa.html">gstmpegvideometa</a></span><span class="refpurpose"></span>
diff --git a/docs/libs/html/gl.html b/docs/libs/html/gl.html
index 236e3be..6e5d70a 100644
--- a/docs/libs/html/gl.html
+++ b/docs/libs/html/gl.html
@@ -27,22 +27,22 @@
<span class="refentrytitle"><a href="gst-plugins-bad-libs-GstGLAPI.html">GstGLAPI</a></span><span class="refpurpose"></span>
</dt>
<dt>
-<span class="refentrytitle"><a href="gst-plugins-bad-libs-gstglbasememory.html">GstGLBaseMemory</a></span><span class="refpurpose"> — memory subclass for GL buffers</span>
+<span class="refentrytitle"><a href="gst-plugins-bad-libs-gstglbasememory.html">GstGLBaseMemory</a></span><span class="refpurpose"></span>
</dt>
<dt>
-<span class="refentrytitle"><a href="GstGLBaseFilter.html">GstGLBaseFilter</a></span><span class="refpurpose"> — <span class="type">GstBaseTransform</span> subclass for transformin OpenGL resources</span>
+<span class="refentrytitle"><a href="GstGLBaseFilter.html">GstGLBaseFilter</a></span><span class="refpurpose"></span>
</dt>
<dt>
-<span class="refentrytitle"><a href="gst-plugins-bad-libs-GstGLBuffer.html">GstGLBuffer</a></span><span class="refpurpose"> — memory subclass for GL buffers</span>
+<span class="refentrytitle"><a href="gst-plugins-bad-libs-GstGLBuffer.html">GstGLBuffer</a></span><span class="refpurpose"></span>
</dt>
<dt>
-<span class="refentrytitle"><a href="GstGLBufferPool.html">GstGLBufferPool</a></span><span class="refpurpose"> — buffer pool for <span class="type">GstGLMemory</span> objects</span>
+<span class="refentrytitle"><a href="GstGLBufferPool.html">GstGLBufferPool</a></span><span class="refpurpose"></span>
</dt>
<dt>
-<span class="refentrytitle"><a href="GstGLColorConvert.html">GstGLColorConvert</a></span><span class="refpurpose"> — an object that converts between color spaces/formats</span>
+<span class="refentrytitle"><a href="GstGLColorConvert.html">GstGLColorConvert</a></span><span class="refpurpose"></span>
</dt>
<dt>
-<span class="refentrytitle"><a href="GstGLContext.html">GstGLContext</a></span><span class="refpurpose"> — OpenGL context abstraction</span>
+<span class="refentrytitle"><a href="GstGLContext.html">GstGLContext</a></span><span class="refpurpose"></span>
</dt>
<dt>
<span class="refentrytitle"><a href="gst-plugins-bad-libs-GstGLContextCocoa.html">GstGLContextCocoa</a></span><span class="refpurpose"></span>
@@ -60,7 +60,7 @@
<span class="refentrytitle"><a href="gst-plugins-bad-libs-GstGLContextWGL.html">GstGLContextWGL</a></span><span class="refpurpose"></span>
</dt>
<dt>
-<span class="refentrytitle"><a href="GstGLDisplay.html">GstGLDisplay</a></span><span class="refpurpose"> — window system display connection abstraction</span>
+<span class="refentrytitle"><a href="GstGLDisplay.html">GstGLDisplay</a></span><span class="refpurpose"></span>
</dt>
<dt>
<span class="refentrytitle"><a href="gst-plugins-bad-libs-GstEGLImageMemory.html">GstEGLImageMemory</a></span><span class="refpurpose"></span>
@@ -72,28 +72,28 @@
<span class="refentrytitle"><a href="GstGLFramebuffer.html">GstGLFramebuffer</a></span><span class="refpurpose"></span>
</dt>
<dt>
-<span class="refentrytitle"><a href="gst-plugins-bad-libs-GstGLMemory.html">GstGLMemory</a></span><span class="refpurpose"> — memory subclass for GL textures</span>
+<span class="refentrytitle"><a href="gst-plugins-bad-libs-GstGLMemory.html">GstGLMemory</a></span><span class="refpurpose"></span>
</dt>
<dt>
-<span class="refentrytitle"><a href="gst-plugins-bad-libs-gstglmemorypbo.html">GstGLMemoryPBO</a></span><span class="refpurpose"> — memory subclass for GL textures</span>
+<span class="refentrytitle"><a href="gst-plugins-bad-libs-gstglmemorypbo.html">GstGLMemoryPBO</a></span><span class="refpurpose"></span>
</dt>
<dt>
-<span class="refentrytitle"><a href="GstGLShader.html">GstGLShader</a></span><span class="refpurpose"> — object representing an OpenGL shader program</span>
+<span class="refentrytitle"><a href="GstGLShader.html">GstGLShader</a></span><span class="refpurpose"></span>
</dt>
<dt>
-<span class="refentrytitle"><a href="gst-plugins-bad-libs-GstGLSL.html">GstGLSL</a></span><span class="refpurpose"> — helpers for dealing with OpenGL shaders</span>
+<span class="refentrytitle"><a href="gst-plugins-bad-libs-GstGLSL.html">GstGLSL</a></span><span class="refpurpose"></span>
</dt>
<dt>
-<span class="refentrytitle"><a href=".html">GstGLSLStage</a></span><span class="refpurpose"> — object for dealing with OpenGL shader stages</span>
+<span class="refentrytitle"><a href=".html"></a></span><span class="refpurpose"></span>
</dt>
<dt>
<span class="refentrytitle"><a href="gst-plugins-bad-libs-GstGLSyncMeta.html">GstGLSyncMeta</a></span><span class="refpurpose"></span>
</dt>
<dt>
-<span class="refentrytitle"><a href="GstGLUpload.html">GstGLUpload</a></span><span class="refpurpose"> — an object that uploads to GL textures</span>
+<span class="refentrytitle"><a href="GstGLUpload.html">GstGLUpload</a></span><span class="refpurpose"></span>
</dt>
<dt>
-<span class="refentrytitle"><a href="GstGLWindow.html">GstGLWindow</a></span><span class="refpurpose"> — window/surface abstraction</span>
+<span class="refentrytitle"><a href="GstGLWindow.html">GstGLWindow</a></span><span class="refpurpose"></span>
</dt>
<dt>
<span class="refentrytitle"><a href="gst-plugins-bad-libs-GstGLWindowAndroid.html">GstGLWindowAndroid</a></span><span class="refpurpose"></span>
@@ -114,7 +114,7 @@
<span class="refentrytitle"><a href="gst-plugins-bad-libs-GstGLWindowX11.html">GstGLWindowX11</a></span><span class="refpurpose"></span>
</dt>
<dt>
-<span class="refentrytitle"><a href="gst-plugins-bad-libs-OpenGL-debugging.html">OpenGL debugging</a></span><span class="refpurpose"> — helper routines for dealing with OpenGL debugging</span>
+<span class="refentrytitle"><a href="gst-plugins-bad-libs-gstgldebug.html">OpenGL Debugging</a></span><span class="refpurpose"></span>
</dt>
<dt>
<span class="refentrytitle"><a href="gst-plugins-bad-libs-OpenGL-Miscellaneous-Utilities.html">OpenGL Miscellaneous Utilities</a></span><span class="refpurpose"></span>
diff --git a/docs/libs/html/gst-plugins-bad-libs-1.0.devhelp2 b/docs/libs/html/gst-plugins-bad-libs-1.0.devhelp2
index ef0bc7c..0be1ec3 100644
--- a/docs/libs/html/gst-plugins-bad-libs-1.0.devhelp2
+++ b/docs/libs/html/gst-plugins-bad-libs-1.0.devhelp2
@@ -12,14 +12,14 @@
<sub name="gstmpegvideometa" link="gst-plugins-bad-libs-gstmpegvideometa.html"/>
</sub>
<sub name="Mpeg TS helper library" link="mpegts.html">
- <sub name="Mpeg-ts helper library" link="gst-plugins-bad-libs-Mpeg-ts-helper-library.html"/>
- <sub name="Base MPEG-TS sections" link="gst-plugins-bad-libs-Base-MPEG-TS-sections.html"/>
- <sub name="Base MPEG-TS descriptors" link="gst-plugins-bad-libs-Base-MPEG-TS-descriptors.html"/>
- <sub name="ATSC variants of MPEG-TS sections" link="gst-plugins-bad-libs-ATSC-variants-of-MPEG-TS-sections.html"/>
- <sub name="DVB variants of MPEG-TS sections" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-sections.html"/>
- <sub name="ATSC variants of MPEG-TS descriptors" link="gst-plugins-bad-libs-ATSC-variants-of-MPEG-TS-descriptors.html"/>
- <sub name="DVB variants of MPEG-TS descriptors" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html"/>
- <sub name="ISDB variants of MPEG-TS descriptors" link="gst-plugins-bad-libs-ISDB-variants-of-MPEG-TS-descriptors.html"/>
+ <sub name="gstmpegts" link="gst-plugins-bad-libs-gstmpegts.html"/>
+ <sub name="gstmpegtssection" link="gst-plugins-bad-libs-gstmpegtssection.html"/>
+ <sub name="gstmpegtsdescriptor" link="gst-plugins-bad-libs-gstmpegtsdescriptor.html"/>
+ <sub name="gst-atsc-section" link="gst-plugins-bad-libs-gst-atsc-section.html"/>
+ <sub name="gst-dvb-section" link="gst-plugins-bad-libs-gst-dvb-section.html"/>
+ <sub name="gst-atsc-descriptor" link="gst-plugins-bad-libs-gst-atsc-descriptor.html"/>
+ <sub name="gst-dvb-descriptor" link="gst-plugins-bad-libs-gst-dvb-descriptor.html"/>
+ <sub name="gst-isdb-descriptor" link="gst-plugins-bad-libs-gst-isdb-descriptor.html"/>
</sub>
<sub name="Useful elements" link="tools.html">
<sub name="GstInsertbin" link="gst-plugins-bad-libs-GstInsertbin.html"/>
@@ -53,7 +53,7 @@
<sub name="GstGLMemoryPBO" link="gst-plugins-bad-libs-gstglmemorypbo.html"/>
<sub name="GstGLShader" link="GstGLShader.html"/>
<sub name="GstGLSL" link="gst-plugins-bad-libs-GstGLSL.html"/>
- <sub name="GstGLSLStage" link=".html"/>
+ <sub name="" link=".html"/>
<sub name="GstGLSyncMeta" link="gst-plugins-bad-libs-GstGLSyncMeta.html"/>
<sub name="GstGLUpload" link="GstGLUpload.html"/>
<sub name="GstGLWindow" link="GstGLWindow.html"/>
@@ -63,7 +63,7 @@
<sub name="GstGLWindowWayland" link="gst-plugins-bad-libs-GstGLWindowWayland.html"/>
<sub name="GstGLWindowWin32" link="gst-plugins-bad-libs-GstGLWindowWin32.html"/>
<sub name="GstGLWindowX11" link="gst-plugins-bad-libs-GstGLWindowX11.html"/>
- <sub name="OpenGL debugging" link="gst-plugins-bad-libs-OpenGL-debugging.html"/>
+ <sub name="OpenGL Debugging" link="gst-plugins-bad-libs-gstgldebug.html"/>
<sub name="OpenGL Miscellaneous Utilities" link="gst-plugins-bad-libs-OpenGL-Miscellaneous-Utilities.html"/>
<sub name="OpenGL Formats" link="gst-plugins-bad-libs-OpenGL-Formats.html"/>
</sub>
@@ -81,7 +81,6 @@
<sub name="Object Hierarchy" link="gstreamer-libs-hierarchy.html"/>
<sub name="Index" link="api-index-full.html"/>
<sub name="Index of deprecated API" link="api-index-deprecated.html"/>
- <sub name="Annotation Glossary" link="annotation-glossary.html"/>
</chapters>
<functions>
<keyword type="macro" name="GST_H264_IS_P_SLICE()" link="gst-plugins-bad-libs-h264parser.html#GST-H264-IS-P-SLICE:CAPS"/>
@@ -100,11 +99,11 @@
<keyword type="function" name="gst_h264_nal_parser_free ()" link="gst-plugins-bad-libs-h264parser.html#gst-h264-nal-parser-free"/>
<keyword type="function" name="gst_h264_parse_sps ()" link="gst-plugins-bad-libs-h264parser.html#gst-h264-parse-sps"/>
<keyword type="function" name="gst_h264_parse_pps ()" link="gst-plugins-bad-libs-h264parser.html#gst-h264-parse-pps"/>
- <keyword type="function" name="gst_h264_pps_clear ()" link="gst-plugins-bad-libs-h264parser.html#gst-h264-pps-clear" since="1.4"/>
- <keyword type="function" name="gst_h264_quant_matrix_8x8_get_zigzag_from_raster ()" link="gst-plugins-bad-libs-h264parser.html#gst-h264-quant-matrix-8x8-get-zigzag-from-raster" since="1.4"/>
- <keyword type="function" name="gst_h264_quant_matrix_8x8_get_raster_from_zigzag ()" link="gst-plugins-bad-libs-h264parser.html#gst-h264-quant-matrix-8x8-get-raster-from-zigzag" since="1.4"/>
- <keyword type="function" name="gst_h264_quant_matrix_4x4_get_zigzag_from_raster ()" link="gst-plugins-bad-libs-h264parser.html#gst-h264-quant-matrix-4x4-get-zigzag-from-raster" since="1.4"/>
- <keyword type="function" name="gst_h264_quant_matrix_4x4_get_raster_from_zigzag ()" link="gst-plugins-bad-libs-h264parser.html#gst-h264-quant-matrix-4x4-get-raster-from-zigzag" since="1.4"/>
+ <keyword type="function" name="gst_h264_pps_clear ()" link="gst-plugins-bad-libs-h264parser.html#gst-h264-pps-clear"/>
+ <keyword type="function" name="gst_h264_quant_matrix_8x8_get_zigzag_from_raster ()" link="gst-plugins-bad-libs-h264parser.html#gst-h264-quant-matrix-8x8-get-zigzag-from-raster"/>
+ <keyword type="function" name="gst_h264_quant_matrix_8x8_get_raster_from_zigzag ()" link="gst-plugins-bad-libs-h264parser.html#gst-h264-quant-matrix-8x8-get-raster-from-zigzag"/>
+ <keyword type="function" name="gst_h264_quant_matrix_4x4_get_zigzag_from_raster ()" link="gst-plugins-bad-libs-h264parser.html#gst-h264-quant-matrix-4x4-get-zigzag-from-raster"/>
+ <keyword type="function" name="gst_h264_quant_matrix_4x4_get_raster_from_zigzag ()" link="gst-plugins-bad-libs-h264parser.html#gst-h264-quant-matrix-4x4-get-raster-from-zigzag"/>
<keyword type="function" name="gst_h264_video_calculate_framerate ()" link="gst-plugins-bad-libs-h264parser.html#gst-h264-video-calculate-framerate"/>
<keyword type="macro" name="GST_H264_MAX_SPS_COUNT" link="gst-plugins-bad-libs-h264parser.html#GST-H264-MAX-SPS-COUNT:CAPS"/>
<keyword type="macro" name="GST_H264_MAX_PPS_COUNT" link="gst-plugins-bad-libs-h264parser.html#GST-H264-MAX-PPS-COUNT:CAPS"/>
@@ -127,44 +126,44 @@
<keyword type="struct" name="struct GstH264PicTiming" link="gst-plugins-bad-libs-h264parser.html#GstH264PicTiming"/>
<keyword type="struct" name="struct GstH264BufferingPeriod" link="gst-plugins-bad-libs-h264parser.html#GstH264BufferingPeriod"/>
<keyword type="struct" name="struct GstH264SEIMessage" link="gst-plugins-bad-libs-h264parser.html#GstH264SEIMessage"/>
- <keyword type="function" name="gst_jpeg_parse ()" link="gst-plugins-bad-libs-jpegparser.html#gst-jpeg-parse" since="1.6"/>
- <keyword type="function" name="gst_jpeg_segment_parse_frame_header ()" link="gst-plugins-bad-libs-jpegparser.html#gst-jpeg-segment-parse-frame-header" since="1.6"/>
- <keyword type="function" name="gst_jpeg_segment_parse_scan_header ()" link="gst-plugins-bad-libs-jpegparser.html#gst-jpeg-segment-parse-scan-header" since="1.6"/>
- <keyword type="function" name="gst_jpeg_segment_parse_huffman_table ()" link="gst-plugins-bad-libs-jpegparser.html#gst-jpeg-segment-parse-huffman-table" since="1.6"/>
- <keyword type="function" name="gst_jpeg_segment_parse_quantization_table ()" link="gst-plugins-bad-libs-jpegparser.html#gst-jpeg-segment-parse-quantization-table" since="1.6"/>
- <keyword type="function" name="gst_jpeg_segment_parse_restart_interval ()" link="gst-plugins-bad-libs-jpegparser.html#gst-jpeg-segment-parse-restart-interval" since="1.6"/>
+ <keyword type="function" name="gst_jpeg_parse ()" link="gst-plugins-bad-libs-jpegparser.html#gst-jpeg-parse"/>
+ <keyword type="function" name="gst_jpeg_segment_parse_frame_header ()" link="gst-plugins-bad-libs-jpegparser.html#gst-jpeg-segment-parse-frame-header"/>
+ <keyword type="function" name="gst_jpeg_segment_parse_scan_header ()" link="gst-plugins-bad-libs-jpegparser.html#gst-jpeg-segment-parse-scan-header"/>
+ <keyword type="function" name="gst_jpeg_segment_parse_huffman_table ()" link="gst-plugins-bad-libs-jpegparser.html#gst-jpeg-segment-parse-huffman-table"/>
+ <keyword type="function" name="gst_jpeg_segment_parse_quantization_table ()" link="gst-plugins-bad-libs-jpegparser.html#gst-jpeg-segment-parse-quantization-table"/>
+ <keyword type="function" name="gst_jpeg_segment_parse_restart_interval ()" link="gst-plugins-bad-libs-jpegparser.html#gst-jpeg-segment-parse-restart-interval"/>
<keyword type="function" name="gst_jpeg_get_default_quantization_tables ()" link="gst-plugins-bad-libs-jpegparser.html#gst-jpeg-get-default-quantization-tables"/>
- <keyword type="function" name="gst_jpeg_get_default_huffman_tables ()" link="gst-plugins-bad-libs-jpegparser.html#gst-jpeg-get-default-huffman-tables" since="1.6"/>
- <keyword type="macro" name="GST_JPEG_MAX_FRAME_COMPONENTS" link="gst-plugins-bad-libs-jpegparser.html#GST-JPEG-MAX-FRAME-COMPONENTS:CAPS" since="1.6"/>
- <keyword type="macro" name="GST_JPEG_MAX_SCAN_COMPONENTS" link="gst-plugins-bad-libs-jpegparser.html#GST-JPEG-MAX-SCAN-COMPONENTS:CAPS" since="1.6"/>
- <keyword type="macro" name="GST_JPEG_MAX_QUANT_ELEMENTS" link="gst-plugins-bad-libs-jpegparser.html#GST-JPEG-MAX-QUANT-ELEMENTS:CAPS" since="1.6"/>
+ <keyword type="function" name="gst_jpeg_get_default_huffman_tables ()" link="gst-plugins-bad-libs-jpegparser.html#gst-jpeg-get-default-huffman-tables"/>
+ <keyword type="macro" name="GST_JPEG_MAX_FRAME_COMPONENTS" link="gst-plugins-bad-libs-jpegparser.html#GST-JPEG-MAX-FRAME-COMPONENTS:CAPS"/>
+ <keyword type="macro" name="GST_JPEG_MAX_SCAN_COMPONENTS" link="gst-plugins-bad-libs-jpegparser.html#GST-JPEG-MAX-SCAN-COMPONENTS:CAPS"/>
+ <keyword type="macro" name="GST_JPEG_MAX_QUANT_ELEMENTS" link="gst-plugins-bad-libs-jpegparser.html#GST-JPEG-MAX-QUANT-ELEMENTS:CAPS"/>
<keyword type="macro" name="GST_JPEG_MARKER_SOF_MIN" link="gst-plugins-bad-libs-jpegparser.html#GST-JPEG-MARKER-SOF-MIN:CAPS"/>
<keyword type="macro" name="GST_JPEG_MARKER_SOF_MAX" link="gst-plugins-bad-libs-jpegparser.html#GST-JPEG-MARKER-SOF-MAX:CAPS"/>
<keyword type="macro" name="GST_JPEG_MARKER_APP_MIN" link="gst-plugins-bad-libs-jpegparser.html#GST-JPEG-MARKER-APP-MIN:CAPS"/>
<keyword type="macro" name="GST_JPEG_MARKER_APP_MAX" link="gst-plugins-bad-libs-jpegparser.html#GST-JPEG-MARKER-APP-MAX:CAPS"/>
<keyword type="macro" name="GST_JPEG_MARKER_RST_MIN" link="gst-plugins-bad-libs-jpegparser.html#GST-JPEG-MARKER-RST-MIN:CAPS"/>
<keyword type="macro" name="GST_JPEG_MARKER_RST_MAX" link="gst-plugins-bad-libs-jpegparser.html#GST-JPEG-MARKER-RST-MAX:CAPS"/>
- <keyword type="enum" name="enum GstJpegEntropyCodingMode" link="gst-plugins-bad-libs-jpegparser.html#GstJpegEntropyCodingMode" since="1.6"/>
- <keyword type="enum" name="enum GstJpegProfile" link="gst-plugins-bad-libs-jpegparser.html#GstJpegProfile" since="1.6"/>
- <keyword type="struct" name="struct GstJpegSegment" link="gst-plugins-bad-libs-jpegparser.html#GstJpegSegment" since="1.6"/>
- <keyword type="struct" name="struct GstJpegFrameHdr" link="gst-plugins-bad-libs-jpegparser.html#GstJpegFrameHdr" since="1.6"/>
- <keyword type="struct" name="struct GstJpegFrameComponent" link="gst-plugins-bad-libs-jpegparser.html#GstJpegFrameComponent" since="1.6"/>
- <keyword type="struct" name="struct GstJpegScanHdr" link="gst-plugins-bad-libs-jpegparser.html#GstJpegScanHdr" since="1.6"/>
- <keyword type="struct" name="struct GstJpegScanComponent" link="gst-plugins-bad-libs-jpegparser.html#GstJpegScanComponent" since="1.6"/>
- <keyword type="struct" name="struct GstJpegHuffmanTables" link="gst-plugins-bad-libs-jpegparser.html#GstJpegHuffmanTables" since="1.6"/>
- <keyword type="struct" name="struct GstJpegHuffmanTable" link="gst-plugins-bad-libs-jpegparser.html#GstJpegHuffmanTable" since="1.6"/>
- <keyword type="struct" name="struct GstJpegQuantTable" link="gst-plugins-bad-libs-jpegparser.html#GstJpegQuantTable" since="1.6"/>
+ <keyword type="enum" name="enum GstJpegEntropyCodingMode" link="gst-plugins-bad-libs-jpegparser.html#GstJpegEntropyCodingMode"/>
+ <keyword type="enum" name="enum GstJpegProfile" link="gst-plugins-bad-libs-jpegparser.html#GstJpegProfile"/>
+ <keyword type="struct" name="struct GstJpegSegment" link="gst-plugins-bad-libs-jpegparser.html#GstJpegSegment"/>
+ <keyword type="struct" name="struct GstJpegFrameHdr" link="gst-plugins-bad-libs-jpegparser.html#GstJpegFrameHdr"/>
+ <keyword type="struct" name="struct GstJpegFrameComponent" link="gst-plugins-bad-libs-jpegparser.html#GstJpegFrameComponent"/>
+ <keyword type="struct" name="struct GstJpegScanHdr" link="gst-plugins-bad-libs-jpegparser.html#GstJpegScanHdr"/>
+ <keyword type="struct" name="struct GstJpegScanComponent" link="gst-plugins-bad-libs-jpegparser.html#GstJpegScanComponent"/>
+ <keyword type="struct" name="struct GstJpegHuffmanTables" link="gst-plugins-bad-libs-jpegparser.html#GstJpegHuffmanTables"/>
+ <keyword type="struct" name="struct GstJpegHuffmanTable" link="gst-plugins-bad-libs-jpegparser.html#GstJpegHuffmanTable"/>
+ <keyword type="struct" name="struct GstJpegQuantTable" link="gst-plugins-bad-libs-jpegparser.html#GstJpegQuantTable"/>
<keyword type="function" name="gst_mpeg_video_parse ()" link="gst-plugins-bad-libs-mpegvideoparser.html#gst-mpeg-video-parse"/>
- <keyword type="function" name="gst_mpeg_video_parse_sequence_header ()" link="gst-plugins-bad-libs-mpegvideoparser.html#gst-mpeg-video-parse-sequence-header" deprecated="Use gst_mpeg_video_packet_parse_sequence_header() instead."/>
- <keyword type="function" name="gst_mpeg_video_parse_picture_header ()" link="gst-plugins-bad-libs-mpegvideoparser.html#gst-mpeg-video-parse-picture-header" deprecated="Use gst_mpeg_video_packet_parse_picture_header() instead."/>
- <keyword type="function" name="gst_mpeg_video_parse_picture_extension ()" link="gst-plugins-bad-libs-mpegvideoparser.html#gst-mpeg-video-parse-picture-extension" deprecated="Use gst_mpeg_video_packet_parse_picture_extension() instead."/>
- <keyword type="function" name="gst_mpeg_video_parse_gop ()" link="gst-plugins-bad-libs-mpegvideoparser.html#gst-mpeg-video-parse-gop" deprecated="Use gst_mpeg_video_packet_parse_gop() instead."/>
- <keyword type="function" name="gst_mpeg_video_parse_sequence_extension ()" link="gst-plugins-bad-libs-mpegvideoparser.html#gst-mpeg-video-parse-sequence-extension" deprecated="Use gst_mpeg_video_packet_parse_sequence_extension() instead."/>
+ <keyword type="function" name="gst_mpeg_video_parse_sequence_header ()" link="gst-plugins-bad-libs-mpegvideoparser.html#gst-mpeg-video-parse-sequence-header" deprecated=""/>
+ <keyword type="function" name="gst_mpeg_video_parse_picture_header ()" link="gst-plugins-bad-libs-mpegvideoparser.html#gst-mpeg-video-parse-picture-header" deprecated=""/>
+ <keyword type="function" name="gst_mpeg_video_parse_picture_extension ()" link="gst-plugins-bad-libs-mpegvideoparser.html#gst-mpeg-video-parse-picture-extension" deprecated=""/>
+ <keyword type="function" name="gst_mpeg_video_parse_gop ()" link="gst-plugins-bad-libs-mpegvideoparser.html#gst-mpeg-video-parse-gop" deprecated=""/>
+ <keyword type="function" name="gst_mpeg_video_parse_sequence_extension ()" link="gst-plugins-bad-libs-mpegvideoparser.html#gst-mpeg-video-parse-sequence-extension" deprecated=""/>
<keyword type="function" name="gst_mpeg_video_parse_sequence_display_extension ()" link="gst-plugins-bad-libs-mpegvideoparser.html#gst-mpeg-video-parse-sequence-display-extension" deprecated=""/>
- <keyword type="function" name="gst_mpeg_video_parse_quant_matrix_extension ()" link="gst-plugins-bad-libs-mpegvideoparser.html#gst-mpeg-video-parse-quant-matrix-extension" deprecated="Use gst_mpeg_video_packet_parse_quant_matrix_extension() instead."/>
+ <keyword type="function" name="gst_mpeg_video_parse_quant_matrix_extension ()" link="gst-plugins-bad-libs-mpegvideoparser.html#gst-mpeg-video-parse-quant-matrix-extension" deprecated=""/>
<keyword type="function" name="gst_mpeg_video_finalise_mpeg2_sequence_header ()" link="gst-plugins-bad-libs-mpegvideoparser.html#gst-mpeg-video-finalise-mpeg2-sequence-header"/>
- <keyword type="function" name="gst_mpeg_video_quant_matrix_get_raster_from_zigzag ()" link="gst-plugins-bad-libs-mpegvideoparser.html#gst-mpeg-video-quant-matrix-get-raster-from-zigzag" since="1.2"/>
- <keyword type="function" name="gst_mpeg_video_quant_matrix_get_zigzag_from_raster ()" link="gst-plugins-bad-libs-mpegvideoparser.html#gst-mpeg-video-quant-matrix-get-zigzag-from-raster" since="1.2"/>
+ <keyword type="function" name="gst_mpeg_video_quant_matrix_get_raster_from_zigzag ()" link="gst-plugins-bad-libs-mpegvideoparser.html#gst-mpeg-video-quant-matrix-get-raster-from-zigzag"/>
+ <keyword type="function" name="gst_mpeg_video_quant_matrix_get_zigzag_from_raster ()" link="gst-plugins-bad-libs-mpegvideoparser.html#gst-mpeg-video-quant-matrix-get-zigzag-from-raster"/>
<keyword type="enum" name="enum GstMpegVideoPacketTypeCode" link="gst-plugins-bad-libs-mpegvideoparser.html#GstMpegVideoPacketTypeCode"/>
<keyword type="enum" name="enum GstMpegVideoPacketExtensionCode" link="gst-plugins-bad-libs-mpegvideoparser.html#GstMpegVideoPacketExtensionCode"/>
<keyword type="enum" name="enum GstMpegVideoLevel" link="gst-plugins-bad-libs-mpegvideoparser.html#GstMpegVideoLevel"/>
@@ -241,183 +240,183 @@
<keyword type="struct" name="GstVC1Picture" link="gst-plugins-bad-libs-vc1parser.html#GstVC1Picture"/>
<keyword type="struct" name="struct GstVC1VopDquant" link="gst-plugins-bad-libs-vc1parser.html#GstVC1VopDquant"/>
<keyword type="struct" name="struct GstVC1BDU" link="gst-plugins-bad-libs-vc1parser.html#GstVC1BDU"/>
- <keyword type="function" name="gst_buffer_add_mpeg_video_meta ()" link="gst-plugins-bad-libs-gstmpegvideometa.html#gst-buffer-add-mpeg-video-meta" since="1.2"/>
+ <keyword type="function" name="gst_buffer_add_mpeg_video_meta ()" link="gst-plugins-bad-libs-gstmpegvideometa.html#gst-buffer-add-mpeg-video-meta"/>
<keyword type="macro" name="gst_buffer_get_mpeg_video_meta()" link="gst-plugins-bad-libs-gstmpegvideometa.html#gst-buffer-get-mpeg-video-meta"/>
<keyword type="function" name="gst_mpeg_video_meta_get_info ()" link="gst-plugins-bad-libs-gstmpegvideometa.html#gst-mpeg-video-meta-get-info"/>
<keyword type="macro" name="GST_MPEG_VIDEO_META_API_TYPE" link="gst-plugins-bad-libs-gstmpegvideometa.html#GST-MPEG-VIDEO-META-API-TYPE:CAPS"/>
<keyword type="macro" name="GST_MPEG_VIDEO_META_INFO" link="gst-plugins-bad-libs-gstmpegvideometa.html#GST-MPEG-VIDEO-META-INFO:CAPS"/>
- <keyword type="struct" name="struct GstMpegVideoMeta" link="gst-plugins-bad-libs-gstmpegvideometa.html#GstMpegVideoMeta" since="1.2"/>
- <keyword type="function" name="gst_mpegts_initialize ()" link="gst-plugins-bad-libs-Mpeg-ts-helper-library.html#gst-mpegts-initialize"/>
- <keyword type="macro" name="GST_MPEGTS_SECTION_TYPE()" link="gst-plugins-bad-libs-Base-MPEG-TS-sections.html#GST-MPEGTS-SECTION-TYPE:CAPS"/>
- <keyword type="function" name="gst_message_new_mpegts_section ()" link="gst-plugins-bad-libs-Base-MPEG-TS-sections.html#gst-message-new-mpegts-section"/>
- <keyword type="function" name="gst_message_parse_mpegts_section ()" link="gst-plugins-bad-libs-Base-MPEG-TS-sections.html#gst-message-parse-mpegts-section"/>
- <keyword type="function" name="gst_mpegts_section_send_event ()" link="gst-plugins-bad-libs-Base-MPEG-TS-sections.html#gst-mpegts-section-send-event"/>
- <keyword type="function" name="gst_event_parse_mpegts_section ()" link="gst-plugins-bad-libs-Base-MPEG-TS-sections.html#gst-event-parse-mpegts-section"/>
- <keyword type="function" name="gst_mpegts_section_packetize ()" link="gst-plugins-bad-libs-Base-MPEG-TS-sections.html#gst-mpegts-section-packetize"/>
- <keyword type="function" name="gst_mpegts_section_new ()" link="gst-plugins-bad-libs-Base-MPEG-TS-sections.html#gst-mpegts-section-new"/>
- <keyword type="macro" name="gst_mpegts_section_ref()" link="gst-plugins-bad-libs-Base-MPEG-TS-sections.html#gst-mpegts-section-ref"/>
- <keyword type="macro" name="gst_mpegts_section_unref()" link="gst-plugins-bad-libs-Base-MPEG-TS-sections.html#gst-mpegts-section-unref"/>
- <keyword type="function" name="gst_mpegts_section_get_pat ()" link="gst-plugins-bad-libs-Base-MPEG-TS-sections.html#gst-mpegts-section-get-pat"/>
- <keyword type="function" name="gst_mpegts_pat_new ()" link="gst-plugins-bad-libs-Base-MPEG-TS-sections.html#gst-mpegts-pat-new"/>
- <keyword type="function" name="gst_mpegts_pat_program_new ()" link="gst-plugins-bad-libs-Base-MPEG-TS-sections.html#gst-mpegts-pat-program-new"/>
- <keyword type="function" name="gst_mpegts_section_from_pat ()" link="gst-plugins-bad-libs-Base-MPEG-TS-sections.html#gst-mpegts-section-from-pat"/>
- <keyword type="function" name="gst_mpegts_section_get_pmt ()" link="gst-plugins-bad-libs-Base-MPEG-TS-sections.html#gst-mpegts-section-get-pmt"/>
- <keyword type="function" name="gst_mpegts_pmt_new ()" link="gst-plugins-bad-libs-Base-MPEG-TS-sections.html#gst-mpegts-pmt-new"/>
- <keyword type="function" name="gst_mpegts_pmt_stream_new ()" link="gst-plugins-bad-libs-Base-MPEG-TS-sections.html#gst-mpegts-pmt-stream-new"/>
- <keyword type="function" name="gst_mpegts_section_from_pmt ()" link="gst-plugins-bad-libs-Base-MPEG-TS-sections.html#gst-mpegts-section-from-pmt"/>
- <keyword type="function" name="gst_mpegts_section_get_tsdt ()" link="gst-plugins-bad-libs-Base-MPEG-TS-sections.html#gst-mpegts-section-get-tsdt"/>
- <keyword type="function" name="gst_mpegts_section_get_cat ()" link="gst-plugins-bad-libs-Base-MPEG-TS-sections.html#gst-mpegts-section-get-cat"/>
- <keyword type="struct" name="struct GstMpegtsSection" link="gst-plugins-bad-libs-Base-MPEG-TS-sections.html#GstMpegtsSection-struct"/>
- <keyword type="enum" name="enum GstMpegtsSectionTableID" link="gst-plugins-bad-libs-Base-MPEG-TS-sections.html#GstMpegtsSectionTableID"/>
- <keyword type="enum" name="enum GstMpegtsSectionType" link="gst-plugins-bad-libs-Base-MPEG-TS-sections.html#GstMpegtsSectionType"/>
- <keyword type="struct" name="struct GstMpegtsPatProgram" link="gst-plugins-bad-libs-Base-MPEG-TS-sections.html#GstMpegtsPatProgram"/>
- <keyword type="struct" name="struct GstMpegtsPMT" link="gst-plugins-bad-libs-Base-MPEG-TS-sections.html#GstMpegtsPMT"/>
- <keyword type="struct" name="struct GstMpegtsPMTStream" link="gst-plugins-bad-libs-Base-MPEG-TS-sections.html#GstMpegtsPMTStream"/>
- <keyword type="enum" name="enum GstMpegtsStreamType" link="gst-plugins-bad-libs-Base-MPEG-TS-sections.html#GstMpegtsStreamType"/>
- <keyword type="function" name="gst_mpegts_find_descriptor ()" link="gst-plugins-bad-libs-Base-MPEG-TS-descriptors.html#gst-mpegts-find-descriptor"/>
- <keyword type="function" name="gst_mpegts_parse_descriptors ()" link="gst-plugins-bad-libs-Base-MPEG-TS-descriptors.html#gst-mpegts-parse-descriptors"/>
- <keyword type="function" name="gst_mpegts_descriptor_from_custom ()" link="gst-plugins-bad-libs-Base-MPEG-TS-descriptors.html#gst-mpegts-descriptor-from-custom"/>
- <keyword type="function" name="gst_mpegts_descriptor_from_registration ()" link="gst-plugins-bad-libs-Base-MPEG-TS-descriptors.html#gst-mpegts-descriptor-from-registration"/>
- <keyword type="function" name="gst_mpegts_descriptor_parse_iso_639_language ()" link="gst-plugins-bad-libs-Base-MPEG-TS-descriptors.html#gst-mpegts-descriptor-parse-iso-639-language"/>
- <keyword type="function" name="gst_mpegts_descriptor_parse_iso_639_language_idx ()" link="gst-plugins-bad-libs-Base-MPEG-TS-descriptors.html#gst-mpegts-descriptor-parse-iso-639-language-idx"/>
- <keyword type="function" name="gst_mpegts_descriptor_parse_iso_639_language_nb ()" link="gst-plugins-bad-libs-Base-MPEG-TS-descriptors.html#gst-mpegts-descriptor-parse-iso-639-language-nb"/>
- <keyword type="function" name="gst_mpegts_iso_639_language_descriptor_free ()" link="gst-plugins-bad-libs-Base-MPEG-TS-descriptors.html#gst-mpegts-iso-639-language-descriptor-free"/>
- <keyword type="function" name="gst_mpegts_descriptor_parse_logical_channel ()" link="gst-plugins-bad-libs-Base-MPEG-TS-descriptors.html#gst-mpegts-descriptor-parse-logical-channel"/>
- <keyword type="struct" name="struct GstMpegtsDescriptor" link="gst-plugins-bad-libs-Base-MPEG-TS-descriptors.html#GstMpegtsDescriptor-struct"/>
- <keyword type="enum" name="enum GstMpegtsDescriptorType" link="gst-plugins-bad-libs-Base-MPEG-TS-descriptors.html#GstMpegtsDescriptorType"/>
- <keyword type="enum" name="enum GstMpegtsMiscDescriptorType" link="gst-plugins-bad-libs-Base-MPEG-TS-descriptors.html#GstMpegtsMiscDescriptorType"/>
- <keyword type="struct" name="struct GstMpegtsISO639LanguageDescriptor" link="gst-plugins-bad-libs-Base-MPEG-TS-descriptors.html#GstMpegtsISO639LanguageDescriptor"/>
- <keyword type="enum" name="enum GstMpegtsIso639AudioType" link="gst-plugins-bad-libs-Base-MPEG-TS-descriptors.html#GstMpegtsIso639AudioType"/>
- <keyword type="struct" name="struct GstMpegtsLogicalChannel" link="gst-plugins-bad-libs-Base-MPEG-TS-descriptors.html#GstMpegtsLogicalChannel"/>
- <keyword type="struct" name="struct GstMpegtsLogicalChannelDescriptor" link="gst-plugins-bad-libs-Base-MPEG-TS-descriptors.html#GstMpegtsLogicalChannelDescriptor"/>
- <keyword type="function" name="gst_mpegts_section_get_atsc_tvct ()" link="gst-plugins-bad-libs-ATSC-variants-of-MPEG-TS-sections.html#gst-mpegts-section-get-atsc-tvct"/>
- <keyword type="function" name="gst_mpegts_section_get_atsc_cvct ()" link="gst-plugins-bad-libs-ATSC-variants-of-MPEG-TS-sections.html#gst-mpegts-section-get-atsc-cvct"/>
- <keyword type="function" name="gst_mpegts_section_get_atsc_mgt ()" link="gst-plugins-bad-libs-ATSC-variants-of-MPEG-TS-sections.html#gst-mpegts-section-get-atsc-mgt"/>
- <keyword type="function" name="gst_mpegts_atsc_string_segment_get_string ()" link="gst-plugins-bad-libs-ATSC-variants-of-MPEG-TS-sections.html#gst-mpegts-atsc-string-segment-get-string"/>
- <keyword type="function" name="gst_mpegts_section_get_atsc_eit ()" link="gst-plugins-bad-libs-ATSC-variants-of-MPEG-TS-sections.html#gst-mpegts-section-get-atsc-eit"/>
- <keyword type="function" name="gst_mpegts_section_get_atsc_ett ()" link="gst-plugins-bad-libs-ATSC-variants-of-MPEG-TS-sections.html#gst-mpegts-section-get-atsc-ett"/>
- <keyword type="function" name="gst_mpegts_section_get_atsc_stt ()" link="gst-plugins-bad-libs-ATSC-variants-of-MPEG-TS-sections.html#gst-mpegts-section-get-atsc-stt"/>
- <keyword type="function" name="gst_mpegts_atsc_stt_get_datetime_utc ()" link="gst-plugins-bad-libs-ATSC-variants-of-MPEG-TS-sections.html#gst-mpegts-atsc-stt-get-datetime-utc"/>
- <keyword type="enum" name="enum GstMpegtsSectionATSCTableID" link="gst-plugins-bad-libs-ATSC-variants-of-MPEG-TS-sections.html#GstMpegtsSectionATSCTableID"/>
- <keyword type="struct" name="struct GstMpegtsAtscVCTSource" link="gst-plugins-bad-libs-ATSC-variants-of-MPEG-TS-sections.html#GstMpegtsAtscVCTSource"/>
- <keyword type="struct" name="struct GstMpegtsAtscVCT" link="gst-plugins-bad-libs-ATSC-variants-of-MPEG-TS-sections.html#GstMpegtsAtscVCT"/>
- <keyword type="enum" name="enum GstMpegtsAtscMGTTableType" link="gst-plugins-bad-libs-ATSC-variants-of-MPEG-TS-sections.html#GstMpegtsAtscMGTTableType"/>
- <keyword type="struct" name="struct GstMpegtsAtscMGTTable" link="gst-plugins-bad-libs-ATSC-variants-of-MPEG-TS-sections.html#GstMpegtsAtscMGTTable"/>
- <keyword type="struct" name="struct GstMpegtsAtscMGT" link="gst-plugins-bad-libs-ATSC-variants-of-MPEG-TS-sections.html#GstMpegtsAtscMGT"/>
- <keyword type="struct" name="struct GstMpegtsAtscMultString" link="gst-plugins-bad-libs-ATSC-variants-of-MPEG-TS-sections.html#GstMpegtsAtscMultString"/>
- <keyword type="struct" name="struct GstMpegtsAtscEITEvent" link="gst-plugins-bad-libs-ATSC-variants-of-MPEG-TS-sections.html#GstMpegtsAtscEITEvent"/>
- <keyword type="struct" name="struct GstMpegtsAtscEIT" link="gst-plugins-bad-libs-ATSC-variants-of-MPEG-TS-sections.html#GstMpegtsAtscEIT"/>
- <keyword type="struct" name="struct GstMpegtsAtscETT" link="gst-plugins-bad-libs-ATSC-variants-of-MPEG-TS-sections.html#GstMpegtsAtscETT"/>
- <keyword type="struct" name="struct GstMpegtsAtscSTT" link="gst-plugins-bad-libs-ATSC-variants-of-MPEG-TS-sections.html#GstMpegtsAtscSTT"/>
- <keyword type="function" name="gst_mpegts_section_get_nit ()" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-sections.html#gst-mpegts-section-get-nit"/>
- <keyword type="function" name="gst_mpegts_nit_new ()" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-sections.html#gst-mpegts-nit-new"/>
- <keyword type="function" name="gst_mpegts_nit_stream_new ()" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-sections.html#gst-mpegts-nit-stream-new"/>
- <keyword type="function" name="gst_mpegts_section_from_nit ()" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-sections.html#gst-mpegts-section-from-nit"/>
- <keyword type="function" name="gst_mpegts_section_get_bat ()" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-sections.html#gst-mpegts-section-get-bat"/>
- <keyword type="function" name="gst_mpegts_section_get_sdt ()" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-sections.html#gst-mpegts-section-get-sdt"/>
- <keyword type="function" name="gst_mpegts_sdt_new ()" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-sections.html#gst-mpegts-sdt-new"/>
- <keyword type="function" name="gst_mpegts_sdt_service_new ()" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-sections.html#gst-mpegts-sdt-service-new"/>
- <keyword type="function" name="gst_mpegts_section_from_sdt ()" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-sections.html#gst-mpegts-section-from-sdt"/>
- <keyword type="function" name="gst_mpegts_section_get_eit ()" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-sections.html#gst-mpegts-section-get-eit"/>
- <keyword type="function" name="gst_mpegts_section_get_tdt ()" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-sections.html#gst-mpegts-section-get-tdt"/>
- <keyword type="function" name="gst_mpegts_section_get_tot ()" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-sections.html#gst-mpegts-section-get-tot"/>
- <keyword type="enum" name="enum GstMpegtsSectionDVBTableID" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-sections.html#GstMpegtsSectionDVBTableID"/>
- <keyword type="struct" name="struct GstMpegtsNIT" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-sections.html#GstMpegtsNIT"/>
- <keyword type="struct" name="struct GstMpegtsNITStream" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-sections.html#GstMpegtsNITStream"/>
- <keyword type="struct" name="struct GstMpegtsBAT" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-sections.html#GstMpegtsBAT"/>
- <keyword type="struct" name="struct GstMpegtsBATStream" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-sections.html#GstMpegtsBATStream"/>
- <keyword type="struct" name="struct GstMpegtsSDT" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-sections.html#GstMpegtsSDT"/>
- <keyword type="struct" name="struct GstMpegtsSDTService" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-sections.html#GstMpegtsSDTService"/>
- <keyword type="struct" name="struct GstMpegtsEIT" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-sections.html#GstMpegtsEIT"/>
- <keyword type="struct" name="struct GstMpegtsEITEvent" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-sections.html#GstMpegtsEITEvent"/>
- <keyword type="enum" name="enum GstMpegtsRunningStatus" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-sections.html#GstMpegtsRunningStatus"/>
- <keyword type="struct" name="struct GstMpegtsTOT" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-sections.html#GstMpegtsTOT"/>
- <keyword type="enum" name="enum GstMpegtsATSCDescriptorType" link="gst-plugins-bad-libs-ATSC-variants-of-MPEG-TS-descriptors.html#GstMpegtsATSCDescriptorType"/>
- <keyword type="function" name="gst_mpegts_descriptor_parse_dvb_content ()" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#gst-mpegts-descriptor-parse-dvb-content"/>
- <keyword type="function" name="gst_mpegts_dvb_component_descriptor_free ()" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#gst-mpegts-dvb-component-descriptor-free"/>
- <keyword type="function" name="gst_mpegts_descriptor_parse_dvb_component ()" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#gst-mpegts-descriptor-parse-dvb-component"/>
- <keyword type="function" name="gst_mpegts_extended_event_descriptor_free ()" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#gst-mpegts-extended-event-descriptor-free"/>
- <keyword type="function" name="gst_mpegts_descriptor_parse_dvb_extended_event ()" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#gst-mpegts-descriptor-parse-dvb-extended-event"/>
- <keyword type="function" name="gst_mpegts_descriptor_parse_satellite_delivery_system ()" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#gst-mpegts-descriptor-parse-satellite-delivery-system"/>
- <keyword type="function" name="gst_mpegts_descriptor_parse_cable_delivery_system ()" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#gst-mpegts-descriptor-parse-cable-delivery-system"/>
- <keyword type="function" name="gst_mpegts_descriptor_parse_terrestrial_delivery_system ()" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#gst-mpegts-descriptor-parse-terrestrial-delivery-system"/>
- <keyword type="function" name="gst_mpegts_t2_delivery_system_descriptor_free ()" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#gst-mpegts-t2-delivery-system-descriptor-free"/>
- <keyword type="function" name="gst_mpegts_descriptor_parse_dvb_t2_delivery_system ()" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#gst-mpegts-descriptor-parse-dvb-t2-delivery-system"/>
- <keyword type="function" name="gst_mpegts_descriptor_parse_dvb_short_event ()" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#gst-mpegts-descriptor-parse-dvb-short-event"/>
- <keyword type="function" name="gst_mpegts_descriptor_parse_dvb_network_name ()" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#gst-mpegts-descriptor-parse-dvb-network-name"/>
- <keyword type="function" name="gst_mpegts_descriptor_from_dvb_network_name ()" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#gst-mpegts-descriptor-from-dvb-network-name"/>
- <keyword type="function" name="gst_mpegts_descriptor_parse_dvb_service ()" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#gst-mpegts-descriptor-parse-dvb-service"/>
- <keyword type="function" name="gst_mpegts_descriptor_from_dvb_service ()" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#gst-mpegts-descriptor-from-dvb-service"/>
- <keyword type="function" name="gst_mpegts_descriptor_parse_dvb_teletext_idx ()" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#gst-mpegts-descriptor-parse-dvb-teletext-idx"/>
- <keyword type="function" name="gst_mpegts_descriptor_parse_dvb_teletext_nb ()" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#gst-mpegts-descriptor-parse-dvb-teletext-nb"/>
- <keyword type="function" name="gst_mpegts_descriptor_parse_dvb_subtitling_idx ()" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#gst-mpegts-descriptor-parse-dvb-subtitling-idx"/>
- <keyword type="function" name="gst_mpegts_descriptor_parse_dvb_subtitling_nb ()" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#gst-mpegts-descriptor-parse-dvb-subtitling-nb"/>
- <keyword type="function" name="gst_mpegts_descriptor_from_dvb_subtitling ()" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#gst-mpegts-descriptor-from-dvb-subtitling"/>
- <keyword type="function" name="gst_mpegts_dvb_linkage_descriptor_free ()" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#gst-mpegts-dvb-linkage-descriptor-free"/>
- <keyword type="function" name="gst_mpegts_dvb_linkage_descriptor_get_mobile_hand_over ()" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#gst-mpegts-dvb-linkage-descriptor-get-mobile-hand-over"/>
- <keyword type="function" name="gst_mpegts_dvb_linkage_descriptor_get_event ()" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#gst-mpegts-dvb-linkage-descriptor-get-event"/>
- <keyword type="function" name="gst_mpegts_dvb_linkage_descriptor_get_extended_event ()" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#gst-mpegts-dvb-linkage-descriptor-get-extended-event"/>
- <keyword type="function" name="gst_mpegts_descriptor_parse_dvb_linkage ()" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#gst-mpegts-descriptor-parse-dvb-linkage"/>
- <keyword type="function" name="gst_mpegts_descriptor_parse_dvb_private_data_specifier ()" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#gst-mpegts-descriptor-parse-dvb-private-data-specifier"/>
- <keyword type="function" name="gst_mpegts_descriptor_parse_dvb_frequency_list ()" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#gst-mpegts-descriptor-parse-dvb-frequency-list"/>
- <keyword type="function" name="gst_mpegts_dvb_data_broadcast_descriptor_free ()" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#gst-mpegts-dvb-data-broadcast-descriptor-free"/>
- <keyword type="function" name="gst_mpegts_descriptor_parse_dvb_data_broadcast ()" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#gst-mpegts-descriptor-parse-dvb-data-broadcast"/>
- <keyword type="function" name="gst_mpegts_descriptor_parse_dvb_scrambling ()" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#gst-mpegts-descriptor-parse-dvb-scrambling"/>
- <keyword type="function" name="gst_mpegts_descriptor_parse_dvb_data_broadcast_id ()" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#gst-mpegts-descriptor-parse-dvb-data-broadcast-id"/>
- <keyword type="function" name="gst_mpegts_descriptor_parse_dvb_parental_rating ()" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#gst-mpegts-descriptor-parse-dvb-parental-rating"/>
- <keyword type="function" name="gst_mpegts_descriptor_parse_dvb_stream_identifier ()" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#gst-mpegts-descriptor-parse-dvb-stream-identifier"/>
- <keyword type="function" name="gst_mpegts_descriptor_parse_dvb_ca_identifier ()" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#gst-mpegts-descriptor-parse-dvb-ca-identifier"/>
- <keyword type="function" name="gst_mpegts_descriptor_parse_dvb_service_list ()" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#gst-mpegts-descriptor-parse-dvb-service-list"/>
- <keyword type="function" name="gst_mpegts_descriptor_parse_dvb_stuffing ()" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#gst-mpegts-descriptor-parse-dvb-stuffing"/>
- <keyword type="function" name="gst_mpegts_descriptor_parse_dvb_bouquet_name ()" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#gst-mpegts-descriptor-parse-dvb-bouquet-name"/>
- <keyword type="function" name="gst_mpegts_descriptor_parse_dvb_multilingual_network_name ()" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#gst-mpegts-descriptor-parse-dvb-multilingual-network-name"/>
- <keyword type="function" name="gst_mpegts_descriptor_parse_dvb_multilingual_bouquet_name ()" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#gst-mpegts-descriptor-parse-dvb-multilingual-bouquet-name"/>
- <keyword type="function" name="gst_mpegts_descriptor_parse_dvb_multilingual_service_name ()" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#gst-mpegts-descriptor-parse-dvb-multilingual-service-name"/>
- <keyword type="function" name="gst_mpegts_descriptor_parse_dvb_multilingual_component ()" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#gst-mpegts-descriptor-parse-dvb-multilingual-component"/>
- <keyword type="enum" name="enum GstMpegtsDVBDescriptorType" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GstMpegtsDVBDescriptorType"/>
- <keyword type="enum" name="enum GstMpegtsDVBExtendedDescriptorType" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GstMpegtsDVBExtendedDescriptorType"/>
- <keyword type="struct" name="struct GstMpegtsContent" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GstMpegtsContent"/>
- <keyword type="struct" name="struct GstMpegtsComponentDescriptor" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GstMpegtsComponentDescriptor"/>
- <keyword type="struct" name="struct GstMpegtsExtendedEventItem" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GstMpegtsExtendedEventItem"/>
- <keyword type="struct" name="struct GstMpegtsExtendedEventDescriptor" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GstMpegtsExtendedEventDescriptor"/>
- <keyword type="struct" name="struct GstMpegtsSatelliteDeliverySystemDescriptor" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GstMpegtsSatelliteDeliverySystemDescriptor"/>
- <keyword type="enum" name="enum GstMpegtsDVBCodeRate" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GstMpegtsDVBCodeRate"/>
- <keyword type="enum" name="enum GstMpegtsModulationType" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GstMpegtsModulationType"/>
- <keyword type="enum" name="enum GstMpegtsSatellitePolarizationType" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GstMpegtsSatellitePolarizationType"/>
- <keyword type="enum" name="enum GstMpegtsSatelliteRolloff" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GstMpegtsSatelliteRolloff"/>
- <keyword type="struct" name="struct GstMpegtsCableDeliverySystemDescriptor" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GstMpegtsCableDeliverySystemDescriptor"/>
- <keyword type="enum" name="enum GstMpegtsCableOuterFECScheme" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GstMpegtsCableOuterFECScheme"/>
- <keyword type="struct" name="struct GstMpegtsTerrestrialDeliverySystemDescriptor" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GstMpegtsTerrestrialDeliverySystemDescriptor"/>
- <keyword type="enum" name="enum GstMpegtsTerrestrialTransmissionMode" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GstMpegtsTerrestrialTransmissionMode"/>
- <keyword type="enum" name="enum GstMpegtsTerrestrialGuardInterval" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GstMpegtsTerrestrialGuardInterval"/>
- <keyword type="enum" name="enum GstMpegtsTerrestrialHierarchy" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GstMpegtsTerrestrialHierarchy"/>
- <keyword type="struct" name="struct GstMpegtsT2DeliverySystemCellExtension" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GstMpegtsT2DeliverySystemCellExtension"/>
- <keyword type="struct" name="struct GstMpegtsT2DeliverySystemCell" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GstMpegtsT2DeliverySystemCell"/>
- <keyword type="struct" name="struct GstMpegtsT2DeliverySystemDescriptor" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GstMpegtsT2DeliverySystemDescriptor"/>
- <keyword type="enum" name="enum GstMpegtsDVBServiceType" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GstMpegtsDVBServiceType"/>
- <keyword type="enum" name="enum GstMpegtsDVBTeletextType" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GstMpegtsDVBTeletextType"/>
- <keyword type="enum" name="enum GstMpegtsDVBLinkageType" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GstMpegtsDVBLinkageType"/>
- <keyword type="enum" name="enum GstMpegtsDVBLinkageHandOverType" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GstMpegtsDVBLinkageHandOverType"/>
- <keyword type="struct" name="struct GstMpegtsDVBLinkageMobileHandOver" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GstMpegtsDVBLinkageMobileHandOver"/>
- <keyword type="struct" name="struct GstMpegtsDVBLinkageEvent" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GstMpegtsDVBLinkageEvent"/>
- <keyword type="struct" name="struct GstMpegtsDVBLinkageExtendedEvent" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GstMpegtsDVBLinkageExtendedEvent"/>
- <keyword type="struct" name="struct GstMpegtsDVBLinkageDescriptor" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GstMpegtsDVBLinkageDescriptor"/>
- <keyword type="struct" name="struct GstMpegtsDataBroadcastDescriptor" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GstMpegtsDataBroadcastDescriptor"/>
- <keyword type="enum" name="enum GstMpegtsDVBScramblingModeType" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GstMpegtsDVBScramblingModeType"/>
- <keyword type="struct" name="struct GstMpegtsDVBParentalRatingItem" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GstMpegtsDVBParentalRatingItem"/>
- <keyword type="struct" name="struct GstMpegtsDVBServiceListItem" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GstMpegtsDVBServiceListItem"/>
- <keyword type="struct" name="struct GstMpegtsDvbMultilingualNetworkNameItem" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GstMpegtsDvbMultilingualNetworkNameItem"/>
- <keyword type="struct" name="struct GstMpegtsDvbMultilingualBouquetNameItem" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GstMpegtsDvbMultilingualBouquetNameItem"/>
- <keyword type="struct" name="struct GstMpegtsDvbMultilingualServiceNameItem" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GstMpegtsDvbMultilingualServiceNameItem"/>
- <keyword type="struct" name="struct GstMpegtsDvbMultilingualComponentItem" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GstMpegtsDvbMultilingualComponentItem"/>
- <keyword type="enum" name="enum GstMpegtsISDBDescriptorType" link="gst-plugins-bad-libs-ISDB-variants-of-MPEG-TS-descriptors.html#GstMpegtsISDBDescriptorType"/>
+ <keyword type="struct" name="struct GstMpegVideoMeta" link="gst-plugins-bad-libs-gstmpegvideometa.html#GstMpegVideoMeta"/>
+ <keyword type="function" name="gst_mpegts_initialize ()" link="gst-plugins-bad-libs-gstmpegts.html#gst-mpegts-initialize"/>
+ <keyword type="macro" name="GST_MPEGTS_SECTION_TYPE()" link="gst-plugins-bad-libs-gstmpegtssection.html#GST-MPEGTS-SECTION-TYPE:CAPS"/>
+ <keyword type="function" name="gst_message_new_mpegts_section ()" link="gst-plugins-bad-libs-gstmpegtssection.html#gst-message-new-mpegts-section"/>
+ <keyword type="function" name="gst_message_parse_mpegts_section ()" link="gst-plugins-bad-libs-gstmpegtssection.html#gst-message-parse-mpegts-section"/>
+ <keyword type="function" name="gst_mpegts_section_send_event ()" link="gst-plugins-bad-libs-gstmpegtssection.html#gst-mpegts-section-send-event"/>
+ <keyword type="function" name="gst_event_parse_mpegts_section ()" link="gst-plugins-bad-libs-gstmpegtssection.html#gst-event-parse-mpegts-section"/>
+ <keyword type="function" name="gst_mpegts_section_packetize ()" link="gst-plugins-bad-libs-gstmpegtssection.html#gst-mpegts-section-packetize"/>
+ <keyword type="function" name="gst_mpegts_section_new ()" link="gst-plugins-bad-libs-gstmpegtssection.html#gst-mpegts-section-new"/>
+ <keyword type="macro" name="gst_mpegts_section_ref()" link="gst-plugins-bad-libs-gstmpegtssection.html#gst-mpegts-section-ref"/>
+ <keyword type="macro" name="gst_mpegts_section_unref()" link="gst-plugins-bad-libs-gstmpegtssection.html#gst-mpegts-section-unref"/>
+ <keyword type="function" name="gst_mpegts_section_get_pat ()" link="gst-plugins-bad-libs-gstmpegtssection.html#gst-mpegts-section-get-pat"/>
+ <keyword type="function" name="gst_mpegts_pat_new ()" link="gst-plugins-bad-libs-gstmpegtssection.html#gst-mpegts-pat-new"/>
+ <keyword type="function" name="gst_mpegts_pat_program_new ()" link="gst-plugins-bad-libs-gstmpegtssection.html#gst-mpegts-pat-program-new"/>
+ <keyword type="function" name="gst_mpegts_section_from_pat ()" link="gst-plugins-bad-libs-gstmpegtssection.html#gst-mpegts-section-from-pat"/>
+ <keyword type="function" name="gst_mpegts_section_get_pmt ()" link="gst-plugins-bad-libs-gstmpegtssection.html#gst-mpegts-section-get-pmt"/>
+ <keyword type="function" name="gst_mpegts_pmt_new ()" link="gst-plugins-bad-libs-gstmpegtssection.html#gst-mpegts-pmt-new"/>
+ <keyword type="function" name="gst_mpegts_pmt_stream_new ()" link="gst-plugins-bad-libs-gstmpegtssection.html#gst-mpegts-pmt-stream-new"/>
+ <keyword type="function" name="gst_mpegts_section_from_pmt ()" link="gst-plugins-bad-libs-gstmpegtssection.html#gst-mpegts-section-from-pmt"/>
+ <keyword type="function" name="gst_mpegts_section_get_tsdt ()" link="gst-plugins-bad-libs-gstmpegtssection.html#gst-mpegts-section-get-tsdt"/>
+ <keyword type="function" name="gst_mpegts_section_get_cat ()" link="gst-plugins-bad-libs-gstmpegtssection.html#gst-mpegts-section-get-cat"/>
+ <keyword type="struct" name="struct GstMpegtsSection" link="gst-plugins-bad-libs-gstmpegtssection.html#GstMpegtsSection-struct"/>
+ <keyword type="enum" name="enum GstMpegtsSectionTableID" link="gst-plugins-bad-libs-gstmpegtssection.html#GstMpegtsSectionTableID"/>
+ <keyword type="enum" name="enum GstMpegtsSectionType" link="gst-plugins-bad-libs-gstmpegtssection.html#GstMpegtsSectionType"/>
+ <keyword type="struct" name="struct GstMpegtsPatProgram" link="gst-plugins-bad-libs-gstmpegtssection.html#GstMpegtsPatProgram"/>
+ <keyword type="struct" name="struct GstMpegtsPMT" link="gst-plugins-bad-libs-gstmpegtssection.html#GstMpegtsPMT"/>
+ <keyword type="struct" name="struct GstMpegtsPMTStream" link="gst-plugins-bad-libs-gstmpegtssection.html#GstMpegtsPMTStream"/>
+ <keyword type="enum" name="enum GstMpegtsStreamType" link="gst-plugins-bad-libs-gstmpegtssection.html#GstMpegtsStreamType"/>
+ <keyword type="function" name="gst_mpegts_find_descriptor ()" link="gst-plugins-bad-libs-gstmpegtsdescriptor.html#gst-mpegts-find-descriptor"/>
+ <keyword type="function" name="gst_mpegts_parse_descriptors ()" link="gst-plugins-bad-libs-gstmpegtsdescriptor.html#gst-mpegts-parse-descriptors"/>
+ <keyword type="function" name="gst_mpegts_descriptor_from_custom ()" link="gst-plugins-bad-libs-gstmpegtsdescriptor.html#gst-mpegts-descriptor-from-custom"/>
+ <keyword type="function" name="gst_mpegts_descriptor_from_registration ()" link="gst-plugins-bad-libs-gstmpegtsdescriptor.html#gst-mpegts-descriptor-from-registration"/>
+ <keyword type="function" name="gst_mpegts_descriptor_parse_iso_639_language ()" link="gst-plugins-bad-libs-gstmpegtsdescriptor.html#gst-mpegts-descriptor-parse-iso-639-language"/>
+ <keyword type="function" name="gst_mpegts_descriptor_parse_iso_639_language_idx ()" link="gst-plugins-bad-libs-gstmpegtsdescriptor.html#gst-mpegts-descriptor-parse-iso-639-language-idx"/>
+ <keyword type="function" name="gst_mpegts_descriptor_parse_iso_639_language_nb ()" link="gst-plugins-bad-libs-gstmpegtsdescriptor.html#gst-mpegts-descriptor-parse-iso-639-language-nb"/>
+ <keyword type="function" name="gst_mpegts_iso_639_language_descriptor_free ()" link="gst-plugins-bad-libs-gstmpegtsdescriptor.html#gst-mpegts-iso-639-language-descriptor-free"/>
+ <keyword type="function" name="gst_mpegts_descriptor_parse_logical_channel ()" link="gst-plugins-bad-libs-gstmpegtsdescriptor.html#gst-mpegts-descriptor-parse-logical-channel"/>
+ <keyword type="struct" name="struct GstMpegtsDescriptor" link="gst-plugins-bad-libs-gstmpegtsdescriptor.html#GstMpegtsDescriptor-struct"/>
+ <keyword type="enum" name="enum GstMpegtsDescriptorType" link="gst-plugins-bad-libs-gstmpegtsdescriptor.html#GstMpegtsDescriptorType"/>
+ <keyword type="enum" name="enum GstMpegtsMiscDescriptorType" link="gst-plugins-bad-libs-gstmpegtsdescriptor.html#GstMpegtsMiscDescriptorType"/>
+ <keyword type="struct" name="struct GstMpegtsISO639LanguageDescriptor" link="gst-plugins-bad-libs-gstmpegtsdescriptor.html#GstMpegtsISO639LanguageDescriptor"/>
+ <keyword type="enum" name="enum GstMpegtsIso639AudioType" link="gst-plugins-bad-libs-gstmpegtsdescriptor.html#GstMpegtsIso639AudioType"/>
+ <keyword type="struct" name="struct GstMpegtsLogicalChannel" link="gst-plugins-bad-libs-gstmpegtsdescriptor.html#GstMpegtsLogicalChannel"/>
+ <keyword type="struct" name="struct GstMpegtsLogicalChannelDescriptor" link="gst-plugins-bad-libs-gstmpegtsdescriptor.html#GstMpegtsLogicalChannelDescriptor"/>
+ <keyword type="function" name="gst_mpegts_section_get_atsc_tvct ()" link="gst-plugins-bad-libs-gst-atsc-section.html#gst-mpegts-section-get-atsc-tvct"/>
+ <keyword type="function" name="gst_mpegts_section_get_atsc_cvct ()" link="gst-plugins-bad-libs-gst-atsc-section.html#gst-mpegts-section-get-atsc-cvct"/>
+ <keyword type="function" name="gst_mpegts_section_get_atsc_mgt ()" link="gst-plugins-bad-libs-gst-atsc-section.html#gst-mpegts-section-get-atsc-mgt"/>
+ <keyword type="function" name="gst_mpegts_atsc_string_segment_get_string ()" link="gst-plugins-bad-libs-gst-atsc-section.html#gst-mpegts-atsc-string-segment-get-string"/>
+ <keyword type="function" name="gst_mpegts_section_get_atsc_eit ()" link="gst-plugins-bad-libs-gst-atsc-section.html#gst-mpegts-section-get-atsc-eit"/>
+ <keyword type="function" name="gst_mpegts_section_get_atsc_ett ()" link="gst-plugins-bad-libs-gst-atsc-section.html#gst-mpegts-section-get-atsc-ett"/>
+ <keyword type="function" name="gst_mpegts_section_get_atsc_stt ()" link="gst-plugins-bad-libs-gst-atsc-section.html#gst-mpegts-section-get-atsc-stt"/>
+ <keyword type="function" name="gst_mpegts_atsc_stt_get_datetime_utc ()" link="gst-plugins-bad-libs-gst-atsc-section.html#gst-mpegts-atsc-stt-get-datetime-utc"/>
+ <keyword type="enum" name="enum GstMpegtsSectionATSCTableID" link="gst-plugins-bad-libs-gst-atsc-section.html#GstMpegtsSectionATSCTableID"/>
+ <keyword type="struct" name="struct GstMpegtsAtscVCTSource" link="gst-plugins-bad-libs-gst-atsc-section.html#GstMpegtsAtscVCTSource"/>
+ <keyword type="struct" name="struct GstMpegtsAtscVCT" link="gst-plugins-bad-libs-gst-atsc-section.html#GstMpegtsAtscVCT"/>
+ <keyword type="enum" name="enum GstMpegtsAtscMGTTableType" link="gst-plugins-bad-libs-gst-atsc-section.html#GstMpegtsAtscMGTTableType"/>
+ <keyword type="struct" name="struct GstMpegtsAtscMGTTable" link="gst-plugins-bad-libs-gst-atsc-section.html#GstMpegtsAtscMGTTable"/>
+ <keyword type="struct" name="struct GstMpegtsAtscMGT" link="gst-plugins-bad-libs-gst-atsc-section.html#GstMpegtsAtscMGT"/>
+ <keyword type="struct" name="struct GstMpegtsAtscMultString" link="gst-plugins-bad-libs-gst-atsc-section.html#GstMpegtsAtscMultString"/>
+ <keyword type="struct" name="struct GstMpegtsAtscEITEvent" link="gst-plugins-bad-libs-gst-atsc-section.html#GstMpegtsAtscEITEvent"/>
+ <keyword type="struct" name="struct GstMpegtsAtscEIT" link="gst-plugins-bad-libs-gst-atsc-section.html#GstMpegtsAtscEIT"/>
+ <keyword type="struct" name="struct GstMpegtsAtscETT" link="gst-plugins-bad-libs-gst-atsc-section.html#GstMpegtsAtscETT"/>
+ <keyword type="struct" name="struct GstMpegtsAtscSTT" link="gst-plugins-bad-libs-gst-atsc-section.html#GstMpegtsAtscSTT"/>
+ <keyword type="function" name="gst_mpegts_section_get_nit ()" link="gst-plugins-bad-libs-gst-dvb-section.html#gst-mpegts-section-get-nit"/>
+ <keyword type="function" name="gst_mpegts_nit_new ()" link="gst-plugins-bad-libs-gst-dvb-section.html#gst-mpegts-nit-new"/>
+ <keyword type="function" name="gst_mpegts_nit_stream_new ()" link="gst-plugins-bad-libs-gst-dvb-section.html#gst-mpegts-nit-stream-new"/>
+ <keyword type="function" name="gst_mpegts_section_from_nit ()" link="gst-plugins-bad-libs-gst-dvb-section.html#gst-mpegts-section-from-nit"/>
+ <keyword type="function" name="gst_mpegts_section_get_bat ()" link="gst-plugins-bad-libs-gst-dvb-section.html#gst-mpegts-section-get-bat"/>
+ <keyword type="function" name="gst_mpegts_section_get_sdt ()" link="gst-plugins-bad-libs-gst-dvb-section.html#gst-mpegts-section-get-sdt"/>
+ <keyword type="function" name="gst_mpegts_sdt_new ()" link="gst-plugins-bad-libs-gst-dvb-section.html#gst-mpegts-sdt-new"/>
+ <keyword type="function" name="gst_mpegts_sdt_service_new ()" link="gst-plugins-bad-libs-gst-dvb-section.html#gst-mpegts-sdt-service-new"/>
+ <keyword type="function" name="gst_mpegts_section_from_sdt ()" link="gst-plugins-bad-libs-gst-dvb-section.html#gst-mpegts-section-from-sdt"/>
+ <keyword type="function" name="gst_mpegts_section_get_eit ()" link="gst-plugins-bad-libs-gst-dvb-section.html#gst-mpegts-section-get-eit"/>
+ <keyword type="function" name="gst_mpegts_section_get_tdt ()" link="gst-plugins-bad-libs-gst-dvb-section.html#gst-mpegts-section-get-tdt"/>
+ <keyword type="function" name="gst_mpegts_section_get_tot ()" link="gst-plugins-bad-libs-gst-dvb-section.html#gst-mpegts-section-get-tot"/>
+ <keyword type="enum" name="enum GstMpegtsSectionDVBTableID" link="gst-plugins-bad-libs-gst-dvb-section.html#GstMpegtsSectionDVBTableID"/>
+ <keyword type="struct" name="struct GstMpegtsNIT" link="gst-plugins-bad-libs-gst-dvb-section.html#GstMpegtsNIT"/>
+ <keyword type="struct" name="struct GstMpegtsNITStream" link="gst-plugins-bad-libs-gst-dvb-section.html#GstMpegtsNITStream"/>
+ <keyword type="struct" name="struct GstMpegtsBAT" link="gst-plugins-bad-libs-gst-dvb-section.html#GstMpegtsBAT"/>
+ <keyword type="struct" name="struct GstMpegtsBATStream" link="gst-plugins-bad-libs-gst-dvb-section.html#GstMpegtsBATStream"/>
+ <keyword type="struct" name="struct GstMpegtsSDT" link="gst-plugins-bad-libs-gst-dvb-section.html#GstMpegtsSDT"/>
+ <keyword type="struct" name="struct GstMpegtsSDTService" link="gst-plugins-bad-libs-gst-dvb-section.html#GstMpegtsSDTService"/>
+ <keyword type="struct" name="struct GstMpegtsEIT" link="gst-plugins-bad-libs-gst-dvb-section.html#GstMpegtsEIT"/>
+ <keyword type="struct" name="struct GstMpegtsEITEvent" link="gst-plugins-bad-libs-gst-dvb-section.html#GstMpegtsEITEvent"/>
+ <keyword type="enum" name="enum GstMpegtsRunningStatus" link="gst-plugins-bad-libs-gst-dvb-section.html#GstMpegtsRunningStatus"/>
+ <keyword type="struct" name="struct GstMpegtsTOT" link="gst-plugins-bad-libs-gst-dvb-section.html#GstMpegtsTOT"/>
+ <keyword type="enum" name="enum GstMpegtsATSCDescriptorType" link="gst-plugins-bad-libs-gst-atsc-descriptor.html#GstMpegtsATSCDescriptorType"/>
+ <keyword type="function" name="gst_mpegts_descriptor_parse_dvb_content ()" link="gst-plugins-bad-libs-gst-dvb-descriptor.html#gst-mpegts-descriptor-parse-dvb-content"/>
+ <keyword type="function" name="gst_mpegts_dvb_component_descriptor_free ()" link="gst-plugins-bad-libs-gst-dvb-descriptor.html#gst-mpegts-dvb-component-descriptor-free"/>
+ <keyword type="function" name="gst_mpegts_descriptor_parse_dvb_component ()" link="gst-plugins-bad-libs-gst-dvb-descriptor.html#gst-mpegts-descriptor-parse-dvb-component"/>
+ <keyword type="function" name="gst_mpegts_extended_event_descriptor_free ()" link="gst-plugins-bad-libs-gst-dvb-descriptor.html#gst-mpegts-extended-event-descriptor-free"/>
+ <keyword type="function" name="gst_mpegts_descriptor_parse_dvb_extended_event ()" link="gst-plugins-bad-libs-gst-dvb-descriptor.html#gst-mpegts-descriptor-parse-dvb-extended-event"/>
+ <keyword type="function" name="gst_mpegts_descriptor_parse_satellite_delivery_system ()" link="gst-plugins-bad-libs-gst-dvb-descriptor.html#gst-mpegts-descriptor-parse-satellite-delivery-system"/>
+ <keyword type="function" name="gst_mpegts_descriptor_parse_cable_delivery_system ()" link="gst-plugins-bad-libs-gst-dvb-descriptor.html#gst-mpegts-descriptor-parse-cable-delivery-system"/>
+ <keyword type="function" name="gst_mpegts_descriptor_parse_terrestrial_delivery_system ()" link="gst-plugins-bad-libs-gst-dvb-descriptor.html#gst-mpegts-descriptor-parse-terrestrial-delivery-system"/>
+ <keyword type="function" name="gst_mpegts_t2_delivery_system_descriptor_free ()" link="gst-plugins-bad-libs-gst-dvb-descriptor.html#gst-mpegts-t2-delivery-system-descriptor-free"/>
+ <keyword type="function" name="gst_mpegts_descriptor_parse_dvb_t2_delivery_system ()" link="gst-plugins-bad-libs-gst-dvb-descriptor.html#gst-mpegts-descriptor-parse-dvb-t2-delivery-system"/>
+ <keyword type="function" name="gst_mpegts_descriptor_parse_dvb_short_event ()" link="gst-plugins-bad-libs-gst-dvb-descriptor.html#gst-mpegts-descriptor-parse-dvb-short-event"/>
+ <keyword type="function" name="gst_mpegts_descriptor_parse_dvb_network_name ()" link="gst-plugins-bad-libs-gst-dvb-descriptor.html#gst-mpegts-descriptor-parse-dvb-network-name"/>
+ <keyword type="function" name="gst_mpegts_descriptor_from_dvb_network_name ()" link="gst-plugins-bad-libs-gst-dvb-descriptor.html#gst-mpegts-descriptor-from-dvb-network-name"/>
+ <keyword type="function" name="gst_mpegts_descriptor_parse_dvb_service ()" link="gst-plugins-bad-libs-gst-dvb-descriptor.html#gst-mpegts-descriptor-parse-dvb-service"/>
+ <keyword type="function" name="gst_mpegts_descriptor_from_dvb_service ()" link="gst-plugins-bad-libs-gst-dvb-descriptor.html#gst-mpegts-descriptor-from-dvb-service"/>
+ <keyword type="function" name="gst_mpegts_descriptor_parse_dvb_teletext_idx ()" link="gst-plugins-bad-libs-gst-dvb-descriptor.html#gst-mpegts-descriptor-parse-dvb-teletext-idx"/>
+ <keyword type="function" name="gst_mpegts_descriptor_parse_dvb_teletext_nb ()" link="gst-plugins-bad-libs-gst-dvb-descriptor.html#gst-mpegts-descriptor-parse-dvb-teletext-nb"/>
+ <keyword type="function" name="gst_mpegts_descriptor_parse_dvb_subtitling_idx ()" link="gst-plugins-bad-libs-gst-dvb-descriptor.html#gst-mpegts-descriptor-parse-dvb-subtitling-idx"/>
+ <keyword type="function" name="gst_mpegts_descriptor_parse_dvb_subtitling_nb ()" link="gst-plugins-bad-libs-gst-dvb-descriptor.html#gst-mpegts-descriptor-parse-dvb-subtitling-nb"/>
+ <keyword type="function" name="gst_mpegts_descriptor_from_dvb_subtitling ()" link="gst-plugins-bad-libs-gst-dvb-descriptor.html#gst-mpegts-descriptor-from-dvb-subtitling"/>
+ <keyword type="function" name="gst_mpegts_dvb_linkage_descriptor_free ()" link="gst-plugins-bad-libs-gst-dvb-descriptor.html#gst-mpegts-dvb-linkage-descriptor-free"/>
+ <keyword type="function" name="gst_mpegts_dvb_linkage_descriptor_get_mobile_hand_over ()" link="gst-plugins-bad-libs-gst-dvb-descriptor.html#gst-mpegts-dvb-linkage-descriptor-get-mobile-hand-over"/>
+ <keyword type="function" name="gst_mpegts_dvb_linkage_descriptor_get_event ()" link="gst-plugins-bad-libs-gst-dvb-descriptor.html#gst-mpegts-dvb-linkage-descriptor-get-event"/>
+ <keyword type="function" name="gst_mpegts_dvb_linkage_descriptor_get_extended_event ()" link="gst-plugins-bad-libs-gst-dvb-descriptor.html#gst-mpegts-dvb-linkage-descriptor-get-extended-event"/>
+ <keyword type="function" name="gst_mpegts_descriptor_parse_dvb_linkage ()" link="gst-plugins-bad-libs-gst-dvb-descriptor.html#gst-mpegts-descriptor-parse-dvb-linkage"/>
+ <keyword type="function" name="gst_mpegts_descriptor_parse_dvb_private_data_specifier ()" link="gst-plugins-bad-libs-gst-dvb-descriptor.html#gst-mpegts-descriptor-parse-dvb-private-data-specifier"/>
+ <keyword type="function" name="gst_mpegts_descriptor_parse_dvb_frequency_list ()" link="gst-plugins-bad-libs-gst-dvb-descriptor.html#gst-mpegts-descriptor-parse-dvb-frequency-list"/>
+ <keyword type="function" name="gst_mpegts_dvb_data_broadcast_descriptor_free ()" link="gst-plugins-bad-libs-gst-dvb-descriptor.html#gst-mpegts-dvb-data-broadcast-descriptor-free"/>
+ <keyword type="function" name="gst_mpegts_descriptor_parse_dvb_data_broadcast ()" link="gst-plugins-bad-libs-gst-dvb-descriptor.html#gst-mpegts-descriptor-parse-dvb-data-broadcast"/>
+ <keyword type="function" name="gst_mpegts_descriptor_parse_dvb_scrambling ()" link="gst-plugins-bad-libs-gst-dvb-descriptor.html#gst-mpegts-descriptor-parse-dvb-scrambling"/>
+ <keyword type="function" name="gst_mpegts_descriptor_parse_dvb_data_broadcast_id ()" link="gst-plugins-bad-libs-gst-dvb-descriptor.html#gst-mpegts-descriptor-parse-dvb-data-broadcast-id"/>
+ <keyword type="function" name="gst_mpegts_descriptor_parse_dvb_parental_rating ()" link="gst-plugins-bad-libs-gst-dvb-descriptor.html#gst-mpegts-descriptor-parse-dvb-parental-rating"/>
+ <keyword type="function" name="gst_mpegts_descriptor_parse_dvb_stream_identifier ()" link="gst-plugins-bad-libs-gst-dvb-descriptor.html#gst-mpegts-descriptor-parse-dvb-stream-identifier"/>
+ <keyword type="function" name="gst_mpegts_descriptor_parse_dvb_ca_identifier ()" link="gst-plugins-bad-libs-gst-dvb-descriptor.html#gst-mpegts-descriptor-parse-dvb-ca-identifier"/>
+ <keyword type="function" name="gst_mpegts_descriptor_parse_dvb_service_list ()" link="gst-plugins-bad-libs-gst-dvb-descriptor.html#gst-mpegts-descriptor-parse-dvb-service-list"/>
+ <keyword type="function" name="gst_mpegts_descriptor_parse_dvb_stuffing ()" link="gst-plugins-bad-libs-gst-dvb-descriptor.html#gst-mpegts-descriptor-parse-dvb-stuffing"/>
+ <keyword type="function" name="gst_mpegts_descriptor_parse_dvb_bouquet_name ()" link="gst-plugins-bad-libs-gst-dvb-descriptor.html#gst-mpegts-descriptor-parse-dvb-bouquet-name"/>
+ <keyword type="function" name="gst_mpegts_descriptor_parse_dvb_multilingual_network_name ()" link="gst-plugins-bad-libs-gst-dvb-descriptor.html#gst-mpegts-descriptor-parse-dvb-multilingual-network-name"/>
+ <keyword type="function" name="gst_mpegts_descriptor_parse_dvb_multilingual_bouquet_name ()" link="gst-plugins-bad-libs-gst-dvb-descriptor.html#gst-mpegts-descriptor-parse-dvb-multilingual-bouquet-name"/>
+ <keyword type="function" name="gst_mpegts_descriptor_parse_dvb_multilingual_service_name ()" link="gst-plugins-bad-libs-gst-dvb-descriptor.html#gst-mpegts-descriptor-parse-dvb-multilingual-service-name"/>
+ <keyword type="function" name="gst_mpegts_descriptor_parse_dvb_multilingual_component ()" link="gst-plugins-bad-libs-gst-dvb-descriptor.html#gst-mpegts-descriptor-parse-dvb-multilingual-component"/>
+ <keyword type="enum" name="enum GstMpegtsDVBDescriptorType" link="gst-plugins-bad-libs-gst-dvb-descriptor.html#GstMpegtsDVBDescriptorType"/>
+ <keyword type="enum" name="enum GstMpegtsDVBExtendedDescriptorType" link="gst-plugins-bad-libs-gst-dvb-descriptor.html#GstMpegtsDVBExtendedDescriptorType"/>
+ <keyword type="struct" name="struct GstMpegtsContent" link="gst-plugins-bad-libs-gst-dvb-descriptor.html#GstMpegtsContent"/>
+ <keyword type="struct" name="struct GstMpegtsComponentDescriptor" link="gst-plugins-bad-libs-gst-dvb-descriptor.html#GstMpegtsComponentDescriptor"/>
+ <keyword type="struct" name="struct GstMpegtsExtendedEventItem" link="gst-plugins-bad-libs-gst-dvb-descriptor.html#GstMpegtsExtendedEventItem"/>
+ <keyword type="struct" name="struct GstMpegtsExtendedEventDescriptor" link="gst-plugins-bad-libs-gst-dvb-descriptor.html#GstMpegtsExtendedEventDescriptor"/>
+ <keyword type="struct" name="struct GstMpegtsSatelliteDeliverySystemDescriptor" link="gst-plugins-bad-libs-gst-dvb-descriptor.html#GstMpegtsSatelliteDeliverySystemDescriptor"/>
+ <keyword type="enum" name="enum GstMpegtsDVBCodeRate" link="gst-plugins-bad-libs-gst-dvb-descriptor.html#GstMpegtsDVBCodeRate"/>
+ <keyword type="enum" name="enum GstMpegtsModulationType" link="gst-plugins-bad-libs-gst-dvb-descriptor.html#GstMpegtsModulationType"/>
+ <keyword type="enum" name="enum GstMpegtsSatellitePolarizationType" link="gst-plugins-bad-libs-gst-dvb-descriptor.html#GstMpegtsSatellitePolarizationType"/>
+ <keyword type="enum" name="enum GstMpegtsSatelliteRolloff" link="gst-plugins-bad-libs-gst-dvb-descriptor.html#GstMpegtsSatelliteRolloff"/>
+ <keyword type="struct" name="struct GstMpegtsCableDeliverySystemDescriptor" link="gst-plugins-bad-libs-gst-dvb-descriptor.html#GstMpegtsCableDeliverySystemDescriptor"/>
+ <keyword type="enum" name="enum GstMpegtsCableOuterFECScheme" link="gst-plugins-bad-libs-gst-dvb-descriptor.html#GstMpegtsCableOuterFECScheme"/>
+ <keyword type="struct" name="struct GstMpegtsTerrestrialDeliverySystemDescriptor" link="gst-plugins-bad-libs-gst-dvb-descriptor.html#GstMpegtsTerrestrialDeliverySystemDescriptor"/>
+ <keyword type="enum" name="enum GstMpegtsTerrestrialTransmissionMode" link="gst-plugins-bad-libs-gst-dvb-descriptor.html#GstMpegtsTerrestrialTransmissionMode"/>
+ <keyword type="enum" name="enum GstMpegtsTerrestrialGuardInterval" link="gst-plugins-bad-libs-gst-dvb-descriptor.html#GstMpegtsTerrestrialGuardInterval"/>
+ <keyword type="enum" name="enum GstMpegtsTerrestrialHierarchy" link="gst-plugins-bad-libs-gst-dvb-descriptor.html#GstMpegtsTerrestrialHierarchy"/>
+ <keyword type="struct" name="struct GstMpegtsT2DeliverySystemCellExtension" link="gst-plugins-bad-libs-gst-dvb-descriptor.html#GstMpegtsT2DeliverySystemCellExtension"/>
+ <keyword type="struct" name="struct GstMpegtsT2DeliverySystemCell" link="gst-plugins-bad-libs-gst-dvb-descriptor.html#GstMpegtsT2DeliverySystemCell"/>
+ <keyword type="struct" name="struct GstMpegtsT2DeliverySystemDescriptor" link="gst-plugins-bad-libs-gst-dvb-descriptor.html#GstMpegtsT2DeliverySystemDescriptor"/>
+ <keyword type="enum" name="enum GstMpegtsDVBServiceType" link="gst-plugins-bad-libs-gst-dvb-descriptor.html#GstMpegtsDVBServiceType"/>
+ <keyword type="enum" name="enum GstMpegtsDVBTeletextType" link="gst-plugins-bad-libs-gst-dvb-descriptor.html#GstMpegtsDVBTeletextType"/>
+ <keyword type="enum" name="enum GstMpegtsDVBLinkageType" link="gst-plugins-bad-libs-gst-dvb-descriptor.html#GstMpegtsDVBLinkageType"/>
+ <keyword type="enum" name="enum GstMpegtsDVBLinkageHandOverType" link="gst-plugins-bad-libs-gst-dvb-descriptor.html#GstMpegtsDVBLinkageHandOverType"/>
+ <keyword type="struct" name="struct GstMpegtsDVBLinkageMobileHandOver" link="gst-plugins-bad-libs-gst-dvb-descriptor.html#GstMpegtsDVBLinkageMobileHandOver"/>
+ <keyword type="struct" name="struct GstMpegtsDVBLinkageEvent" link="gst-plugins-bad-libs-gst-dvb-descriptor.html#GstMpegtsDVBLinkageEvent"/>
+ <keyword type="struct" name="struct GstMpegtsDVBLinkageExtendedEvent" link="gst-plugins-bad-libs-gst-dvb-descriptor.html#GstMpegtsDVBLinkageExtendedEvent"/>
+ <keyword type="struct" name="struct GstMpegtsDVBLinkageDescriptor" link="gst-plugins-bad-libs-gst-dvb-descriptor.html#GstMpegtsDVBLinkageDescriptor"/>
+ <keyword type="struct" name="struct GstMpegtsDataBroadcastDescriptor" link="gst-plugins-bad-libs-gst-dvb-descriptor.html#GstMpegtsDataBroadcastDescriptor"/>
+ <keyword type="enum" name="enum GstMpegtsDVBScramblingModeType" link="gst-plugins-bad-libs-gst-dvb-descriptor.html#GstMpegtsDVBScramblingModeType"/>
+ <keyword type="struct" name="struct GstMpegtsDVBParentalRatingItem" link="gst-plugins-bad-libs-gst-dvb-descriptor.html#GstMpegtsDVBParentalRatingItem"/>
+ <keyword type="struct" name="struct GstMpegtsDVBServiceListItem" link="gst-plugins-bad-libs-gst-dvb-descriptor.html#GstMpegtsDVBServiceListItem"/>
+ <keyword type="struct" name="struct GstMpegtsDvbMultilingualNetworkNameItem" link="gst-plugins-bad-libs-gst-dvb-descriptor.html#GstMpegtsDvbMultilingualNetworkNameItem"/>
+ <keyword type="struct" name="struct GstMpegtsDvbMultilingualBouquetNameItem" link="gst-plugins-bad-libs-gst-dvb-descriptor.html#GstMpegtsDvbMultilingualBouquetNameItem"/>
+ <keyword type="struct" name="struct GstMpegtsDvbMultilingualServiceNameItem" link="gst-plugins-bad-libs-gst-dvb-descriptor.html#GstMpegtsDvbMultilingualServiceNameItem"/>
+ <keyword type="struct" name="struct GstMpegtsDvbMultilingualComponentItem" link="gst-plugins-bad-libs-gst-dvb-descriptor.html#GstMpegtsDvbMultilingualComponentItem"/>
+ <keyword type="enum" name="enum GstMpegtsISDBDescriptorType" link="gst-plugins-bad-libs-gst-isdb-descriptor.html#GstMpegtsISDBDescriptorType"/>
<keyword type="function" name="GstInsertBinCallback ()" link="gst-plugins-bad-libs-GstInsertbin.html#GstInsertBinCallback"/>
- <keyword type="function" name="gst_insert_bin_new ()" link="gst-plugins-bad-libs-GstInsertbin.html#gst-insert-bin-new" since="1.2"/>
- <keyword type="function" name="gst_insert_bin_append ()" link="gst-plugins-bad-libs-GstInsertbin.html#gst-insert-bin-append" since="1.2"/>
- <keyword type="function" name="gst_insert_bin_prepend ()" link="gst-plugins-bad-libs-GstInsertbin.html#gst-insert-bin-prepend" since="1.2"/>
- <keyword type="function" name="gst_insert_bin_insert_after ()" link="gst-plugins-bad-libs-GstInsertbin.html#gst-insert-bin-insert-after" since="1.2"/>
- <keyword type="function" name="gst_insert_bin_insert_before ()" link="gst-plugins-bad-libs-GstInsertbin.html#gst-insert-bin-insert-before" since="1.2"/>
- <keyword type="function" name="gst_insert_bin_remove ()" link="gst-plugins-bad-libs-GstInsertbin.html#gst-insert-bin-remove" since="1.2"/>
+ <keyword type="function" name="gst_insert_bin_new ()" link="gst-plugins-bad-libs-GstInsertbin.html#gst-insert-bin-new"/>
+ <keyword type="function" name="gst_insert_bin_append ()" link="gst-plugins-bad-libs-GstInsertbin.html#gst-insert-bin-append"/>
+ <keyword type="function" name="gst_insert_bin_prepend ()" link="gst-plugins-bad-libs-GstInsertbin.html#gst-insert-bin-prepend"/>
+ <keyword type="function" name="gst_insert_bin_insert_after ()" link="gst-plugins-bad-libs-GstInsertbin.html#gst-insert-bin-insert-after"/>
+ <keyword type="function" name="gst_insert_bin_insert_before ()" link="gst-plugins-bad-libs-GstInsertbin.html#gst-insert-bin-insert-before"/>
+ <keyword type="function" name="gst_insert_bin_remove ()" link="gst-plugins-bad-libs-GstInsertbin.html#gst-insert-bin-remove"/>
<keyword type="struct" name="struct GstInsertBin" link="gst-plugins-bad-libs-GstInsertbin.html#GstInsertBin-struct"/>
<keyword type="struct" name="struct GstInsertBinClass" link="gst-plugins-bad-libs-GstInsertbin.html#GstInsertBinClass"/>
<keyword type="signal" name="The “append” signal" link="gst-plugins-bad-libs-GstInsertbin.html#GstInsertBin-append"/>
@@ -453,26 +452,26 @@
<keyword type="macro" name="GST_GL_API_OPENGL_NAME" link="gst-plugins-bad-libs-GstGLAPI.html#GST-GL-API-OPENGL-NAME:CAPS"/>
<keyword type="function" name="GstGLAllocationParamsCopyFunc ()" link="gst-plugins-bad-libs-gstglbasememory.html#GstGLAllocationParamsCopyFunc"/>
<keyword type="function" name="GstGLAllocationParamsFreeFunc ()" link="gst-plugins-bad-libs-gstglbasememory.html#GstGLAllocationParamsFreeFunc"/>
- <keyword type="function" name="gst_gl_allocation_params_init ()" link="gst-plugins-bad-libs-gstglbasememory.html#gst-gl-allocation-params-init" since="1.8"/>
- <keyword type="function" name="gst_gl_allocation_params_copy ()" link="gst-plugins-bad-libs-gstglbasememory.html#gst-gl-allocation-params-copy" since="1.8"/>
- <keyword type="function" name="gst_gl_allocation_params_free ()" link="gst-plugins-bad-libs-gstglbasememory.html#gst-gl-allocation-params-free" since="1.8"/>
- <keyword type="function" name="gst_gl_allocation_params_free_data ()" link="gst-plugins-bad-libs-gstglbasememory.html#gst-gl-allocation-params-free-data" since="1.8"/>
- <keyword type="function" name="gst_gl_allocation_params_copy_data ()" link="gst-plugins-bad-libs-gstglbasememory.html#gst-gl-allocation-params-copy-data" since="1.8"/>
- <keyword type="function" name="gst_gl_base_memory_init_once ()" link="gst-plugins-bad-libs-gstglbasememory.html#gst-gl-base-memory-init-once" since="1.8"/>
- <keyword type="function" name="gst_gl_base_memory_init ()" link="gst-plugins-bad-libs-gstglbasememory.html#gst-gl-base-memory-init" since="1.8"/>
- <keyword type="function" name="gst_is_gl_base_memory ()" link="gst-plugins-bad-libs-gstglbasememory.html#gst-is-gl-base-memory" since="1.8"/>
- <keyword type="function" name="GstGLBaseMemoryAllocatorAllocFunction ()" link="gst-plugins-bad-libs-gstglbasememory.html#GstGLBaseMemoryAllocatorAllocFunction" since="1.8"/>
- <keyword type="function" name="GstGLBaseMemoryAllocatorCreateFunction ()" link="gst-plugins-bad-libs-gstglbasememory.html#GstGLBaseMemoryAllocatorCreateFunction" since="1.8"/>
- <keyword type="function" name="GstGLBaseMemoryAllocatorMapFunction ()" link="gst-plugins-bad-libs-gstglbasememory.html#GstGLBaseMemoryAllocatorMapFunction" since="1.8"/>
- <keyword type="function" name="GstGLBaseMemoryAllocatorUnmapFunction ()" link="gst-plugins-bad-libs-gstglbasememory.html#GstGLBaseMemoryAllocatorUnmapFunction" since="1.8"/>
- <keyword type="function" name="GstGLBaseMemoryAllocatorCopyFunction ()" link="gst-plugins-bad-libs-gstglbasememory.html#GstGLBaseMemoryAllocatorCopyFunction" since="1.8"/>
- <keyword type="function" name="GstGLBaseMemoryAllocatorDestroyFunction ()" link="gst-plugins-bad-libs-gstglbasememory.html#GstGLBaseMemoryAllocatorDestroyFunction" since="1.8"/>
- <keyword type="function" name="gst_gl_base_memory_alloc ()" link="gst-plugins-bad-libs-gstglbasememory.html#gst-gl-base-memory-alloc" since="1.8"/>
+ <keyword type="function" name="gst_gl_allocation_params_init ()" link="gst-plugins-bad-libs-gstglbasememory.html#gst-gl-allocation-params-init"/>
+ <keyword type="function" name="gst_gl_allocation_params_copy ()" link="gst-plugins-bad-libs-gstglbasememory.html#gst-gl-allocation-params-copy"/>
+ <keyword type="function" name="gst_gl_allocation_params_free ()" link="gst-plugins-bad-libs-gstglbasememory.html#gst-gl-allocation-params-free"/>
+ <keyword type="function" name="gst_gl_allocation_params_free_data ()" link="gst-plugins-bad-libs-gstglbasememory.html#gst-gl-allocation-params-free-data"/>
+ <keyword type="function" name="gst_gl_allocation_params_copy_data ()" link="gst-plugins-bad-libs-gstglbasememory.html#gst-gl-allocation-params-copy-data"/>
+ <keyword type="function" name="gst_gl_base_memory_init_once ()" link="gst-plugins-bad-libs-gstglbasememory.html#gst-gl-base-memory-init-once"/>
+ <keyword type="function" name="gst_gl_base_memory_init ()" link="gst-plugins-bad-libs-gstglbasememory.html#gst-gl-base-memory-init"/>
+ <keyword type="function" name="gst_is_gl_base_memory ()" link="gst-plugins-bad-libs-gstglbasememory.html#gst-is-gl-base-memory"/>
+ <keyword type="function" name="GstGLBaseMemoryAllocatorAllocFunction ()" link="gst-plugins-bad-libs-gstglbasememory.html#GstGLBaseMemoryAllocatorAllocFunction"/>
+ <keyword type="function" name="GstGLBaseMemoryAllocatorCreateFunction ()" link="gst-plugins-bad-libs-gstglbasememory.html#GstGLBaseMemoryAllocatorCreateFunction"/>
+ <keyword type="function" name="GstGLBaseMemoryAllocatorMapFunction ()" link="gst-plugins-bad-libs-gstglbasememory.html#GstGLBaseMemoryAllocatorMapFunction"/>
+ <keyword type="function" name="GstGLBaseMemoryAllocatorUnmapFunction ()" link="gst-plugins-bad-libs-gstglbasememory.html#GstGLBaseMemoryAllocatorUnmapFunction"/>
+ <keyword type="function" name="GstGLBaseMemoryAllocatorCopyFunction ()" link="gst-plugins-bad-libs-gstglbasememory.html#GstGLBaseMemoryAllocatorCopyFunction"/>
+ <keyword type="function" name="GstGLBaseMemoryAllocatorDestroyFunction ()" link="gst-plugins-bad-libs-gstglbasememory.html#GstGLBaseMemoryAllocatorDestroyFunction"/>
+ <keyword type="function" name="gst_gl_base_memory_alloc ()" link="gst-plugins-bad-libs-gstglbasememory.html#gst-gl-base-memory-alloc"/>
<keyword type="function" name="gst_gl_base_memory_alloc_data ()" link="gst-plugins-bad-libs-gstglbasememory.html#gst-gl-base-memory-alloc-data"/>
- <keyword type="function" name="gst_gl_base_memory_memcpy ()" link="gst-plugins-bad-libs-gstglbasememory.html#gst-gl-base-memory-memcpy" since="1.8"/>
+ <keyword type="function" name="gst_gl_base_memory_memcpy ()" link="gst-plugins-bad-libs-gstglbasememory.html#gst-gl-base-memory-memcpy"/>
<keyword type="struct" name="GstGLBaseMemoryAllocator" link="gst-plugins-bad-libs-gstglbasememory.html#GstGLBaseMemoryAllocator-struct"/>
- <keyword type="struct" name="GstGLBaseMemoryAllocatorClass" link="gst-plugins-bad-libs-gstglbasememory.html#GstGLBaseMemoryAllocatorClass" since="1.8"/>
- <keyword type="macro" name="GST_GL_BASE_MEMORY_ALLOCATOR_NAME" link="gst-plugins-bad-libs-gstglbasememory.html#GST-GL-BASE-MEMORY-ALLOCATOR-NAME:CAPS" since="1.8"/>
+ <keyword type="struct" name="GstGLBaseMemoryAllocatorClass" link="gst-plugins-bad-libs-gstglbasememory.html#GstGLBaseMemoryAllocatorClass"/>
+ <keyword type="macro" name="GST_GL_BASE_MEMORY_ALLOCATOR_NAME" link="gst-plugins-bad-libs-gstglbasememory.html#GST-GL-BASE-MEMORY-ALLOCATOR-NAME:CAPS"/>
<keyword type="macro" name="GST_MAP_GL" link="gst-plugins-bad-libs-gstglbasememory.html#GST-MAP-GL:CAPS"/>
<keyword type="enum" name="enum GstGLBaseMemoryError" link="gst-plugins-bad-libs-gstglbasememory.html#GstGLBaseMemoryError"/>
<keyword type="macro" name="GST_GL_BASE_MEMORY_ERROR" link="gst-plugins-bad-libs-gstglbasememory.html#GST-GL-BASE-MEMORY-ERROR:CAPS"/>
@@ -486,10 +485,10 @@
<keyword type="struct" name="GstGLBaseFilter" link="GstGLBaseFilter.html#GstGLBaseFilter-struct"/>
<keyword type="struct" name="GstGLBaseFilterClass" link="GstGLBaseFilter.html#GstGLBaseFilterClass"/>
<keyword type="property" name="The “context” property" link="GstGLBaseFilter.html#GstGLBaseFilter--context"/>
- <keyword type="function" name="gst_gl_buffer_init_once ()" link="gst-plugins-bad-libs-GstGLBuffer.html#gst-gl-buffer-init-once" since="1.8"/>
- <keyword type="function" name="gst_is_gl_buffer ()" link="gst-plugins-bad-libs-GstGLBuffer.html#gst-is-gl-buffer" since="1.8"/>
+ <keyword type="function" name="gst_gl_buffer_init_once ()" link="gst-plugins-bad-libs-GstGLBuffer.html#gst-gl-buffer-init-once"/>
+ <keyword type="function" name="gst_is_gl_buffer ()" link="gst-plugins-bad-libs-GstGLBuffer.html#gst-is-gl-buffer"/>
<keyword type="function" name="gst_gl_buffer_alloc ()" link="gst-plugins-bad-libs-GstGLBuffer.html#gst-gl-buffer-alloc"/>
- <keyword type="function" name="gst_gl_buffer_allocation_params_new ()" link="gst-plugins-bad-libs-GstGLBuffer.html#gst-gl-buffer-allocation-params-new" since="1.8"/>
+ <keyword type="function" name="gst_gl_buffer_allocation_params_new ()" link="gst-plugins-bad-libs-GstGLBuffer.html#gst-gl-buffer-allocation-params-new"/>
<keyword type="struct" name="GstGLBuffer" link="gst-plugins-bad-libs-GstGLBuffer.html#GstGLBuffer"/>
<keyword type="struct" name="struct GstGLBufferAllocationParams" link="gst-plugins-bad-libs-GstGLBuffer.html#GstGLBufferAllocationParams"/>
<keyword type="macro" name="GST_GL_ALLOCATION_PARAMS_ALLOC_FLAG_BUFFER" link="gst-plugins-bad-libs-GstGLBuffer.html#GST-GL-ALLOCATION-PARAMS-ALLOC-FLAG-BUFFER:CAPS"/>
@@ -514,32 +513,32 @@
<keyword type="struct" name="GstGLColorConvertClass" link="GstGLColorConvert.html#GstGLColorConvertClass"/>
<keyword type="function" name="gst_gl_context_error_quark ()" link="GstGLContext.html#gst-gl-context-error-quark"/>
<keyword type="function" name="GstGLContextThreadFunc ()" link="GstGLContext.html#GstGLContextThreadFunc"/>
- <keyword type="function" name="gst_gl_context_new ()" link="GstGLContext.html#gst-gl-context-new" since="1.4"/>
- <keyword type="function" name="gst_gl_context_new_wrapped ()" link="GstGLContext.html#gst-gl-context-new-wrapped" since="1.4"/>
- <keyword type="function" name="gst_gl_context_create ()" link="GstGLContext.html#gst-gl-context-create" since="1.4"/>
- <keyword type="function" name="gst_gl_context_destroy ()" link="GstGLContext.html#gst-gl-context-destroy" since="1.6"/>
- <keyword type="function" name="gst_gl_context_activate ()" link="GstGLContext.html#gst-gl-context-activate" since="1.4"/>
+ <keyword type="function" name="gst_gl_context_new ()" link="GstGLContext.html#gst-gl-context-new"/>
+ <keyword type="function" name="gst_gl_context_new_wrapped ()" link="GstGLContext.html#gst-gl-context-new-wrapped"/>
+ <keyword type="function" name="gst_gl_context_create ()" link="GstGLContext.html#gst-gl-context-create"/>
+ <keyword type="function" name="gst_gl_context_destroy ()" link="GstGLContext.html#gst-gl-context-destroy"/>
+ <keyword type="function" name="gst_gl_context_activate ()" link="GstGLContext.html#gst-gl-context-activate"/>
<keyword type="function" name="gst_gl_context_default_get_proc_address ()" link="GstGLContext.html#gst-gl-context-default-get-proc-address"/>
- <keyword type="function" name="gst_gl_context_get_proc_address ()" link="GstGLContext.html#gst-gl-context-get-proc-address" since="1.4"/>
+ <keyword type="function" name="gst_gl_context_get_proc_address ()" link="GstGLContext.html#gst-gl-context-get-proc-address"/>
<keyword type="function" name="gst_gl_context_get_proc_address_with_platform ()" link="GstGLContext.html#gst-gl-context-get-proc-address-with-platform"/>
- <keyword type="function" name="gst_gl_context_get_window ()" link="GstGLContext.html#gst-gl-context-get-window" since="1.4"/>
- <keyword type="function" name="gst_gl_context_set_window ()" link="GstGLContext.html#gst-gl-context-set-window" since="1.4"/>
- <keyword type="function" name="gst_gl_context_thread_add ()" link="GstGLContext.html#gst-gl-context-thread-add" since="1.4"/>
- <keyword type="function" name="gst_gl_context_get_display ()" link="GstGLContext.html#gst-gl-context-get-display" since="1.4"/>
- <keyword type="function" name="gst_gl_context_get_gl_api ()" link="GstGLContext.html#gst-gl-context-get-gl-api" since="1.4"/>
- <keyword type="function" name="gst_gl_context_get_gl_context ()" link="GstGLContext.html#gst-gl-context-get-gl-context" since="1.4"/>
- <keyword type="function" name="gst_gl_context_get_gl_platform ()" link="GstGLContext.html#gst-gl-context-get-gl-platform" since="1.4"/>
- <keyword type="function" name="gst_gl_context_get_current_gl_context ()" link="GstGLContext.html#gst-gl-context-get-current-gl-context" since="1.6"/>
- <keyword type="function" name="gst_gl_context_get_current_gl_api ()" link="GstGLContext.html#gst-gl-context-get-current-gl-api" since="1.6"/>
- <keyword type="function" name="gst_gl_context_get_thread ()" link="GstGLContext.html#gst-gl-context-get-thread" since="1.6"/>
- <keyword type="function" name="gst_gl_context_can_share ()" link="GstGLContext.html#gst-gl-context-can-share" since="1.6"/>
- <keyword type="function" name="gst_gl_context_is_shared ()" link="GstGLContext.html#gst-gl-context-is-shared" since="1.8"/>
- <keyword type="function" name="gst_gl_context_set_shared_with ()" link="GstGLContext.html#gst-gl-context-set-shared-with" since="1.8"/>
- <keyword type="function" name="gst_gl_context_check_feature ()" link="GstGLContext.html#gst-gl-context-check-feature" since="1.4"/>
- <keyword type="function" name="gst_gl_context_check_gl_version ()" link="GstGLContext.html#gst-gl-context-check-gl-version" since="1.4"/>
- <keyword type="function" name="gst_gl_context_get_gl_version ()" link="GstGLContext.html#gst-gl-context-get-gl-version" since="1.4"/>
- <keyword type="function" name="gst_gl_context_fill_info ()" link="GstGLContext.html#gst-gl-context-fill-info" since="1.6"/>
- <keyword type="function" name="gst_gl_context_get_current ()" link="GstGLContext.html#gst-gl-context-get-current" since="1.6"/>
+ <keyword type="function" name="gst_gl_context_get_window ()" link="GstGLContext.html#gst-gl-context-get-window"/>
+ <keyword type="function" name="gst_gl_context_set_window ()" link="GstGLContext.html#gst-gl-context-set-window"/>
+ <keyword type="function" name="gst_gl_context_thread_add ()" link="GstGLContext.html#gst-gl-context-thread-add"/>
+ <keyword type="function" name="gst_gl_context_get_display ()" link="GstGLContext.html#gst-gl-context-get-display"/>
+ <keyword type="function" name="gst_gl_context_get_gl_api ()" link="GstGLContext.html#gst-gl-context-get-gl-api"/>
+ <keyword type="function" name="gst_gl_context_get_gl_context ()" link="GstGLContext.html#gst-gl-context-get-gl-context"/>
+ <keyword type="function" name="gst_gl_context_get_gl_platform ()" link="GstGLContext.html#gst-gl-context-get-gl-platform"/>
+ <keyword type="function" name="gst_gl_context_get_current_gl_context ()" link="GstGLContext.html#gst-gl-context-get-current-gl-context"/>
+ <keyword type="function" name="gst_gl_context_get_current_gl_api ()" link="GstGLContext.html#gst-gl-context-get-current-gl-api"/>
+ <keyword type="function" name="gst_gl_context_get_thread ()" link="GstGLContext.html#gst-gl-context-get-thread"/>
+ <keyword type="function" name="gst_gl_context_can_share ()" link="GstGLContext.html#gst-gl-context-can-share"/>
+ <keyword type="function" name="gst_gl_context_is_shared ()" link="GstGLContext.html#gst-gl-context-is-shared"/>
+ <keyword type="function" name="gst_gl_context_set_shared_with ()" link="GstGLContext.html#gst-gl-context-set-shared-with"/>
+ <keyword type="function" name="gst_gl_context_check_feature ()" link="GstGLContext.html#gst-gl-context-check-feature"/>
+ <keyword type="function" name="gst_gl_context_check_gl_version ()" link="GstGLContext.html#gst-gl-context-check-gl-version"/>
+ <keyword type="function" name="gst_gl_context_get_gl_version ()" link="GstGLContext.html#gst-gl-context-get-gl-version"/>
+ <keyword type="function" name="gst_gl_context_fill_info ()" link="GstGLContext.html#gst-gl-context-fill-info"/>
+ <keyword type="function" name="gst_gl_context_get_current ()" link="GstGLContext.html#gst-gl-context-get-current"/>
<keyword type="macro" name="GST_GL_CONTEXT_ERROR" link="GstGLContext.html#GST-GL-CONTEXT-ERROR:CAPS"/>
<keyword type="enum" name="enum GstGLContextError" link="GstGLContext.html#GstGLContextError"/>
<keyword type="struct" name="GstGLContext" link="GstGLContext.html#GstGLContext-struct"/>
@@ -562,29 +561,20 @@
<keyword type="function" name="gst_gl_context_wgl_get_current_context ()" link="gst-plugins-bad-libs-GstGLContextWGL.html#gst-gl-context-wgl-get-current-context"/>
<keyword type="function" name="gst_gl_context_wgl_get_proc_address ()" link="gst-plugins-bad-libs-GstGLContextWGL.html#gst-gl-context-wgl-get-proc-address"/>
<keyword type="struct" name="struct GstGLContextWGL" link="gst-plugins-bad-libs-GstGLContextWGL.html#GstGLContextWGL"/>
- <keyword type="function" name="gst_gl_display_new ()" link="GstGLDisplay.html#gst-gl-display-new" since="1.4"/>
- <keyword type="function" name="gst_gl_display_get_handle_type ()" link="GstGLDisplay.html#gst-gl-display-get-handle-type" since="1.4"/>
+ <keyword type="function" name="gst_gl_display_new ()" link="GstGLDisplay.html#gst-gl-display-new"/>
+ <keyword type="function" name="gst_gl_display_get_handle_type ()" link="GstGLDisplay.html#gst-gl-display-get-handle-type"/>
<keyword type="function" name="gst_gl_display_filter_gl_api ()" link="GstGLDisplay.html#gst-gl-display-filter-gl-api"/>
<keyword type="function" name="gst_gl_display_get_gl_api ()" link="GstGLDisplay.html#gst-gl-display-get-gl-api"/>
- <keyword type="function" name="gst_gl_display_add_context ()" link="GstGLDisplay.html#gst-gl-display-add-context" since="1.6"/>
- <keyword type="function" name="gst_gl_display_get_gl_context_for_thread ()" link="GstGLDisplay.html#gst-gl-display-get-gl-context-for-thread" since="1.6"/>
+ <keyword type="function" name="gst_gl_display_add_context ()" link="GstGLDisplay.html#gst-gl-display-add-context"/>
+ <keyword type="function" name="gst_gl_display_get_gl_context_for_thread ()" link="GstGLDisplay.html#gst-gl-display-get-gl-context-for-thread"/>
<keyword type="function" name="gst_gl_display_get_handle ()" link="GstGLDisplay.html#gst-gl-display-get-handle"/>
- <keyword type="function" name="gst_gl_display_create_context ()" link="GstGLDisplay.html#gst-gl-display-create-context" since="1.6"/>
- <keyword type="function" name="gst_context_get_gl_display ()" link="GstGLDisplay.html#gst-context-get-gl-display" since="1.4"/>
- <keyword type="function" name="gst_context_set_gl_display ()" link="GstGLDisplay.html#gst-context-set-gl-display" since="1.4"/>
+ <keyword type="function" name="gst_gl_display_create_context ()" link="GstGLDisplay.html#gst-gl-display-create-context"/>
+ <keyword type="function" name="gst_context_get_gl_display ()" link="GstGLDisplay.html#gst-context-get-gl-display"/>
+ <keyword type="function" name="gst_context_set_gl_display ()" link="GstGLDisplay.html#gst-context-set-gl-display"/>
<keyword type="macro" name="GST_GL_DISPLAY_CONTEXT_TYPE" link="GstGLDisplay.html#GST-GL-DISPLAY-CONTEXT-TYPE:CAPS"/>
<keyword type="enum" name="enum GstGLDisplayType" link="GstGLDisplay.html#GstGLDisplayType"/>
<keyword type="struct" name="GstGLDisplay" link="GstGLDisplay.html#GstGLDisplay-struct"/>
<keyword type="signal" name="The “create-context” signal" link="GstGLDisplay.html#GstGLDisplay-create-context"/>
- <keyword type="function" name="gst_egl_image_memory_init ()" link="gst-plugins-bad-libs-GstEGLImageMemory.html#gst-egl-image-memory-init"/>
- <keyword type="function" name="gst_egl_image_memory_get_display ()" link="gst-plugins-bad-libs-GstEGLImageMemory.html#gst-egl-image-memory-get-display"/>
- <keyword type="function" name="gst_egl_image_memory_get_image ()" link="gst-plugins-bad-libs-GstEGLImageMemory.html#gst-egl-image-memory-get-image"/>
- <keyword type="function" name="gst_egl_image_memory_get_orientation ()" link="gst-plugins-bad-libs-GstEGLImageMemory.html#gst-egl-image-memory-get-orientation"/>
- <keyword type="function" name="gst_egl_image_memory_set_orientation ()" link="gst-plugins-bad-libs-GstEGLImageMemory.html#gst-egl-image-memory-set-orientation"/>
- <keyword type="function" name="gst_egl_image_memory_setup_buffer ()" link="gst-plugins-bad-libs-GstEGLImageMemory.html#gst-egl-image-memory-setup-buffer"/>
- <keyword type="function" name="gst_is_egl_image_memory ()" link="gst-plugins-bad-libs-GstEGLImageMemory.html#gst-is-egl-image-memory"/>
- <keyword type="macro" name="GST_EGL_IMAGE_MEMORY_TYPE" link="gst-plugins-bad-libs-GstEGLImageMemory.html#GST-EGL-IMAGE-MEMORY-TYPE:CAPS"/>
- <keyword type="macro" name="GST_CAPS_FEATURE_MEMORY_EGL_IMAGE" link="gst-plugins-bad-libs-GstEGLImageMemory.html#GST-CAPS-FEATURE-MEMORY-EGL-IMAGE:CAPS"/>
<keyword type="function" name="gst_gl_filter_draw_texture ()" link="GstGLFilter.html#gst-gl-filter-draw-texture"/>
<keyword type="function" name="gst_gl_filter_render_to_target ()" link="GstGLFilter.html#gst-gl-filter-render-to-target"/>
<keyword type="function" name="gst_gl_filter_render_to_target_with_shader ()" link="GstGLFilter.html#gst-gl-filter-render-to-target-with-shader"/>
@@ -597,26 +587,27 @@
<keyword type="function" name="gst_gl_framebuffer_use_v2 ()" link="GstGLFramebuffer.html#gst-gl-framebuffer-use-v2"/>
<keyword type="struct" name="struct GstGLFramebuffer" link="GstGLFramebuffer.html#GstGLFramebuffer-struct"/>
<keyword type="struct" name="struct GstGLFramebufferClass" link="GstGLFramebuffer.html#GstGLFramebufferClass"/>
- <keyword type="function" name="gst_gl_video_allocation_params_copy_data ()" link="gst-plugins-bad-libs-GstGLMemory.html#gst-gl-video-allocation-params-copy-data" since="1.8"/>
- <keyword type="function" name="gst_gl_video_allocation_params_free_data ()" link="gst-plugins-bad-libs-GstGLMemory.html#gst-gl-video-allocation-params-free-data" since="1.8"/>
- <keyword type="function" name="gst_gl_video_allocation_params_init_full ()" link="gst-plugins-bad-libs-GstGLMemory.html#gst-gl-video-allocation-params-init-full" since="1.8"/>
- <keyword type="function" name="gst_gl_video_allocation_params_new ()" link="gst-plugins-bad-libs-GstGLMemory.html#gst-gl-video-allocation-params-new" since="1.8"/>
- <keyword type="function" name="gst_gl_video_allocation_params_new_wrapped_data ()" link="gst-plugins-bad-libs-GstGLMemory.html#gst-gl-video-allocation-params-new-wrapped-data" since="1.8"/>
- <keyword type="function" name="gst_gl_video_allocation_params_new_wrapped_texture ()" link="gst-plugins-bad-libs-GstGLMemory.html#gst-gl-video-allocation-params-new-wrapped-texture" since="1.8"/>
- <keyword type="function" name="gst_gl_memory_allocator_get_default ()" link="gst-plugins-bad-libs-GstGLMemory.html#gst-gl-memory-allocator-get-default" since="1.8"/>
- <keyword type="function" name="gst_gl_memory_init_once ()" link="gst-plugins-bad-libs-GstGLMemory.html#gst-gl-memory-init-once" since="1.4"/>
- <keyword type="function" name="gst_gl_memory_init ()" link="gst-plugins-bad-libs-GstGLMemory.html#gst-gl-memory-init" since="1.8"/>
- <keyword type="function" name="gst_is_gl_memory ()" link="gst-plugins-bad-libs-GstGLMemory.html#gst-is-gl-memory" since="1.4"/>
- <keyword type="function" name="gst_gl_memory_copy_into ()" link="gst-plugins-bad-libs-GstGLMemory.html#gst-gl-memory-copy-into" since="1.8"/>
+ <keyword type="function" name="gst_gl_video_allocation_params_copy_data ()" link="gst-plugins-bad-libs-GstGLMemory.html#gst-gl-video-allocation-params-copy-data"/>
+ <keyword type="function" name="gst_gl_video_allocation_params_free_data ()" link="gst-plugins-bad-libs-GstGLMemory.html#gst-gl-video-allocation-params-free-data"/>
+ <keyword type="function" name="gst_gl_video_allocation_params_init_full ()" link="gst-plugins-bad-libs-GstGLMemory.html#gst-gl-video-allocation-params-init-full"/>
+ <keyword type="function" name="gst_gl_video_allocation_params_new ()" link="gst-plugins-bad-libs-GstGLMemory.html#gst-gl-video-allocation-params-new"/>
+ <keyword type="function" name="gst_gl_video_allocation_params_new_wrapped_data ()" link="gst-plugins-bad-libs-GstGLMemory.html#gst-gl-video-allocation-params-new-wrapped-data"/>
+ <keyword type="function" name="gst_gl_video_allocation_params_new_wrapped_gl_handle ()" link="gst-plugins-bad-libs-GstGLMemory.html#gst-gl-video-allocation-params-new-wrapped-gl-handle"/>
+ <keyword type="function" name="gst_gl_video_allocation_params_new_wrapped_texture ()" link="gst-plugins-bad-libs-GstGLMemory.html#gst-gl-video-allocation-params-new-wrapped-texture"/>
+ <keyword type="function" name="gst_gl_memory_allocator_get_default ()" link="gst-plugins-bad-libs-GstGLMemory.html#gst-gl-memory-allocator-get-default"/>
+ <keyword type="function" name="gst_gl_memory_init_once ()" link="gst-plugins-bad-libs-GstGLMemory.html#gst-gl-memory-init-once"/>
+ <keyword type="function" name="gst_gl_memory_init ()" link="gst-plugins-bad-libs-GstGLMemory.html#gst-gl-memory-init"/>
+ <keyword type="function" name="gst_is_gl_memory ()" link="gst-plugins-bad-libs-GstGLMemory.html#gst-is-gl-memory"/>
+ <keyword type="function" name="gst_gl_memory_copy_into ()" link="gst-plugins-bad-libs-GstGLMemory.html#gst-gl-memory-copy-into"/>
<keyword type="function" name="gst_gl_memory_copy_teximage ()" link="gst-plugins-bad-libs-GstGLMemory.html#gst-gl-memory-copy-teximage"/>
- <keyword type="function" name="gst_gl_memory_read_pixels ()" link="gst-plugins-bad-libs-GstGLMemory.html#gst-gl-memory-read-pixels" since="1.8"/>
- <keyword type="function" name="gst_gl_memory_texsubimage ()" link="gst-plugins-bad-libs-GstGLMemory.html#gst-gl-memory-texsubimage" since="1.8"/>
- <keyword type="function" name="gst_gl_memory_get_texture_height ()" link="gst-plugins-bad-libs-GstGLMemory.html#gst-gl-memory-get-texture-height" since="1.8"/>
- <keyword type="function" name="gst_gl_memory_get_texture_id ()" link="gst-plugins-bad-libs-GstGLMemory.html#gst-gl-memory-get-texture-id" since="1.8"/>
- <keyword type="function" name="gst_gl_memory_get_texture_target ()" link="gst-plugins-bad-libs-GstGLMemory.html#gst-gl-memory-get-texture-target" since="1.8"/>
- <keyword type="function" name="gst_gl_memory_get_texture_type ()" link="gst-plugins-bad-libs-GstGLMemory.html#gst-gl-memory-get-texture-type" since="1.8"/>
- <keyword type="function" name="gst_gl_memory_get_texture_width ()" link="gst-plugins-bad-libs-GstGLMemory.html#gst-gl-memory-get-texture-width" since="1.8"/>
- <keyword type="function" name="gst_gl_memory_setup_buffer ()" link="gst-plugins-bad-libs-GstGLMemory.html#gst-gl-memory-setup-buffer" since="1.8"/>
+ <keyword type="function" name="gst_gl_memory_read_pixels ()" link="gst-plugins-bad-libs-GstGLMemory.html#gst-gl-memory-read-pixels"/>
+ <keyword type="function" name="gst_gl_memory_texsubimage ()" link="gst-plugins-bad-libs-GstGLMemory.html#gst-gl-memory-texsubimage"/>
+ <keyword type="function" name="gst_gl_memory_get_texture_height ()" link="gst-plugins-bad-libs-GstGLMemory.html#gst-gl-memory-get-texture-height"/>
+ <keyword type="function" name="gst_gl_memory_get_texture_id ()" link="gst-plugins-bad-libs-GstGLMemory.html#gst-gl-memory-get-texture-id"/>
+ <keyword type="function" name="gst_gl_memory_get_texture_target ()" link="gst-plugins-bad-libs-GstGLMemory.html#gst-gl-memory-get-texture-target"/>
+ <keyword type="function" name="gst_gl_memory_get_texture_type ()" link="gst-plugins-bad-libs-GstGLMemory.html#gst-gl-memory-get-texture-type"/>
+ <keyword type="function" name="gst_gl_memory_get_texture_width ()" link="gst-plugins-bad-libs-GstGLMemory.html#gst-gl-memory-get-texture-width"/>
+ <keyword type="function" name="gst_gl_memory_setup_buffer ()" link="gst-plugins-bad-libs-GstGLMemory.html#gst-gl-memory-setup-buffer"/>
<keyword type="macro" name="GST_GL_MEMORY_VIDEO_FORMATS_STR" link="gst-plugins-bad-libs-GstGLMemory.html#GST-GL-MEMORY-VIDEO-FORMATS-STR:CAPS"/>
<keyword type="struct" name="struct GstGLVideoAllocationParams" link="gst-plugins-bad-libs-GstGLMemory.html#GstGLVideoAllocationParams"/>
<keyword type="macro" name="GST_GL_ALLOCATION_PARAMS_ALLOC_FLAG_VIDEO" link="gst-plugins-bad-libs-GstGLMemory.html#GST-GL-ALLOCATION-PARAMS-ALLOC-FLAG-VIDEO:CAPS"/>
@@ -624,9 +615,9 @@
<keyword type="struct" name="GstGLMemoryAllocatorClass" link="gst-plugins-bad-libs-GstGLMemory.html#GstGLMemoryAllocatorClass"/>
<keyword type="struct" name="GstGLMemory" link="gst-plugins-bad-libs-GstGLMemory.html#GstGLMemory"/>
<keyword type="macro" name="GST_GL_MEMORY_ALLOCATOR_NAME" link="gst-plugins-bad-libs-GstGLMemory.html#GST-GL-MEMORY-ALLOCATOR-NAME:CAPS"/>
- <keyword type="function" name="gst_is_gl_memory_pbo ()" link="gst-plugins-bad-libs-gstglmemorypbo.html#gst-is-gl-memory-pbo" since="1.8"/>
- <keyword type="function" name="gst_gl_memory_pbo_copy_into_texture ()" link="gst-plugins-bad-libs-gstglmemorypbo.html#gst-gl-memory-pbo-copy-into-texture" since="1.8"/>
- <keyword type="function" name="gst_gl_memory_pbo_download_transfer ()" link="gst-plugins-bad-libs-gstglmemorypbo.html#gst-gl-memory-pbo-download-transfer" since="1.8"/>
+ <keyword type="function" name="gst_is_gl_memory_pbo ()" link="gst-plugins-bad-libs-gstglmemorypbo.html#gst-is-gl-memory-pbo"/>
+ <keyword type="function" name="gst_gl_memory_pbo_copy_into_texture ()" link="gst-plugins-bad-libs-gstglmemorypbo.html#gst-gl-memory-pbo-copy-into-texture"/>
+ <keyword type="function" name="gst_gl_memory_pbo_download_transfer ()" link="gst-plugins-bad-libs-gstglmemorypbo.html#gst-gl-memory-pbo-download-transfer"/>
<keyword type="function" name="gst_gl_memory_pbo_init_once ()" link="gst-plugins-bad-libs-gstglmemorypbo.html#gst-gl-memory-pbo-init-once"/>
<keyword type="function" name="gst_gl_memory_pbo_upload_transfer ()" link="gst-plugins-bad-libs-gstglmemorypbo.html#gst-gl-memory-pbo-upload-transfer"/>
<keyword type="struct" name="GstGLMemoryPBOAllocator" link="gst-plugins-bad-libs-gstglmemorypbo.html#GstGLMemoryPBOAllocator-struct"/>
@@ -634,20 +625,20 @@
<keyword type="macro" name="GST_GL_MEMORY_PBO_ALLOCATOR_NAME" link="gst-plugins-bad-libs-gstglmemorypbo.html#GST-GL-MEMORY-PBO-ALLOCATOR-NAME:CAPS"/>
<keyword type="struct" name="GstGLMemoryPBO" link="gst-plugins-bad-libs-gstglmemorypbo.html#GstGLMemoryPBO"/>
<keyword type="function" name="gst_gl_shader_new ()" link="GstGLShader.html#gst-gl-shader-new"/>
- <keyword type="function" name="gst_gl_shader_new_default ()" link="GstGLShader.html#gst-gl-shader-new-default" since="1.8"/>
- <keyword type="function" name="gst_gl_shader_new_link_with_stages ()" link="GstGLShader.html#gst-gl-shader-new-link-with-stages" since="1.8"/>
- <keyword type="function" name="gst_gl_shader_new_with_stages ()" link="GstGLShader.html#gst-gl-shader-new-with-stages" since="1.8"/>
+ <keyword type="function" name="gst_gl_shader_new_default ()" link="GstGLShader.html#gst-gl-shader-new-default"/>
+ <keyword type="function" name="gst_gl_shader_new_link_with_stages ()" link="GstGLShader.html#gst-gl-shader-new-link-with-stages"/>
+ <keyword type="function" name="gst_gl_shader_new_with_stages ()" link="GstGLShader.html#gst-gl-shader-new-with-stages"/>
<keyword type="function" name="gst_gl_shader_use ()" link="GstGLShader.html#gst-gl-shader-use"/>
- <keyword type="function" name="gst_gl_shader_get_program_handle ()" link="GstGLShader.html#gst-gl-shader-get-program-handle" since="1.8"/>
- <keyword type="function" name="gst_gl_shader_release ()" link="GstGLShader.html#gst-gl-shader-release" since="1.8"/>
- <keyword type="function" name="gst_gl_shader_release_unlocked ()" link="GstGLShader.html#gst-gl-shader-release-unlocked" since="1.8"/>
- <keyword type="function" name="gst_gl_shader_attach ()" link="GstGLShader.html#gst-gl-shader-attach" since="1.8"/>
- <keyword type="function" name="gst_gl_shader_attach_unlocked ()" link="GstGLShader.html#gst-gl-shader-attach-unlocked" since="1.8"/>
- <keyword type="function" name="gst_gl_shader_compile_attach_stage ()" link="GstGLShader.html#gst-gl-shader-compile-attach-stage" since="1.8"/>
- <keyword type="function" name="gst_gl_shader_detach ()" link="GstGLShader.html#gst-gl-shader-detach" since="1.8"/>
- <keyword type="function" name="gst_gl_shader_detach_unlocked ()" link="GstGLShader.html#gst-gl-shader-detach-unlocked" since="1.8"/>
- <keyword type="function" name="gst_gl_shader_is_linked ()" link="GstGLShader.html#gst-gl-shader-is-linked" since="1.8"/>
- <keyword type="function" name="gst_gl_shader_link ()" link="GstGLShader.html#gst-gl-shader-link" since="1.8"/>
+ <keyword type="function" name="gst_gl_shader_get_program_handle ()" link="GstGLShader.html#gst-gl-shader-get-program-handle"/>
+ <keyword type="function" name="gst_gl_shader_release ()" link="GstGLShader.html#gst-gl-shader-release"/>
+ <keyword type="function" name="gst_gl_shader_release_unlocked ()" link="GstGLShader.html#gst-gl-shader-release-unlocked"/>
+ <keyword type="function" name="gst_gl_shader_attach ()" link="GstGLShader.html#gst-gl-shader-attach"/>
+ <keyword type="function" name="gst_gl_shader_attach_unlocked ()" link="GstGLShader.html#gst-gl-shader-attach-unlocked"/>
+ <keyword type="function" name="gst_gl_shader_compile_attach_stage ()" link="GstGLShader.html#gst-gl-shader-compile-attach-stage"/>
+ <keyword type="function" name="gst_gl_shader_detach ()" link="GstGLShader.html#gst-gl-shader-detach"/>
+ <keyword type="function" name="gst_gl_shader_detach_unlocked ()" link="GstGLShader.html#gst-gl-shader-detach-unlocked"/>
+ <keyword type="function" name="gst_gl_shader_is_linked ()" link="GstGLShader.html#gst-gl-shader-is-linked"/>
+ <keyword type="function" name="gst_gl_shader_link ()" link="GstGLShader.html#gst-gl-shader-link"/>
<keyword type="function" name="gst_gl_shader_set_uniform_1i ()" link="GstGLShader.html#gst-gl-shader-set-uniform-1i"/>
<keyword type="function" name="gst_gl_shader_set_uniform_1f ()" link="GstGLShader.html#gst-gl-shader-set-uniform-1f"/>
<keyword type="function" name="gst_gl_shader_set_uniform_1fv ()" link="GstGLShader.html#gst-gl-shader-set-uniform-1fv"/>
@@ -714,23 +705,23 @@
<keyword type="macro" name="GST_GL_WINDOW_RESIZE_CB()" link="GstGLWindow.html#GST-GL-WINDOW-RESIZE-CB:CAPS"/>
<keyword type="function" name="GstGLWindowCB ()" link="GstGLWindow.html#GstGLWindowCB"/>
<keyword type="macro" name="GST_GL_WINDOW_CB()" link="GstGLWindow.html#GST-GL-WINDOW-CB:CAPS"/>
- <keyword type="function" name="gst_gl_window_new ()" link="GstGLWindow.html#gst-gl-window-new" since="1.4"/>
- <keyword type="function" name="gst_gl_window_draw ()" link="GstGLWindow.html#gst-gl-window-draw" since="1.4"/>
- <keyword type="function" name="gst_gl_window_is_running ()" link="GstGLWindow.html#gst-gl-window-is-running" since="1.4"/>
- <keyword type="function" name="gst_gl_window_quit ()" link="GstGLWindow.html#gst-gl-window-quit" since="1.4"/>
- <keyword type="function" name="gst_gl_window_run ()" link="GstGLWindow.html#gst-gl-window-run" since="1.4"/>
- <keyword type="function" name="gst_gl_window_get_context ()" link="GstGLWindow.html#gst-gl-window-get-context" since="1.4"/>
- <keyword type="function" name="gst_gl_window_get_display ()" link="GstGLWindow.html#gst-gl-window-get-display" since="1.4"/>
- <keyword type="function" name="gst_gl_window_send_message ()" link="GstGLWindow.html#gst-gl-window-send-message" since="1.4"/>
- <keyword type="function" name="gst_gl_window_send_message_async ()" link="GstGLWindow.html#gst-gl-window-send-message-async" since="1.4"/>
- <keyword type="function" name="gst_gl_window_set_close_callback ()" link="GstGLWindow.html#gst-gl-window-set-close-callback" since="1.4"/>
- <keyword type="function" name="gst_gl_window_set_draw_callback ()" link="GstGLWindow.html#gst-gl-window-set-draw-callback" since="1.4"/>
- <keyword type="function" name="gst_gl_window_set_resize_callback ()" link="GstGLWindow.html#gst-gl-window-set-resize-callback" since="1.4"/>
- <keyword type="function" name="gst_gl_window_set_window_handle ()" link="GstGLWindow.html#gst-gl-window-set-window-handle" since="1.4"/>
- <keyword type="function" name="gst_gl_window_get_window_handle ()" link="GstGLWindow.html#gst-gl-window-get-window-handle" since="1.4"/>
- <keyword type="function" name="gst_gl_window_set_preferred_size ()" link="GstGLWindow.html#gst-gl-window-set-preferred-size" since="1.6"/>
- <keyword type="function" name="gst_gl_window_show ()" link="GstGLWindow.html#gst-gl-window-show" since="1.6"/>
- <keyword type="function" name="gst_gl_window_get_surface_dimensions ()" link="GstGLWindow.html#gst-gl-window-get-surface-dimensions" since="1.6"/>
+ <keyword type="function" name="gst_gl_window_new ()" link="GstGLWindow.html#gst-gl-window-new"/>
+ <keyword type="function" name="gst_gl_window_draw ()" link="GstGLWindow.html#gst-gl-window-draw"/>
+ <keyword type="function" name="gst_gl_window_is_running ()" link="GstGLWindow.html#gst-gl-window-is-running"/>
+ <keyword type="function" name="gst_gl_window_quit ()" link="GstGLWindow.html#gst-gl-window-quit"/>
+ <keyword type="function" name="gst_gl_window_run ()" link="GstGLWindow.html#gst-gl-window-run"/>
+ <keyword type="function" name="gst_gl_window_get_context ()" link="GstGLWindow.html#gst-gl-window-get-context"/>
+ <keyword type="function" name="gst_gl_window_get_display ()" link="GstGLWindow.html#gst-gl-window-get-display"/>
+ <keyword type="function" name="gst_gl_window_send_message ()" link="GstGLWindow.html#gst-gl-window-send-message"/>
+ <keyword type="function" name="gst_gl_window_send_message_async ()" link="GstGLWindow.html#gst-gl-window-send-message-async"/>
+ <keyword type="function" name="gst_gl_window_set_close_callback ()" link="GstGLWindow.html#gst-gl-window-set-close-callback"/>
+ <keyword type="function" name="gst_gl_window_set_draw_callback ()" link="GstGLWindow.html#gst-gl-window-set-draw-callback"/>
+ <keyword type="function" name="gst_gl_window_set_resize_callback ()" link="GstGLWindow.html#gst-gl-window-set-resize-callback"/>
+ <keyword type="function" name="gst_gl_window_set_window_handle ()" link="GstGLWindow.html#gst-gl-window-set-window-handle"/>
+ <keyword type="function" name="gst_gl_window_get_window_handle ()" link="GstGLWindow.html#gst-gl-window-get-window-handle"/>
+ <keyword type="function" name="gst_gl_window_set_preferred_size ()" link="GstGLWindow.html#gst-gl-window-set-preferred-size"/>
+ <keyword type="function" name="gst_gl_window_show ()" link="GstGLWindow.html#gst-gl-window-show"/>
+ <keyword type="function" name="gst_gl_window_get_surface_dimensions ()" link="GstGLWindow.html#gst-gl-window-get-surface-dimensions"/>
<keyword type="function" name="gst_gl_window_handle_events ()" link="GstGLWindow.html#gst-gl-window-handle-events"/>
<keyword type="enum" name="enum GstGLWindowError" link="GstGLWindow.html#GstGLWindowError"/>
<keyword type="macro" name="GST_GL_WINDOW_ERROR" link="GstGLWindow.html#GST-GL-WINDOW-ERROR:CAPS"/>
@@ -761,27 +752,25 @@
<keyword type="function" name="gst_gl_window_x11_untrap_x_errors ()" link="gst-plugins-bad-libs-GstGLWindowX11.html#gst-gl-window-x11-untrap-x-errors"/>
<keyword type="struct" name="struct GstGLWindowX11" link="gst-plugins-bad-libs-GstGLWindowX11.html#GstGLWindowX11"/>
<keyword type="struct" name="struct GstGLWindowX11Class" link="gst-plugins-bad-libs-GstGLWindowX11.html#GstGLWindowX11Class"/>
- <keyword type="function" name="GstGLAsyncDebugLogGetMessage ()" link="gst-plugins-bad-libs-OpenGL-debugging.html#GstGLAsyncDebugLogGetMessage"/>
- <keyword type="function" name="gst_gl_async_debug_new ()" link="gst-plugins-bad-libs-OpenGL-debugging.html#gst-gl-async-debug-new" since="1.8"/>
- <keyword type="function" name="gst_gl_async_debug_free ()" link="gst-plugins-bad-libs-OpenGL-debugging.html#gst-gl-async-debug-free" since="1.8"/>
- <keyword type="function" name="gst_gl_async_debug_init ()" link="gst-plugins-bad-libs-OpenGL-debugging.html#gst-gl-async-debug-init" since="1.8"/>
- <keyword type="function" name="gst_gl_async_debug_unset ()" link="gst-plugins-bad-libs-OpenGL-debugging.html#gst-gl-async-debug-unset"/>
- <keyword type="function" name="gst_gl_async_debug_freeze ()" link="gst-plugins-bad-libs-OpenGL-debugging.html#gst-gl-async-debug-freeze" since="1.8"/>
- <keyword type="function" name="gst_gl_async_debug_thaw ()" link="gst-plugins-bad-libs-OpenGL-debugging.html#gst-gl-async-debug-thaw" since="1.8"/>
- <keyword type="function" name="gst_gl_async_debug_output_log_msg ()" link="gst-plugins-bad-libs-OpenGL-debugging.html#gst-gl-async-debug-output-log-msg"/>
- <keyword type="function" name="gst_gl_async_debug_store_log_msg ()" link="gst-plugins-bad-libs-OpenGL-debugging.html#gst-gl-async-debug-store-log-msg" since="1.8"/>
- <keyword type="function" name="gst_gl_async_debug_store_log_msg_valist ()" link="gst-plugins-bad-libs-OpenGL-debugging.html#gst-gl-async-debug-store-log-msg-valist" since="1.8"/>
- <keyword type="macro" name="GST_GL_ASYNC_CAT_LEVEL_LOG_valist()" link="gst-plugins-bad-libs-OpenGL-debugging.html#GST-GL-ASYNC-CAT-LEVEL-LOG-valist"/>
- <keyword type="macro" name="GST_GL_ASYNC_CAT_LEVEL_LOG()" link="gst-plugins-bad-libs-OpenGL-debugging.html#GST-GL-ASYNC-CAT-LEVEL-LOG:CAPS"/>
- <keyword type="function" name="gst_gl_insert_debug_marker ()" link="gst-plugins-bad-libs-OpenGL-debugging.html#gst-gl-insert-debug-marker" since="1.8"/>
- <keyword type="struct" name="struct GstGLAsyncDebug" link="gst-plugins-bad-libs-OpenGL-debugging.html#GstGLAsyncDebug"/>
+ <keyword type="function" name="GstGLAsyncDebugLogGetMessage ()" link="gst-plugins-bad-libs-gstgldebug.html#GstGLAsyncDebugLogGetMessage"/>
+ <keyword type="function" name="gst_gl_async_debug_new ()" link="gst-plugins-bad-libs-gstgldebug.html#gst-gl-async-debug-new"/>
+ <keyword type="function" name="gst_gl_async_debug_free ()" link="gst-plugins-bad-libs-gstgldebug.html#gst-gl-async-debug-free"/>
+ <keyword type="function" name="gst_gl_async_debug_init ()" link="gst-plugins-bad-libs-gstgldebug.html#gst-gl-async-debug-init"/>
+ <keyword type="function" name="gst_gl_async_debug_unset ()" link="gst-plugins-bad-libs-gstgldebug.html#gst-gl-async-debug-unset"/>
+ <keyword type="function" name="gst_gl_async_debug_freeze ()" link="gst-plugins-bad-libs-gstgldebug.html#gst-gl-async-debug-freeze"/>
+ <keyword type="function" name="gst_gl_async_debug_thaw ()" link="gst-plugins-bad-libs-gstgldebug.html#gst-gl-async-debug-thaw"/>
+ <keyword type="function" name="gst_gl_async_debug_output_log_msg ()" link="gst-plugins-bad-libs-gstgldebug.html#gst-gl-async-debug-output-log-msg"/>
+ <keyword type="function" name="gst_gl_async_debug_store_log_msg ()" link="gst-plugins-bad-libs-gstgldebug.html#gst-gl-async-debug-store-log-msg"/>
+ <keyword type="function" name="gst_gl_async_debug_store_log_msg_valist ()" link="gst-plugins-bad-libs-gstgldebug.html#gst-gl-async-debug-store-log-msg-valist"/>
+ <keyword type="macro" name="GST_GL_ASYNC_CAT_LEVEL_LOG_valist()" link="gst-plugins-bad-libs-gstgldebug.html#GST-GL-ASYNC-CAT-LEVEL-LOG-valist"/>
+ <keyword type="macro" name="GST_GL_ASYNC_CAT_LEVEL_LOG()" link="gst-plugins-bad-libs-gstgldebug.html#GST-GL-ASYNC-CAT-LEVEL-LOG:CAPS"/>
+ <keyword type="function" name="gst_gl_insert_debug_marker ()" link="gst-plugins-bad-libs-gstgldebug.html#gst-gl-insert-debug-marker"/>
+ <keyword type="struct" name="struct GstGLAsyncDebug" link="gst-plugins-bad-libs-gstgldebug.html#GstGLAsyncDebug"/>
<keyword type="function" name="GLCB ()" link="gst-plugins-bad-libs-OpenGL-Miscellaneous-Utilities.html#GLCB:CAPS"/>
<keyword type="function" name="GLCB_V2 ()" link="gst-plugins-bad-libs-OpenGL-Miscellaneous-Utilities.html#GLCB-V2:CAPS"/>
<keyword type="function" name="CDCB ()" link="gst-plugins-bad-libs-OpenGL-Miscellaneous-Utilities.html#CDCB:CAPS"/>
<keyword type="function" name="gst_gl_handle_set_context ()" link="gst-plugins-bad-libs-OpenGL-Miscellaneous-Utilities.html#gst-gl-handle-set-context"/>
<keyword type="function" name="gst_gl_handle_context_query ()" link="gst-plugins-bad-libs-OpenGL-Miscellaneous-Utilities.html#gst-gl-handle-context-query"/>
- <keyword type="function" name="gst_gl_context_gen_texture ()" link="gst-plugins-bad-libs-OpenGL-Miscellaneous-Utilities.html#gst-gl-context-gen-texture"/>
- <keyword type="function" name="gst_gl_context_del_texture ()" link="gst-plugins-bad-libs-OpenGL-Miscellaneous-Utilities.html#gst-gl-context-del-texture"/>
<keyword type="function" name="gst_gl_context_gen_fbo ()" link="gst-plugins-bad-libs-OpenGL-Miscellaneous-Utilities.html#gst-gl-context-gen-fbo"/>
<keyword type="function" name="gst_gl_context_del_fbo ()" link="gst-plugins-bad-libs-OpenGL-Miscellaneous-Utilities.html#gst-gl-context-del-fbo"/>
<keyword type="function" name="gst_gl_context_use_fbo_v2 ()" link="gst-plugins-bad-libs-OpenGL-Miscellaneous-Utilities.html#gst-gl-context-use-fbo-v2"/>
@@ -791,7 +780,6 @@
<keyword type="function" name="gst_gl_context_set_error ()" link="gst-plugins-bad-libs-OpenGL-Miscellaneous-Utilities.html#gst-gl-context-set-error"/>
<keyword type="function" name="gst_gl_context_get_error ()" link="gst-plugins-bad-libs-OpenGL-Miscellaneous-Utilities.html#gst-gl-context-get-error"/>
<keyword type="function" name="gst_gl_context_clear_shader ()" link="gst-plugins-bad-libs-OpenGL-Miscellaneous-Utilities.html#gst-gl-context-clear-shader"/>
- <keyword type="function" name="gst_gl_generate_texture_full ()" link="gst-plugins-bad-libs-OpenGL-Miscellaneous-Utilities.html#gst-gl-generate-texture-full"/>
<keyword type="function" name="gst_gl_caps_replace_all_caps_features ()" link="gst-plugins-bad-libs-OpenGL-Miscellaneous-Utilities.html#gst-gl-caps-replace-all-caps-features"/>
<keyword type="function" name="gst_gl_ensure_element_data ()" link="gst-plugins-bad-libs-OpenGL-Miscellaneous-Utilities.html#gst-gl-ensure-element-data"/>
<keyword type="function" name="gst_gl_get_plane_data_size ()" link="gst-plugins-bad-libs-OpenGL-Miscellaneous-Utilities.html#gst-gl-get-plane-data-size"/>
@@ -811,7 +799,7 @@
<keyword type="function" name="gst_gl_texture_target_to_gl ()" link="gst-plugins-bad-libs-OpenGL-Formats.html#gst-gl-texture-target-to-gl"/>
<keyword type="function" name="gst_gl_texture_target_from_gl ()" link="gst-plugins-bad-libs-OpenGL-Formats.html#gst-gl-texture-target-from-gl"/>
<keyword type="function" name="gst_gl_texture_target_to_buffer_pool_option ()" link="gst-plugins-bad-libs-OpenGL-Formats.html#gst-gl-texture-target-to-buffer-pool-option"/>
- <keyword type="enum" name="enum GstGLTextureTarget" link="gst-plugins-bad-libs-OpenGL-Formats.html#GstGLTextureTarget" since="1.8"/>
+ <keyword type="enum" name="enum GstGLTextureTarget" link="gst-plugins-bad-libs-OpenGL-Formats.html#GstGLTextureTarget"/>
<keyword type="macro" name="GST_GL_TEXTURE_TARGET_2D_STR" link="gst-plugins-bad-libs-OpenGL-Formats.html#GST-GL-TEXTURE-TARGET-2D-STR:CAPS"/>
<keyword type="macro" name="GST_GL_TEXTURE_TARGET_RECTANGLE_STR" link="gst-plugins-bad-libs-OpenGL-Formats.html#GST-GL-TEXTURE-TARGET-RECTANGLE-STR:CAPS"/>
<keyword type="macro" name="GST_GL_TEXTURE_TARGET_EXTERNAL_OES_STR" link="gst-plugins-bad-libs-OpenGL-Formats.html#GST-GL-TEXTURE-TARGET-EXTERNAL-OES-STR:CAPS"/>
@@ -858,6 +846,12 @@
<keyword type="function" name="gst_player_has_color_balance ()" link="gst-plugins-bad-libs-gstplayer.html#gst-player-has-color-balance"/>
<keyword type="function" name="gst_player_set_color_balance ()" link="gst-plugins-bad-libs-gstplayer.html#gst-player-set-color-balance"/>
<keyword type="function" name="gst_player_get_color_balance ()" link="gst-plugins-bad-libs-gstplayer.html#gst-player-get-color-balance"/>
+ <keyword type="function" name="gst_player_get_multiview_mode ()" link="gst-plugins-bad-libs-gstplayer.html#gst-player-get-multiview-mode"/>
+ <keyword type="function" name="gst_player_set_multiview_mode ()" link="gst-plugins-bad-libs-gstplayer.html#gst-player-set-multiview-mode"/>
+ <keyword type="function" name="gst_player_get_multiview_flags ()" link="gst-plugins-bad-libs-gstplayer.html#gst-player-get-multiview-flags"/>
+ <keyword type="function" name="gst_player_set_multiview_flags ()" link="gst-plugins-bad-libs-gstplayer.html#gst-player-set-multiview-flags"/>
+ <keyword type="function" name="gst_player_get_audio_video_offset ()" link="gst-plugins-bad-libs-gstplayer.html#gst-player-get-audio-video-offset"/>
+ <keyword type="function" name="gst_player_set_audio_video_offset ()" link="gst-plugins-bad-libs-gstplayer.html#gst-player-set-audio-video-offset"/>
<keyword type="function" name="gst_player_get_rate ()" link="gst-plugins-bad-libs-gstplayer.html#gst-player-get-rate"/>
<keyword type="function" name="gst_player_set_rate ()" link="gst-plugins-bad-libs-gstplayer.html#gst-player-set-rate"/>
<keyword type="struct" name="GstPlayer" link="gst-plugins-bad-libs-gstplayer.html#GstPlayer-struct"/>
@@ -869,6 +863,7 @@
<keyword type="struct" name="struct GstPlayerSignalDispatcherInterface" link="gst-plugins-bad-libs-gstplayer.html#GstPlayerSignalDispatcherInterface"/>
<keyword type="struct" name="GstPlayerVideoRenderer" link="gst-plugins-bad-libs-gstplayer.html#GstPlayerVideoRenderer-struct"/>
<keyword type="struct" name="struct GstPlayerVideoRendererInterface" link="gst-plugins-bad-libs-gstplayer.html#GstPlayerVideoRendererInterface"/>
+ <keyword type="property" name="The “audio-video-offset” property" link="gst-plugins-bad-libs-gstplayer.html#GstPlayer--audio-video-offset"/>
<keyword type="property" name="The “current-audio-track” property" link="gst-plugins-bad-libs-gstplayer.html#GstPlayer--current-audio-track"/>
<keyword type="property" name="The “current-subtitle-track” property" link="gst-plugins-bad-libs-gstplayer.html#GstPlayer--current-subtitle-track"/>
<keyword type="property" name="The “current-video-track” property" link="gst-plugins-bad-libs-gstplayer.html#GstPlayer--current-video-track"/>
@@ -882,6 +877,8 @@
<keyword type="property" name="The “signal-dispatcher” property" link="gst-plugins-bad-libs-gstplayer.html#GstPlayer--signal-dispatcher"/>
<keyword type="property" name="The “suburi” property" link="gst-plugins-bad-libs-gstplayer.html#GstPlayer--suburi"/>
<keyword type="property" name="The “uri” property" link="gst-plugins-bad-libs-gstplayer.html#GstPlayer--uri"/>
+ <keyword type="property" name="The “video-multiview-flags” property" link="gst-plugins-bad-libs-gstplayer.html#GstPlayer--video-multiview-flags"/>
+ <keyword type="property" name="The “video-multiview-mode” property" link="gst-plugins-bad-libs-gstplayer.html#GstPlayer--video-multiview-mode"/>
<keyword type="property" name="The “video-renderer” property" link="gst-plugins-bad-libs-gstplayer.html#GstPlayer--video-renderer"/>
<keyword type="property" name="The “volume” property" link="gst-plugins-bad-libs-gstplayer.html#GstPlayer--volume"/>
<keyword type="signal" name="The “buffering” signal" link="gst-plugins-bad-libs-gstplayer.html#GstPlayer-buffering"/>
@@ -893,6 +890,7 @@
<keyword type="signal" name="The “position-updated” signal" link="gst-plugins-bad-libs-gstplayer.html#GstPlayer-position-updated"/>
<keyword type="signal" name="The “seek-done” signal" link="gst-plugins-bad-libs-gstplayer.html#GstPlayer-seek-done"/>
<keyword type="signal" name="The “state-changed” signal" link="gst-plugins-bad-libs-gstplayer.html#GstPlayer-state-changed"/>
+ <keyword type="signal" name="The “uri-loaded” signal" link="gst-plugins-bad-libs-gstplayer.html#GstPlayer-uri-loaded"/>
<keyword type="signal" name="The “video-dimensions-changed” signal" link="gst-plugins-bad-libs-gstplayer.html#GstPlayer-video-dimensions-changed"/>
<keyword type="signal" name="The “volume-changed” signal" link="gst-plugins-bad-libs-gstplayer.html#GstPlayer-volume-changed"/>
<keyword type="signal" name="The “warning” signal" link="gst-plugins-bad-libs-gstplayer.html#GstPlayer-warning"/>
@@ -901,6 +899,7 @@
<keyword type="function" name="gst_player_media_info_get_title ()" link="gst-plugins-bad-libs-gstplayer-mediainfo.html#gst-player-media-info-get-title"/>
<keyword type="function" name="gst_player_media_info_get_container_format ()" link="gst-plugins-bad-libs-gstplayer-mediainfo.html#gst-player-media-info-get-container-format"/>
<keyword type="function" name="gst_player_media_info_is_seekable ()" link="gst-plugins-bad-libs-gstplayer-mediainfo.html#gst-player-media-info-is-seekable"/>
+ <keyword type="function" name="gst_player_media_info_is_live ()" link="gst-plugins-bad-libs-gstplayer-mediainfo.html#gst-player-media-info-is-live"/>
<keyword type="function" name="gst_player_media_info_get_image_sample ()" link="gst-plugins-bad-libs-gstplayer-mediainfo.html#gst-player-media-info-get-image-sample"/>
<keyword type="function" name="gst_player_media_info_get_tags ()" link="gst-plugins-bad-libs-gstplayer-mediainfo.html#gst-player-media-info-get-tags"/>
<keyword type="function" name="gst_player_media_info_get_stream_list ()" link="gst-plugins-bad-libs-gstplayer-mediainfo.html#gst-player-media-info-get-stream-list"/>
@@ -1213,463 +1212,463 @@
<keyword type="constant" name="GST_VC1_MVMODE_1MV_HPEL" link="gst-plugins-bad-libs-vc1parser.html#GST-VC1-MVMODE-1MV-HPEL:CAPS"/>
<keyword type="constant" name="GST_VC1_MVMODE_MIXED_MV" link="gst-plugins-bad-libs-vc1parser.html#GST-VC1-MVMODE-MIXED-MV:CAPS"/>
<keyword type="constant" name="GST_VC1_MVMODE_INTENSITY_COMP" link="gst-plugins-bad-libs-vc1parser.html#GST-VC1-MVMODE-INTENSITY-COMP:CAPS"/>
- <keyword type="constant" name="GST_MTS_TABLE_ID_PROGRAM_ASSOCIATION" link="gst-plugins-bad-libs-Base-MPEG-TS-sections.html#GST-MTS-TABLE-ID-PROGRAM-ASSOCIATION:CAPS"/>
- <keyword type="constant" name="GST_MTS_TABLE_ID_CONDITIONAL_ACCESS" link="gst-plugins-bad-libs-Base-MPEG-TS-sections.html#GST-MTS-TABLE-ID-CONDITIONAL-ACCESS:CAPS"/>
- <keyword type="constant" name="GST_MTS_TABLE_ID_TS_PROGRAM_MAP" link="gst-plugins-bad-libs-Base-MPEG-TS-sections.html#GST-MTS-TABLE-ID-TS-PROGRAM-MAP:CAPS"/>
- <keyword type="constant" name="GST_MTS_TABLE_ID_TS_DESCRIPTION" link="gst-plugins-bad-libs-Base-MPEG-TS-sections.html#GST-MTS-TABLE-ID-TS-DESCRIPTION:CAPS"/>
- <keyword type="constant" name="GST_MTS_TABLE_ID_14496_SCENE_DESCRIPTION" link="gst-plugins-bad-libs-Base-MPEG-TS-sections.html#GST-MTS-TABLE-ID-14496-SCENE-DESCRIPTION:CAPS"/>
- <keyword type="constant" name="GST_MTS_TABLE_ID_14496_OBJET_DESCRIPTOR" link="gst-plugins-bad-libs-Base-MPEG-TS-sections.html#GST-MTS-TABLE-ID-14496-OBJET-DESCRIPTOR:CAPS"/>
- <keyword type="constant" name="GST_MTS_TABLE_ID_METADATA" link="gst-plugins-bad-libs-Base-MPEG-TS-sections.html#GST-MTS-TABLE-ID-METADATA:CAPS"/>
- <keyword type="constant" name="GST_MTS_TABLE_ID_IPMP_CONTROL_INFORMATION" link="gst-plugins-bad-libs-Base-MPEG-TS-sections.html#GST-MTS-TABLE-ID-IPMP-CONTROL-INFORMATION:CAPS"/>
- <keyword type="constant" name="GST_MTS_TABLE_ID_DSM_CC_MULTIPROTO_ENCAPSULATED_DATA" link="gst-plugins-bad-libs-Base-MPEG-TS-sections.html#GST-MTS-TABLE-ID-DSM-CC-MULTIPROTO-ENCAPSULATED-DATA:CAPS"/>
- <keyword type="constant" name="GST_MTS_TABLE_ID_DSM_CC_U_N_MESSAGES" link="gst-plugins-bad-libs-Base-MPEG-TS-sections.html#GST-MTS-TABLE-ID-DSM-CC-U-N-MESSAGES:CAPS"/>
- <keyword type="constant" name="GST_MTS_TABLE_ID_DSM_CC_DOWNLOAD_DATA_MESSAGES" link="gst-plugins-bad-libs-Base-MPEG-TS-sections.html#GST-MTS-TABLE-ID-DSM-CC-DOWNLOAD-DATA-MESSAGES:CAPS"/>
- <keyword type="constant" name="GST_MTS_TABLE_ID_DSM_CC_STREAM_DESCRIPTORS" link="gst-plugins-bad-libs-Base-MPEG-TS-sections.html#GST-MTS-TABLE-ID-DSM-CC-STREAM-DESCRIPTORS:CAPS"/>
- <keyword type="constant" name="GST_MTS_TABLE_ID_DSM_CC_PRIVATE_DATA" link="gst-plugins-bad-libs-Base-MPEG-TS-sections.html#GST-MTS-TABLE-ID-DSM-CC-PRIVATE-DATA:CAPS"/>
- <keyword type="constant" name="GST_MTS_TABLE_ID_DSM_CC_ADDRESSABLE_SECTIONS" link="gst-plugins-bad-libs-Base-MPEG-TS-sections.html#GST-MTS-TABLE-ID-DSM-CC-ADDRESSABLE-SECTIONS:CAPS"/>
- <keyword type="constant" name="GST_MTS_TABLE_ID_UNSET" link="gst-plugins-bad-libs-Base-MPEG-TS-sections.html#GST-MTS-TABLE-ID-UNSET:CAPS"/>
- <keyword type="constant" name="GST_MPEGTS_SECTION_UNKNOWN" link="gst-plugins-bad-libs-Base-MPEG-TS-sections.html#GST-MPEGTS-SECTION-UNKNOWN:CAPS"/>
- <keyword type="constant" name="GST_MPEGTS_SECTION_PAT" link="gst-plugins-bad-libs-Base-MPEG-TS-sections.html#GST-MPEGTS-SECTION-PAT:CAPS"/>
- <keyword type="constant" name="GST_MPEGTS_SECTION_PMT" link="gst-plugins-bad-libs-Base-MPEG-TS-sections.html#GST-MPEGTS-SECTION-PMT:CAPS"/>
- <keyword type="constant" name="GST_MPEGTS_SECTION_CAT" link="gst-plugins-bad-libs-Base-MPEG-TS-sections.html#GST-MPEGTS-SECTION-CAT:CAPS"/>
- <keyword type="constant" name="GST_MPEGTS_SECTION_TSDT" link="gst-plugins-bad-libs-Base-MPEG-TS-sections.html#GST-MPEGTS-SECTION-TSDT:CAPS"/>
- <keyword type="constant" name="GST_MPEGTS_SECTION_EIT" link="gst-plugins-bad-libs-Base-MPEG-TS-sections.html#GST-MPEGTS-SECTION-EIT:CAPS"/>
- <keyword type="constant" name="GST_MPEGTS_SECTION_NIT" link="gst-plugins-bad-libs-Base-MPEG-TS-sections.html#GST-MPEGTS-SECTION-NIT:CAPS"/>
- <keyword type="constant" name="GST_MPEGTS_SECTION_BAT" link="gst-plugins-bad-libs-Base-MPEG-TS-sections.html#GST-MPEGTS-SECTION-BAT:CAPS"/>
- <keyword type="constant" name="GST_MPEGTS_SECTION_SDT" link="gst-plugins-bad-libs-Base-MPEG-TS-sections.html#GST-MPEGTS-SECTION-SDT:CAPS"/>
- <keyword type="constant" name="GST_MPEGTS_SECTION_TDT" link="gst-plugins-bad-libs-Base-MPEG-TS-sections.html#GST-MPEGTS-SECTION-TDT:CAPS"/>
- <keyword type="constant" name="GST_MPEGTS_SECTION_TOT" link="gst-plugins-bad-libs-Base-MPEG-TS-sections.html#GST-MPEGTS-SECTION-TOT:CAPS"/>
- <keyword type="constant" name="GST_MPEGTS_SECTION_ATSC_TVCT" link="gst-plugins-bad-libs-Base-MPEG-TS-sections.html#GST-MPEGTS-SECTION-ATSC-TVCT:CAPS"/>
- <keyword type="constant" name="GST_MPEGTS_SECTION_ATSC_CVCT" link="gst-plugins-bad-libs-Base-MPEG-TS-sections.html#GST-MPEGTS-SECTION-ATSC-CVCT:CAPS"/>
- <keyword type="constant" name="GST_MPEGTS_SECTION_ATSC_MGT" link="gst-plugins-bad-libs-Base-MPEG-TS-sections.html#GST-MPEGTS-SECTION-ATSC-MGT:CAPS"/>
- <keyword type="constant" name="GST_MPEGTS_SECTION_ATSC_ETT" link="gst-plugins-bad-libs-Base-MPEG-TS-sections.html#GST-MPEGTS-SECTION-ATSC-ETT:CAPS"/>
- <keyword type="constant" name="GST_MPEGTS_SECTION_ATSC_EIT" link="gst-plugins-bad-libs-Base-MPEG-TS-sections.html#GST-MPEGTS-SECTION-ATSC-EIT:CAPS"/>
- <keyword type="constant" name="GST_MPEGTS_SECTION_ATSC_STT" link="gst-plugins-bad-libs-Base-MPEG-TS-sections.html#GST-MPEGTS-SECTION-ATSC-STT:CAPS"/>
- <keyword type="constant" name="GST_MPEGTS_STREAM_TYPE_RESERVED_00" link="gst-plugins-bad-libs-Base-MPEG-TS-sections.html#GST-MPEGTS-STREAM-TYPE-RESERVED-00:CAPS"/>
- <keyword type="constant" name="GST_MPEGTS_STREAM_TYPE_VIDEO_MPEG1" link="gst-plugins-bad-libs-Base-MPEG-TS-sections.html#GST-MPEGTS-STREAM-TYPE-VIDEO-MPEG1:CAPS"/>
- <keyword type="constant" name="GST_MPEGTS_STREAM_TYPE_VIDEO_MPEG2" link="gst-plugins-bad-libs-Base-MPEG-TS-sections.html#GST-MPEGTS-STREAM-TYPE-VIDEO-MPEG2:CAPS"/>
- <keyword type="constant" name="GST_MPEGTS_STREAM_TYPE_AUDIO_MPEG1" link="gst-plugins-bad-libs-Base-MPEG-TS-sections.html#GST-MPEGTS-STREAM-TYPE-AUDIO-MPEG1:CAPS"/>
- <keyword type="constant" name="GST_MPEGTS_STREAM_TYPE_AUDIO_MPEG2" link="gst-plugins-bad-libs-Base-MPEG-TS-sections.html#GST-MPEGTS-STREAM-TYPE-AUDIO-MPEG2:CAPS"/>
- <keyword type="constant" name="GST_MPEGTS_STREAM_TYPE_PRIVATE_SECTIONS" link="gst-plugins-bad-libs-Base-MPEG-TS-sections.html#GST-MPEGTS-STREAM-TYPE-PRIVATE-SECTIONS:CAPS"/>
- <keyword type="constant" name="GST_MPEGTS_STREAM_TYPE_PRIVATE_PES_PACKETS" link="gst-plugins-bad-libs-Base-MPEG-TS-sections.html#GST-MPEGTS-STREAM-TYPE-PRIVATE-PES-PACKETS:CAPS"/>
- <keyword type="constant" name="GST_MPEGTS_STREAM_TYPE_MHEG" link="gst-plugins-bad-libs-Base-MPEG-TS-sections.html#GST-MPEGTS-STREAM-TYPE-MHEG:CAPS"/>
- <keyword type="constant" name="GST_MPEGTS_STREAM_TYPE_DSM_CC" link="gst-plugins-bad-libs-Base-MPEG-TS-sections.html#GST-MPEGTS-STREAM-TYPE-DSM-CC:CAPS"/>
- <keyword type="constant" name="GST_MPEGTS_STREAM_TYPE_H_222_1" link="gst-plugins-bad-libs-Base-MPEG-TS-sections.html#GST-MPEGTS-STREAM-TYPE-H-222-1:CAPS"/>
- <keyword type="constant" name="GST_MPEGTS_STREAM_TYPE_DSMCC_A" link="gst-plugins-bad-libs-Base-MPEG-TS-sections.html#GST-MPEGTS-STREAM-TYPE-DSMCC-A:CAPS"/>
- <keyword type="constant" name="GST_MPEGTS_STREAM_TYPE_DSMCC_B" link="gst-plugins-bad-libs-Base-MPEG-TS-sections.html#GST-MPEGTS-STREAM-TYPE-DSMCC-B:CAPS"/>
- <keyword type="constant" name="GST_MPEGTS_STREAM_TYPE_DSMCC_C" link="gst-plugins-bad-libs-Base-MPEG-TS-sections.html#GST-MPEGTS-STREAM-TYPE-DSMCC-C:CAPS"/>
- <keyword type="constant" name="GST_MPEGTS_STREAM_TYPE_DSMCC_D" link="gst-plugins-bad-libs-Base-MPEG-TS-sections.html#GST-MPEGTS-STREAM-TYPE-DSMCC-D:CAPS"/>
- <keyword type="constant" name="GST_MPEGTS_STREAM_TYPE_AUXILIARY" link="gst-plugins-bad-libs-Base-MPEG-TS-sections.html#GST-MPEGTS-STREAM-TYPE-AUXILIARY:CAPS"/>
- <keyword type="constant" name="GST_MPEGTS_STREAM_TYPE_AUDIO_AAC_ADTS" link="gst-plugins-bad-libs-Base-MPEG-TS-sections.html#GST-MPEGTS-STREAM-TYPE-AUDIO-AAC-ADTS:CAPS"/>
- <keyword type="constant" name="GST_MPEGTS_STREAM_TYPE_VIDEO_MPEG4" link="gst-plugins-bad-libs-Base-MPEG-TS-sections.html#GST-MPEGTS-STREAM-TYPE-VIDEO-MPEG4:CAPS"/>
- <keyword type="constant" name="GST_MPEGTS_STREAM_TYPE_AUDIO_AAC_LATM" link="gst-plugins-bad-libs-Base-MPEG-TS-sections.html#GST-MPEGTS-STREAM-TYPE-AUDIO-AAC-LATM:CAPS"/>
- <keyword type="constant" name="GST_MPEGTS_STREAM_TYPE_SL_FLEXMUX_PES_PACKETS" link="gst-plugins-bad-libs-Base-MPEG-TS-sections.html#GST-MPEGTS-STREAM-TYPE-SL-FLEXMUX-PES-PACKETS:CAPS"/>
- <keyword type="constant" name="GST_MPEGTS_STREAM_TYPE_SL_FLEXMUX_SECTIONS" link="gst-plugins-bad-libs-Base-MPEG-TS-sections.html#GST-MPEGTS-STREAM-TYPE-SL-FLEXMUX-SECTIONS:CAPS"/>
- <keyword type="constant" name="GST_MPEGTS_STREAM_TYPE_SYNCHRONIZED_DOWNLOAD" link="gst-plugins-bad-libs-Base-MPEG-TS-sections.html#GST-MPEGTS-STREAM-TYPE-SYNCHRONIZED-DOWNLOAD:CAPS"/>
- <keyword type="constant" name="GST_MPEGTS_STREAM_TYPE_METADATA_PES_PACKETS" link="gst-plugins-bad-libs-Base-MPEG-TS-sections.html#GST-MPEGTS-STREAM-TYPE-METADATA-PES-PACKETS:CAPS"/>
- <keyword type="constant" name="GST_MPEGTS_STREAM_TYPE_METADATA_SECTIONS" link="gst-plugins-bad-libs-Base-MPEG-TS-sections.html#GST-MPEGTS-STREAM-TYPE-METADATA-SECTIONS:CAPS"/>
- <keyword type="constant" name="GST_MPEGTS_STREAM_TYPE_METADATA_DATA_CAROUSEL" link="gst-plugins-bad-libs-Base-MPEG-TS-sections.html#GST-MPEGTS-STREAM-TYPE-METADATA-DATA-CAROUSEL:CAPS"/>
- <keyword type="constant" name="GST_MPEGTS_STREAM_TYPE_METADATA_OBJECT_CAROUSEL" link="gst-plugins-bad-libs-Base-MPEG-TS-sections.html#GST-MPEGTS-STREAM-TYPE-METADATA-OBJECT-CAROUSEL:CAPS"/>
- <keyword type="constant" name="GST_MPEGTS_STREAM_TYPE_METADATA_SYNCHRONIZED_DOWNLOAD" link="gst-plugins-bad-libs-Base-MPEG-TS-sections.html#GST-MPEGTS-STREAM-TYPE-METADATA-SYNCHRONIZED-DOWNLOAD:CAPS"/>
- <keyword type="constant" name="GST_MPEGTS_STREAM_TYPE_MPEG2_IPMP" link="gst-plugins-bad-libs-Base-MPEG-TS-sections.html#GST-MPEGTS-STREAM-TYPE-MPEG2-IPMP:CAPS"/>
- <keyword type="constant" name="GST_MPEGTS_STREAM_TYPE_VIDEO_H264" link="gst-plugins-bad-libs-Base-MPEG-TS-sections.html#GST-MPEGTS-STREAM-TYPE-VIDEO-H264:CAPS"/>
- <keyword type="constant" name="GST_MPEGTS_STREAM_TYPE_AUDIO_AAC_CLEAN" link="gst-plugins-bad-libs-Base-MPEG-TS-sections.html#GST-MPEGTS-STREAM-TYPE-AUDIO-AAC-CLEAN:CAPS"/>
- <keyword type="constant" name="GST_MPEGTS_STREAM_TYPE_MPEG4_TIMED_TEXT" link="gst-plugins-bad-libs-Base-MPEG-TS-sections.html#GST-MPEGTS-STREAM-TYPE-MPEG4-TIMED-TEXT:CAPS"/>
- <keyword type="constant" name="GST_MPEGTS_STREAM_TYPE_VIDEO_RVC" link="gst-plugins-bad-libs-Base-MPEG-TS-sections.html#GST-MPEGTS-STREAM-TYPE-VIDEO-RVC:CAPS"/>
- <keyword type="constant" name="GST_MPEGTS_STREAM_TYPE_VIDEO_H264_SVC_SUB_BITSTREAM" link="gst-plugins-bad-libs-Base-MPEG-TS-sections.html#GST-MPEGTS-STREAM-TYPE-VIDEO-H264-SVC-SUB-BITSTREAM:CAPS"/>
- <keyword type="constant" name="GST_MPEGTS_STREAM_TYPE_VIDEO_H264_MVC_SUB_BITSTREAM" link="gst-plugins-bad-libs-Base-MPEG-TS-sections.html#GST-MPEGTS-STREAM-TYPE-VIDEO-H264-MVC-SUB-BITSTREAM:CAPS"/>
- <keyword type="constant" name="GST_MPEGTS_STREAM_TYPE_VIDEO_JP2K" link="gst-plugins-bad-libs-Base-MPEG-TS-sections.html#GST-MPEGTS-STREAM-TYPE-VIDEO-JP2K:CAPS"/>
- <keyword type="constant" name="GST_MPEGTS_STREAM_TYPE_VIDEO_MPEG2_STEREO_ADDITIONAL_VIEW" link="gst-plugins-bad-libs-Base-MPEG-TS-sections.html#GST-MPEGTS-STREAM-TYPE-VIDEO-MPEG2-STEREO-ADDITIONAL-VIEW:CAPS"/>
- <keyword type="constant" name="GST_MPEGTS_STREAM_TYPE_VIDEO_H264_STEREO_ADDITIONAL_VIEW" link="gst-plugins-bad-libs-Base-MPEG-TS-sections.html#GST-MPEGTS-STREAM-TYPE-VIDEO-H264-STEREO-ADDITIONAL-VIEW:CAPS"/>
- <keyword type="constant" name="GST_MPEGTS_STREAM_TYPE_VIDEO_HEVC" link="gst-plugins-bad-libs-Base-MPEG-TS-sections.html#GST-MPEGTS-STREAM-TYPE-VIDEO-HEVC:CAPS"/>
- <keyword type="constant" name="GST_MPEGTS_STREAM_TYPE_IPMP_STREAM" link="gst-plugins-bad-libs-Base-MPEG-TS-sections.html#GST-MPEGTS-STREAM-TYPE-IPMP-STREAM:CAPS"/>
- <keyword type="constant" name="GST_MTS_DESC_RESERVED_00" link="gst-plugins-bad-libs-Base-MPEG-TS-descriptors.html#GST-MTS-DESC-RESERVED-00:CAPS"/>
- <keyword type="constant" name="GST_MTS_DESC_RESERVED_01" link="gst-plugins-bad-libs-Base-MPEG-TS-descriptors.html#GST-MTS-DESC-RESERVED-01:CAPS"/>
- <keyword type="constant" name="GST_MTS_DESC_VIDEO_STREAM" link="gst-plugins-bad-libs-Base-MPEG-TS-descriptors.html#GST-MTS-DESC-VIDEO-STREAM:CAPS"/>
- <keyword type="constant" name="GST_MTS_DESC_AUDIO_STREAM" link="gst-plugins-bad-libs-Base-MPEG-TS-descriptors.html#GST-MTS-DESC-AUDIO-STREAM:CAPS"/>
- <keyword type="constant" name="GST_MTS_DESC_HIERARCHY" link="gst-plugins-bad-libs-Base-MPEG-TS-descriptors.html#GST-MTS-DESC-HIERARCHY:CAPS"/>
- <keyword type="constant" name="GST_MTS_DESC_REGISTRATION" link="gst-plugins-bad-libs-Base-MPEG-TS-descriptors.html#GST-MTS-DESC-REGISTRATION:CAPS"/>
- <keyword type="constant" name="GST_MTS_DESC_DATA_STREAM_ALIGNMENT" link="gst-plugins-bad-libs-Base-MPEG-TS-descriptors.html#GST-MTS-DESC-DATA-STREAM-ALIGNMENT:CAPS"/>
- <keyword type="constant" name="GST_MTS_DESC_TARGET_BACKGROUND_GRID" link="gst-plugins-bad-libs-Base-MPEG-TS-descriptors.html#GST-MTS-DESC-TARGET-BACKGROUND-GRID:CAPS"/>
- <keyword type="constant" name="GST_MTS_DESC_VIDEO_WINDOW" link="gst-plugins-bad-libs-Base-MPEG-TS-descriptors.html#GST-MTS-DESC-VIDEO-WINDOW:CAPS"/>
- <keyword type="constant" name="GST_MTS_DESC_CA" link="gst-plugins-bad-libs-Base-MPEG-TS-descriptors.html#GST-MTS-DESC-CA:CAPS"/>
- <keyword type="constant" name="GST_MTS_DESC_ISO_639_LANGUAGE" link="gst-plugins-bad-libs-Base-MPEG-TS-descriptors.html#GST-MTS-DESC-ISO-639-LANGUAGE:CAPS"/>
- <keyword type="constant" name="GST_MTS_DESC_SYSTEM_CLOCK" link="gst-plugins-bad-libs-Base-MPEG-TS-descriptors.html#GST-MTS-DESC-SYSTEM-CLOCK:CAPS"/>
- <keyword type="constant" name="GST_MTS_DESC_MULTIPLEX_BUFFER_UTILISATION" link="gst-plugins-bad-libs-Base-MPEG-TS-descriptors.html#GST-MTS-DESC-MULTIPLEX-BUFFER-UTILISATION:CAPS"/>
- <keyword type="constant" name="GST_MTS_DESC_COPYRIGHT" link="gst-plugins-bad-libs-Base-MPEG-TS-descriptors.html#GST-MTS-DESC-COPYRIGHT:CAPS"/>
- <keyword type="constant" name="GST_MTS_DESC_MAXIMUM_BITRATE" link="gst-plugins-bad-libs-Base-MPEG-TS-descriptors.html#GST-MTS-DESC-MAXIMUM-BITRATE:CAPS"/>
- <keyword type="constant" name="GST_MTS_DESC_PRIVATE_DATA_INDICATOR" link="gst-plugins-bad-libs-Base-MPEG-TS-descriptors.html#GST-MTS-DESC-PRIVATE-DATA-INDICATOR:CAPS"/>
- <keyword type="constant" name="GST_MTS_DESC_SMOOTHING_BUFFER" link="gst-plugins-bad-libs-Base-MPEG-TS-descriptors.html#GST-MTS-DESC-SMOOTHING-BUFFER:CAPS"/>
- <keyword type="constant" name="GST_MTS_DESC_STD" link="gst-plugins-bad-libs-Base-MPEG-TS-descriptors.html#GST-MTS-DESC-STD:CAPS"/>
- <keyword type="constant" name="GST_MTS_DESC_IBP" link="gst-plugins-bad-libs-Base-MPEG-TS-descriptors.html#GST-MTS-DESC-IBP:CAPS"/>
- <keyword type="constant" name="GST_MTS_DESC_DSMCC_CAROUSEL_IDENTIFIER" link="gst-plugins-bad-libs-Base-MPEG-TS-descriptors.html#GST-MTS-DESC-DSMCC-CAROUSEL-IDENTIFIER:CAPS"/>
- <keyword type="constant" name="GST_MTS_DESC_DSMCC_ASSOCIATION_TAG" link="gst-plugins-bad-libs-Base-MPEG-TS-descriptors.html#GST-MTS-DESC-DSMCC-ASSOCIATION-TAG:CAPS"/>
- <keyword type="constant" name="GST_MTS_DESC_DSMCC_DEFERRED_ASSOCIATION_TAG" link="gst-plugins-bad-libs-Base-MPEG-TS-descriptors.html#GST-MTS-DESC-DSMCC-DEFERRED-ASSOCIATION-TAG:CAPS"/>
- <keyword type="constant" name="GST_MTS_DESC_DSMCC_NPT_REFERENCE" link="gst-plugins-bad-libs-Base-MPEG-TS-descriptors.html#GST-MTS-DESC-DSMCC-NPT-REFERENCE:CAPS"/>
- <keyword type="constant" name="GST_MTS_DESC_DSMCC_NPT_ENDPOINT" link="gst-plugins-bad-libs-Base-MPEG-TS-descriptors.html#GST-MTS-DESC-DSMCC-NPT-ENDPOINT:CAPS"/>
- <keyword type="constant" name="GST_MTS_DESC_DSMCC_STREAM_MODE" link="gst-plugins-bad-libs-Base-MPEG-TS-descriptors.html#GST-MTS-DESC-DSMCC-STREAM-MODE:CAPS"/>
- <keyword type="constant" name="GST_MTS_DESC_DSMCC_STREAM_EVENT" link="gst-plugins-bad-libs-Base-MPEG-TS-descriptors.html#GST-MTS-DESC-DSMCC-STREAM-EVENT:CAPS"/>
- <keyword type="constant" name="GST_MTS_DESC_MPEG4_VIDEO" link="gst-plugins-bad-libs-Base-MPEG-TS-descriptors.html#GST-MTS-DESC-MPEG4-VIDEO:CAPS"/>
- <keyword type="constant" name="GST_MTS_DESC_MPEG4_AUDIO" link="gst-plugins-bad-libs-Base-MPEG-TS-descriptors.html#GST-MTS-DESC-MPEG4-AUDIO:CAPS"/>
- <keyword type="constant" name="GST_MTS_DESC_IOD" link="gst-plugins-bad-libs-Base-MPEG-TS-descriptors.html#GST-MTS-DESC-IOD:CAPS"/>
- <keyword type="constant" name="GST_MTS_DESC_SL" link="gst-plugins-bad-libs-Base-MPEG-TS-descriptors.html#GST-MTS-DESC-SL:CAPS"/>
- <keyword type="constant" name="GST_MTS_DESC_FMC" link="gst-plugins-bad-libs-Base-MPEG-TS-descriptors.html#GST-MTS-DESC-FMC:CAPS"/>
- <keyword type="constant" name="GST_MTS_DESC_EXTERNAL_ES_ID" link="gst-plugins-bad-libs-Base-MPEG-TS-descriptors.html#GST-MTS-DESC-EXTERNAL-ES-ID:CAPS"/>
- <keyword type="constant" name="GST_MTS_DESC_MUX_CODE" link="gst-plugins-bad-libs-Base-MPEG-TS-descriptors.html#GST-MTS-DESC-MUX-CODE:CAPS"/>
- <keyword type="constant" name="GST_MTS_DESC_FMX_BUFFER_SIZE" link="gst-plugins-bad-libs-Base-MPEG-TS-descriptors.html#GST-MTS-DESC-FMX-BUFFER-SIZE:CAPS"/>
- <keyword type="constant" name="GST_MTS_DESC_MULTIPLEX_BUFFER" link="gst-plugins-bad-libs-Base-MPEG-TS-descriptors.html#GST-MTS-DESC-MULTIPLEX-BUFFER:CAPS"/>
- <keyword type="constant" name="GST_MTS_DESC_CONTENT_LABELING" link="gst-plugins-bad-libs-Base-MPEG-TS-descriptors.html#GST-MTS-DESC-CONTENT-LABELING:CAPS"/>
- <keyword type="constant" name="GST_MTS_DESC_METADATA_POINTER" link="gst-plugins-bad-libs-Base-MPEG-TS-descriptors.html#GST-MTS-DESC-METADATA-POINTER:CAPS"/>
- <keyword type="constant" name="GST_MTS_DESC_METADATA" link="gst-plugins-bad-libs-Base-MPEG-TS-descriptors.html#GST-MTS-DESC-METADATA:CAPS"/>
- <keyword type="constant" name="GST_MTS_DESC_METADATA_STD" link="gst-plugins-bad-libs-Base-MPEG-TS-descriptors.html#GST-MTS-DESC-METADATA-STD:CAPS"/>
- <keyword type="constant" name="GST_MTS_DESC_AVC_VIDEO" link="gst-plugins-bad-libs-Base-MPEG-TS-descriptors.html#GST-MTS-DESC-AVC-VIDEO:CAPS"/>
- <keyword type="constant" name="GST_MTS_DESC_IPMP" link="gst-plugins-bad-libs-Base-MPEG-TS-descriptors.html#GST-MTS-DESC-IPMP:CAPS"/>
- <keyword type="constant" name="GST_MTS_DESC_AVC_TIMING_AND_HRD" link="gst-plugins-bad-libs-Base-MPEG-TS-descriptors.html#GST-MTS-DESC-AVC-TIMING-AND-HRD:CAPS"/>
- <keyword type="constant" name="GST_MTS_DESC_MPEG2_AAC_AUDIO" link="gst-plugins-bad-libs-Base-MPEG-TS-descriptors.html#GST-MTS-DESC-MPEG2-AAC-AUDIO:CAPS"/>
- <keyword type="constant" name="GST_MTS_DESC_FLEX_MUX_TIMING" link="gst-plugins-bad-libs-Base-MPEG-TS-descriptors.html#GST-MTS-DESC-FLEX-MUX-TIMING:CAPS"/>
- <keyword type="constant" name="GST_MTS_DESC_MPEG4_TEXT" link="gst-plugins-bad-libs-Base-MPEG-TS-descriptors.html#GST-MTS-DESC-MPEG4-TEXT:CAPS"/>
- <keyword type="constant" name="GST_MTS_DESC_MPEG4_AUDIO_EXTENSION" link="gst-plugins-bad-libs-Base-MPEG-TS-descriptors.html#GST-MTS-DESC-MPEG4-AUDIO-EXTENSION:CAPS"/>
- <keyword type="constant" name="GST_MTS_DESC_AUXILIARY_VIDEO_STREAM" link="gst-plugins-bad-libs-Base-MPEG-TS-descriptors.html#GST-MTS-DESC-AUXILIARY-VIDEO-STREAM:CAPS"/>
- <keyword type="constant" name="GST_MTS_DESC_SVC_EXTENSION" link="gst-plugins-bad-libs-Base-MPEG-TS-descriptors.html#GST-MTS-DESC-SVC-EXTENSION:CAPS"/>
- <keyword type="constant" name="GST_MTS_DESC_MVC_EXTENSION" link="gst-plugins-bad-libs-Base-MPEG-TS-descriptors.html#GST-MTS-DESC-MVC-EXTENSION:CAPS"/>
- <keyword type="constant" name="GST_MTS_DESC_J2K_VIDEO" link="gst-plugins-bad-libs-Base-MPEG-TS-descriptors.html#GST-MTS-DESC-J2K-VIDEO:CAPS"/>
- <keyword type="constant" name="GST_MTS_DESC_MVC_OPERATION_POINT" link="gst-plugins-bad-libs-Base-MPEG-TS-descriptors.html#GST-MTS-DESC-MVC-OPERATION-POINT:CAPS"/>
- <keyword type="constant" name="GST_MTS_DESC_MPEG2_STEREOSCOPIC_VIDEO_FORMAT" link="gst-plugins-bad-libs-Base-MPEG-TS-descriptors.html#GST-MTS-DESC-MPEG2-STEREOSCOPIC-VIDEO-FORMAT:CAPS"/>
- <keyword type="constant" name="GST_MTS_DESC_STEREOSCOPIC_PROGRAM_INFO" link="gst-plugins-bad-libs-Base-MPEG-TS-descriptors.html#GST-MTS-DESC-STEREOSCOPIC-PROGRAM-INFO:CAPS"/>
- <keyword type="constant" name="GST_MTS_DESC_STEREOSCOPIC_VIDEO_INFO" link="gst-plugins-bad-libs-Base-MPEG-TS-descriptors.html#GST-MTS-DESC-STEREOSCOPIC-VIDEO-INFO:CAPS"/>
- <keyword type="constant" name="GST_MTS_DESC_AC3_AUDIO_STREAM" link="gst-plugins-bad-libs-Base-MPEG-TS-descriptors.html#GST-MTS-DESC-AC3-AUDIO-STREAM:CAPS"/>
- <keyword type="constant" name="GST_MTS_DESC_DTG_LOGICAL_CHANNEL" link="gst-plugins-bad-libs-Base-MPEG-TS-descriptors.html#GST-MTS-DESC-DTG-LOGICAL-CHANNEL:CAPS"/>
- <keyword type="constant" name="GST_MPEGTS_AUDIO_TYPE_UNDEFINED" link="gst-plugins-bad-libs-Base-MPEG-TS-descriptors.html#GST-MPEGTS-AUDIO-TYPE-UNDEFINED:CAPS"/>
- <keyword type="constant" name="GST_MPEGTS_AUDIO_TYPE_CLEAN_EFFECTS" link="gst-plugins-bad-libs-Base-MPEG-TS-descriptors.html#GST-MPEGTS-AUDIO-TYPE-CLEAN-EFFECTS:CAPS"/>
- <keyword type="constant" name="GST_MPEGTS_AUDIO_TYPE_HEARING_IMPAIRED" link="gst-plugins-bad-libs-Base-MPEG-TS-descriptors.html#GST-MPEGTS-AUDIO-TYPE-HEARING-IMPAIRED:CAPS"/>
- <keyword type="constant" name="GST_MPEGTS_AUDIO_TYPE_VISUAL_IMPAIRED_COMMENTARY" link="gst-plugins-bad-libs-Base-MPEG-TS-descriptors.html#GST-MPEGTS-AUDIO-TYPE-VISUAL-IMPAIRED-COMMENTARY:CAPS"/>
- <keyword type="constant" name="GST_MTS_TABLE_ID_ATSC_MASTER_GUIDE" link="gst-plugins-bad-libs-ATSC-variants-of-MPEG-TS-sections.html#GST-MTS-TABLE-ID-ATSC-MASTER-GUIDE:CAPS"/>
- <keyword type="constant" name="GST_MTS_TABLE_ID_ATSC_TERRESTRIAL_VIRTUAL_CHANNEL" link="gst-plugins-bad-libs-ATSC-variants-of-MPEG-TS-sections.html#GST-MTS-TABLE-ID-ATSC-TERRESTRIAL-VIRTUAL-CHANNEL:CAPS"/>
- <keyword type="constant" name="GST_MTS_TABLE_ID_ATSC_CABLE_VIRTUAL_CHANNEL" link="gst-plugins-bad-libs-ATSC-variants-of-MPEG-TS-sections.html#GST-MTS-TABLE-ID-ATSC-CABLE-VIRTUAL-CHANNEL:CAPS"/>
- <keyword type="constant" name="GST_MTS_TABLE_ID_ATSC_RATING_REGION" link="gst-plugins-bad-libs-ATSC-variants-of-MPEG-TS-sections.html#GST-MTS-TABLE-ID-ATSC-RATING-REGION:CAPS"/>
- <keyword type="constant" name="GST_MTS_TABLE_ID_ATSC_EVENT_INFORMATION" link="gst-plugins-bad-libs-ATSC-variants-of-MPEG-TS-sections.html#GST-MTS-TABLE-ID-ATSC-EVENT-INFORMATION:CAPS"/>
- <keyword type="constant" name="GST_MTS_TABLE_ID_ATSC_CHANNEL_OR_EVENT_EXTENDED_TEXT" link="gst-plugins-bad-libs-ATSC-variants-of-MPEG-TS-sections.html#GST-MTS-TABLE-ID-ATSC-CHANNEL-OR-EVENT-EXTENDED-TEXT:CAPS"/>
- <keyword type="constant" name="GST_MTS_TABLE_ID_ATSC_SYSTEM_TIME" link="gst-plugins-bad-libs-ATSC-variants-of-MPEG-TS-sections.html#GST-MTS-TABLE-ID-ATSC-SYSTEM-TIME:CAPS"/>
- <keyword type="constant" name="GST_MTS_TABLE_ID_ATSC_DATA_EVENT" link="gst-plugins-bad-libs-ATSC-variants-of-MPEG-TS-sections.html#GST-MTS-TABLE-ID-ATSC-DATA-EVENT:CAPS"/>
- <keyword type="constant" name="GST_MTS_TABLE_ID_ATSC_DATA_SERVICE" link="gst-plugins-bad-libs-ATSC-variants-of-MPEG-TS-sections.html#GST-MTS-TABLE-ID-ATSC-DATA-SERVICE:CAPS"/>
- <keyword type="constant" name="GST_MTS_TABLE_ID_ATSC_NETWORK_RESOURCE" link="gst-plugins-bad-libs-ATSC-variants-of-MPEG-TS-sections.html#GST-MTS-TABLE-ID-ATSC-NETWORK-RESOURCE:CAPS"/>
- <keyword type="constant" name="GST_MTS_TABLE_ID_ATSC_LONG_TERM_SERVICE" link="gst-plugins-bad-libs-ATSC-variants-of-MPEG-TS-sections.html#GST-MTS-TABLE-ID-ATSC-LONG-TERM-SERVICE:CAPS"/>
- <keyword type="constant" name="GST_MTS_TABLE_ID_ATSC_DIRECTED_CHANNEL_CHANGE" link="gst-plugins-bad-libs-ATSC-variants-of-MPEG-TS-sections.html#GST-MTS-TABLE-ID-ATSC-DIRECTED-CHANNEL-CHANGE:CAPS"/>
- <keyword type="constant" name="GST_MTS_TABLE_ID_ATSC_DIRECTED_CHANNEL_CHANGE_SECTION_CODE" link="gst-plugins-bad-libs-ATSC-variants-of-MPEG-TS-sections.html#GST-MTS-TABLE-ID-ATSC-DIRECTED-CHANNEL-CHANGE-SECTION-CODE:CAPS"/>
- <keyword type="constant" name="GST_MTS_TABLE_ID_ATSC_AGGREGATE_EVENT_INFORMATION" link="gst-plugins-bad-libs-ATSC-variants-of-MPEG-TS-sections.html#GST-MTS-TABLE-ID-ATSC-AGGREGATE-EVENT-INFORMATION:CAPS"/>
- <keyword type="constant" name="GST_MTS_TABLE_ID_ATSC_AGGREGATE_EXTENDED_TEXT" link="gst-plugins-bad-libs-ATSC-variants-of-MPEG-TS-sections.html#GST-MTS-TABLE-ID-ATSC-AGGREGATE-EXTENDED-TEXT:CAPS"/>
- <keyword type="constant" name="GST_MTS_TABLE_ID_ATSC_AGGREGATE_DATA_EVENT" link="gst-plugins-bad-libs-ATSC-variants-of-MPEG-TS-sections.html#GST-MTS-TABLE-ID-ATSC-AGGREGATE-DATA-EVENT:CAPS"/>
- <keyword type="constant" name="GST_MTS_TABLE_ID_ATSC_SATELLITE_VIRTUAL_CHANNEL" link="gst-plugins-bad-libs-ATSC-variants-of-MPEG-TS-sections.html#GST-MTS-TABLE-ID-ATSC-SATELLITE-VIRTUAL-CHANNEL:CAPS"/>
- <keyword type="constant" name="GST_MPEGTS_ATSC_MGT_TABLE_TYPE_EIT0" link="gst-plugins-bad-libs-ATSC-variants-of-MPEG-TS-sections.html#GST-MPEGTS-ATSC-MGT-TABLE-TYPE-EIT0:CAPS"/>
- <keyword type="constant" name="GST_MPEGTS_ATSC_MGT_TABLE_TYPE_EIT127" link="gst-plugins-bad-libs-ATSC-variants-of-MPEG-TS-sections.html#GST-MPEGTS-ATSC-MGT-TABLE-TYPE-EIT127:CAPS"/>
- <keyword type="constant" name="GST_MPEGTS_ATSC_MGT_TABLE_TYPE_ETT0" link="gst-plugins-bad-libs-ATSC-variants-of-MPEG-TS-sections.html#GST-MPEGTS-ATSC-MGT-TABLE-TYPE-ETT0:CAPS"/>
- <keyword type="constant" name="GST_MPEGTS_ATSC_MGT_TABLE_TYPE_ETT127" link="gst-plugins-bad-libs-ATSC-variants-of-MPEG-TS-sections.html#GST-MPEGTS-ATSC-MGT-TABLE-TYPE-ETT127:CAPS"/>
- <keyword type="constant" name="GST_MTS_TABLE_ID_NETWORK_INFORMATION_ACTUAL_NETWORK" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-sections.html#GST-MTS-TABLE-ID-NETWORK-INFORMATION-ACTUAL-NETWORK:CAPS"/>
- <keyword type="constant" name="GST_MTS_TABLE_ID_NETWORK_INFORMATION_OTHER_NETWORK" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-sections.html#GST-MTS-TABLE-ID-NETWORK-INFORMATION-OTHER-NETWORK:CAPS"/>
- <keyword type="constant" name="GST_MTS_TABLE_ID_SERVICE_DESCRIPTION_ACTUAL_TS" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-sections.html#GST-MTS-TABLE-ID-SERVICE-DESCRIPTION-ACTUAL-TS:CAPS"/>
- <keyword type="constant" name="GST_MTS_TABLE_ID_SERVICE_DESCRIPTION_OTHER_TS" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-sections.html#GST-MTS-TABLE-ID-SERVICE-DESCRIPTION-OTHER-TS:CAPS"/>
- <keyword type="constant" name="GST_MTS_TABLE_ID_BOUQUET_ASSOCIATION" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-sections.html#GST-MTS-TABLE-ID-BOUQUET-ASSOCIATION:CAPS"/>
- <keyword type="constant" name="GST_MTS_TABLE_ID_EVENT_INFORMATION_ACTUAL_TS_PRESENT" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-sections.html#GST-MTS-TABLE-ID-EVENT-INFORMATION-ACTUAL-TS-PRESENT:CAPS"/>
- <keyword type="constant" name="GST_MTS_TABLE_ID_EVENT_INFORMATION_OTHER_TS_PRESENT" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-sections.html#GST-MTS-TABLE-ID-EVENT-INFORMATION-OTHER-TS-PRESENT:CAPS"/>
- <keyword type="constant" name="GST_MTS_TABLE_ID_EVENT_INFORMATION_ACTUAL_TS_SCHEDULE_1" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-sections.html#GST-MTS-TABLE-ID-EVENT-INFORMATION-ACTUAL-TS-SCHEDULE-1:CAPS"/>
- <keyword type="constant" name="GST_MTS_TABLE_ID_EVENT_INFORMATION_ACTUAL_TS_SCHEDULE_N" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-sections.html#GST-MTS-TABLE-ID-EVENT-INFORMATION-ACTUAL-TS-SCHEDULE-N:CAPS"/>
- <keyword type="constant" name="GST_MTS_TABLE_ID_EVENT_INFORMATION_OTHER_TS_SCHEDULE_1" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-sections.html#GST-MTS-TABLE-ID-EVENT-INFORMATION-OTHER-TS-SCHEDULE-1:CAPS"/>
- <keyword type="constant" name="GST_MTS_TABLE_ID_EVENT_INFORMATION_OTHER_TS_SCHEDULE_N" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-sections.html#GST-MTS-TABLE-ID-EVENT-INFORMATION-OTHER-TS-SCHEDULE-N:CAPS"/>
- <keyword type="constant" name="GST_MTS_TABLE_ID_TIME_DATE" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-sections.html#GST-MTS-TABLE-ID-TIME-DATE:CAPS"/>
- <keyword type="constant" name="GST_MTS_TABLE_ID_RUNNING_STATUS" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-sections.html#GST-MTS-TABLE-ID-RUNNING-STATUS:CAPS"/>
- <keyword type="constant" name="GST_MTS_TABLE_ID_STUFFING" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-sections.html#GST-MTS-TABLE-ID-STUFFING:CAPS"/>
- <keyword type="constant" name="GST_MTS_TABLE_ID_TIME_OFFSET" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-sections.html#GST-MTS-TABLE-ID-TIME-OFFSET:CAPS"/>
- <keyword type="constant" name="GST_MTS_TABLE_ID_APPLICATION_INFORMATION_TABLE" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-sections.html#GST-MTS-TABLE-ID-APPLICATION-INFORMATION-TABLE:CAPS"/>
- <keyword type="constant" name="GST_MTS_TABLE_ID_CONTAINER" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-sections.html#GST-MTS-TABLE-ID-CONTAINER:CAPS"/>
- <keyword type="constant" name="GST_MTS_TABLE_ID_RELATED_CONTENT" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-sections.html#GST-MTS-TABLE-ID-RELATED-CONTENT:CAPS"/>
- <keyword type="constant" name="GST_MTS_TABLE_ID_CONTENT_IDENTIFIER" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-sections.html#GST-MTS-TABLE-ID-CONTENT-IDENTIFIER:CAPS"/>
- <keyword type="constant" name="GST_MTS_TABLE_ID_MPE_FEC" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-sections.html#GST-MTS-TABLE-ID-MPE-FEC:CAPS"/>
- <keyword type="constant" name="GST_MTS_TABLE_ID_RESOLUTION_NOTIFICATION" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-sections.html#GST-MTS-TABLE-ID-RESOLUTION-NOTIFICATION:CAPS"/>
- <keyword type="constant" name="GST_MTS_TABLE_ID_MPE_IFEC" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-sections.html#GST-MTS-TABLE-ID-MPE-IFEC:CAPS"/>
- <keyword type="constant" name="GST_MTS_TABLE_ID_DISCONTINUITY_INFORMATION" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-sections.html#GST-MTS-TABLE-ID-DISCONTINUITY-INFORMATION:CAPS"/>
- <keyword type="constant" name="GST_MTS_TABLE_ID_SELECTION_INFORMATION" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-sections.html#GST-MTS-TABLE-ID-SELECTION-INFORMATION:CAPS"/>
- <keyword type="constant" name="GST_MTS_TABLE_ID_CA_MESSAGE_ECM_0" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-sections.html#GST-MTS-TABLE-ID-CA-MESSAGE-ECM-0:CAPS"/>
- <keyword type="constant" name="GST_MTS_TABLE_ID_CA_MESSAGE_ECM_1" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-sections.html#GST-MTS-TABLE-ID-CA-MESSAGE-ECM-1:CAPS"/>
- <keyword type="constant" name="GST_MTS_TABLE_ID_CA_MESSAGE_SYSTEM_PRIVATE_1" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-sections.html#GST-MTS-TABLE-ID-CA-MESSAGE-SYSTEM-PRIVATE-1:CAPS"/>
- <keyword type="constant" name="GST_MTS_TABLE_ID_CA_MESSAGE_SYSTEM_PRIVATE_N" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-sections.html#GST-MTS-TABLE-ID-CA-MESSAGE-SYSTEM-PRIVATE-N:CAPS"/>
- <keyword type="constant" name="GST_MTS_TABLE_ID_SCT" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-sections.html#GST-MTS-TABLE-ID-SCT:CAPS"/>
- <keyword type="constant" name="GST_MTS_TABLE_ID_FCT" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-sections.html#GST-MTS-TABLE-ID-FCT:CAPS"/>
- <keyword type="constant" name="GST_MTS_TABLE_ID_TCT" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-sections.html#GST-MTS-TABLE-ID-TCT:CAPS"/>
- <keyword type="constant" name="GST_MTS_TABLE_ID_SPT" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-sections.html#GST-MTS-TABLE-ID-SPT:CAPS"/>
- <keyword type="constant" name="GST_MTS_TABLE_ID_CMT" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-sections.html#GST-MTS-TABLE-ID-CMT:CAPS"/>
- <keyword type="constant" name="GST_MTS_TABLE_ID_TBTP" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-sections.html#GST-MTS-TABLE-ID-TBTP:CAPS"/>
- <keyword type="constant" name="GST_MTS_TABLE_ID_PCR_PACKET_PAYLOAD" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-sections.html#GST-MTS-TABLE-ID-PCR-PACKET-PAYLOAD:CAPS"/>
- <keyword type="constant" name="GST_MTS_TABLE_ID_TRANSMISSION_MODE_SUPPORT_PAYLOAD" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-sections.html#GST-MTS-TABLE-ID-TRANSMISSION-MODE-SUPPORT-PAYLOAD:CAPS"/>
- <keyword type="constant" name="GST_MTS_TABLE_ID_TIM" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-sections.html#GST-MTS-TABLE-ID-TIM:CAPS"/>
- <keyword type="constant" name="GST_MTS_TABLE_ID_LL_FEC_PARITY_DATA_TABLE" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-sections.html#GST-MTS-TABLE-ID-LL-FEC-PARITY-DATA-TABLE:CAPS"/>
- <keyword type="constant" name="GST_MPEGTS_RUNNING_STATUS_UNDEFINED" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-sections.html#GST-MPEGTS-RUNNING-STATUS-UNDEFINED:CAPS"/>
- <keyword type="constant" name="GST_MPEGTS_RUNNING_STATUS_NOT_RUNNING" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-sections.html#GST-MPEGTS-RUNNING-STATUS-NOT-RUNNING:CAPS"/>
- <keyword type="constant" name="GST_MPEGTS_RUNNING_STATUS_STARTS_IN_FEW_SECONDS" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-sections.html#GST-MPEGTS-RUNNING-STATUS-STARTS-IN-FEW-SECONDS:CAPS"/>
- <keyword type="constant" name="GST_MPEGTS_RUNNING_STATUS_PAUSING" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-sections.html#GST-MPEGTS-RUNNING-STATUS-PAUSING:CAPS"/>
- <keyword type="constant" name="GST_MPEGTS_RUNNING_STATUS_RUNNING" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-sections.html#GST-MPEGTS-RUNNING-STATUS-RUNNING:CAPS"/>
- <keyword type="constant" name="GST_MPEGTS_RUNNING_STATUS_OFF_AIR" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-sections.html#GST-MPEGTS-RUNNING-STATUS-OFF-AIR:CAPS"/>
- <keyword type="constant" name="GST_MTS_DESC_ATSC_STUFFING" link="gst-plugins-bad-libs-ATSC-variants-of-MPEG-TS-descriptors.html#GST-MTS-DESC-ATSC-STUFFING:CAPS"/>
- <keyword type="constant" name="GST_MTS_DESC_ATSC_AC3" link="gst-plugins-bad-libs-ATSC-variants-of-MPEG-TS-descriptors.html#GST-MTS-DESC-ATSC-AC3:CAPS"/>
- <keyword type="constant" name="GST_MTS_DESC_ATSC_CAPTION_SERVICE" link="gst-plugins-bad-libs-ATSC-variants-of-MPEG-TS-descriptors.html#GST-MTS-DESC-ATSC-CAPTION-SERVICE:CAPS"/>
- <keyword type="constant" name="GST_MTS_DESC_ATSC_CONTENT_ADVISORY" link="gst-plugins-bad-libs-ATSC-variants-of-MPEG-TS-descriptors.html#GST-MTS-DESC-ATSC-CONTENT-ADVISORY:CAPS"/>
- <keyword type="constant" name="GST_MTS_DESC_ATSC_EXTENDED_CHANNEL_NAME" link="gst-plugins-bad-libs-ATSC-variants-of-MPEG-TS-descriptors.html#GST-MTS-DESC-ATSC-EXTENDED-CHANNEL-NAME:CAPS"/>
- <keyword type="constant" name="GST_MTS_DESC_ATSC_SERVICE_LOCATION" link="gst-plugins-bad-libs-ATSC-variants-of-MPEG-TS-descriptors.html#GST-MTS-DESC-ATSC-SERVICE-LOCATION:CAPS"/>
- <keyword type="constant" name="GST_MTS_DESC_ATSC_TIME_SHIFTED_SERVICE" link="gst-plugins-bad-libs-ATSC-variants-of-MPEG-TS-descriptors.html#GST-MTS-DESC-ATSC-TIME-SHIFTED-SERVICE:CAPS"/>
- <keyword type="constant" name="GST_MTS_DESC_ATSC_COMPONENT_NAME" link="gst-plugins-bad-libs-ATSC-variants-of-MPEG-TS-descriptors.html#GST-MTS-DESC-ATSC-COMPONENT-NAME:CAPS"/>
- <keyword type="constant" name="GST_MTS_DESC_ATSC_DCC_DEPARTING_REQUEST" link="gst-plugins-bad-libs-ATSC-variants-of-MPEG-TS-descriptors.html#GST-MTS-DESC-ATSC-DCC-DEPARTING-REQUEST:CAPS"/>
- <keyword type="constant" name="GST_MTS_DESC_ATSC_DCC_ARRIVING_REQUEST" link="gst-plugins-bad-libs-ATSC-variants-of-MPEG-TS-descriptors.html#GST-MTS-DESC-ATSC-DCC-ARRIVING-REQUEST:CAPS"/>
- <keyword type="constant" name="GST_MTS_DESC_ATSC_REDISTRIBUTION_CONTROL" link="gst-plugins-bad-libs-ATSC-variants-of-MPEG-TS-descriptors.html#GST-MTS-DESC-ATSC-REDISTRIBUTION-CONTROL:CAPS"/>
- <keyword type="constant" name="GST_MTS_DESC_ATSC_GENRE" link="gst-plugins-bad-libs-ATSC-variants-of-MPEG-TS-descriptors.html#GST-MTS-DESC-ATSC-GENRE:CAPS"/>
- <keyword type="constant" name="GST_MTS_DESC_ATSC_PRIVATE_INFORMATION" link="gst-plugins-bad-libs-ATSC-variants-of-MPEG-TS-descriptors.html#GST-MTS-DESC-ATSC-PRIVATE-INFORMATION:CAPS"/>
- <keyword type="constant" name="GST_MTS_DESC_ATSC_ENHANCED_SIGNALING" link="gst-plugins-bad-libs-ATSC-variants-of-MPEG-TS-descriptors.html#GST-MTS-DESC-ATSC-ENHANCED-SIGNALING:CAPS"/>
- <keyword type="constant" name="GST_MTS_DESC_ATSC_DATA_SERVICE" link="gst-plugins-bad-libs-ATSC-variants-of-MPEG-TS-descriptors.html#GST-MTS-DESC-ATSC-DATA-SERVICE:CAPS"/>
- <keyword type="constant" name="GST_MTS_DESC_ATSC_PID_COUNT" link="gst-plugins-bad-libs-ATSC-variants-of-MPEG-TS-descriptors.html#GST-MTS-DESC-ATSC-PID-COUNT:CAPS"/>
- <keyword type="constant" name="GST_MTS_DESC_ATSC_DOWNLOAD_DESCRIPTOR" link="gst-plugins-bad-libs-ATSC-variants-of-MPEG-TS-descriptors.html#GST-MTS-DESC-ATSC-DOWNLOAD-DESCRIPTOR:CAPS"/>
- <keyword type="constant" name="GST_MTS_DESC_ATSC_MULTIPROTOCOL_ENCAPSULATION" link="gst-plugins-bad-libs-ATSC-variants-of-MPEG-TS-descriptors.html#GST-MTS-DESC-ATSC-MULTIPROTOCOL-ENCAPSULATION:CAPS"/>
- <keyword type="constant" name="GST_MTS_DESC_ATSC_MODULE_LINK" link="gst-plugins-bad-libs-ATSC-variants-of-MPEG-TS-descriptors.html#GST-MTS-DESC-ATSC-MODULE-LINK:CAPS"/>
- <keyword type="constant" name="GST_MTS_DESC_ATSC_CRC32" link="gst-plugins-bad-libs-ATSC-variants-of-MPEG-TS-descriptors.html#GST-MTS-DESC-ATSC-CRC32:CAPS"/>
- <keyword type="constant" name="GST_MTS_DESC_ATSC_GROUP_LINK" link="gst-plugins-bad-libs-ATSC-variants-of-MPEG-TS-descriptors.html#GST-MTS-DESC-ATSC-GROUP-LINK:CAPS"/>
- <keyword type="constant" name="GST_MTS_DESC_DVB_NETWORK_NAME" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GST-MTS-DESC-DVB-NETWORK-NAME:CAPS"/>
- <keyword type="constant" name="GST_MTS_DESC_DVB_SERVICE_LIST" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GST-MTS-DESC-DVB-SERVICE-LIST:CAPS"/>
- <keyword type="constant" name="GST_MTS_DESC_DVB_STUFFING" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GST-MTS-DESC-DVB-STUFFING:CAPS"/>
- <keyword type="constant" name="GST_MTS_DESC_DVB_SATELLITE_DELIVERY_SYSTEM" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GST-MTS-DESC-DVB-SATELLITE-DELIVERY-SYSTEM:CAPS"/>
- <keyword type="constant" name="GST_MTS_DESC_DVB_CABLE_DELIVERY_SYSTEM" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GST-MTS-DESC-DVB-CABLE-DELIVERY-SYSTEM:CAPS"/>
- <keyword type="constant" name="GST_MTS_DESC_DVB_VBI_DATA" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GST-MTS-DESC-DVB-VBI-DATA:CAPS"/>
- <keyword type="constant" name="GST_MTS_DESC_DVB_VBI_TELETEXT" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GST-MTS-DESC-DVB-VBI-TELETEXT:CAPS"/>
- <keyword type="constant" name="GST_MTS_DESC_DVB_BOUQUET_NAME" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GST-MTS-DESC-DVB-BOUQUET-NAME:CAPS"/>
- <keyword type="constant" name="GST_MTS_DESC_DVB_SERVICE" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GST-MTS-DESC-DVB-SERVICE:CAPS"/>
- <keyword type="constant" name="GST_MTS_DESC_DVB_COUNTRY_AVAILABILITY" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GST-MTS-DESC-DVB-COUNTRY-AVAILABILITY:CAPS"/>
- <keyword type="constant" name="GST_MTS_DESC_DVB_LINKAGE" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GST-MTS-DESC-DVB-LINKAGE:CAPS"/>
- <keyword type="constant" name="GST_MTS_DESC_DVB_NVOD_REFERENCE" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GST-MTS-DESC-DVB-NVOD-REFERENCE:CAPS"/>
- <keyword type="constant" name="GST_MTS_DESC_DVB_TIME_SHIFTED_SERVICE" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GST-MTS-DESC-DVB-TIME-SHIFTED-SERVICE:CAPS"/>
- <keyword type="constant" name="GST_MTS_DESC_DVB_SHORT_EVENT" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GST-MTS-DESC-DVB-SHORT-EVENT:CAPS"/>
- <keyword type="constant" name="GST_MTS_DESC_DVB_EXTENDED_EVENT" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GST-MTS-DESC-DVB-EXTENDED-EVENT:CAPS"/>
- <keyword type="constant" name="GST_MTS_DESC_DVB_TIME_SHIFTED_EVENT" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GST-MTS-DESC-DVB-TIME-SHIFTED-EVENT:CAPS"/>
- <keyword type="constant" name="GST_MTS_DESC_DVB_COMPONENT" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GST-MTS-DESC-DVB-COMPONENT:CAPS"/>
- <keyword type="constant" name="GST_MTS_DESC_DVB_MOSAIC" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GST-MTS-DESC-DVB-MOSAIC:CAPS"/>
- <keyword type="constant" name="GST_MTS_DESC_DVB_STREAM_IDENTIFIER" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GST-MTS-DESC-DVB-STREAM-IDENTIFIER:CAPS"/>
- <keyword type="constant" name="GST_MTS_DESC_DVB_CA_IDENTIFIER" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GST-MTS-DESC-DVB-CA-IDENTIFIER:CAPS"/>
- <keyword type="constant" name="GST_MTS_DESC_DVB_CONTENT" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GST-MTS-DESC-DVB-CONTENT:CAPS"/>
- <keyword type="constant" name="GST_MTS_DESC_DVB_PARENTAL_RATING" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GST-MTS-DESC-DVB-PARENTAL-RATING:CAPS"/>
- <keyword type="constant" name="GST_MTS_DESC_DVB_TELETEXT" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GST-MTS-DESC-DVB-TELETEXT:CAPS"/>
- <keyword type="constant" name="GST_MTS_DESC_DVB_TELEPHONE" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GST-MTS-DESC-DVB-TELEPHONE:CAPS"/>
- <keyword type="constant" name="GST_MTS_DESC_DVB_LOCAL_TIME_OFFSET" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GST-MTS-DESC-DVB-LOCAL-TIME-OFFSET:CAPS"/>
- <keyword type="constant" name="GST_MTS_DESC_DVB_SUBTITLING" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GST-MTS-DESC-DVB-SUBTITLING:CAPS"/>
- <keyword type="constant" name="GST_MTS_DESC_DVB_TERRESTRIAL_DELIVERY_SYSTEM" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GST-MTS-DESC-DVB-TERRESTRIAL-DELIVERY-SYSTEM:CAPS"/>
- <keyword type="constant" name="GST_MTS_DESC_DVB_MULTILINGUAL_NETWORK_NAME" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GST-MTS-DESC-DVB-MULTILINGUAL-NETWORK-NAME:CAPS"/>
- <keyword type="constant" name="GST_MTS_DESC_DVB_MULTILINGUAL_BOUQUET_NAME" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GST-MTS-DESC-DVB-MULTILINGUAL-BOUQUET-NAME:CAPS"/>
- <keyword type="constant" name="GST_MTS_DESC_DVB_MULTILINGUAL_SERVICE_NAME" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GST-MTS-DESC-DVB-MULTILINGUAL-SERVICE-NAME:CAPS"/>
- <keyword type="constant" name="GST_MTS_DESC_DVB_MULTILINGUAL_COMPONENT" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GST-MTS-DESC-DVB-MULTILINGUAL-COMPONENT:CAPS"/>
- <keyword type="constant" name="GST_MTS_DESC_DVB_PRIVATE_DATA_SPECIFIER" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GST-MTS-DESC-DVB-PRIVATE-DATA-SPECIFIER:CAPS"/>
- <keyword type="constant" name="GST_MTS_DESC_DVB_SERVICE_MOVE" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GST-MTS-DESC-DVB-SERVICE-MOVE:CAPS"/>
- <keyword type="constant" name="GST_MTS_DESC_DVB_SHORT_SMOOTHING_BUFFER" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GST-MTS-DESC-DVB-SHORT-SMOOTHING-BUFFER:CAPS"/>
- <keyword type="constant" name="GST_MTS_DESC_DVB_FREQUENCY_LIST" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GST-MTS-DESC-DVB-FREQUENCY-LIST:CAPS"/>
- <keyword type="constant" name="GST_MTS_DESC_DVB_PARTIAL_TRANSPORT_STREAM" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GST-MTS-DESC-DVB-PARTIAL-TRANSPORT-STREAM:CAPS"/>
- <keyword type="constant" name="GST_MTS_DESC_DVB_DATA_BROADCAST" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GST-MTS-DESC-DVB-DATA-BROADCAST:CAPS"/>
- <keyword type="constant" name="GST_MTS_DESC_DVB_SCRAMBLING" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GST-MTS-DESC-DVB-SCRAMBLING:CAPS"/>
- <keyword type="constant" name="GST_MTS_DESC_DVB_DATA_BROADCAST_ID" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GST-MTS-DESC-DVB-DATA-BROADCAST-ID:CAPS"/>
- <keyword type="constant" name="GST_MTS_DESC_DVB_TRANSPORT_STREAM" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GST-MTS-DESC-DVB-TRANSPORT-STREAM:CAPS"/>
- <keyword type="constant" name="GST_MTS_DESC_DVB_DSNG" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GST-MTS-DESC-DVB-DSNG:CAPS"/>
- <keyword type="constant" name="GST_MTS_DESC_DVB_PDC" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GST-MTS-DESC-DVB-PDC:CAPS"/>
- <keyword type="constant" name="GST_MTS_DESC_DVB_AC3" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GST-MTS-DESC-DVB-AC3:CAPS"/>
- <keyword type="constant" name="GST_MTS_DESC_DVB_ANCILLARY_DATA" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GST-MTS-DESC-DVB-ANCILLARY-DATA:CAPS"/>
- <keyword type="constant" name="GST_MTS_DESC_DVB_CELL_LIST" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GST-MTS-DESC-DVB-CELL-LIST:CAPS"/>
- <keyword type="constant" name="GST_MTS_DESC_DVB_CELL_FREQUENCY_LINK" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GST-MTS-DESC-DVB-CELL-FREQUENCY-LINK:CAPS"/>
- <keyword type="constant" name="GST_MTS_DESC_DVB_ANNOUNCEMENT_SUPPORT" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GST-MTS-DESC-DVB-ANNOUNCEMENT-SUPPORT:CAPS"/>
- <keyword type="constant" name="GST_MTS_DESC_DVB_APPLICATION_SIGNALLING" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GST-MTS-DESC-DVB-APPLICATION-SIGNALLING:CAPS"/>
- <keyword type="constant" name="GST_MTS_DESC_DVB_ADAPTATION_FIELD_DATA" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GST-MTS-DESC-DVB-ADAPTATION-FIELD-DATA:CAPS"/>
- <keyword type="constant" name="GST_MTS_DESC_DVB_SERVICE_IDENTIFIER" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GST-MTS-DESC-DVB-SERVICE-IDENTIFIER:CAPS"/>
- <keyword type="constant" name="GST_MTS_DESC_DVB_SERVICE_AVAILABILITY" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GST-MTS-DESC-DVB-SERVICE-AVAILABILITY:CAPS"/>
- <keyword type="constant" name="GST_MTS_DESC_DVB_DEFAULT_AUTHORITY" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GST-MTS-DESC-DVB-DEFAULT-AUTHORITY:CAPS"/>
- <keyword type="constant" name="GST_MTS_DESC_DVB_RELATED_CONTENT" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GST-MTS-DESC-DVB-RELATED-CONTENT:CAPS"/>
- <keyword type="constant" name="GST_MTS_DESC_DVB_TVA_ID" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GST-MTS-DESC-DVB-TVA-ID:CAPS"/>
- <keyword type="constant" name="GST_MTS_DESC_DVB_CONTENT_IDENTIFIER" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GST-MTS-DESC-DVB-CONTENT-IDENTIFIER:CAPS"/>
- <keyword type="constant" name="GST_MTS_DESC_DVB_TIMESLICE_FEC_IDENTIFIER" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GST-MTS-DESC-DVB-TIMESLICE-FEC-IDENTIFIER:CAPS"/>
- <keyword type="constant" name="GST_MTS_DESC_DVB_ECM_REPETITION_RATE" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GST-MTS-DESC-DVB-ECM-REPETITION-RATE:CAPS"/>
- <keyword type="constant" name="GST_MTS_DESC_DVB_S2_SATELLITE_DELIVERY_SYSTEM" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GST-MTS-DESC-DVB-S2-SATELLITE-DELIVERY-SYSTEM:CAPS"/>
- <keyword type="constant" name="GST_MTS_DESC_DVB_ENHANCED_AC3" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GST-MTS-DESC-DVB-ENHANCED-AC3:CAPS"/>
- <keyword type="constant" name="GST_MTS_DESC_DVB_DTS" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GST-MTS-DESC-DVB-DTS:CAPS"/>
- <keyword type="constant" name="GST_MTS_DESC_DVB_AAC" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GST-MTS-DESC-DVB-AAC:CAPS"/>
- <keyword type="constant" name="GST_MTS_DESC_DVB_XAIT_LOCATION" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GST-MTS-DESC-DVB-XAIT-LOCATION:CAPS"/>
- <keyword type="constant" name="GST_MTS_DESC_DVB_FTA_CONTENT_MANAGEMENT" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GST-MTS-DESC-DVB-FTA-CONTENT-MANAGEMENT:CAPS"/>
- <keyword type="constant" name="GST_MTS_DESC_DVB_EXTENSION" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GST-MTS-DESC-DVB-EXTENSION:CAPS"/>
- <keyword type="constant" name="GST_MTS_DESC_EXT_DVB_IMAGE_ICON" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GST-MTS-DESC-EXT-DVB-IMAGE-ICON:CAPS"/>
- <keyword type="constant" name="GST_MTS_DESC_EXT_DVB_CPCM_DELIVERY_SIGNALLING" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GST-MTS-DESC-EXT-DVB-CPCM-DELIVERY-SIGNALLING:CAPS"/>
- <keyword type="constant" name="GST_MTS_DESC_EXT_DVB_CP" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GST-MTS-DESC-EXT-DVB-CP:CAPS"/>
- <keyword type="constant" name="GST_MTS_DESC_EXT_DVB_CP_IDENTIFIER" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GST-MTS-DESC-EXT-DVB-CP-IDENTIFIER:CAPS"/>
- <keyword type="constant" name="GST_MTS_DESC_EXT_DVB_T2_DELIVERY_SYSTEM" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GST-MTS-DESC-EXT-DVB-T2-DELIVERY-SYSTEM:CAPS"/>
- <keyword type="constant" name="GST_MTS_DESC_EXT_DVB_SH_DELIVERY_SYSTEM" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GST-MTS-DESC-EXT-DVB-SH-DELIVERY-SYSTEM:CAPS"/>
- <keyword type="constant" name="GST_MTS_DESC_EXT_DVB_SUPPLEMENTARY_AUDIO" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GST-MTS-DESC-EXT-DVB-SUPPLEMENTARY-AUDIO:CAPS"/>
- <keyword type="constant" name="GST_MTS_DESC_EXT_DVB_NETWORK_CHANGE_NOTIFY" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GST-MTS-DESC-EXT-DVB-NETWORK-CHANGE-NOTIFY:CAPS"/>
- <keyword type="constant" name="GST_MTS_DESC_EXT_DVB_MESSAGE" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GST-MTS-DESC-EXT-DVB-MESSAGE:CAPS"/>
- <keyword type="constant" name="GST_MTS_DESC_EXT_DVB_TARGET_REGION" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GST-MTS-DESC-EXT-DVB-TARGET-REGION:CAPS"/>
- <keyword type="constant" name="GST_MTS_DESC_EXT_DVB_TARGET_REGION_NAME" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GST-MTS-DESC-EXT-DVB-TARGET-REGION-NAME:CAPS"/>
- <keyword type="constant" name="GST_MTS_DESC_EXT_DVB_SERVICE_RELOCATED" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GST-MTS-DESC-EXT-DVB-SERVICE-RELOCATED:CAPS"/>
- <keyword type="constant" name="GST_MTS_DESC_EXT_DVB_XAIT_PID" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GST-MTS-DESC-EXT-DVB-XAIT-PID:CAPS"/>
- <keyword type="constant" name="GST_MTS_DESC_EXT_DVB_C2_DELIVERY_SYSTEM" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GST-MTS-DESC-EXT-DVB-C2-DELIVERY-SYSTEM:CAPS"/>
- <keyword type="constant" name="GST_MTS_DESC_EXT_DVB_DTS_HD_AUDIO_STREAM" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GST-MTS-DESC-EXT-DVB-DTS-HD-AUDIO-STREAM:CAPS"/>
- <keyword type="constant" name="GST_MTS_DESC_EXT_DVB_DTS_NEUTRAL" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GST-MTS-DESC-EXT-DVB-DTS-NEUTRAL:CAPS"/>
- <keyword type="constant" name="GST_MTS_DESC_EXT_DVB_VIDEO_DEPTH_RANGE" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GST-MTS-DESC-EXT-DVB-VIDEO-DEPTH-RANGE:CAPS"/>
- <keyword type="constant" name="GST_MTS_DESC_EXT_DVB_T2MI" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GST-MTS-DESC-EXT-DVB-T2MI:CAPS"/>
- <keyword type="constant" name="GST_MTS_DESC_EXT_DVB_URI_LINKAGE" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GST-MTS-DESC-EXT-DVB-URI-LINKAGE:CAPS"/>
- <keyword type="constant" name="GST_MPEGTS_FEC_NONE" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GST-MPEGTS-FEC-NONE:CAPS"/>
- <keyword type="constant" name="GST_MPEGTS_FEC_1_2" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GST-MPEGTS-FEC-1-2:CAPS"/>
- <keyword type="constant" name="GST_MPEGTS_FEC_2_3" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GST-MPEGTS-FEC-2-3:CAPS"/>
- <keyword type="constant" name="GST_MPEGTS_FEC_3_4" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GST-MPEGTS-FEC-3-4:CAPS"/>
- <keyword type="constant" name="GST_MPEGTS_FEC_4_5" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GST-MPEGTS-FEC-4-5:CAPS"/>
- <keyword type="constant" name="GST_MPEGTS_FEC_5_6" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GST-MPEGTS-FEC-5-6:CAPS"/>
- <keyword type="constant" name="GST_MPEGTS_FEC_6_7" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GST-MPEGTS-FEC-6-7:CAPS"/>
- <keyword type="constant" name="GST_MPEGTS_FEC_7_8" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GST-MPEGTS-FEC-7-8:CAPS"/>
- <keyword type="constant" name="GST_MPEGTS_FEC_8_9" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GST-MPEGTS-FEC-8-9:CAPS"/>
- <keyword type="constant" name="GST_MPEGTS_FEC_AUTO" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GST-MPEGTS-FEC-AUTO:CAPS"/>
- <keyword type="constant" name="GST_MPEGTS_FEC_3_5" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GST-MPEGTS-FEC-3-5:CAPS"/>
- <keyword type="constant" name="GST_MPEGTS_FEC_9_10" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GST-MPEGTS-FEC-9-10:CAPS"/>
- <keyword type="constant" name="GST_MPEGTS_FEC_2_5" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GST-MPEGTS-FEC-2-5:CAPS"/>
- <keyword type="constant" name="GST_MPEGTS_MODULATION_QPSK" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GST-MPEGTS-MODULATION-QPSK:CAPS"/>
- <keyword type="constant" name="GST_MPEGTS_MODULATION_QAM_16" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GST-MPEGTS-MODULATION-QAM-16:CAPS"/>
- <keyword type="constant" name="GST_MPEGTS_MODULATION_QAM_32" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GST-MPEGTS-MODULATION-QAM-32:CAPS"/>
- <keyword type="constant" name="GST_MPEGTS_MODULATION_QAM_64" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GST-MPEGTS-MODULATION-QAM-64:CAPS"/>
- <keyword type="constant" name="GST_MPEGTS_MODULATION_QAM_128" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GST-MPEGTS-MODULATION-QAM-128:CAPS"/>
- <keyword type="constant" name="GST_MPEGTS_MODULATION_QAM_256" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GST-MPEGTS-MODULATION-QAM-256:CAPS"/>
- <keyword type="constant" name="GST_MPEGTS_MODULATION_QAM_AUTO" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GST-MPEGTS-MODULATION-QAM-AUTO:CAPS"/>
- <keyword type="constant" name="GST_MPEGTS_MODULATION_VSB_8" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GST-MPEGTS-MODULATION-VSB-8:CAPS"/>
- <keyword type="constant" name="GST_MPEGTS_MODULATION_VSB_16" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GST-MPEGTS-MODULATION-VSB-16:CAPS"/>
- <keyword type="constant" name="GST_MPEGTS_MODULATION_PSK_8" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GST-MPEGTS-MODULATION-PSK-8:CAPS"/>
- <keyword type="constant" name="GST_MPEGTS_MODULATION_APSK_16" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GST-MPEGTS-MODULATION-APSK-16:CAPS"/>
- <keyword type="constant" name="GST_MPEGTS_MODULATION_APSK_32" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GST-MPEGTS-MODULATION-APSK-32:CAPS"/>
- <keyword type="constant" name="GST_MPEGTS_MODULATION_DQPSK" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GST-MPEGTS-MODULATION-DQPSK:CAPS"/>
- <keyword type="constant" name="GST_MPEGTS_MODULATION_QAM_4_NR_" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GST-MPEGTS-MODULATION-QAM-4-NR-:CAPS"/>
- <keyword type="constant" name="GST_MPEGTS_MODULATION_NONE" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GST-MPEGTS-MODULATION-NONE:CAPS"/>
- <keyword type="constant" name="GST_MPEGTS_POLARIZATION_LINEAR_HORIZONTAL" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GST-MPEGTS-POLARIZATION-LINEAR-HORIZONTAL:CAPS"/>
- <keyword type="constant" name="GST_MPEGTS_POLARIZATION_LINEAR_VERTICAL" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GST-MPEGTS-POLARIZATION-LINEAR-VERTICAL:CAPS"/>
- <keyword type="constant" name="GST_MPEGTS_POLARIZATION_CIRCULAR_LEFT" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GST-MPEGTS-POLARIZATION-CIRCULAR-LEFT:CAPS"/>
- <keyword type="constant" name="GST_MPEGTS_POLARIZATION_CIRCULAR_RIGHT" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GST-MPEGTS-POLARIZATION-CIRCULAR-RIGHT:CAPS"/>
- <keyword type="constant" name="GST_MPEGTS_ROLLOFF_35" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GST-MPEGTS-ROLLOFF-35:CAPS"/>
- <keyword type="constant" name="GST_MPEGTS_ROLLOFF_20" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GST-MPEGTS-ROLLOFF-20:CAPS"/>
- <keyword type="constant" name="GST_MPEGTS_ROLLOFF_25" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GST-MPEGTS-ROLLOFF-25:CAPS"/>
- <keyword type="constant" name="GST_MPEGTS_ROLLOFF_RESERVED" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GST-MPEGTS-ROLLOFF-RESERVED:CAPS"/>
- <keyword type="constant" name="GST_MPEGTS_ROLLOFF_AUTO" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GST-MPEGTS-ROLLOFF-AUTO:CAPS"/>
- <keyword type="constant" name="GST_MPEGTS_CABLE_OUTER_FEC_UNDEFINED" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GST-MPEGTS-CABLE-OUTER-FEC-UNDEFINED:CAPS"/>
- <keyword type="constant" name="GST_MPEGTS_CABLE_OUTER_FEC_NONE" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GST-MPEGTS-CABLE-OUTER-FEC-NONE:CAPS"/>
- <keyword type="constant" name="GST_MPEGTS_CABLE_OUTER_FEC_RS_204_188" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GST-MPEGTS-CABLE-OUTER-FEC-RS-204-188:CAPS"/>
- <keyword type="constant" name="GST_MPEGTS_TRANSMISSION_MODE_2K" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GST-MPEGTS-TRANSMISSION-MODE-2K:CAPS"/>
- <keyword type="constant" name="GST_MPEGTS_TRANSMISSION_MODE_8K" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GST-MPEGTS-TRANSMISSION-MODE-8K:CAPS"/>
- <keyword type="constant" name="GST_MPEGTS_TRANSMISSION_MODE_AUTO" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GST-MPEGTS-TRANSMISSION-MODE-AUTO:CAPS"/>
- <keyword type="constant" name="GST_MPEGTS_TRANSMISSION_MODE_4K" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GST-MPEGTS-TRANSMISSION-MODE-4K:CAPS"/>
- <keyword type="constant" name="GST_MPEGTS_TRANSMISSION_MODE_1K" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GST-MPEGTS-TRANSMISSION-MODE-1K:CAPS"/>
- <keyword type="constant" name="GST_MPEGTS_TRANSMISSION_MODE_16K" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GST-MPEGTS-TRANSMISSION-MODE-16K:CAPS"/>
- <keyword type="constant" name="GST_MPEGTS_TRANSMISSION_MODE_32K" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GST-MPEGTS-TRANSMISSION-MODE-32K:CAPS"/>
- <keyword type="constant" name="GST_MPEGTS_TRANSMISSION_MODE_C1" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GST-MPEGTS-TRANSMISSION-MODE-C1:CAPS"/>
- <keyword type="constant" name="GST_MPEGTS_TRANSMISSION_MODE_C3780" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GST-MPEGTS-TRANSMISSION-MODE-C3780:CAPS"/>
- <keyword type="constant" name="GST_MPEGTS_GUARD_INTERVAL_1_32" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GST-MPEGTS-GUARD-INTERVAL-1-32:CAPS"/>
- <keyword type="constant" name="GST_MPEGTS_GUARD_INTERVAL_1_16" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GST-MPEGTS-GUARD-INTERVAL-1-16:CAPS"/>
- <keyword type="constant" name="GST_MPEGTS_GUARD_INTERVAL_1_8" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GST-MPEGTS-GUARD-INTERVAL-1-8:CAPS"/>
- <keyword type="constant" name="GST_MPEGTS_GUARD_INTERVAL_1_4" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GST-MPEGTS-GUARD-INTERVAL-1-4:CAPS"/>
- <keyword type="constant" name="GST_MPEGTS_GUARD_INTERVAL_AUTO" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GST-MPEGTS-GUARD-INTERVAL-AUTO:CAPS"/>
- <keyword type="constant" name="GST_MPEGTS_GUARD_INTERVAL_1_128" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GST-MPEGTS-GUARD-INTERVAL-1-128:CAPS"/>
- <keyword type="constant" name="GST_MPEGTS_GUARD_INTERVAL_19_128" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GST-MPEGTS-GUARD-INTERVAL-19-128:CAPS"/>
- <keyword type="constant" name="GST_MPEGTS_GUARD_INTERVAL_19_256" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GST-MPEGTS-GUARD-INTERVAL-19-256:CAPS"/>
- <keyword type="constant" name="GST_MPEGTS_GUARD_INTERVAL_PN420" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GST-MPEGTS-GUARD-INTERVAL-PN420:CAPS"/>
- <keyword type="constant" name="GST_MPEGTS_GUARD_INTERVAL_PN595" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GST-MPEGTS-GUARD-INTERVAL-PN595:CAPS"/>
- <keyword type="constant" name="GST_MPEGTS_GUARD_INTERVAL_PN945" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GST-MPEGTS-GUARD-INTERVAL-PN945:CAPS"/>
- <keyword type="constant" name="GST_MPEGTS_HIERARCHY_NONE" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GST-MPEGTS-HIERARCHY-NONE:CAPS"/>
- <keyword type="constant" name="GST_MPEGTS_HIERARCHY_1" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GST-MPEGTS-HIERARCHY-1:CAPS"/>
- <keyword type="constant" name="GST_MPEGTS_HIERARCHY_2" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GST-MPEGTS-HIERARCHY-2:CAPS"/>
- <keyword type="constant" name="GST_MPEGTS_HIERARCHY_4" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GST-MPEGTS-HIERARCHY-4:CAPS"/>
- <keyword type="constant" name="GST_MPEGTS_HIERARCHY_AUTO" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GST-MPEGTS-HIERARCHY-AUTO:CAPS"/>
- <keyword type="constant" name="GST_DVB_SERVICE_RESERVED_00" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GST-DVB-SERVICE-RESERVED-00:CAPS"/>
- <keyword type="constant" name="GST_DVB_SERVICE_DIGITAL_TELEVISION" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GST-DVB-SERVICE-DIGITAL-TELEVISION:CAPS"/>
- <keyword type="constant" name="GST_DVB_SERVICE_DIGITAL_RADIO_SOUND" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GST-DVB-SERVICE-DIGITAL-RADIO-SOUND:CAPS"/>
- <keyword type="constant" name="GST_DVB_SERVICE_TELETEXT" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GST-DVB-SERVICE-TELETEXT:CAPS"/>
- <keyword type="constant" name="GST_DVB_SERVICE_NVOD_REFERENCE" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GST-DVB-SERVICE-NVOD-REFERENCE:CAPS"/>
- <keyword type="constant" name="GST_DVB_SERVICE_NVOD_TIME_SHIFTED" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GST-DVB-SERVICE-NVOD-TIME-SHIFTED:CAPS"/>
- <keyword type="constant" name="GST_DVB_SERVICE_MOSAIC" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GST-DVB-SERVICE-MOSAIC:CAPS"/>
- <keyword type="constant" name="GST_DVB_SERVICE_FM_RADIO" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GST-DVB-SERVICE-FM-RADIO:CAPS"/>
- <keyword type="constant" name="GST_DVB_SERVICE_DVB_SRM" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GST-DVB-SERVICE-DVB-SRM:CAPS"/>
- <keyword type="constant" name="GST_DVB_SERVICE_RESERVED_09" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GST-DVB-SERVICE-RESERVED-09:CAPS"/>
- <keyword type="constant" name="GST_DVB_SERVICE_ADVANCED_CODEC_DIGITAL_RADIO_SOUND" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GST-DVB-SERVICE-ADVANCED-CODEC-DIGITAL-RADIO-SOUND:CAPS"/>
- <keyword type="constant" name="GST_DVB_SERVICE_ADVANCED_CODEC_MOSAIC" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GST-DVB-SERVICE-ADVANCED-CODEC-MOSAIC:CAPS"/>
- <keyword type="constant" name="GST_DVB_SERVICE_DATA_BROADCAST" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GST-DVB-SERVICE-DATA-BROADCAST:CAPS"/>
- <keyword type="constant" name="GST_DVB_SERVICE_RESERVED_0D_COMMON_INTERFACE" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GST-DVB-SERVICE-RESERVED-0D-COMMON-INTERFACE:CAPS"/>
- <keyword type="constant" name="GST_DVB_SERVICE_RCS_MAP" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GST-DVB-SERVICE-RCS-MAP:CAPS"/>
- <keyword type="constant" name="GST_DVB_SERVICE_RCS_FLS" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GST-DVB-SERVICE-RCS-FLS:CAPS"/>
- <keyword type="constant" name="GST_DVB_SERVICE_DVB_MHP" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GST-DVB-SERVICE-DVB-MHP:CAPS"/>
- <keyword type="constant" name="GST_DVB_SERVICE_MPEG2_HD_DIGITAL_TELEVISION" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GST-DVB-SERVICE-MPEG2-HD-DIGITAL-TELEVISION:CAPS"/>
- <keyword type="constant" name="GST_DVB_SERVICE_ADVANCED_CODEC_SD_DIGITAL_TELEVISION" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GST-DVB-SERVICE-ADVANCED-CODEC-SD-DIGITAL-TELEVISION:CAPS"/>
- <keyword type="constant" name="GST_DVB_SERVICE_ADVANCED_CODEC_SD_NVOD_TIME_SHIFTED" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GST-DVB-SERVICE-ADVANCED-CODEC-SD-NVOD-TIME-SHIFTED:CAPS"/>
- <keyword type="constant" name="GST_DVB_SERVICE_ADVANCED_CODEC_SD_NVOD_REFERENCE" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GST-DVB-SERVICE-ADVANCED-CODEC-SD-NVOD-REFERENCE:CAPS"/>
- <keyword type="constant" name="GST_DVB_SERVICE_ADVANCED_CODEC_HD_DIGITAL_TELEVISION" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GST-DVB-SERVICE-ADVANCED-CODEC-HD-DIGITAL-TELEVISION:CAPS"/>
- <keyword type="constant" name="GST_DVB_SERVICE_ADVANCED_CODEC_HD_NVOD_TIME_SHIFTED" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GST-DVB-SERVICE-ADVANCED-CODEC-HD-NVOD-TIME-SHIFTED:CAPS"/>
- <keyword type="constant" name="GST_DVB_SERVICE_ADVANCED_CODEC_HD_NVOD_REFERENCE" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GST-DVB-SERVICE-ADVANCED-CODEC-HD-NVOD-REFERENCE:CAPS"/>
- <keyword type="constant" name="GST_DVB_SERVICE_ADVANCED_CODEC_STEREO_HD_DIGITAL_TELEVISION" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GST-DVB-SERVICE-ADVANCED-CODEC-STEREO-HD-DIGITAL-TELEVISION:CAPS"/>
- <keyword type="constant" name="GST_DVB_SERVICE_ADVANCED_CODEC_STEREO_HD_NVOD_TIME_SHIFTED" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GST-DVB-SERVICE-ADVANCED-CODEC-STEREO-HD-NVOD-TIME-SHIFTED:CAPS"/>
- <keyword type="constant" name="GST_DVB_SERVICE_ADVANCED_CODEC_STEREO_HD_NVOD_REFERENCE" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GST-DVB-SERVICE-ADVANCED-CODEC-STEREO-HD-NVOD-REFERENCE:CAPS"/>
- <keyword type="constant" name="GST_DVB_SERVICE_RESERVED_FF" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GST-DVB-SERVICE-RESERVED-FF:CAPS"/>
- <keyword type="constant" name="INITIAL_PAGE" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#INITIAL-PAGE:CAPS"/>
- <keyword type="constant" name="SUBTITLE_PAGE" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#SUBTITLE-PAGE:CAPS"/>
- <keyword type="constant" name="ADDITIONAL_INFO_PAGE" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#ADDITIONAL-INFO-PAGE:CAPS"/>
- <keyword type="constant" name="PROGRAMME_SCHEDULE_PAGE" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#PROGRAMME-SCHEDULE-PAGE:CAPS"/>
- <keyword type="constant" name="HEARING_IMPAIRED_PAGE" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#HEARING-IMPAIRED-PAGE:CAPS"/>
- <keyword type="constant" name="GST_MPEGTS_DVB_LINKAGE_RESERVED_00" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GST-MPEGTS-DVB-LINKAGE-RESERVED-00:CAPS"/>
- <keyword type="constant" name="GST_MPEGTS_DVB_LINKAGE_INFORMATION" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GST-MPEGTS-DVB-LINKAGE-INFORMATION:CAPS"/>
- <keyword type="constant" name="GST_MPEGTS_DVB_LINKAGE_EPG" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GST-MPEGTS-DVB-LINKAGE-EPG:CAPS"/>
- <keyword type="constant" name="GST_MPEGTS_DVB_LINKAGE_CA_REPLACEMENT" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GST-MPEGTS-DVB-LINKAGE-CA-REPLACEMENT:CAPS"/>
- <keyword type="constant" name="GST_MPEGTS_DVB_LINKAGE_TS_CONTAINING_COMPLETE_SI" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GST-MPEGTS-DVB-LINKAGE-TS-CONTAINING-COMPLETE-SI:CAPS"/>
- <keyword type="constant" name="GST_MPEGTS_DVB_LINKAGE_SERVICE_REPLACEMENT" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GST-MPEGTS-DVB-LINKAGE-SERVICE-REPLACEMENT:CAPS"/>
- <keyword type="constant" name="GST_MPEGTS_DVB_LINKAGE_DATA_BROADCAST" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GST-MPEGTS-DVB-LINKAGE-DATA-BROADCAST:CAPS"/>
- <keyword type="constant" name="GST_MPEGTS_DVB_LINKAGE_RCS_MAP" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GST-MPEGTS-DVB-LINKAGE-RCS-MAP:CAPS"/>
- <keyword type="constant" name="GST_MPEGTS_DVB_LINKAGE_MOBILE_HAND_OVER" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GST-MPEGTS-DVB-LINKAGE-MOBILE-HAND-OVER:CAPS"/>
- <keyword type="constant" name="GST_MPEGTS_DVB_LINKAGE_SYSTEM_SOFTWARE_UPDATE" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GST-MPEGTS-DVB-LINKAGE-SYSTEM-SOFTWARE-UPDATE:CAPS"/>
- <keyword type="constant" name="GST_MPEGTS_DVB_LINKAGE_TS_CONTAINING_SSU" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GST-MPEGTS-DVB-LINKAGE-TS-CONTAINING-SSU:CAPS"/>
- <keyword type="constant" name="GST_MPEGTS_DVB_LINKAGE_IP_MAC_NOTIFICATION" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GST-MPEGTS-DVB-LINKAGE-IP-MAC-NOTIFICATION:CAPS"/>
- <keyword type="constant" name="GST_MPEGTS_DVB_LINKAGE_TS_CONTAINING_INT" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GST-MPEGTS-DVB-LINKAGE-TS-CONTAINING-INT:CAPS"/>
- <keyword type="constant" name="GST_MPEGTS_DVB_LINKAGE_EVENT" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GST-MPEGTS-DVB-LINKAGE-EVENT:CAPS"/>
- <keyword type="constant" name="GST_MPEGTS_DVB_LINKAGE_EXTENDED_EVENT" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GST-MPEGTS-DVB-LINKAGE-EXTENDED-EVENT:CAPS"/>
- <keyword type="constant" name="GST_MPEGTS_DVB_LINKAGE_HAND_OVER_RESERVED" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GST-MPEGTS-DVB-LINKAGE-HAND-OVER-RESERVED:CAPS"/>
- <keyword type="constant" name="GST_MPEGTS_DVB_LINKAGE_HAND_OVER_IDENTICAL" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GST-MPEGTS-DVB-LINKAGE-HAND-OVER-IDENTICAL:CAPS"/>
- <keyword type="constant" name="GST_MPEGTS_DVB_LINKAGE_HAND_OVER_LOCAL_VARIATION" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GST-MPEGTS-DVB-LINKAGE-HAND-OVER-LOCAL-VARIATION:CAPS"/>
- <keyword type="constant" name="GST_MPEGTS_DVB_LINKAGE_HAND_OVER_ASSOCIATED" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GST-MPEGTS-DVB-LINKAGE-HAND-OVER-ASSOCIATED:CAPS"/>
- <keyword type="constant" name="GST_MPEGTS_DVB_SCRAMBLING_MODE_RESERVED" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GST-MPEGTS-DVB-SCRAMBLING-MODE-RESERVED:CAPS"/>
- <keyword type="constant" name="GST_MPEGTS_DVB_SCRAMBLING_MODE_CSA1" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GST-MPEGTS-DVB-SCRAMBLING-MODE-CSA1:CAPS"/>
- <keyword type="constant" name="GST_MPEGTS_DVB_SCRAMBLING_MODE_CSA2" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GST-MPEGTS-DVB-SCRAMBLING-MODE-CSA2:CAPS"/>
- <keyword type="constant" name="GST_MPEGTS_DVB_SCRAMBLING_MODE_CSA3_STANDARD" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GST-MPEGTS-DVB-SCRAMBLING-MODE-CSA3-STANDARD:CAPS"/>
- <keyword type="constant" name="GST_MPEGTS_DVB_SCRAMBLING_MODE_CSA3_MINIMAL_ENHANCED" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GST-MPEGTS-DVB-SCRAMBLING-MODE-CSA3-MINIMAL-ENHANCED:CAPS"/>
- <keyword type="constant" name="GST_MPEGTS_DVB_SCRAMBLING_MODE_CSA3_FULL_ENHANCED" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GST-MPEGTS-DVB-SCRAMBLING-MODE-CSA3-FULL-ENHANCED:CAPS"/>
- <keyword type="constant" name="GST_MPEGTS_DVB_SCRAMBLING_MODE_CISSA" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GST-MPEGTS-DVB-SCRAMBLING-MODE-CISSA:CAPS"/>
- <keyword type="constant" name="GST_MPEGTS_DVB_SCRAMBLING_MODE_ATIS_0" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GST-MPEGTS-DVB-SCRAMBLING-MODE-ATIS-0:CAPS"/>
- <keyword type="constant" name="GST_MPEGTS_DVB_SCRAMBLING_MODE_ATIS_F" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GST-MPEGTS-DVB-SCRAMBLING-MODE-ATIS-F:CAPS"/>
- <keyword type="constant" name="GST_MTS_DESC_ISDB_HIERARCHICAL_TRANSMISSION" link="gst-plugins-bad-libs-ISDB-variants-of-MPEG-TS-descriptors.html#GST-MTS-DESC-ISDB-HIERARCHICAL-TRANSMISSION:CAPS"/>
- <keyword type="constant" name="GST_MTS_DESC_ISDB_DIGITAL_COPY_CONTROL" link="gst-plugins-bad-libs-ISDB-variants-of-MPEG-TS-descriptors.html#GST-MTS-DESC-ISDB-DIGITAL-COPY-CONTROL:CAPS"/>
- <keyword type="constant" name="GST_MTS_DESC_ISDB_NETWORK_IDENTIFICATION" link="gst-plugins-bad-libs-ISDB-variants-of-MPEG-TS-descriptors.html#GST-MTS-DESC-ISDB-NETWORK-IDENTIFICATION:CAPS"/>
- <keyword type="constant" name="GST_MTS_DESC_ISDB_PARTIAL_TS_TIME" link="gst-plugins-bad-libs-ISDB-variants-of-MPEG-TS-descriptors.html#GST-MTS-DESC-ISDB-PARTIAL-TS-TIME:CAPS"/>
- <keyword type="constant" name="GST_MTS_DESC_ISDB_AUDIO_COMPONENT" link="gst-plugins-bad-libs-ISDB-variants-of-MPEG-TS-descriptors.html#GST-MTS-DESC-ISDB-AUDIO-COMPONENT:CAPS"/>
- <keyword type="constant" name="GST_MTS_DESC_ISDB_HYPERLINK" link="gst-plugins-bad-libs-ISDB-variants-of-MPEG-TS-descriptors.html#GST-MTS-DESC-ISDB-HYPERLINK:CAPS"/>
- <keyword type="constant" name="GST_MTS_DESC_ISDB_TARGET_REGION" link="gst-plugins-bad-libs-ISDB-variants-of-MPEG-TS-descriptors.html#GST-MTS-DESC-ISDB-TARGET-REGION:CAPS"/>
- <keyword type="constant" name="GST_MTS_DESC_ISDB_DATA_CONTENT" link="gst-plugins-bad-libs-ISDB-variants-of-MPEG-TS-descriptors.html#GST-MTS-DESC-ISDB-DATA-CONTENT:CAPS"/>
- <keyword type="constant" name="GST_MTS_DESC_ISDB_VIDEO_DECODE_CONTROL" link="gst-plugins-bad-libs-ISDB-variants-of-MPEG-TS-descriptors.html#GST-MTS-DESC-ISDB-VIDEO-DECODE-CONTROL:CAPS"/>
- <keyword type="constant" name="GST_MTS_DESC_ISDB_DOWNLOAD_CONTENT" link="gst-plugins-bad-libs-ISDB-variants-of-MPEG-TS-descriptors.html#GST-MTS-DESC-ISDB-DOWNLOAD-CONTENT:CAPS"/>
- <keyword type="constant" name="GST_MTS_DESC_ISDB_CA_EMM_TS" link="gst-plugins-bad-libs-ISDB-variants-of-MPEG-TS-descriptors.html#GST-MTS-DESC-ISDB-CA-EMM-TS:CAPS"/>
- <keyword type="constant" name="GST_MTS_DESC_ISDB_CA_CONTRACT_INFORMATION" link="gst-plugins-bad-libs-ISDB-variants-of-MPEG-TS-descriptors.html#GST-MTS-DESC-ISDB-CA-CONTRACT-INFORMATION:CAPS"/>
- <keyword type="constant" name="GST_MTS_DESC_ISDB_CA_SERVICE" link="gst-plugins-bad-libs-ISDB-variants-of-MPEG-TS-descriptors.html#GST-MTS-DESC-ISDB-CA-SERVICE:CAPS"/>
- <keyword type="constant" name="GST_MTS_DESC_ISDB_TS_INFORMATION" link="gst-plugins-bad-libs-ISDB-variants-of-MPEG-TS-descriptors.html#GST-MTS-DESC-ISDB-TS-INFORMATION:CAPS"/>
- <keyword type="constant" name="GST_MTS_DESC_ISDB_EXTENDED_BROADCASTER" link="gst-plugins-bad-libs-ISDB-variants-of-MPEG-TS-descriptors.html#GST-MTS-DESC-ISDB-EXTENDED-BROADCASTER:CAPS"/>
- <keyword type="constant" name="GST_MTS_DESC_ISDB_LOGO_TRANSMISSION" link="gst-plugins-bad-libs-ISDB-variants-of-MPEG-TS-descriptors.html#GST-MTS-DESC-ISDB-LOGO-TRANSMISSION:CAPS"/>
- <keyword type="constant" name="GST_MTS_DESC_ISDB_BASIC_LOCAL_EVENT" link="gst-plugins-bad-libs-ISDB-variants-of-MPEG-TS-descriptors.html#GST-MTS-DESC-ISDB-BASIC-LOCAL-EVENT:CAPS"/>
- <keyword type="constant" name="GST_MTS_DESC_ISDB_REFERENCE" link="gst-plugins-bad-libs-ISDB-variants-of-MPEG-TS-descriptors.html#GST-MTS-DESC-ISDB-REFERENCE:CAPS"/>
- <keyword type="constant" name="GST_MTS_DESC_ISDB_NODE_RELATION" link="gst-plugins-bad-libs-ISDB-variants-of-MPEG-TS-descriptors.html#GST-MTS-DESC-ISDB-NODE-RELATION:CAPS"/>
- <keyword type="constant" name="GST_MTS_DESC_ISDB_SHORT_NODE_INFORMATION" link="gst-plugins-bad-libs-ISDB-variants-of-MPEG-TS-descriptors.html#GST-MTS-DESC-ISDB-SHORT-NODE-INFORMATION:CAPS"/>
- <keyword type="constant" name="GST_MTS_DESC_ISDB_STC_REFERENCE" link="gst-plugins-bad-libs-ISDB-variants-of-MPEG-TS-descriptors.html#GST-MTS-DESC-ISDB-STC-REFERENCE:CAPS"/>
- <keyword type="constant" name="GST_MTS_DESC_ISDB_SERIES" link="gst-plugins-bad-libs-ISDB-variants-of-MPEG-TS-descriptors.html#GST-MTS-DESC-ISDB-SERIES:CAPS"/>
- <keyword type="constant" name="GST_MTS_DESC_ISDB_EVENT_GROUP" link="gst-plugins-bad-libs-ISDB-variants-of-MPEG-TS-descriptors.html#GST-MTS-DESC-ISDB-EVENT-GROUP:CAPS"/>
- <keyword type="constant" name="GST_MTS_DESC_ISDB_SI_PARAMETER" link="gst-plugins-bad-libs-ISDB-variants-of-MPEG-TS-descriptors.html#GST-MTS-DESC-ISDB-SI-PARAMETER:CAPS"/>
- <keyword type="constant" name="GST_MTS_DESC_ISDB_BROADCASTER_NAME" link="gst-plugins-bad-libs-ISDB-variants-of-MPEG-TS-descriptors.html#GST-MTS-DESC-ISDB-BROADCASTER-NAME:CAPS"/>
- <keyword type="constant" name="GST_MTS_DESC_ISDB_COMPONENT_GROUP" link="gst-plugins-bad-libs-ISDB-variants-of-MPEG-TS-descriptors.html#GST-MTS-DESC-ISDB-COMPONENT-GROUP:CAPS"/>
- <keyword type="constant" name="GST_MTS_DESC_ISDB_SI_PRIME_TS" link="gst-plugins-bad-libs-ISDB-variants-of-MPEG-TS-descriptors.html#GST-MTS-DESC-ISDB-SI-PRIME-TS:CAPS"/>
- <keyword type="constant" name="GST_MTS_DESC_ISDB_BOARD_INFORMATION" link="gst-plugins-bad-libs-ISDB-variants-of-MPEG-TS-descriptors.html#GST-MTS-DESC-ISDB-BOARD-INFORMATION:CAPS"/>
- <keyword type="constant" name="GST_MTS_DESC_ISDB_LDT_LINKAGE" link="gst-plugins-bad-libs-ISDB-variants-of-MPEG-TS-descriptors.html#GST-MTS-DESC-ISDB-LDT-LINKAGE:CAPS"/>
- <keyword type="constant" name="GST_MTS_DESC_ISDB_CONNECTED_TRANSMISSION" link="gst-plugins-bad-libs-ISDB-variants-of-MPEG-TS-descriptors.html#GST-MTS-DESC-ISDB-CONNECTED-TRANSMISSION:CAPS"/>
- <keyword type="constant" name="GST_MTS_DESC_ISDB_CONTENT_AVAILABILITY" link="gst-plugins-bad-libs-ISDB-variants-of-MPEG-TS-descriptors.html#GST-MTS-DESC-ISDB-CONTENT-AVAILABILITY:CAPS"/>
- <keyword type="constant" name="GST_MTS_DESC_ISDB_SERVICE_GROUP" link="gst-plugins-bad-libs-ISDB-variants-of-MPEG-TS-descriptors.html#GST-MTS-DESC-ISDB-SERVICE-GROUP:CAPS"/>
+ <keyword type="constant" name="GST_MTS_TABLE_ID_PROGRAM_ASSOCIATION" link="gst-plugins-bad-libs-gstmpegtssection.html#GST-MTS-TABLE-ID-PROGRAM-ASSOCIATION:CAPS"/>
+ <keyword type="constant" name="GST_MTS_TABLE_ID_CONDITIONAL_ACCESS" link="gst-plugins-bad-libs-gstmpegtssection.html#GST-MTS-TABLE-ID-CONDITIONAL-ACCESS:CAPS"/>
+ <keyword type="constant" name="GST_MTS_TABLE_ID_TS_PROGRAM_MAP" link="gst-plugins-bad-libs-gstmpegtssection.html#GST-MTS-TABLE-ID-TS-PROGRAM-MAP:CAPS"/>
+ <keyword type="constant" name="GST_MTS_TABLE_ID_TS_DESCRIPTION" link="gst-plugins-bad-libs-gstmpegtssection.html#GST-MTS-TABLE-ID-TS-DESCRIPTION:CAPS"/>
+ <keyword type="constant" name="GST_MTS_TABLE_ID_14496_SCENE_DESCRIPTION" link="gst-plugins-bad-libs-gstmpegtssection.html#GST-MTS-TABLE-ID-14496-SCENE-DESCRIPTION:CAPS"/>
+ <keyword type="constant" name="GST_MTS_TABLE_ID_14496_OBJET_DESCRIPTOR" link="gst-plugins-bad-libs-gstmpegtssection.html#GST-MTS-TABLE-ID-14496-OBJET-DESCRIPTOR:CAPS"/>
+ <keyword type="constant" name="GST_MTS_TABLE_ID_METADATA" link="gst-plugins-bad-libs-gstmpegtssection.html#GST-MTS-TABLE-ID-METADATA:CAPS"/>
+ <keyword type="constant" name="GST_MTS_TABLE_ID_IPMP_CONTROL_INFORMATION" link="gst-plugins-bad-libs-gstmpegtssection.html#GST-MTS-TABLE-ID-IPMP-CONTROL-INFORMATION:CAPS"/>
+ <keyword type="constant" name="GST_MTS_TABLE_ID_DSM_CC_MULTIPROTO_ENCAPSULATED_DATA" link="gst-plugins-bad-libs-gstmpegtssection.html#GST-MTS-TABLE-ID-DSM-CC-MULTIPROTO-ENCAPSULATED-DATA:CAPS"/>
+ <keyword type="constant" name="GST_MTS_TABLE_ID_DSM_CC_U_N_MESSAGES" link="gst-plugins-bad-libs-gstmpegtssection.html#GST-MTS-TABLE-ID-DSM-CC-U-N-MESSAGES:CAPS"/>
+ <keyword type="constant" name="GST_MTS_TABLE_ID_DSM_CC_DOWNLOAD_DATA_MESSAGES" link="gst-plugins-bad-libs-gstmpegtssection.html#GST-MTS-TABLE-ID-DSM-CC-DOWNLOAD-DATA-MESSAGES:CAPS"/>
+ <keyword type="constant" name="GST_MTS_TABLE_ID_DSM_CC_STREAM_DESCRIPTORS" link="gst-plugins-bad-libs-gstmpegtssection.html#GST-MTS-TABLE-ID-DSM-CC-STREAM-DESCRIPTORS:CAPS"/>
+ <keyword type="constant" name="GST_MTS_TABLE_ID_DSM_CC_PRIVATE_DATA" link="gst-plugins-bad-libs-gstmpegtssection.html#GST-MTS-TABLE-ID-DSM-CC-PRIVATE-DATA:CAPS"/>
+ <keyword type="constant" name="GST_MTS_TABLE_ID_DSM_CC_ADDRESSABLE_SECTIONS" link="gst-plugins-bad-libs-gstmpegtssection.html#GST-MTS-TABLE-ID-DSM-CC-ADDRESSABLE-SECTIONS:CAPS"/>
+ <keyword type="constant" name="GST_MTS_TABLE_ID_UNSET" link="gst-plugins-bad-libs-gstmpegtssection.html#GST-MTS-TABLE-ID-UNSET:CAPS"/>
+ <keyword type="constant" name="GST_MPEGTS_SECTION_UNKNOWN" link="gst-plugins-bad-libs-gstmpegtssection.html#GST-MPEGTS-SECTION-UNKNOWN:CAPS"/>
+ <keyword type="constant" name="GST_MPEGTS_SECTION_PAT" link="gst-plugins-bad-libs-gstmpegtssection.html#GST-MPEGTS-SECTION-PAT:CAPS"/>
+ <keyword type="constant" name="GST_MPEGTS_SECTION_PMT" link="gst-plugins-bad-libs-gstmpegtssection.html#GST-MPEGTS-SECTION-PMT:CAPS"/>
+ <keyword type="constant" name="GST_MPEGTS_SECTION_CAT" link="gst-plugins-bad-libs-gstmpegtssection.html#GST-MPEGTS-SECTION-CAT:CAPS"/>
+ <keyword type="constant" name="GST_MPEGTS_SECTION_TSDT" link="gst-plugins-bad-libs-gstmpegtssection.html#GST-MPEGTS-SECTION-TSDT:CAPS"/>
+ <keyword type="constant" name="GST_MPEGTS_SECTION_EIT" link="gst-plugins-bad-libs-gstmpegtssection.html#GST-MPEGTS-SECTION-EIT:CAPS"/>
+ <keyword type="constant" name="GST_MPEGTS_SECTION_NIT" link="gst-plugins-bad-libs-gstmpegtssection.html#GST-MPEGTS-SECTION-NIT:CAPS"/>
+ <keyword type="constant" name="GST_MPEGTS_SECTION_BAT" link="gst-plugins-bad-libs-gstmpegtssection.html#GST-MPEGTS-SECTION-BAT:CAPS"/>
+ <keyword type="constant" name="GST_MPEGTS_SECTION_SDT" link="gst-plugins-bad-libs-gstmpegtssection.html#GST-MPEGTS-SECTION-SDT:CAPS"/>
+ <keyword type="constant" name="GST_MPEGTS_SECTION_TDT" link="gst-plugins-bad-libs-gstmpegtssection.html#GST-MPEGTS-SECTION-TDT:CAPS"/>
+ <keyword type="constant" name="GST_MPEGTS_SECTION_TOT" link="gst-plugins-bad-libs-gstmpegtssection.html#GST-MPEGTS-SECTION-TOT:CAPS"/>
+ <keyword type="constant" name="GST_MPEGTS_SECTION_ATSC_TVCT" link="gst-plugins-bad-libs-gstmpegtssection.html#GST-MPEGTS-SECTION-ATSC-TVCT:CAPS"/>
+ <keyword type="constant" name="GST_MPEGTS_SECTION_ATSC_CVCT" link="gst-plugins-bad-libs-gstmpegtssection.html#GST-MPEGTS-SECTION-ATSC-CVCT:CAPS"/>
+ <keyword type="constant" name="GST_MPEGTS_SECTION_ATSC_MGT" link="gst-plugins-bad-libs-gstmpegtssection.html#GST-MPEGTS-SECTION-ATSC-MGT:CAPS"/>
+ <keyword type="constant" name="GST_MPEGTS_SECTION_ATSC_ETT" link="gst-plugins-bad-libs-gstmpegtssection.html#GST-MPEGTS-SECTION-ATSC-ETT:CAPS"/>
+ <keyword type="constant" name="GST_MPEGTS_SECTION_ATSC_EIT" link="gst-plugins-bad-libs-gstmpegtssection.html#GST-MPEGTS-SECTION-ATSC-EIT:CAPS"/>
+ <keyword type="constant" name="GST_MPEGTS_SECTION_ATSC_STT" link="gst-plugins-bad-libs-gstmpegtssection.html#GST-MPEGTS-SECTION-ATSC-STT:CAPS"/>
+ <keyword type="constant" name="GST_MPEGTS_STREAM_TYPE_RESERVED_00" link="gst-plugins-bad-libs-gstmpegtssection.html#GST-MPEGTS-STREAM-TYPE-RESERVED-00:CAPS"/>
+ <keyword type="constant" name="GST_MPEGTS_STREAM_TYPE_VIDEO_MPEG1" link="gst-plugins-bad-libs-gstmpegtssection.html#GST-MPEGTS-STREAM-TYPE-VIDEO-MPEG1:CAPS"/>
+ <keyword type="constant" name="GST_MPEGTS_STREAM_TYPE_VIDEO_MPEG2" link="gst-plugins-bad-libs-gstmpegtssection.html#GST-MPEGTS-STREAM-TYPE-VIDEO-MPEG2:CAPS"/>
+ <keyword type="constant" name="GST_MPEGTS_STREAM_TYPE_AUDIO_MPEG1" link="gst-plugins-bad-libs-gstmpegtssection.html#GST-MPEGTS-STREAM-TYPE-AUDIO-MPEG1:CAPS"/>
+ <keyword type="constant" name="GST_MPEGTS_STREAM_TYPE_AUDIO_MPEG2" link="gst-plugins-bad-libs-gstmpegtssection.html#GST-MPEGTS-STREAM-TYPE-AUDIO-MPEG2:CAPS"/>
+ <keyword type="constant" name="GST_MPEGTS_STREAM_TYPE_PRIVATE_SECTIONS" link="gst-plugins-bad-libs-gstmpegtssection.html#GST-MPEGTS-STREAM-TYPE-PRIVATE-SECTIONS:CAPS"/>
+ <keyword type="constant" name="GST_MPEGTS_STREAM_TYPE_PRIVATE_PES_PACKETS" link="gst-plugins-bad-libs-gstmpegtssection.html#GST-MPEGTS-STREAM-TYPE-PRIVATE-PES-PACKETS:CAPS"/>
+ <keyword type="constant" name="GST_MPEGTS_STREAM_TYPE_MHEG" link="gst-plugins-bad-libs-gstmpegtssection.html#GST-MPEGTS-STREAM-TYPE-MHEG:CAPS"/>
+ <keyword type="constant" name="GST_MPEGTS_STREAM_TYPE_DSM_CC" link="gst-plugins-bad-libs-gstmpegtssection.html#GST-MPEGTS-STREAM-TYPE-DSM-CC:CAPS"/>
+ <keyword type="constant" name="GST_MPEGTS_STREAM_TYPE_H_222_1" link="gst-plugins-bad-libs-gstmpegtssection.html#GST-MPEGTS-STREAM-TYPE-H-222-1:CAPS"/>
+ <keyword type="constant" name="GST_MPEGTS_STREAM_TYPE_DSMCC_A" link="gst-plugins-bad-libs-gstmpegtssection.html#GST-MPEGTS-STREAM-TYPE-DSMCC-A:CAPS"/>
+ <keyword type="constant" name="GST_MPEGTS_STREAM_TYPE_DSMCC_B" link="gst-plugins-bad-libs-gstmpegtssection.html#GST-MPEGTS-STREAM-TYPE-DSMCC-B:CAPS"/>
+ <keyword type="constant" name="GST_MPEGTS_STREAM_TYPE_DSMCC_C" link="gst-plugins-bad-libs-gstmpegtssection.html#GST-MPEGTS-STREAM-TYPE-DSMCC-C:CAPS"/>
+ <keyword type="constant" name="GST_MPEGTS_STREAM_TYPE_DSMCC_D" link="gst-plugins-bad-libs-gstmpegtssection.html#GST-MPEGTS-STREAM-TYPE-DSMCC-D:CAPS"/>
+ <keyword type="constant" name="GST_MPEGTS_STREAM_TYPE_AUXILIARY" link="gst-plugins-bad-libs-gstmpegtssection.html#GST-MPEGTS-STREAM-TYPE-AUXILIARY:CAPS"/>
+ <keyword type="constant" name="GST_MPEGTS_STREAM_TYPE_AUDIO_AAC_ADTS" link="gst-plugins-bad-libs-gstmpegtssection.html#GST-MPEGTS-STREAM-TYPE-AUDIO-AAC-ADTS:CAPS"/>
+ <keyword type="constant" name="GST_MPEGTS_STREAM_TYPE_VIDEO_MPEG4" link="gst-plugins-bad-libs-gstmpegtssection.html#GST-MPEGTS-STREAM-TYPE-VIDEO-MPEG4:CAPS"/>
+ <keyword type="constant" name="GST_MPEGTS_STREAM_TYPE_AUDIO_AAC_LATM" link="gst-plugins-bad-libs-gstmpegtssection.html#GST-MPEGTS-STREAM-TYPE-AUDIO-AAC-LATM:CAPS"/>
+ <keyword type="constant" name="GST_MPEGTS_STREAM_TYPE_SL_FLEXMUX_PES_PACKETS" link="gst-plugins-bad-libs-gstmpegtssection.html#GST-MPEGTS-STREAM-TYPE-SL-FLEXMUX-PES-PACKETS:CAPS"/>
+ <keyword type="constant" name="GST_MPEGTS_STREAM_TYPE_SL_FLEXMUX_SECTIONS" link="gst-plugins-bad-libs-gstmpegtssection.html#GST-MPEGTS-STREAM-TYPE-SL-FLEXMUX-SECTIONS:CAPS"/>
+ <keyword type="constant" name="GST_MPEGTS_STREAM_TYPE_SYNCHRONIZED_DOWNLOAD" link="gst-plugins-bad-libs-gstmpegtssection.html#GST-MPEGTS-STREAM-TYPE-SYNCHRONIZED-DOWNLOAD:CAPS"/>
+ <keyword type="constant" name="GST_MPEGTS_STREAM_TYPE_METADATA_PES_PACKETS" link="gst-plugins-bad-libs-gstmpegtssection.html#GST-MPEGTS-STREAM-TYPE-METADATA-PES-PACKETS:CAPS"/>
+ <keyword type="constant" name="GST_MPEGTS_STREAM_TYPE_METADATA_SECTIONS" link="gst-plugins-bad-libs-gstmpegtssection.html#GST-MPEGTS-STREAM-TYPE-METADATA-SECTIONS:CAPS"/>
+ <keyword type="constant" name="GST_MPEGTS_STREAM_TYPE_METADATA_DATA_CAROUSEL" link="gst-plugins-bad-libs-gstmpegtssection.html#GST-MPEGTS-STREAM-TYPE-METADATA-DATA-CAROUSEL:CAPS"/>
+ <keyword type="constant" name="GST_MPEGTS_STREAM_TYPE_METADATA_OBJECT_CAROUSEL" link="gst-plugins-bad-libs-gstmpegtssection.html#GST-MPEGTS-STREAM-TYPE-METADATA-OBJECT-CAROUSEL:CAPS"/>
+ <keyword type="constant" name="GST_MPEGTS_STREAM_TYPE_METADATA_SYNCHRONIZED_DOWNLOAD" link="gst-plugins-bad-libs-gstmpegtssection.html#GST-MPEGTS-STREAM-TYPE-METADATA-SYNCHRONIZED-DOWNLOAD:CAPS"/>
+ <keyword type="constant" name="GST_MPEGTS_STREAM_TYPE_MPEG2_IPMP" link="gst-plugins-bad-libs-gstmpegtssection.html#GST-MPEGTS-STREAM-TYPE-MPEG2-IPMP:CAPS"/>
+ <keyword type="constant" name="GST_MPEGTS_STREAM_TYPE_VIDEO_H264" link="gst-plugins-bad-libs-gstmpegtssection.html#GST-MPEGTS-STREAM-TYPE-VIDEO-H264:CAPS"/>
+ <keyword type="constant" name="GST_MPEGTS_STREAM_TYPE_AUDIO_AAC_CLEAN" link="gst-plugins-bad-libs-gstmpegtssection.html#GST-MPEGTS-STREAM-TYPE-AUDIO-AAC-CLEAN:CAPS"/>
+ <keyword type="constant" name="GST_MPEGTS_STREAM_TYPE_MPEG4_TIMED_TEXT" link="gst-plugins-bad-libs-gstmpegtssection.html#GST-MPEGTS-STREAM-TYPE-MPEG4-TIMED-TEXT:CAPS"/>
+ <keyword type="constant" name="GST_MPEGTS_STREAM_TYPE_VIDEO_RVC" link="gst-plugins-bad-libs-gstmpegtssection.html#GST-MPEGTS-STREAM-TYPE-VIDEO-RVC:CAPS"/>
+ <keyword type="constant" name="GST_MPEGTS_STREAM_TYPE_VIDEO_H264_SVC_SUB_BITSTREAM" link="gst-plugins-bad-libs-gstmpegtssection.html#GST-MPEGTS-STREAM-TYPE-VIDEO-H264-SVC-SUB-BITSTREAM:CAPS"/>
+ <keyword type="constant" name="GST_MPEGTS_STREAM_TYPE_VIDEO_H264_MVC_SUB_BITSTREAM" link="gst-plugins-bad-libs-gstmpegtssection.html#GST-MPEGTS-STREAM-TYPE-VIDEO-H264-MVC-SUB-BITSTREAM:CAPS"/>
+ <keyword type="constant" name="GST_MPEGTS_STREAM_TYPE_VIDEO_JP2K" link="gst-plugins-bad-libs-gstmpegtssection.html#GST-MPEGTS-STREAM-TYPE-VIDEO-JP2K:CAPS"/>
+ <keyword type="constant" name="GST_MPEGTS_STREAM_TYPE_VIDEO_MPEG2_STEREO_ADDITIONAL_VIEW" link="gst-plugins-bad-libs-gstmpegtssection.html#GST-MPEGTS-STREAM-TYPE-VIDEO-MPEG2-STEREO-ADDITIONAL-VIEW:CAPS"/>
+ <keyword type="constant" name="GST_MPEGTS_STREAM_TYPE_VIDEO_H264_STEREO_ADDITIONAL_VIEW" link="gst-plugins-bad-libs-gstmpegtssection.html#GST-MPEGTS-STREAM-TYPE-VIDEO-H264-STEREO-ADDITIONAL-VIEW:CAPS"/>
+ <keyword type="constant" name="GST_MPEGTS_STREAM_TYPE_VIDEO_HEVC" link="gst-plugins-bad-libs-gstmpegtssection.html#GST-MPEGTS-STREAM-TYPE-VIDEO-HEVC:CAPS"/>
+ <keyword type="constant" name="GST_MPEGTS_STREAM_TYPE_IPMP_STREAM" link="gst-plugins-bad-libs-gstmpegtssection.html#GST-MPEGTS-STREAM-TYPE-IPMP-STREAM:CAPS"/>
+ <keyword type="constant" name="GST_MTS_DESC_RESERVED_00" link="gst-plugins-bad-libs-gstmpegtsdescriptor.html#GST-MTS-DESC-RESERVED-00:CAPS"/>
+ <keyword type="constant" name="GST_MTS_DESC_RESERVED_01" link="gst-plugins-bad-libs-gstmpegtsdescriptor.html#GST-MTS-DESC-RESERVED-01:CAPS"/>
+ <keyword type="constant" name="GST_MTS_DESC_VIDEO_STREAM" link="gst-plugins-bad-libs-gstmpegtsdescriptor.html#GST-MTS-DESC-VIDEO-STREAM:CAPS"/>
+ <keyword type="constant" name="GST_MTS_DESC_AUDIO_STREAM" link="gst-plugins-bad-libs-gstmpegtsdescriptor.html#GST-MTS-DESC-AUDIO-STREAM:CAPS"/>
+ <keyword type="constant" name="GST_MTS_DESC_HIERARCHY" link="gst-plugins-bad-libs-gstmpegtsdescriptor.html#GST-MTS-DESC-HIERARCHY:CAPS"/>
+ <keyword type="constant" name="GST_MTS_DESC_REGISTRATION" link="gst-plugins-bad-libs-gstmpegtsdescriptor.html#GST-MTS-DESC-REGISTRATION:CAPS"/>
+ <keyword type="constant" name="GST_MTS_DESC_DATA_STREAM_ALIGNMENT" link="gst-plugins-bad-libs-gstmpegtsdescriptor.html#GST-MTS-DESC-DATA-STREAM-ALIGNMENT:CAPS"/>
+ <keyword type="constant" name="GST_MTS_DESC_TARGET_BACKGROUND_GRID" link="gst-plugins-bad-libs-gstmpegtsdescriptor.html#GST-MTS-DESC-TARGET-BACKGROUND-GRID:CAPS"/>
+ <keyword type="constant" name="GST_MTS_DESC_VIDEO_WINDOW" link="gst-plugins-bad-libs-gstmpegtsdescriptor.html#GST-MTS-DESC-VIDEO-WINDOW:CAPS"/>
+ <keyword type="constant" name="GST_MTS_DESC_CA" link="gst-plugins-bad-libs-gstmpegtsdescriptor.html#GST-MTS-DESC-CA:CAPS"/>
+ <keyword type="constant" name="GST_MTS_DESC_ISO_639_LANGUAGE" link="gst-plugins-bad-libs-gstmpegtsdescriptor.html#GST-MTS-DESC-ISO-639-LANGUAGE:CAPS"/>
+ <keyword type="constant" name="GST_MTS_DESC_SYSTEM_CLOCK" link="gst-plugins-bad-libs-gstmpegtsdescriptor.html#GST-MTS-DESC-SYSTEM-CLOCK:CAPS"/>
+ <keyword type="constant" name="GST_MTS_DESC_MULTIPLEX_BUFFER_UTILISATION" link="gst-plugins-bad-libs-gstmpegtsdescriptor.html#GST-MTS-DESC-MULTIPLEX-BUFFER-UTILISATION:CAPS"/>
+ <keyword type="constant" name="GST_MTS_DESC_COPYRIGHT" link="gst-plugins-bad-libs-gstmpegtsdescriptor.html#GST-MTS-DESC-COPYRIGHT:CAPS"/>
+ <keyword type="constant" name="GST_MTS_DESC_MAXIMUM_BITRATE" link="gst-plugins-bad-libs-gstmpegtsdescriptor.html#GST-MTS-DESC-MAXIMUM-BITRATE:CAPS"/>
+ <keyword type="constant" name="GST_MTS_DESC_PRIVATE_DATA_INDICATOR" link="gst-plugins-bad-libs-gstmpegtsdescriptor.html#GST-MTS-DESC-PRIVATE-DATA-INDICATOR:CAPS"/>
+ <keyword type="constant" name="GST_MTS_DESC_SMOOTHING_BUFFER" link="gst-plugins-bad-libs-gstmpegtsdescriptor.html#GST-MTS-DESC-SMOOTHING-BUFFER:CAPS"/>
+ <keyword type="constant" name="GST_MTS_DESC_STD" link="gst-plugins-bad-libs-gstmpegtsdescriptor.html#GST-MTS-DESC-STD:CAPS"/>
+ <keyword type="constant" name="GST_MTS_DESC_IBP" link="gst-plugins-bad-libs-gstmpegtsdescriptor.html#GST-MTS-DESC-IBP:CAPS"/>
+ <keyword type="constant" name="GST_MTS_DESC_DSMCC_CAROUSEL_IDENTIFIER" link="gst-plugins-bad-libs-gstmpegtsdescriptor.html#GST-MTS-DESC-DSMCC-CAROUSEL-IDENTIFIER:CAPS"/>
+ <keyword type="constant" name="GST_MTS_DESC_DSMCC_ASSOCIATION_TAG" link="gst-plugins-bad-libs-gstmpegtsdescriptor.html#GST-MTS-DESC-DSMCC-ASSOCIATION-TAG:CAPS"/>
+ <keyword type="constant" name="GST_MTS_DESC_DSMCC_DEFERRED_ASSOCIATION_TAG" link="gst-plugins-bad-libs-gstmpegtsdescriptor.html#GST-MTS-DESC-DSMCC-DEFERRED-ASSOCIATION-TAG:CAPS"/>
+ <keyword type="constant" name="GST_MTS_DESC_DSMCC_NPT_REFERENCE" link="gst-plugins-bad-libs-gstmpegtsdescriptor.html#GST-MTS-DESC-DSMCC-NPT-REFERENCE:CAPS"/>
+ <keyword type="constant" name="GST_MTS_DESC_DSMCC_NPT_ENDPOINT" link="gst-plugins-bad-libs-gstmpegtsdescriptor.html#GST-MTS-DESC-DSMCC-NPT-ENDPOINT:CAPS"/>
+ <keyword type="constant" name="GST_MTS_DESC_DSMCC_STREAM_MODE" link="gst-plugins-bad-libs-gstmpegtsdescriptor.html#GST-MTS-DESC-DSMCC-STREAM-MODE:CAPS"/>
+ <keyword type="constant" name="GST_MTS_DESC_DSMCC_STREAM_EVENT" link="gst-plugins-bad-libs-gstmpegtsdescriptor.html#GST-MTS-DESC-DSMCC-STREAM-EVENT:CAPS"/>
+ <keyword type="constant" name="GST_MTS_DESC_MPEG4_VIDEO" link="gst-plugins-bad-libs-gstmpegtsdescriptor.html#GST-MTS-DESC-MPEG4-VIDEO:CAPS"/>
+ <keyword type="constant" name="GST_MTS_DESC_MPEG4_AUDIO" link="gst-plugins-bad-libs-gstmpegtsdescriptor.html#GST-MTS-DESC-MPEG4-AUDIO:CAPS"/>
+ <keyword type="constant" name="GST_MTS_DESC_IOD" link="gst-plugins-bad-libs-gstmpegtsdescriptor.html#GST-MTS-DESC-IOD:CAPS"/>
+ <keyword type="constant" name="GST_MTS_DESC_SL" link="gst-plugins-bad-libs-gstmpegtsdescriptor.html#GST-MTS-DESC-SL:CAPS"/>
+ <keyword type="constant" name="GST_MTS_DESC_FMC" link="gst-plugins-bad-libs-gstmpegtsdescriptor.html#GST-MTS-DESC-FMC:CAPS"/>
+ <keyword type="constant" name="GST_MTS_DESC_EXTERNAL_ES_ID" link="gst-plugins-bad-libs-gstmpegtsdescriptor.html#GST-MTS-DESC-EXTERNAL-ES-ID:CAPS"/>
+ <keyword type="constant" name="GST_MTS_DESC_MUX_CODE" link="gst-plugins-bad-libs-gstmpegtsdescriptor.html#GST-MTS-DESC-MUX-CODE:CAPS"/>
+ <keyword type="constant" name="GST_MTS_DESC_FMX_BUFFER_SIZE" link="gst-plugins-bad-libs-gstmpegtsdescriptor.html#GST-MTS-DESC-FMX-BUFFER-SIZE:CAPS"/>
+ <keyword type="constant" name="GST_MTS_DESC_MULTIPLEX_BUFFER" link="gst-plugins-bad-libs-gstmpegtsdescriptor.html#GST-MTS-DESC-MULTIPLEX-BUFFER:CAPS"/>
+ <keyword type="constant" name="GST_MTS_DESC_CONTENT_LABELING" link="gst-plugins-bad-libs-gstmpegtsdescriptor.html#GST-MTS-DESC-CONTENT-LABELING:CAPS"/>
+ <keyword type="constant" name="GST_MTS_DESC_METADATA_POINTER" link="gst-plugins-bad-libs-gstmpegtsdescriptor.html#GST-MTS-DESC-METADATA-POINTER:CAPS"/>
+ <keyword type="constant" name="GST_MTS_DESC_METADATA" link="gst-plugins-bad-libs-gstmpegtsdescriptor.html#GST-MTS-DESC-METADATA:CAPS"/>
+ <keyword type="constant" name="GST_MTS_DESC_METADATA_STD" link="gst-plugins-bad-libs-gstmpegtsdescriptor.html#GST-MTS-DESC-METADATA-STD:CAPS"/>
+ <keyword type="constant" name="GST_MTS_DESC_AVC_VIDEO" link="gst-plugins-bad-libs-gstmpegtsdescriptor.html#GST-MTS-DESC-AVC-VIDEO:CAPS"/>
+ <keyword type="constant" name="GST_MTS_DESC_IPMP" link="gst-plugins-bad-libs-gstmpegtsdescriptor.html#GST-MTS-DESC-IPMP:CAPS"/>
+ <keyword type="constant" name="GST_MTS_DESC_AVC_TIMING_AND_HRD" link="gst-plugins-bad-libs-gstmpegtsdescriptor.html#GST-MTS-DESC-AVC-TIMING-AND-HRD:CAPS"/>
+ <keyword type="constant" name="GST_MTS_DESC_MPEG2_AAC_AUDIO" link="gst-plugins-bad-libs-gstmpegtsdescriptor.html#GST-MTS-DESC-MPEG2-AAC-AUDIO:CAPS"/>
+ <keyword type="constant" name="GST_MTS_DESC_FLEX_MUX_TIMING" link="gst-plugins-bad-libs-gstmpegtsdescriptor.html#GST-MTS-DESC-FLEX-MUX-TIMING:CAPS"/>
+ <keyword type="constant" name="GST_MTS_DESC_MPEG4_TEXT" link="gst-plugins-bad-libs-gstmpegtsdescriptor.html#GST-MTS-DESC-MPEG4-TEXT:CAPS"/>
+ <keyword type="constant" name="GST_MTS_DESC_MPEG4_AUDIO_EXTENSION" link="gst-plugins-bad-libs-gstmpegtsdescriptor.html#GST-MTS-DESC-MPEG4-AUDIO-EXTENSION:CAPS"/>
+ <keyword type="constant" name="GST_MTS_DESC_AUXILIARY_VIDEO_STREAM" link="gst-plugins-bad-libs-gstmpegtsdescriptor.html#GST-MTS-DESC-AUXILIARY-VIDEO-STREAM:CAPS"/>
+ <keyword type="constant" name="GST_MTS_DESC_SVC_EXTENSION" link="gst-plugins-bad-libs-gstmpegtsdescriptor.html#GST-MTS-DESC-SVC-EXTENSION:CAPS"/>
+ <keyword type="constant" name="GST_MTS_DESC_MVC_EXTENSION" link="gst-plugins-bad-libs-gstmpegtsdescriptor.html#GST-MTS-DESC-MVC-EXTENSION:CAPS"/>
+ <keyword type="constant" name="GST_MTS_DESC_J2K_VIDEO" link="gst-plugins-bad-libs-gstmpegtsdescriptor.html#GST-MTS-DESC-J2K-VIDEO:CAPS"/>
+ <keyword type="constant" name="GST_MTS_DESC_MVC_OPERATION_POINT" link="gst-plugins-bad-libs-gstmpegtsdescriptor.html#GST-MTS-DESC-MVC-OPERATION-POINT:CAPS"/>
+ <keyword type="constant" name="GST_MTS_DESC_MPEG2_STEREOSCOPIC_VIDEO_FORMAT" link="gst-plugins-bad-libs-gstmpegtsdescriptor.html#GST-MTS-DESC-MPEG2-STEREOSCOPIC-VIDEO-FORMAT:CAPS"/>
+ <keyword type="constant" name="GST_MTS_DESC_STEREOSCOPIC_PROGRAM_INFO" link="gst-plugins-bad-libs-gstmpegtsdescriptor.html#GST-MTS-DESC-STEREOSCOPIC-PROGRAM-INFO:CAPS"/>
+ <keyword type="constant" name="GST_MTS_DESC_STEREOSCOPIC_VIDEO_INFO" link="gst-plugins-bad-libs-gstmpegtsdescriptor.html#GST-MTS-DESC-STEREOSCOPIC-VIDEO-INFO:CAPS"/>
+ <keyword type="constant" name="GST_MTS_DESC_AC3_AUDIO_STREAM" link="gst-plugins-bad-libs-gstmpegtsdescriptor.html#GST-MTS-DESC-AC3-AUDIO-STREAM:CAPS"/>
+ <keyword type="constant" name="GST_MTS_DESC_DTG_LOGICAL_CHANNEL" link="gst-plugins-bad-libs-gstmpegtsdescriptor.html#GST-MTS-DESC-DTG-LOGICAL-CHANNEL:CAPS"/>
+ <keyword type="constant" name="GST_MPEGTS_AUDIO_TYPE_UNDEFINED" link="gst-plugins-bad-libs-gstmpegtsdescriptor.html#GST-MPEGTS-AUDIO-TYPE-UNDEFINED:CAPS"/>
+ <keyword type="constant" name="GST_MPEGTS_AUDIO_TYPE_CLEAN_EFFECTS" link="gst-plugins-bad-libs-gstmpegtsdescriptor.html#GST-MPEGTS-AUDIO-TYPE-CLEAN-EFFECTS:CAPS"/>
+ <keyword type="constant" name="GST_MPEGTS_AUDIO_TYPE_HEARING_IMPAIRED" link="gst-plugins-bad-libs-gstmpegtsdescriptor.html#GST-MPEGTS-AUDIO-TYPE-HEARING-IMPAIRED:CAPS"/>
+ <keyword type="constant" name="GST_MPEGTS_AUDIO_TYPE_VISUAL_IMPAIRED_COMMENTARY" link="gst-plugins-bad-libs-gstmpegtsdescriptor.html#GST-MPEGTS-AUDIO-TYPE-VISUAL-IMPAIRED-COMMENTARY:CAPS"/>
+ <keyword type="constant" name="GST_MTS_TABLE_ID_ATSC_MASTER_GUIDE" link="gst-plugins-bad-libs-gst-atsc-section.html#GST-MTS-TABLE-ID-ATSC-MASTER-GUIDE:CAPS"/>
+ <keyword type="constant" name="GST_MTS_TABLE_ID_ATSC_TERRESTRIAL_VIRTUAL_CHANNEL" link="gst-plugins-bad-libs-gst-atsc-section.html#GST-MTS-TABLE-ID-ATSC-TERRESTRIAL-VIRTUAL-CHANNEL:CAPS"/>
+ <keyword type="constant" name="GST_MTS_TABLE_ID_ATSC_CABLE_VIRTUAL_CHANNEL" link="gst-plugins-bad-libs-gst-atsc-section.html#GST-MTS-TABLE-ID-ATSC-CABLE-VIRTUAL-CHANNEL:CAPS"/>
+ <keyword type="constant" name="GST_MTS_TABLE_ID_ATSC_RATING_REGION" link="gst-plugins-bad-libs-gst-atsc-section.html#GST-MTS-TABLE-ID-ATSC-RATING-REGION:CAPS"/>
+ <keyword type="constant" name="GST_MTS_TABLE_ID_ATSC_EVENT_INFORMATION" link="gst-plugins-bad-libs-gst-atsc-section.html#GST-MTS-TABLE-ID-ATSC-EVENT-INFORMATION:CAPS"/>
+ <keyword type="constant" name="GST_MTS_TABLE_ID_ATSC_CHANNEL_OR_EVENT_EXTENDED_TEXT" link="gst-plugins-bad-libs-gst-atsc-section.html#GST-MTS-TABLE-ID-ATSC-CHANNEL-OR-EVENT-EXTENDED-TEXT:CAPS"/>
+ <keyword type="constant" name="GST_MTS_TABLE_ID_ATSC_SYSTEM_TIME" link="gst-plugins-bad-libs-gst-atsc-section.html#GST-MTS-TABLE-ID-ATSC-SYSTEM-TIME:CAPS"/>
+ <keyword type="constant" name="GST_MTS_TABLE_ID_ATSC_DATA_EVENT" link="gst-plugins-bad-libs-gst-atsc-section.html#GST-MTS-TABLE-ID-ATSC-DATA-EVENT:CAPS"/>
+ <keyword type="constant" name="GST_MTS_TABLE_ID_ATSC_DATA_SERVICE" link="gst-plugins-bad-libs-gst-atsc-section.html#GST-MTS-TABLE-ID-ATSC-DATA-SERVICE:CAPS"/>
+ <keyword type="constant" name="GST_MTS_TABLE_ID_ATSC_NETWORK_RESOURCE" link="gst-plugins-bad-libs-gst-atsc-section.html#GST-MTS-TABLE-ID-ATSC-NETWORK-RESOURCE:CAPS"/>
+ <keyword type="constant" name="GST_MTS_TABLE_ID_ATSC_LONG_TERM_SERVICE" link="gst-plugins-bad-libs-gst-atsc-section.html#GST-MTS-TABLE-ID-ATSC-LONG-TERM-SERVICE:CAPS"/>
+ <keyword type="constant" name="GST_MTS_TABLE_ID_ATSC_DIRECTED_CHANNEL_CHANGE" link="gst-plugins-bad-libs-gst-atsc-section.html#GST-MTS-TABLE-ID-ATSC-DIRECTED-CHANNEL-CHANGE:CAPS"/>
+ <keyword type="constant" name="GST_MTS_TABLE_ID_ATSC_DIRECTED_CHANNEL_CHANGE_SECTION_CODE" link="gst-plugins-bad-libs-gst-atsc-section.html#GST-MTS-TABLE-ID-ATSC-DIRECTED-CHANNEL-CHANGE-SECTION-CODE:CAPS"/>
+ <keyword type="constant" name="GST_MTS_TABLE_ID_ATSC_AGGREGATE_EVENT_INFORMATION" link="gst-plugins-bad-libs-gst-atsc-section.html#GST-MTS-TABLE-ID-ATSC-AGGREGATE-EVENT-INFORMATION:CAPS"/>
+ <keyword type="constant" name="GST_MTS_TABLE_ID_ATSC_AGGREGATE_EXTENDED_TEXT" link="gst-plugins-bad-libs-gst-atsc-section.html#GST-MTS-TABLE-ID-ATSC-AGGREGATE-EXTENDED-TEXT:CAPS"/>
+ <keyword type="constant" name="GST_MTS_TABLE_ID_ATSC_AGGREGATE_DATA_EVENT" link="gst-plugins-bad-libs-gst-atsc-section.html#GST-MTS-TABLE-ID-ATSC-AGGREGATE-DATA-EVENT:CAPS"/>
+ <keyword type="constant" name="GST_MTS_TABLE_ID_ATSC_SATELLITE_VIRTUAL_CHANNEL" link="gst-plugins-bad-libs-gst-atsc-section.html#GST-MTS-TABLE-ID-ATSC-SATELLITE-VIRTUAL-CHANNEL:CAPS"/>
+ <keyword type="constant" name="GST_MPEGTS_ATSC_MGT_TABLE_TYPE_EIT0" link="gst-plugins-bad-libs-gst-atsc-section.html#GST-MPEGTS-ATSC-MGT-TABLE-TYPE-EIT0:CAPS"/>
+ <keyword type="constant" name="GST_MPEGTS_ATSC_MGT_TABLE_TYPE_EIT127" link="gst-plugins-bad-libs-gst-atsc-section.html#GST-MPEGTS-ATSC-MGT-TABLE-TYPE-EIT127:CAPS"/>
+ <keyword type="constant" name="GST_MPEGTS_ATSC_MGT_TABLE_TYPE_ETT0" link="gst-plugins-bad-libs-gst-atsc-section.html#GST-MPEGTS-ATSC-MGT-TABLE-TYPE-ETT0:CAPS"/>
+ <keyword type="constant" name="GST_MPEGTS_ATSC_MGT_TABLE_TYPE_ETT127" link="gst-plugins-bad-libs-gst-atsc-section.html#GST-MPEGTS-ATSC-MGT-TABLE-TYPE-ETT127:CAPS"/>
+ <keyword type="constant" name="GST_MTS_TABLE_ID_NETWORK_INFORMATION_ACTUAL_NETWORK" link="gst-plugins-bad-libs-gst-dvb-section.html#GST-MTS-TABLE-ID-NETWORK-INFORMATION-ACTUAL-NETWORK:CAPS"/>
+ <keyword type="constant" name="GST_MTS_TABLE_ID_NETWORK_INFORMATION_OTHER_NETWORK" link="gst-plugins-bad-libs-gst-dvb-section.html#GST-MTS-TABLE-ID-NETWORK-INFORMATION-OTHER-NETWORK:CAPS"/>
+ <keyword type="constant" name="GST_MTS_TABLE_ID_SERVICE_DESCRIPTION_ACTUAL_TS" link="gst-plugins-bad-libs-gst-dvb-section.html#GST-MTS-TABLE-ID-SERVICE-DESCRIPTION-ACTUAL-TS:CAPS"/>
+ <keyword type="constant" name="GST_MTS_TABLE_ID_SERVICE_DESCRIPTION_OTHER_TS" link="gst-plugins-bad-libs-gst-dvb-section.html#GST-MTS-TABLE-ID-SERVICE-DESCRIPTION-OTHER-TS:CAPS"/>
+ <keyword type="constant" name="GST_MTS_TABLE_ID_BOUQUET_ASSOCIATION" link="gst-plugins-bad-libs-gst-dvb-section.html#GST-MTS-TABLE-ID-BOUQUET-ASSOCIATION:CAPS"/>
+ <keyword type="constant" name="GST_MTS_TABLE_ID_EVENT_INFORMATION_ACTUAL_TS_PRESENT" link="gst-plugins-bad-libs-gst-dvb-section.html#GST-MTS-TABLE-ID-EVENT-INFORMATION-ACTUAL-TS-PRESENT:CAPS"/>
+ <keyword type="constant" name="GST_MTS_TABLE_ID_EVENT_INFORMATION_OTHER_TS_PRESENT" link="gst-plugins-bad-libs-gst-dvb-section.html#GST-MTS-TABLE-ID-EVENT-INFORMATION-OTHER-TS-PRESENT:CAPS"/>
+ <keyword type="constant" name="GST_MTS_TABLE_ID_EVENT_INFORMATION_ACTUAL_TS_SCHEDULE_1" link="gst-plugins-bad-libs-gst-dvb-section.html#GST-MTS-TABLE-ID-EVENT-INFORMATION-ACTUAL-TS-SCHEDULE-1:CAPS"/>
+ <keyword type="constant" name="GST_MTS_TABLE_ID_EVENT_INFORMATION_ACTUAL_TS_SCHEDULE_N" link="gst-plugins-bad-libs-gst-dvb-section.html#GST-MTS-TABLE-ID-EVENT-INFORMATION-ACTUAL-TS-SCHEDULE-N:CAPS"/>
+ <keyword type="constant" name="GST_MTS_TABLE_ID_EVENT_INFORMATION_OTHER_TS_SCHEDULE_1" link="gst-plugins-bad-libs-gst-dvb-section.html#GST-MTS-TABLE-ID-EVENT-INFORMATION-OTHER-TS-SCHEDULE-1:CAPS"/>
+ <keyword type="constant" name="GST_MTS_TABLE_ID_EVENT_INFORMATION_OTHER_TS_SCHEDULE_N" link="gst-plugins-bad-libs-gst-dvb-section.html#GST-MTS-TABLE-ID-EVENT-INFORMATION-OTHER-TS-SCHEDULE-N:CAPS"/>
+ <keyword type="constant" name="GST_MTS_TABLE_ID_TIME_DATE" link="gst-plugins-bad-libs-gst-dvb-section.html#GST-MTS-TABLE-ID-TIME-DATE:CAPS"/>
+ <keyword type="constant" name="GST_MTS_TABLE_ID_RUNNING_STATUS" link="gst-plugins-bad-libs-gst-dvb-section.html#GST-MTS-TABLE-ID-RUNNING-STATUS:CAPS"/>
+ <keyword type="constant" name="GST_MTS_TABLE_ID_STUFFING" link="gst-plugins-bad-libs-gst-dvb-section.html#GST-MTS-TABLE-ID-STUFFING:CAPS"/>
+ <keyword type="constant" name="GST_MTS_TABLE_ID_TIME_OFFSET" link="gst-plugins-bad-libs-gst-dvb-section.html#GST-MTS-TABLE-ID-TIME-OFFSET:CAPS"/>
+ <keyword type="constant" name="GST_MTS_TABLE_ID_APPLICATION_INFORMATION_TABLE" link="gst-plugins-bad-libs-gst-dvb-section.html#GST-MTS-TABLE-ID-APPLICATION-INFORMATION-TABLE:CAPS"/>
+ <keyword type="constant" name="GST_MTS_TABLE_ID_CONTAINER" link="gst-plugins-bad-libs-gst-dvb-section.html#GST-MTS-TABLE-ID-CONTAINER:CAPS"/>
+ <keyword type="constant" name="GST_MTS_TABLE_ID_RELATED_CONTENT" link="gst-plugins-bad-libs-gst-dvb-section.html#GST-MTS-TABLE-ID-RELATED-CONTENT:CAPS"/>
+ <keyword type="constant" name="GST_MTS_TABLE_ID_CONTENT_IDENTIFIER" link="gst-plugins-bad-libs-gst-dvb-section.html#GST-MTS-TABLE-ID-CONTENT-IDENTIFIER:CAPS"/>
+ <keyword type="constant" name="GST_MTS_TABLE_ID_MPE_FEC" link="gst-plugins-bad-libs-gst-dvb-section.html#GST-MTS-TABLE-ID-MPE-FEC:CAPS"/>
+ <keyword type="constant" name="GST_MTS_TABLE_ID_RESOLUTION_NOTIFICATION" link="gst-plugins-bad-libs-gst-dvb-section.html#GST-MTS-TABLE-ID-RESOLUTION-NOTIFICATION:CAPS"/>
+ <keyword type="constant" name="GST_MTS_TABLE_ID_MPE_IFEC" link="gst-plugins-bad-libs-gst-dvb-section.html#GST-MTS-TABLE-ID-MPE-IFEC:CAPS"/>
+ <keyword type="constant" name="GST_MTS_TABLE_ID_DISCONTINUITY_INFORMATION" link="gst-plugins-bad-libs-gst-dvb-section.html#GST-MTS-TABLE-ID-DISCONTINUITY-INFORMATION:CAPS"/>
+ <keyword type="constant" name="GST_MTS_TABLE_ID_SELECTION_INFORMATION" link="gst-plugins-bad-libs-gst-dvb-section.html#GST-MTS-TABLE-ID-SELECTION-INFORMATION:CAPS"/>
+ <keyword type="constant" name="GST_MTS_TABLE_ID_CA_MESSAGE_ECM_0" link="gst-plugins-bad-libs-gst-dvb-section.html#GST-MTS-TABLE-ID-CA-MESSAGE-ECM-0:CAPS"/>
+ <keyword type="constant" name="GST_MTS_TABLE_ID_CA_MESSAGE_ECM_1" link="gst-plugins-bad-libs-gst-dvb-section.html#GST-MTS-TABLE-ID-CA-MESSAGE-ECM-1:CAPS"/>
+ <keyword type="constant" name="GST_MTS_TABLE_ID_CA_MESSAGE_SYSTEM_PRIVATE_1" link="gst-plugins-bad-libs-gst-dvb-section.html#GST-MTS-TABLE-ID-CA-MESSAGE-SYSTEM-PRIVATE-1:CAPS"/>
+ <keyword type="constant" name="GST_MTS_TABLE_ID_CA_MESSAGE_SYSTEM_PRIVATE_N" link="gst-plugins-bad-libs-gst-dvb-section.html#GST-MTS-TABLE-ID-CA-MESSAGE-SYSTEM-PRIVATE-N:CAPS"/>
+ <keyword type="constant" name="GST_MTS_TABLE_ID_SCT" link="gst-plugins-bad-libs-gst-dvb-section.html#GST-MTS-TABLE-ID-SCT:CAPS"/>
+ <keyword type="constant" name="GST_MTS_TABLE_ID_FCT" link="gst-plugins-bad-libs-gst-dvb-section.html#GST-MTS-TABLE-ID-FCT:CAPS"/>
+ <keyword type="constant" name="GST_MTS_TABLE_ID_TCT" link="gst-plugins-bad-libs-gst-dvb-section.html#GST-MTS-TABLE-ID-TCT:CAPS"/>
+ <keyword type="constant" name="GST_MTS_TABLE_ID_SPT" link="gst-plugins-bad-libs-gst-dvb-section.html#GST-MTS-TABLE-ID-SPT:CAPS"/>
+ <keyword type="constant" name="GST_MTS_TABLE_ID_CMT" link="gst-plugins-bad-libs-gst-dvb-section.html#GST-MTS-TABLE-ID-CMT:CAPS"/>
+ <keyword type="constant" name="GST_MTS_TABLE_ID_TBTP" link="gst-plugins-bad-libs-gst-dvb-section.html#GST-MTS-TABLE-ID-TBTP:CAPS"/>
+ <keyword type="constant" name="GST_MTS_TABLE_ID_PCR_PACKET_PAYLOAD" link="gst-plugins-bad-libs-gst-dvb-section.html#GST-MTS-TABLE-ID-PCR-PACKET-PAYLOAD:CAPS"/>
+ <keyword type="constant" name="GST_MTS_TABLE_ID_TRANSMISSION_MODE_SUPPORT_PAYLOAD" link="gst-plugins-bad-libs-gst-dvb-section.html#GST-MTS-TABLE-ID-TRANSMISSION-MODE-SUPPORT-PAYLOAD:CAPS"/>
+ <keyword type="constant" name="GST_MTS_TABLE_ID_TIM" link="gst-plugins-bad-libs-gst-dvb-section.html#GST-MTS-TABLE-ID-TIM:CAPS"/>
+ <keyword type="constant" name="GST_MTS_TABLE_ID_LL_FEC_PARITY_DATA_TABLE" link="gst-plugins-bad-libs-gst-dvb-section.html#GST-MTS-TABLE-ID-LL-FEC-PARITY-DATA-TABLE:CAPS"/>
+ <keyword type="constant" name="GST_MPEGTS_RUNNING_STATUS_UNDEFINED" link="gst-plugins-bad-libs-gst-dvb-section.html#GST-MPEGTS-RUNNING-STATUS-UNDEFINED:CAPS"/>
+ <keyword type="constant" name="GST_MPEGTS_RUNNING_STATUS_NOT_RUNNING" link="gst-plugins-bad-libs-gst-dvb-section.html#GST-MPEGTS-RUNNING-STATUS-NOT-RUNNING:CAPS"/>
+ <keyword type="constant" name="GST_MPEGTS_RUNNING_STATUS_STARTS_IN_FEW_SECONDS" link="gst-plugins-bad-libs-gst-dvb-section.html#GST-MPEGTS-RUNNING-STATUS-STARTS-IN-FEW-SECONDS:CAPS"/>
+ <keyword type="constant" name="GST_MPEGTS_RUNNING_STATUS_PAUSING" link="gst-plugins-bad-libs-gst-dvb-section.html#GST-MPEGTS-RUNNING-STATUS-PAUSING:CAPS"/>
+ <keyword type="constant" name="GST_MPEGTS_RUNNING_STATUS_RUNNING" link="gst-plugins-bad-libs-gst-dvb-section.html#GST-MPEGTS-RUNNING-STATUS-RUNNING:CAPS"/>
+ <keyword type="constant" name="GST_MPEGTS_RUNNING_STATUS_OFF_AIR" link="gst-plugins-bad-libs-gst-dvb-section.html#GST-MPEGTS-RUNNING-STATUS-OFF-AIR:CAPS"/>
+ <keyword type="constant" name="GST_MTS_DESC_ATSC_STUFFING" link="gst-plugins-bad-libs-gst-atsc-descriptor.html#GST-MTS-DESC-ATSC-STUFFING:CAPS"/>
+ <keyword type="constant" name="GST_MTS_DESC_ATSC_AC3" link="gst-plugins-bad-libs-gst-atsc-descriptor.html#GST-MTS-DESC-ATSC-AC3:CAPS"/>
+ <keyword type="constant" name="GST_MTS_DESC_ATSC_CAPTION_SERVICE" link="gst-plugins-bad-libs-gst-atsc-descriptor.html#GST-MTS-DESC-ATSC-CAPTION-SERVICE:CAPS"/>
+ <keyword type="constant" name="GST_MTS_DESC_ATSC_CONTENT_ADVISORY" link="gst-plugins-bad-libs-gst-atsc-descriptor.html#GST-MTS-DESC-ATSC-CONTENT-ADVISORY:CAPS"/>
+ <keyword type="constant" name="GST_MTS_DESC_ATSC_EXTENDED_CHANNEL_NAME" link="gst-plugins-bad-libs-gst-atsc-descriptor.html#GST-MTS-DESC-ATSC-EXTENDED-CHANNEL-NAME:CAPS"/>
+ <keyword type="constant" name="GST_MTS_DESC_ATSC_SERVICE_LOCATION" link="gst-plugins-bad-libs-gst-atsc-descriptor.html#GST-MTS-DESC-ATSC-SERVICE-LOCATION:CAPS"/>
+ <keyword type="constant" name="GST_MTS_DESC_ATSC_TIME_SHIFTED_SERVICE" link="gst-plugins-bad-libs-gst-atsc-descriptor.html#GST-MTS-DESC-ATSC-TIME-SHIFTED-SERVICE:CAPS"/>
+ <keyword type="constant" name="GST_MTS_DESC_ATSC_COMPONENT_NAME" link="gst-plugins-bad-libs-gst-atsc-descriptor.html#GST-MTS-DESC-ATSC-COMPONENT-NAME:CAPS"/>
+ <keyword type="constant" name="GST_MTS_DESC_ATSC_DCC_DEPARTING_REQUEST" link="gst-plugins-bad-libs-gst-atsc-descriptor.html#GST-MTS-DESC-ATSC-DCC-DEPARTING-REQUEST:CAPS"/>
+ <keyword type="constant" name="GST_MTS_DESC_ATSC_DCC_ARRIVING_REQUEST" link="gst-plugins-bad-libs-gst-atsc-descriptor.html#GST-MTS-DESC-ATSC-DCC-ARRIVING-REQUEST:CAPS"/>
+ <keyword type="constant" name="GST_MTS_DESC_ATSC_REDISTRIBUTION_CONTROL" link="gst-plugins-bad-libs-gst-atsc-descriptor.html#GST-MTS-DESC-ATSC-REDISTRIBUTION-CONTROL:CAPS"/>
+ <keyword type="constant" name="GST_MTS_DESC_ATSC_GENRE" link="gst-plugins-bad-libs-gst-atsc-descriptor.html#GST-MTS-DESC-ATSC-GENRE:CAPS"/>
+ <keyword type="constant" name="GST_MTS_DESC_ATSC_PRIVATE_INFORMATION" link="gst-plugins-bad-libs-gst-atsc-descriptor.html#GST-MTS-DESC-ATSC-PRIVATE-INFORMATION:CAPS"/>
+ <keyword type="constant" name="GST_MTS_DESC_ATSC_ENHANCED_SIGNALING" link="gst-plugins-bad-libs-gst-atsc-descriptor.html#GST-MTS-DESC-ATSC-ENHANCED-SIGNALING:CAPS"/>
+ <keyword type="constant" name="GST_MTS_DESC_ATSC_DATA_SERVICE" link="gst-plugins-bad-libs-gst-atsc-descriptor.html#GST-MTS-DESC-ATSC-DATA-SERVICE:CAPS"/>
+ <keyword type="constant" name="GST_MTS_DESC_ATSC_PID_COUNT" link="gst-plugins-bad-libs-gst-atsc-descriptor.html#GST-MTS-DESC-ATSC-PID-COUNT:CAPS"/>
+ <keyword type="constant" name="GST_MTS_DESC_ATSC_DOWNLOAD_DESCRIPTOR" link="gst-plugins-bad-libs-gst-atsc-descriptor.html#GST-MTS-DESC-ATSC-DOWNLOAD-DESCRIPTOR:CAPS"/>
+ <keyword type="constant" name="GST_MTS_DESC_ATSC_MULTIPROTOCOL_ENCAPSULATION" link="gst-plugins-bad-libs-gst-atsc-descriptor.html#GST-MTS-DESC-ATSC-MULTIPROTOCOL-ENCAPSULATION:CAPS"/>
+ <keyword type="constant" name="GST_MTS_DESC_ATSC_MODULE_LINK" link="gst-plugins-bad-libs-gst-atsc-descriptor.html#GST-MTS-DESC-ATSC-MODULE-LINK:CAPS"/>
+ <keyword type="constant" name="GST_MTS_DESC_ATSC_CRC32" link="gst-plugins-bad-libs-gst-atsc-descriptor.html#GST-MTS-DESC-ATSC-CRC32:CAPS"/>
+ <keyword type="constant" name="GST_MTS_DESC_ATSC_GROUP_LINK" link="gst-plugins-bad-libs-gst-atsc-descriptor.html#GST-MTS-DESC-ATSC-GROUP-LINK:CAPS"/>
+ <keyword type="constant" name="GST_MTS_DESC_DVB_NETWORK_NAME" link="gst-plugins-bad-libs-gst-dvb-descriptor.html#GST-MTS-DESC-DVB-NETWORK-NAME:CAPS"/>
+ <keyword type="constant" name="GST_MTS_DESC_DVB_SERVICE_LIST" link="gst-plugins-bad-libs-gst-dvb-descriptor.html#GST-MTS-DESC-DVB-SERVICE-LIST:CAPS"/>
+ <keyword type="constant" name="GST_MTS_DESC_DVB_STUFFING" link="gst-plugins-bad-libs-gst-dvb-descriptor.html#GST-MTS-DESC-DVB-STUFFING:CAPS"/>
+ <keyword type="constant" name="GST_MTS_DESC_DVB_SATELLITE_DELIVERY_SYSTEM" link="gst-plugins-bad-libs-gst-dvb-descriptor.html#GST-MTS-DESC-DVB-SATELLITE-DELIVERY-SYSTEM:CAPS"/>
+ <keyword type="constant" name="GST_MTS_DESC_DVB_CABLE_DELIVERY_SYSTEM" link="gst-plugins-bad-libs-gst-dvb-descriptor.html#GST-MTS-DESC-DVB-CABLE-DELIVERY-SYSTEM:CAPS"/>
+ <keyword type="constant" name="GST_MTS_DESC_DVB_VBI_DATA" link="gst-plugins-bad-libs-gst-dvb-descriptor.html#GST-MTS-DESC-DVB-VBI-DATA:CAPS"/>
+ <keyword type="constant" name="GST_MTS_DESC_DVB_VBI_TELETEXT" link="gst-plugins-bad-libs-gst-dvb-descriptor.html#GST-MTS-DESC-DVB-VBI-TELETEXT:CAPS"/>
+ <keyword type="constant" name="GST_MTS_DESC_DVB_BOUQUET_NAME" link="gst-plugins-bad-libs-gst-dvb-descriptor.html#GST-MTS-DESC-DVB-BOUQUET-NAME:CAPS"/>
+ <keyword type="constant" name="GST_MTS_DESC_DVB_SERVICE" link="gst-plugins-bad-libs-gst-dvb-descriptor.html#GST-MTS-DESC-DVB-SERVICE:CAPS"/>
+ <keyword type="constant" name="GST_MTS_DESC_DVB_COUNTRY_AVAILABILITY" link="gst-plugins-bad-libs-gst-dvb-descriptor.html#GST-MTS-DESC-DVB-COUNTRY-AVAILABILITY:CAPS"/>
+ <keyword type="constant" name="GST_MTS_DESC_DVB_LINKAGE" link="gst-plugins-bad-libs-gst-dvb-descriptor.html#GST-MTS-DESC-DVB-LINKAGE:CAPS"/>
+ <keyword type="constant" name="GST_MTS_DESC_DVB_NVOD_REFERENCE" link="gst-plugins-bad-libs-gst-dvb-descriptor.html#GST-MTS-DESC-DVB-NVOD-REFERENCE:CAPS"/>
+ <keyword type="constant" name="GST_MTS_DESC_DVB_TIME_SHIFTED_SERVICE" link="gst-plugins-bad-libs-gst-dvb-descriptor.html#GST-MTS-DESC-DVB-TIME-SHIFTED-SERVICE:CAPS"/>
+ <keyword type="constant" name="GST_MTS_DESC_DVB_SHORT_EVENT" link="gst-plugins-bad-libs-gst-dvb-descriptor.html#GST-MTS-DESC-DVB-SHORT-EVENT:CAPS"/>
+ <keyword type="constant" name="GST_MTS_DESC_DVB_EXTENDED_EVENT" link="gst-plugins-bad-libs-gst-dvb-descriptor.html#GST-MTS-DESC-DVB-EXTENDED-EVENT:CAPS"/>
+ <keyword type="constant" name="GST_MTS_DESC_DVB_TIME_SHIFTED_EVENT" link="gst-plugins-bad-libs-gst-dvb-descriptor.html#GST-MTS-DESC-DVB-TIME-SHIFTED-EVENT:CAPS"/>
+ <keyword type="constant" name="GST_MTS_DESC_DVB_COMPONENT" link="gst-plugins-bad-libs-gst-dvb-descriptor.html#GST-MTS-DESC-DVB-COMPONENT:CAPS"/>
+ <keyword type="constant" name="GST_MTS_DESC_DVB_MOSAIC" link="gst-plugins-bad-libs-gst-dvb-descriptor.html#GST-MTS-DESC-DVB-MOSAIC:CAPS"/>
+ <keyword type="constant" name="GST_MTS_DESC_DVB_STREAM_IDENTIFIER" link="gst-plugins-bad-libs-gst-dvb-descriptor.html#GST-MTS-DESC-DVB-STREAM-IDENTIFIER:CAPS"/>
+ <keyword type="constant" name="GST_MTS_DESC_DVB_CA_IDENTIFIER" link="gst-plugins-bad-libs-gst-dvb-descriptor.html#GST-MTS-DESC-DVB-CA-IDENTIFIER:CAPS"/>
+ <keyword type="constant" name="GST_MTS_DESC_DVB_CONTENT" link="gst-plugins-bad-libs-gst-dvb-descriptor.html#GST-MTS-DESC-DVB-CONTENT:CAPS"/>
+ <keyword type="constant" name="GST_MTS_DESC_DVB_PARENTAL_RATING" link="gst-plugins-bad-libs-gst-dvb-descriptor.html#GST-MTS-DESC-DVB-PARENTAL-RATING:CAPS"/>
+ <keyword type="constant" name="GST_MTS_DESC_DVB_TELETEXT" link="gst-plugins-bad-libs-gst-dvb-descriptor.html#GST-MTS-DESC-DVB-TELETEXT:CAPS"/>
+ <keyword type="constant" name="GST_MTS_DESC_DVB_TELEPHONE" link="gst-plugins-bad-libs-gst-dvb-descriptor.html#GST-MTS-DESC-DVB-TELEPHONE:CAPS"/>
+ <keyword type="constant" name="GST_MTS_DESC_DVB_LOCAL_TIME_OFFSET" link="gst-plugins-bad-libs-gst-dvb-descriptor.html#GST-MTS-DESC-DVB-LOCAL-TIME-OFFSET:CAPS"/>
+ <keyword type="constant" name="GST_MTS_DESC_DVB_SUBTITLING" link="gst-plugins-bad-libs-gst-dvb-descriptor.html#GST-MTS-DESC-DVB-SUBTITLING:CAPS"/>
+ <keyword type="constant" name="GST_MTS_DESC_DVB_TERRESTRIAL_DELIVERY_SYSTEM" link="gst-plugins-bad-libs-gst-dvb-descriptor.html#GST-MTS-DESC-DVB-TERRESTRIAL-DELIVERY-SYSTEM:CAPS"/>
+ <keyword type="constant" name="GST_MTS_DESC_DVB_MULTILINGUAL_NETWORK_NAME" link="gst-plugins-bad-libs-gst-dvb-descriptor.html#GST-MTS-DESC-DVB-MULTILINGUAL-NETWORK-NAME:CAPS"/>
+ <keyword type="constant" name="GST_MTS_DESC_DVB_MULTILINGUAL_BOUQUET_NAME" link="gst-plugins-bad-libs-gst-dvb-descriptor.html#GST-MTS-DESC-DVB-MULTILINGUAL-BOUQUET-NAME:CAPS"/>
+ <keyword type="constant" name="GST_MTS_DESC_DVB_MULTILINGUAL_SERVICE_NAME" link="gst-plugins-bad-libs-gst-dvb-descriptor.html#GST-MTS-DESC-DVB-MULTILINGUAL-SERVICE-NAME:CAPS"/>
+ <keyword type="constant" name="GST_MTS_DESC_DVB_MULTILINGUAL_COMPONENT" link="gst-plugins-bad-libs-gst-dvb-descriptor.html#GST-MTS-DESC-DVB-MULTILINGUAL-COMPONENT:CAPS"/>
+ <keyword type="constant" name="GST_MTS_DESC_DVB_PRIVATE_DATA_SPECIFIER" link="gst-plugins-bad-libs-gst-dvb-descriptor.html#GST-MTS-DESC-DVB-PRIVATE-DATA-SPECIFIER:CAPS"/>
+ <keyword type="constant" name="GST_MTS_DESC_DVB_SERVICE_MOVE" link="gst-plugins-bad-libs-gst-dvb-descriptor.html#GST-MTS-DESC-DVB-SERVICE-MOVE:CAPS"/>
+ <keyword type="constant" name="GST_MTS_DESC_DVB_SHORT_SMOOTHING_BUFFER" link="gst-plugins-bad-libs-gst-dvb-descriptor.html#GST-MTS-DESC-DVB-SHORT-SMOOTHING-BUFFER:CAPS"/>
+ <keyword type="constant" name="GST_MTS_DESC_DVB_FREQUENCY_LIST" link="gst-plugins-bad-libs-gst-dvb-descriptor.html#GST-MTS-DESC-DVB-FREQUENCY-LIST:CAPS"/>
+ <keyword type="constant" name="GST_MTS_DESC_DVB_PARTIAL_TRANSPORT_STREAM" link="gst-plugins-bad-libs-gst-dvb-descriptor.html#GST-MTS-DESC-DVB-PARTIAL-TRANSPORT-STREAM:CAPS"/>
+ <keyword type="constant" name="GST_MTS_DESC_DVB_DATA_BROADCAST" link="gst-plugins-bad-libs-gst-dvb-descriptor.html#GST-MTS-DESC-DVB-DATA-BROADCAST:CAPS"/>
+ <keyword type="constant" name="GST_MTS_DESC_DVB_SCRAMBLING" link="gst-plugins-bad-libs-gst-dvb-descriptor.html#GST-MTS-DESC-DVB-SCRAMBLING:CAPS"/>
+ <keyword type="constant" name="GST_MTS_DESC_DVB_DATA_BROADCAST_ID" link="gst-plugins-bad-libs-gst-dvb-descriptor.html#GST-MTS-DESC-DVB-DATA-BROADCAST-ID:CAPS"/>
+ <keyword type="constant" name="GST_MTS_DESC_DVB_TRANSPORT_STREAM" link="gst-plugins-bad-libs-gst-dvb-descriptor.html#GST-MTS-DESC-DVB-TRANSPORT-STREAM:CAPS"/>
+ <keyword type="constant" name="GST_MTS_DESC_DVB_DSNG" link="gst-plugins-bad-libs-gst-dvb-descriptor.html#GST-MTS-DESC-DVB-DSNG:CAPS"/>
+ <keyword type="constant" name="GST_MTS_DESC_DVB_PDC" link="gst-plugins-bad-libs-gst-dvb-descriptor.html#GST-MTS-DESC-DVB-PDC:CAPS"/>
+ <keyword type="constant" name="GST_MTS_DESC_DVB_AC3" link="gst-plugins-bad-libs-gst-dvb-descriptor.html#GST-MTS-DESC-DVB-AC3:CAPS"/>
+ <keyword type="constant" name="GST_MTS_DESC_DVB_ANCILLARY_DATA" link="gst-plugins-bad-libs-gst-dvb-descriptor.html#GST-MTS-DESC-DVB-ANCILLARY-DATA:CAPS"/>
+ <keyword type="constant" name="GST_MTS_DESC_DVB_CELL_LIST" link="gst-plugins-bad-libs-gst-dvb-descriptor.html#GST-MTS-DESC-DVB-CELL-LIST:CAPS"/>
+ <keyword type="constant" name="GST_MTS_DESC_DVB_CELL_FREQUENCY_LINK" link="gst-plugins-bad-libs-gst-dvb-descriptor.html#GST-MTS-DESC-DVB-CELL-FREQUENCY-LINK:CAPS"/>
+ <keyword type="constant" name="GST_MTS_DESC_DVB_ANNOUNCEMENT_SUPPORT" link="gst-plugins-bad-libs-gst-dvb-descriptor.html#GST-MTS-DESC-DVB-ANNOUNCEMENT-SUPPORT:CAPS"/>
+ <keyword type="constant" name="GST_MTS_DESC_DVB_APPLICATION_SIGNALLING" link="gst-plugins-bad-libs-gst-dvb-descriptor.html#GST-MTS-DESC-DVB-APPLICATION-SIGNALLING:CAPS"/>
+ <keyword type="constant" name="GST_MTS_DESC_DVB_ADAPTATION_FIELD_DATA" link="gst-plugins-bad-libs-gst-dvb-descriptor.html#GST-MTS-DESC-DVB-ADAPTATION-FIELD-DATA:CAPS"/>
+ <keyword type="constant" name="GST_MTS_DESC_DVB_SERVICE_IDENTIFIER" link="gst-plugins-bad-libs-gst-dvb-descriptor.html#GST-MTS-DESC-DVB-SERVICE-IDENTIFIER:CAPS"/>
+ <keyword type="constant" name="GST_MTS_DESC_DVB_SERVICE_AVAILABILITY" link="gst-plugins-bad-libs-gst-dvb-descriptor.html#GST-MTS-DESC-DVB-SERVICE-AVAILABILITY:CAPS"/>
+ <keyword type="constant" name="GST_MTS_DESC_DVB_DEFAULT_AUTHORITY" link="gst-plugins-bad-libs-gst-dvb-descriptor.html#GST-MTS-DESC-DVB-DEFAULT-AUTHORITY:CAPS"/>
+ <keyword type="constant" name="GST_MTS_DESC_DVB_RELATED_CONTENT" link="gst-plugins-bad-libs-gst-dvb-descriptor.html#GST-MTS-DESC-DVB-RELATED-CONTENT:CAPS"/>
+ <keyword type="constant" name="GST_MTS_DESC_DVB_TVA_ID" link="gst-plugins-bad-libs-gst-dvb-descriptor.html#GST-MTS-DESC-DVB-TVA-ID:CAPS"/>
+ <keyword type="constant" name="GST_MTS_DESC_DVB_CONTENT_IDENTIFIER" link="gst-plugins-bad-libs-gst-dvb-descriptor.html#GST-MTS-DESC-DVB-CONTENT-IDENTIFIER:CAPS"/>
+ <keyword type="constant" name="GST_MTS_DESC_DVB_TIMESLICE_FEC_IDENTIFIER" link="gst-plugins-bad-libs-gst-dvb-descriptor.html#GST-MTS-DESC-DVB-TIMESLICE-FEC-IDENTIFIER:CAPS"/>
+ <keyword type="constant" name="GST_MTS_DESC_DVB_ECM_REPETITION_RATE" link="gst-plugins-bad-libs-gst-dvb-descriptor.html#GST-MTS-DESC-DVB-ECM-REPETITION-RATE:CAPS"/>
+ <keyword type="constant" name="GST_MTS_DESC_DVB_S2_SATELLITE_DELIVERY_SYSTEM" link="gst-plugins-bad-libs-gst-dvb-descriptor.html#GST-MTS-DESC-DVB-S2-SATELLITE-DELIVERY-SYSTEM:CAPS"/>
+ <keyword type="constant" name="GST_MTS_DESC_DVB_ENHANCED_AC3" link="gst-plugins-bad-libs-gst-dvb-descriptor.html#GST-MTS-DESC-DVB-ENHANCED-AC3:CAPS"/>
+ <keyword type="constant" name="GST_MTS_DESC_DVB_DTS" link="gst-plugins-bad-libs-gst-dvb-descriptor.html#GST-MTS-DESC-DVB-DTS:CAPS"/>
+ <keyword type="constant" name="GST_MTS_DESC_DVB_AAC" link="gst-plugins-bad-libs-gst-dvb-descriptor.html#GST-MTS-DESC-DVB-AAC:CAPS"/>
+ <keyword type="constant" name="GST_MTS_DESC_DVB_XAIT_LOCATION" link="gst-plugins-bad-libs-gst-dvb-descriptor.html#GST-MTS-DESC-DVB-XAIT-LOCATION:CAPS"/>
+ <keyword type="constant" name="GST_MTS_DESC_DVB_FTA_CONTENT_MANAGEMENT" link="gst-plugins-bad-libs-gst-dvb-descriptor.html#GST-MTS-DESC-DVB-FTA-CONTENT-MANAGEMENT:CAPS"/>
+ <keyword type="constant" name="GST_MTS_DESC_DVB_EXTENSION" link="gst-plugins-bad-libs-gst-dvb-descriptor.html#GST-MTS-DESC-DVB-EXTENSION:CAPS"/>
+ <keyword type="constant" name="GST_MTS_DESC_EXT_DVB_IMAGE_ICON" link="gst-plugins-bad-libs-gst-dvb-descriptor.html#GST-MTS-DESC-EXT-DVB-IMAGE-ICON:CAPS"/>
+ <keyword type="constant" name="GST_MTS_DESC_EXT_DVB_CPCM_DELIVERY_SIGNALLING" link="gst-plugins-bad-libs-gst-dvb-descriptor.html#GST-MTS-DESC-EXT-DVB-CPCM-DELIVERY-SIGNALLING:CAPS"/>
+ <keyword type="constant" name="GST_MTS_DESC_EXT_DVB_CP" link="gst-plugins-bad-libs-gst-dvb-descriptor.html#GST-MTS-DESC-EXT-DVB-CP:CAPS"/>
+ <keyword type="constant" name="GST_MTS_DESC_EXT_DVB_CP_IDENTIFIER" link="gst-plugins-bad-libs-gst-dvb-descriptor.html#GST-MTS-DESC-EXT-DVB-CP-IDENTIFIER:CAPS"/>
+ <keyword type="constant" name="GST_MTS_DESC_EXT_DVB_T2_DELIVERY_SYSTEM" link="gst-plugins-bad-libs-gst-dvb-descriptor.html#GST-MTS-DESC-EXT-DVB-T2-DELIVERY-SYSTEM:CAPS"/>
+ <keyword type="constant" name="GST_MTS_DESC_EXT_DVB_SH_DELIVERY_SYSTEM" link="gst-plugins-bad-libs-gst-dvb-descriptor.html#GST-MTS-DESC-EXT-DVB-SH-DELIVERY-SYSTEM:CAPS"/>
+ <keyword type="constant" name="GST_MTS_DESC_EXT_DVB_SUPPLEMENTARY_AUDIO" link="gst-plugins-bad-libs-gst-dvb-descriptor.html#GST-MTS-DESC-EXT-DVB-SUPPLEMENTARY-AUDIO:CAPS"/>
+ <keyword type="constant" name="GST_MTS_DESC_EXT_DVB_NETWORK_CHANGE_NOTIFY" link="gst-plugins-bad-libs-gst-dvb-descriptor.html#GST-MTS-DESC-EXT-DVB-NETWORK-CHANGE-NOTIFY:CAPS"/>
+ <keyword type="constant" name="GST_MTS_DESC_EXT_DVB_MESSAGE" link="gst-plugins-bad-libs-gst-dvb-descriptor.html#GST-MTS-DESC-EXT-DVB-MESSAGE:CAPS"/>
+ <keyword type="constant" name="GST_MTS_DESC_EXT_DVB_TARGET_REGION" link="gst-plugins-bad-libs-gst-dvb-descriptor.html#GST-MTS-DESC-EXT-DVB-TARGET-REGION:CAPS"/>
+ <keyword type="constant" name="GST_MTS_DESC_EXT_DVB_TARGET_REGION_NAME" link="gst-plugins-bad-libs-gst-dvb-descriptor.html#GST-MTS-DESC-EXT-DVB-TARGET-REGION-NAME:CAPS"/>
+ <keyword type="constant" name="GST_MTS_DESC_EXT_DVB_SERVICE_RELOCATED" link="gst-plugins-bad-libs-gst-dvb-descriptor.html#GST-MTS-DESC-EXT-DVB-SERVICE-RELOCATED:CAPS"/>
+ <keyword type="constant" name="GST_MTS_DESC_EXT_DVB_XAIT_PID" link="gst-plugins-bad-libs-gst-dvb-descriptor.html#GST-MTS-DESC-EXT-DVB-XAIT-PID:CAPS"/>
+ <keyword type="constant" name="GST_MTS_DESC_EXT_DVB_C2_DELIVERY_SYSTEM" link="gst-plugins-bad-libs-gst-dvb-descriptor.html#GST-MTS-DESC-EXT-DVB-C2-DELIVERY-SYSTEM:CAPS"/>
+ <keyword type="constant" name="GST_MTS_DESC_EXT_DVB_DTS_HD_AUDIO_STREAM" link="gst-plugins-bad-libs-gst-dvb-descriptor.html#GST-MTS-DESC-EXT-DVB-DTS-HD-AUDIO-STREAM:CAPS"/>
+ <keyword type="constant" name="GST_MTS_DESC_EXT_DVB_DTS_NEUTRAL" link="gst-plugins-bad-libs-gst-dvb-descriptor.html#GST-MTS-DESC-EXT-DVB-DTS-NEUTRAL:CAPS"/>
+ <keyword type="constant" name="GST_MTS_DESC_EXT_DVB_VIDEO_DEPTH_RANGE" link="gst-plugins-bad-libs-gst-dvb-descriptor.html#GST-MTS-DESC-EXT-DVB-VIDEO-DEPTH-RANGE:CAPS"/>
+ <keyword type="constant" name="GST_MTS_DESC_EXT_DVB_T2MI" link="gst-plugins-bad-libs-gst-dvb-descriptor.html#GST-MTS-DESC-EXT-DVB-T2MI:CAPS"/>
+ <keyword type="constant" name="GST_MTS_DESC_EXT_DVB_URI_LINKAGE" link="gst-plugins-bad-libs-gst-dvb-descriptor.html#GST-MTS-DESC-EXT-DVB-URI-LINKAGE:CAPS"/>
+ <keyword type="constant" name="GST_MPEGTS_FEC_NONE" link="gst-plugins-bad-libs-gst-dvb-descriptor.html#GST-MPEGTS-FEC-NONE:CAPS"/>
+ <keyword type="constant" name="GST_MPEGTS_FEC_1_2" link="gst-plugins-bad-libs-gst-dvb-descriptor.html#GST-MPEGTS-FEC-1-2:CAPS"/>
+ <keyword type="constant" name="GST_MPEGTS_FEC_2_3" link="gst-plugins-bad-libs-gst-dvb-descriptor.html#GST-MPEGTS-FEC-2-3:CAPS"/>
+ <keyword type="constant" name="GST_MPEGTS_FEC_3_4" link="gst-plugins-bad-libs-gst-dvb-descriptor.html#GST-MPEGTS-FEC-3-4:CAPS"/>
+ <keyword type="constant" name="GST_MPEGTS_FEC_4_5" link="gst-plugins-bad-libs-gst-dvb-descriptor.html#GST-MPEGTS-FEC-4-5:CAPS"/>
+ <keyword type="constant" name="GST_MPEGTS_FEC_5_6" link="gst-plugins-bad-libs-gst-dvb-descriptor.html#GST-MPEGTS-FEC-5-6:CAPS"/>
+ <keyword type="constant" name="GST_MPEGTS_FEC_6_7" link="gst-plugins-bad-libs-gst-dvb-descriptor.html#GST-MPEGTS-FEC-6-7:CAPS"/>
+ <keyword type="constant" name="GST_MPEGTS_FEC_7_8" link="gst-plugins-bad-libs-gst-dvb-descriptor.html#GST-MPEGTS-FEC-7-8:CAPS"/>
+ <keyword type="constant" name="GST_MPEGTS_FEC_8_9" link="gst-plugins-bad-libs-gst-dvb-descriptor.html#GST-MPEGTS-FEC-8-9:CAPS"/>
+ <keyword type="constant" name="GST_MPEGTS_FEC_AUTO" link="gst-plugins-bad-libs-gst-dvb-descriptor.html#GST-MPEGTS-FEC-AUTO:CAPS"/>
+ <keyword type="constant" name="GST_MPEGTS_FEC_3_5" link="gst-plugins-bad-libs-gst-dvb-descriptor.html#GST-MPEGTS-FEC-3-5:CAPS"/>
+ <keyword type="constant" name="GST_MPEGTS_FEC_9_10" link="gst-plugins-bad-libs-gst-dvb-descriptor.html#GST-MPEGTS-FEC-9-10:CAPS"/>
+ <keyword type="constant" name="GST_MPEGTS_FEC_2_5" link="gst-plugins-bad-libs-gst-dvb-descriptor.html#GST-MPEGTS-FEC-2-5:CAPS"/>
+ <keyword type="constant" name="GST_MPEGTS_MODULATION_QPSK" link="gst-plugins-bad-libs-gst-dvb-descriptor.html#GST-MPEGTS-MODULATION-QPSK:CAPS"/>
+ <keyword type="constant" name="GST_MPEGTS_MODULATION_QAM_16" link="gst-plugins-bad-libs-gst-dvb-descriptor.html#GST-MPEGTS-MODULATION-QAM-16:CAPS"/>
+ <keyword type="constant" name="GST_MPEGTS_MODULATION_QAM_32" link="gst-plugins-bad-libs-gst-dvb-descriptor.html#GST-MPEGTS-MODULATION-QAM-32:CAPS"/>
+ <keyword type="constant" name="GST_MPEGTS_MODULATION_QAM_64" link="gst-plugins-bad-libs-gst-dvb-descriptor.html#GST-MPEGTS-MODULATION-QAM-64:CAPS"/>
+ <keyword type="constant" name="GST_MPEGTS_MODULATION_QAM_128" link="gst-plugins-bad-libs-gst-dvb-descriptor.html#GST-MPEGTS-MODULATION-QAM-128:CAPS"/>
+ <keyword type="constant" name="GST_MPEGTS_MODULATION_QAM_256" link="gst-plugins-bad-libs-gst-dvb-descriptor.html#GST-MPEGTS-MODULATION-QAM-256:CAPS"/>
+ <keyword type="constant" name="GST_MPEGTS_MODULATION_QAM_AUTO" link="gst-plugins-bad-libs-gst-dvb-descriptor.html#GST-MPEGTS-MODULATION-QAM-AUTO:CAPS"/>
+ <keyword type="constant" name="GST_MPEGTS_MODULATION_VSB_8" link="gst-plugins-bad-libs-gst-dvb-descriptor.html#GST-MPEGTS-MODULATION-VSB-8:CAPS"/>
+ <keyword type="constant" name="GST_MPEGTS_MODULATION_VSB_16" link="gst-plugins-bad-libs-gst-dvb-descriptor.html#GST-MPEGTS-MODULATION-VSB-16:CAPS"/>
+ <keyword type="constant" name="GST_MPEGTS_MODULATION_PSK_8" link="gst-plugins-bad-libs-gst-dvb-descriptor.html#GST-MPEGTS-MODULATION-PSK-8:CAPS"/>
+ <keyword type="constant" name="GST_MPEGTS_MODULATION_APSK_16" link="gst-plugins-bad-libs-gst-dvb-descriptor.html#GST-MPEGTS-MODULATION-APSK-16:CAPS"/>
+ <keyword type="constant" name="GST_MPEGTS_MODULATION_APSK_32" link="gst-plugins-bad-libs-gst-dvb-descriptor.html#GST-MPEGTS-MODULATION-APSK-32:CAPS"/>
+ <keyword type="constant" name="GST_MPEGTS_MODULATION_DQPSK" link="gst-plugins-bad-libs-gst-dvb-descriptor.html#GST-MPEGTS-MODULATION-DQPSK:CAPS"/>
+ <keyword type="constant" name="GST_MPEGTS_MODULATION_QAM_4_NR_" link="gst-plugins-bad-libs-gst-dvb-descriptor.html#GST-MPEGTS-MODULATION-QAM-4-NR-:CAPS"/>
+ <keyword type="constant" name="GST_MPEGTS_MODULATION_NONE" link="gst-plugins-bad-libs-gst-dvb-descriptor.html#GST-MPEGTS-MODULATION-NONE:CAPS"/>
+ <keyword type="constant" name="GST_MPEGTS_POLARIZATION_LINEAR_HORIZONTAL" link="gst-plugins-bad-libs-gst-dvb-descriptor.html#GST-MPEGTS-POLARIZATION-LINEAR-HORIZONTAL:CAPS"/>
+ <keyword type="constant" name="GST_MPEGTS_POLARIZATION_LINEAR_VERTICAL" link="gst-plugins-bad-libs-gst-dvb-descriptor.html#GST-MPEGTS-POLARIZATION-LINEAR-VERTICAL:CAPS"/>
+ <keyword type="constant" name="GST_MPEGTS_POLARIZATION_CIRCULAR_LEFT" link="gst-plugins-bad-libs-gst-dvb-descriptor.html#GST-MPEGTS-POLARIZATION-CIRCULAR-LEFT:CAPS"/>
+ <keyword type="constant" name="GST_MPEGTS_POLARIZATION_CIRCULAR_RIGHT" link="gst-plugins-bad-libs-gst-dvb-descriptor.html#GST-MPEGTS-POLARIZATION-CIRCULAR-RIGHT:CAPS"/>
+ <keyword type="constant" name="GST_MPEGTS_ROLLOFF_35" link="gst-plugins-bad-libs-gst-dvb-descriptor.html#GST-MPEGTS-ROLLOFF-35:CAPS"/>
+ <keyword type="constant" name="GST_MPEGTS_ROLLOFF_20" link="gst-plugins-bad-libs-gst-dvb-descriptor.html#GST-MPEGTS-ROLLOFF-20:CAPS"/>
+ <keyword type="constant" name="GST_MPEGTS_ROLLOFF_25" link="gst-plugins-bad-libs-gst-dvb-descriptor.html#GST-MPEGTS-ROLLOFF-25:CAPS"/>
+ <keyword type="constant" name="GST_MPEGTS_ROLLOFF_RESERVED" link="gst-plugins-bad-libs-gst-dvb-descriptor.html#GST-MPEGTS-ROLLOFF-RESERVED:CAPS"/>
+ <keyword type="constant" name="GST_MPEGTS_ROLLOFF_AUTO" link="gst-plugins-bad-libs-gst-dvb-descriptor.html#GST-MPEGTS-ROLLOFF-AUTO:CAPS"/>
+ <keyword type="constant" name="GST_MPEGTS_CABLE_OUTER_FEC_UNDEFINED" link="gst-plugins-bad-libs-gst-dvb-descriptor.html#GST-MPEGTS-CABLE-OUTER-FEC-UNDEFINED:CAPS"/>
+ <keyword type="constant" name="GST_MPEGTS_CABLE_OUTER_FEC_NONE" link="gst-plugins-bad-libs-gst-dvb-descriptor.html#GST-MPEGTS-CABLE-OUTER-FEC-NONE:CAPS"/>
+ <keyword type="constant" name="GST_MPEGTS_CABLE_OUTER_FEC_RS_204_188" link="gst-plugins-bad-libs-gst-dvb-descriptor.html#GST-MPEGTS-CABLE-OUTER-FEC-RS-204-188:CAPS"/>
+ <keyword type="constant" name="GST_MPEGTS_TRANSMISSION_MODE_2K" link="gst-plugins-bad-libs-gst-dvb-descriptor.html#GST-MPEGTS-TRANSMISSION-MODE-2K:CAPS"/>
+ <keyword type="constant" name="GST_MPEGTS_TRANSMISSION_MODE_8K" link="gst-plugins-bad-libs-gst-dvb-descriptor.html#GST-MPEGTS-TRANSMISSION-MODE-8K:CAPS"/>
+ <keyword type="constant" name="GST_MPEGTS_TRANSMISSION_MODE_AUTO" link="gst-plugins-bad-libs-gst-dvb-descriptor.html#GST-MPEGTS-TRANSMISSION-MODE-AUTO:CAPS"/>
+ <keyword type="constant" name="GST_MPEGTS_TRANSMISSION_MODE_4K" link="gst-plugins-bad-libs-gst-dvb-descriptor.html#GST-MPEGTS-TRANSMISSION-MODE-4K:CAPS"/>
+ <keyword type="constant" name="GST_MPEGTS_TRANSMISSION_MODE_1K" link="gst-plugins-bad-libs-gst-dvb-descriptor.html#GST-MPEGTS-TRANSMISSION-MODE-1K:CAPS"/>
+ <keyword type="constant" name="GST_MPEGTS_TRANSMISSION_MODE_16K" link="gst-plugins-bad-libs-gst-dvb-descriptor.html#GST-MPEGTS-TRANSMISSION-MODE-16K:CAPS"/>
+ <keyword type="constant" name="GST_MPEGTS_TRANSMISSION_MODE_32K" link="gst-plugins-bad-libs-gst-dvb-descriptor.html#GST-MPEGTS-TRANSMISSION-MODE-32K:CAPS"/>
+ <keyword type="constant" name="GST_MPEGTS_TRANSMISSION_MODE_C1" link="gst-plugins-bad-libs-gst-dvb-descriptor.html#GST-MPEGTS-TRANSMISSION-MODE-C1:CAPS"/>
+ <keyword type="constant" name="GST_MPEGTS_TRANSMISSION_MODE_C3780" link="gst-plugins-bad-libs-gst-dvb-descriptor.html#GST-MPEGTS-TRANSMISSION-MODE-C3780:CAPS"/>
+ <keyword type="constant" name="GST_MPEGTS_GUARD_INTERVAL_1_32" link="gst-plugins-bad-libs-gst-dvb-descriptor.html#GST-MPEGTS-GUARD-INTERVAL-1-32:CAPS"/>
+ <keyword type="constant" name="GST_MPEGTS_GUARD_INTERVAL_1_16" link="gst-plugins-bad-libs-gst-dvb-descriptor.html#GST-MPEGTS-GUARD-INTERVAL-1-16:CAPS"/>
+ <keyword type="constant" name="GST_MPEGTS_GUARD_INTERVAL_1_8" link="gst-plugins-bad-libs-gst-dvb-descriptor.html#GST-MPEGTS-GUARD-INTERVAL-1-8:CAPS"/>
+ <keyword type="constant" name="GST_MPEGTS_GUARD_INTERVAL_1_4" link="gst-plugins-bad-libs-gst-dvb-descriptor.html#GST-MPEGTS-GUARD-INTERVAL-1-4:CAPS"/>
+ <keyword type="constant" name="GST_MPEGTS_GUARD_INTERVAL_AUTO" link="gst-plugins-bad-libs-gst-dvb-descriptor.html#GST-MPEGTS-GUARD-INTERVAL-AUTO:CAPS"/>
+ <keyword type="constant" name="GST_MPEGTS_GUARD_INTERVAL_1_128" link="gst-plugins-bad-libs-gst-dvb-descriptor.html#GST-MPEGTS-GUARD-INTERVAL-1-128:CAPS"/>
+ <keyword type="constant" name="GST_MPEGTS_GUARD_INTERVAL_19_128" link="gst-plugins-bad-libs-gst-dvb-descriptor.html#GST-MPEGTS-GUARD-INTERVAL-19-128:CAPS"/>
+ <keyword type="constant" name="GST_MPEGTS_GUARD_INTERVAL_19_256" link="gst-plugins-bad-libs-gst-dvb-descriptor.html#GST-MPEGTS-GUARD-INTERVAL-19-256:CAPS"/>
+ <keyword type="constant" name="GST_MPEGTS_GUARD_INTERVAL_PN420" link="gst-plugins-bad-libs-gst-dvb-descriptor.html#GST-MPEGTS-GUARD-INTERVAL-PN420:CAPS"/>
+ <keyword type="constant" name="GST_MPEGTS_GUARD_INTERVAL_PN595" link="gst-plugins-bad-libs-gst-dvb-descriptor.html#GST-MPEGTS-GUARD-INTERVAL-PN595:CAPS"/>
+ <keyword type="constant" name="GST_MPEGTS_GUARD_INTERVAL_PN945" link="gst-plugins-bad-libs-gst-dvb-descriptor.html#GST-MPEGTS-GUARD-INTERVAL-PN945:CAPS"/>
+ <keyword type="constant" name="GST_MPEGTS_HIERARCHY_NONE" link="gst-plugins-bad-libs-gst-dvb-descriptor.html#GST-MPEGTS-HIERARCHY-NONE:CAPS"/>
+ <keyword type="constant" name="GST_MPEGTS_HIERARCHY_1" link="gst-plugins-bad-libs-gst-dvb-descriptor.html#GST-MPEGTS-HIERARCHY-1:CAPS"/>
+ <keyword type="constant" name="GST_MPEGTS_HIERARCHY_2" link="gst-plugins-bad-libs-gst-dvb-descriptor.html#GST-MPEGTS-HIERARCHY-2:CAPS"/>
+ <keyword type="constant" name="GST_MPEGTS_HIERARCHY_4" link="gst-plugins-bad-libs-gst-dvb-descriptor.html#GST-MPEGTS-HIERARCHY-4:CAPS"/>
+ <keyword type="constant" name="GST_MPEGTS_HIERARCHY_AUTO" link="gst-plugins-bad-libs-gst-dvb-descriptor.html#GST-MPEGTS-HIERARCHY-AUTO:CAPS"/>
+ <keyword type="constant" name="GST_DVB_SERVICE_RESERVED_00" link="gst-plugins-bad-libs-gst-dvb-descriptor.html#GST-DVB-SERVICE-RESERVED-00:CAPS"/>
+ <keyword type="constant" name="GST_DVB_SERVICE_DIGITAL_TELEVISION" link="gst-plugins-bad-libs-gst-dvb-descriptor.html#GST-DVB-SERVICE-DIGITAL-TELEVISION:CAPS"/>
+ <keyword type="constant" name="GST_DVB_SERVICE_DIGITAL_RADIO_SOUND" link="gst-plugins-bad-libs-gst-dvb-descriptor.html#GST-DVB-SERVICE-DIGITAL-RADIO-SOUND:CAPS"/>
+ <keyword type="constant" name="GST_DVB_SERVICE_TELETEXT" link="gst-plugins-bad-libs-gst-dvb-descriptor.html#GST-DVB-SERVICE-TELETEXT:CAPS"/>
+ <keyword type="constant" name="GST_DVB_SERVICE_NVOD_REFERENCE" link="gst-plugins-bad-libs-gst-dvb-descriptor.html#GST-DVB-SERVICE-NVOD-REFERENCE:CAPS"/>
+ <keyword type="constant" name="GST_DVB_SERVICE_NVOD_TIME_SHIFTED" link="gst-plugins-bad-libs-gst-dvb-descriptor.html#GST-DVB-SERVICE-NVOD-TIME-SHIFTED:CAPS"/>
+ <keyword type="constant" name="GST_DVB_SERVICE_MOSAIC" link="gst-plugins-bad-libs-gst-dvb-descriptor.html#GST-DVB-SERVICE-MOSAIC:CAPS"/>
+ <keyword type="constant" name="GST_DVB_SERVICE_FM_RADIO" link="gst-plugins-bad-libs-gst-dvb-descriptor.html#GST-DVB-SERVICE-FM-RADIO:CAPS"/>
+ <keyword type="constant" name="GST_DVB_SERVICE_DVB_SRM" link="gst-plugins-bad-libs-gst-dvb-descriptor.html#GST-DVB-SERVICE-DVB-SRM:CAPS"/>
+ <keyword type="constant" name="GST_DVB_SERVICE_RESERVED_09" link="gst-plugins-bad-libs-gst-dvb-descriptor.html#GST-DVB-SERVICE-RESERVED-09:CAPS"/>
+ <keyword type="constant" name="GST_DVB_SERVICE_ADVANCED_CODEC_DIGITAL_RADIO_SOUND" link="gst-plugins-bad-libs-gst-dvb-descriptor.html#GST-DVB-SERVICE-ADVANCED-CODEC-DIGITAL-RADIO-SOUND:CAPS"/>
+ <keyword type="constant" name="GST_DVB_SERVICE_ADVANCED_CODEC_MOSAIC" link="gst-plugins-bad-libs-gst-dvb-descriptor.html#GST-DVB-SERVICE-ADVANCED-CODEC-MOSAIC:CAPS"/>
+ <keyword type="constant" name="GST_DVB_SERVICE_DATA_BROADCAST" link="gst-plugins-bad-libs-gst-dvb-descriptor.html#GST-DVB-SERVICE-DATA-BROADCAST:CAPS"/>
+ <keyword type="constant" name="GST_DVB_SERVICE_RESERVED_0D_COMMON_INTERFACE" link="gst-plugins-bad-libs-gst-dvb-descriptor.html#GST-DVB-SERVICE-RESERVED-0D-COMMON-INTERFACE:CAPS"/>
+ <keyword type="constant" name="GST_DVB_SERVICE_RCS_MAP" link="gst-plugins-bad-libs-gst-dvb-descriptor.html#GST-DVB-SERVICE-RCS-MAP:CAPS"/>
+ <keyword type="constant" name="GST_DVB_SERVICE_RCS_FLS" link="gst-plugins-bad-libs-gst-dvb-descriptor.html#GST-DVB-SERVICE-RCS-FLS:CAPS"/>
+ <keyword type="constant" name="GST_DVB_SERVICE_DVB_MHP" link="gst-plugins-bad-libs-gst-dvb-descriptor.html#GST-DVB-SERVICE-DVB-MHP:CAPS"/>
+ <keyword type="constant" name="GST_DVB_SERVICE_MPEG2_HD_DIGITAL_TELEVISION" link="gst-plugins-bad-libs-gst-dvb-descriptor.html#GST-DVB-SERVICE-MPEG2-HD-DIGITAL-TELEVISION:CAPS"/>
+ <keyword type="constant" name="GST_DVB_SERVICE_ADVANCED_CODEC_SD_DIGITAL_TELEVISION" link="gst-plugins-bad-libs-gst-dvb-descriptor.html#GST-DVB-SERVICE-ADVANCED-CODEC-SD-DIGITAL-TELEVISION:CAPS"/>
+ <keyword type="constant" name="GST_DVB_SERVICE_ADVANCED_CODEC_SD_NVOD_TIME_SHIFTED" link="gst-plugins-bad-libs-gst-dvb-descriptor.html#GST-DVB-SERVICE-ADVANCED-CODEC-SD-NVOD-TIME-SHIFTED:CAPS"/>
+ <keyword type="constant" name="GST_DVB_SERVICE_ADVANCED_CODEC_SD_NVOD_REFERENCE" link="gst-plugins-bad-libs-gst-dvb-descriptor.html#GST-DVB-SERVICE-ADVANCED-CODEC-SD-NVOD-REFERENCE:CAPS"/>
+ <keyword type="constant" name="GST_DVB_SERVICE_ADVANCED_CODEC_HD_DIGITAL_TELEVISION" link="gst-plugins-bad-libs-gst-dvb-descriptor.html#GST-DVB-SERVICE-ADVANCED-CODEC-HD-DIGITAL-TELEVISION:CAPS"/>
+ <keyword type="constant" name="GST_DVB_SERVICE_ADVANCED_CODEC_HD_NVOD_TIME_SHIFTED" link="gst-plugins-bad-libs-gst-dvb-descriptor.html#GST-DVB-SERVICE-ADVANCED-CODEC-HD-NVOD-TIME-SHIFTED:CAPS"/>
+ <keyword type="constant" name="GST_DVB_SERVICE_ADVANCED_CODEC_HD_NVOD_REFERENCE" link="gst-plugins-bad-libs-gst-dvb-descriptor.html#GST-DVB-SERVICE-ADVANCED-CODEC-HD-NVOD-REFERENCE:CAPS"/>
+ <keyword type="constant" name="GST_DVB_SERVICE_ADVANCED_CODEC_STEREO_HD_DIGITAL_TELEVISION" link="gst-plugins-bad-libs-gst-dvb-descriptor.html#GST-DVB-SERVICE-ADVANCED-CODEC-STEREO-HD-DIGITAL-TELEVISION:CAPS"/>
+ <keyword type="constant" name="GST_DVB_SERVICE_ADVANCED_CODEC_STEREO_HD_NVOD_TIME_SHIFTED" link="gst-plugins-bad-libs-gst-dvb-descriptor.html#GST-DVB-SERVICE-ADVANCED-CODEC-STEREO-HD-NVOD-TIME-SHIFTED:CAPS"/>
+ <keyword type="constant" name="GST_DVB_SERVICE_ADVANCED_CODEC_STEREO_HD_NVOD_REFERENCE" link="gst-plugins-bad-libs-gst-dvb-descriptor.html#GST-DVB-SERVICE-ADVANCED-CODEC-STEREO-HD-NVOD-REFERENCE:CAPS"/>
+ <keyword type="constant" name="GST_DVB_SERVICE_RESERVED_FF" link="gst-plugins-bad-libs-gst-dvb-descriptor.html#GST-DVB-SERVICE-RESERVED-FF:CAPS"/>
+ <keyword type="constant" name="INITIAL_PAGE" link="gst-plugins-bad-libs-gst-dvb-descriptor.html#INITIAL-PAGE:CAPS"/>
+ <keyword type="constant" name="SUBTITLE_PAGE" link="gst-plugins-bad-libs-gst-dvb-descriptor.html#SUBTITLE-PAGE:CAPS"/>
+ <keyword type="constant" name="ADDITIONAL_INFO_PAGE" link="gst-plugins-bad-libs-gst-dvb-descriptor.html#ADDITIONAL-INFO-PAGE:CAPS"/>
+ <keyword type="constant" name="PROGRAMME_SCHEDULE_PAGE" link="gst-plugins-bad-libs-gst-dvb-descriptor.html#PROGRAMME-SCHEDULE-PAGE:CAPS"/>
+ <keyword type="constant" name="HEARING_IMPAIRED_PAGE" link="gst-plugins-bad-libs-gst-dvb-descriptor.html#HEARING-IMPAIRED-PAGE:CAPS"/>
+ <keyword type="constant" name="GST_MPEGTS_DVB_LINKAGE_RESERVED_00" link="gst-plugins-bad-libs-gst-dvb-descriptor.html#GST-MPEGTS-DVB-LINKAGE-RESERVED-00:CAPS"/>
+ <keyword type="constant" name="GST_MPEGTS_DVB_LINKAGE_INFORMATION" link="gst-plugins-bad-libs-gst-dvb-descriptor.html#GST-MPEGTS-DVB-LINKAGE-INFORMATION:CAPS"/>
+ <keyword type="constant" name="GST_MPEGTS_DVB_LINKAGE_EPG" link="gst-plugins-bad-libs-gst-dvb-descriptor.html#GST-MPEGTS-DVB-LINKAGE-EPG:CAPS"/>
+ <keyword type="constant" name="GST_MPEGTS_DVB_LINKAGE_CA_REPLACEMENT" link="gst-plugins-bad-libs-gst-dvb-descriptor.html#GST-MPEGTS-DVB-LINKAGE-CA-REPLACEMENT:CAPS"/>
+ <keyword type="constant" name="GST_MPEGTS_DVB_LINKAGE_TS_CONTAINING_COMPLETE_SI" link="gst-plugins-bad-libs-gst-dvb-descriptor.html#GST-MPEGTS-DVB-LINKAGE-TS-CONTAINING-COMPLETE-SI:CAPS"/>
+ <keyword type="constant" name="GST_MPEGTS_DVB_LINKAGE_SERVICE_REPLACEMENT" link="gst-plugins-bad-libs-gst-dvb-descriptor.html#GST-MPEGTS-DVB-LINKAGE-SERVICE-REPLACEMENT:CAPS"/>
+ <keyword type="constant" name="GST_MPEGTS_DVB_LINKAGE_DATA_BROADCAST" link="gst-plugins-bad-libs-gst-dvb-descriptor.html#GST-MPEGTS-DVB-LINKAGE-DATA-BROADCAST:CAPS"/>
+ <keyword type="constant" name="GST_MPEGTS_DVB_LINKAGE_RCS_MAP" link="gst-plugins-bad-libs-gst-dvb-descriptor.html#GST-MPEGTS-DVB-LINKAGE-RCS-MAP:CAPS"/>
+ <keyword type="constant" name="GST_MPEGTS_DVB_LINKAGE_MOBILE_HAND_OVER" link="gst-plugins-bad-libs-gst-dvb-descriptor.html#GST-MPEGTS-DVB-LINKAGE-MOBILE-HAND-OVER:CAPS"/>
+ <keyword type="constant" name="GST_MPEGTS_DVB_LINKAGE_SYSTEM_SOFTWARE_UPDATE" link="gst-plugins-bad-libs-gst-dvb-descriptor.html#GST-MPEGTS-DVB-LINKAGE-SYSTEM-SOFTWARE-UPDATE:CAPS"/>
+ <keyword type="constant" name="GST_MPEGTS_DVB_LINKAGE_TS_CONTAINING_SSU" link="gst-plugins-bad-libs-gst-dvb-descriptor.html#GST-MPEGTS-DVB-LINKAGE-TS-CONTAINING-SSU:CAPS"/>
+ <keyword type="constant" name="GST_MPEGTS_DVB_LINKAGE_IP_MAC_NOTIFICATION" link="gst-plugins-bad-libs-gst-dvb-descriptor.html#GST-MPEGTS-DVB-LINKAGE-IP-MAC-NOTIFICATION:CAPS"/>
+ <keyword type="constant" name="GST_MPEGTS_DVB_LINKAGE_TS_CONTAINING_INT" link="gst-plugins-bad-libs-gst-dvb-descriptor.html#GST-MPEGTS-DVB-LINKAGE-TS-CONTAINING-INT:CAPS"/>
+ <keyword type="constant" name="GST_MPEGTS_DVB_LINKAGE_EVENT" link="gst-plugins-bad-libs-gst-dvb-descriptor.html#GST-MPEGTS-DVB-LINKAGE-EVENT:CAPS"/>
+ <keyword type="constant" name="GST_MPEGTS_DVB_LINKAGE_EXTENDED_EVENT" link="gst-plugins-bad-libs-gst-dvb-descriptor.html#GST-MPEGTS-DVB-LINKAGE-EXTENDED-EVENT:CAPS"/>
+ <keyword type="constant" name="GST_MPEGTS_DVB_LINKAGE_HAND_OVER_RESERVED" link="gst-plugins-bad-libs-gst-dvb-descriptor.html#GST-MPEGTS-DVB-LINKAGE-HAND-OVER-RESERVED:CAPS"/>
+ <keyword type="constant" name="GST_MPEGTS_DVB_LINKAGE_HAND_OVER_IDENTICAL" link="gst-plugins-bad-libs-gst-dvb-descriptor.html#GST-MPEGTS-DVB-LINKAGE-HAND-OVER-IDENTICAL:CAPS"/>
+ <keyword type="constant" name="GST_MPEGTS_DVB_LINKAGE_HAND_OVER_LOCAL_VARIATION" link="gst-plugins-bad-libs-gst-dvb-descriptor.html#GST-MPEGTS-DVB-LINKAGE-HAND-OVER-LOCAL-VARIATION:CAPS"/>
+ <keyword type="constant" name="GST_MPEGTS_DVB_LINKAGE_HAND_OVER_ASSOCIATED" link="gst-plugins-bad-libs-gst-dvb-descriptor.html#GST-MPEGTS-DVB-LINKAGE-HAND-OVER-ASSOCIATED:CAPS"/>
+ <keyword type="constant" name="GST_MPEGTS_DVB_SCRAMBLING_MODE_RESERVED" link="gst-plugins-bad-libs-gst-dvb-descriptor.html#GST-MPEGTS-DVB-SCRAMBLING-MODE-RESERVED:CAPS"/>
+ <keyword type="constant" name="GST_MPEGTS_DVB_SCRAMBLING_MODE_CSA1" link="gst-plugins-bad-libs-gst-dvb-descriptor.html#GST-MPEGTS-DVB-SCRAMBLING-MODE-CSA1:CAPS"/>
+ <keyword type="constant" name="GST_MPEGTS_DVB_SCRAMBLING_MODE_CSA2" link="gst-plugins-bad-libs-gst-dvb-descriptor.html#GST-MPEGTS-DVB-SCRAMBLING-MODE-CSA2:CAPS"/>
+ <keyword type="constant" name="GST_MPEGTS_DVB_SCRAMBLING_MODE_CSA3_STANDARD" link="gst-plugins-bad-libs-gst-dvb-descriptor.html#GST-MPEGTS-DVB-SCRAMBLING-MODE-CSA3-STANDARD:CAPS"/>
+ <keyword type="constant" name="GST_MPEGTS_DVB_SCRAMBLING_MODE_CSA3_MINIMAL_ENHANCED" link="gst-plugins-bad-libs-gst-dvb-descriptor.html#GST-MPEGTS-DVB-SCRAMBLING-MODE-CSA3-MINIMAL-ENHANCED:CAPS"/>
+ <keyword type="constant" name="GST_MPEGTS_DVB_SCRAMBLING_MODE_CSA3_FULL_ENHANCED" link="gst-plugins-bad-libs-gst-dvb-descriptor.html#GST-MPEGTS-DVB-SCRAMBLING-MODE-CSA3-FULL-ENHANCED:CAPS"/>
+ <keyword type="constant" name="GST_MPEGTS_DVB_SCRAMBLING_MODE_CISSA" link="gst-plugins-bad-libs-gst-dvb-descriptor.html#GST-MPEGTS-DVB-SCRAMBLING-MODE-CISSA:CAPS"/>
+ <keyword type="constant" name="GST_MPEGTS_DVB_SCRAMBLING_MODE_ATIS_0" link="gst-plugins-bad-libs-gst-dvb-descriptor.html#GST-MPEGTS-DVB-SCRAMBLING-MODE-ATIS-0:CAPS"/>
+ <keyword type="constant" name="GST_MPEGTS_DVB_SCRAMBLING_MODE_ATIS_F" link="gst-plugins-bad-libs-gst-dvb-descriptor.html#GST-MPEGTS-DVB-SCRAMBLING-MODE-ATIS-F:CAPS"/>
+ <keyword type="constant" name="GST_MTS_DESC_ISDB_HIERARCHICAL_TRANSMISSION" link="gst-plugins-bad-libs-gst-isdb-descriptor.html#GST-MTS-DESC-ISDB-HIERARCHICAL-TRANSMISSION:CAPS"/>
+ <keyword type="constant" name="GST_MTS_DESC_ISDB_DIGITAL_COPY_CONTROL" link="gst-plugins-bad-libs-gst-isdb-descriptor.html#GST-MTS-DESC-ISDB-DIGITAL-COPY-CONTROL:CAPS"/>
+ <keyword type="constant" name="GST_MTS_DESC_ISDB_NETWORK_IDENTIFICATION" link="gst-plugins-bad-libs-gst-isdb-descriptor.html#GST-MTS-DESC-ISDB-NETWORK-IDENTIFICATION:CAPS"/>
+ <keyword type="constant" name="GST_MTS_DESC_ISDB_PARTIAL_TS_TIME" link="gst-plugins-bad-libs-gst-isdb-descriptor.html#GST-MTS-DESC-ISDB-PARTIAL-TS-TIME:CAPS"/>
+ <keyword type="constant" name="GST_MTS_DESC_ISDB_AUDIO_COMPONENT" link="gst-plugins-bad-libs-gst-isdb-descriptor.html#GST-MTS-DESC-ISDB-AUDIO-COMPONENT:CAPS"/>
+ <keyword type="constant" name="GST_MTS_DESC_ISDB_HYPERLINK" link="gst-plugins-bad-libs-gst-isdb-descriptor.html#GST-MTS-DESC-ISDB-HYPERLINK:CAPS"/>
+ <keyword type="constant" name="GST_MTS_DESC_ISDB_TARGET_REGION" link="gst-plugins-bad-libs-gst-isdb-descriptor.html#GST-MTS-DESC-ISDB-TARGET-REGION:CAPS"/>
+ <keyword type="constant" name="GST_MTS_DESC_ISDB_DATA_CONTENT" link="gst-plugins-bad-libs-gst-isdb-descriptor.html#GST-MTS-DESC-ISDB-DATA-CONTENT:CAPS"/>
+ <keyword type="constant" name="GST_MTS_DESC_ISDB_VIDEO_DECODE_CONTROL" link="gst-plugins-bad-libs-gst-isdb-descriptor.html#GST-MTS-DESC-ISDB-VIDEO-DECODE-CONTROL:CAPS"/>
+ <keyword type="constant" name="GST_MTS_DESC_ISDB_DOWNLOAD_CONTENT" link="gst-plugins-bad-libs-gst-isdb-descriptor.html#GST-MTS-DESC-ISDB-DOWNLOAD-CONTENT:CAPS"/>
+ <keyword type="constant" name="GST_MTS_DESC_ISDB_CA_EMM_TS" link="gst-plugins-bad-libs-gst-isdb-descriptor.html#GST-MTS-DESC-ISDB-CA-EMM-TS:CAPS"/>
+ <keyword type="constant" name="GST_MTS_DESC_ISDB_CA_CONTRACT_INFORMATION" link="gst-plugins-bad-libs-gst-isdb-descriptor.html#GST-MTS-DESC-ISDB-CA-CONTRACT-INFORMATION:CAPS"/>
+ <keyword type="constant" name="GST_MTS_DESC_ISDB_CA_SERVICE" link="gst-plugins-bad-libs-gst-isdb-descriptor.html#GST-MTS-DESC-ISDB-CA-SERVICE:CAPS"/>
+ <keyword type="constant" name="GST_MTS_DESC_ISDB_TS_INFORMATION" link="gst-plugins-bad-libs-gst-isdb-descriptor.html#GST-MTS-DESC-ISDB-TS-INFORMATION:CAPS"/>
+ <keyword type="constant" name="GST_MTS_DESC_ISDB_EXTENDED_BROADCASTER" link="gst-plugins-bad-libs-gst-isdb-descriptor.html#GST-MTS-DESC-ISDB-EXTENDED-BROADCASTER:CAPS"/>
+ <keyword type="constant" name="GST_MTS_DESC_ISDB_LOGO_TRANSMISSION" link="gst-plugins-bad-libs-gst-isdb-descriptor.html#GST-MTS-DESC-ISDB-LOGO-TRANSMISSION:CAPS"/>
+ <keyword type="constant" name="GST_MTS_DESC_ISDB_BASIC_LOCAL_EVENT" link="gst-plugins-bad-libs-gst-isdb-descriptor.html#GST-MTS-DESC-ISDB-BASIC-LOCAL-EVENT:CAPS"/>
+ <keyword type="constant" name="GST_MTS_DESC_ISDB_REFERENCE" link="gst-plugins-bad-libs-gst-isdb-descriptor.html#GST-MTS-DESC-ISDB-REFERENCE:CAPS"/>
+ <keyword type="constant" name="GST_MTS_DESC_ISDB_NODE_RELATION" link="gst-plugins-bad-libs-gst-isdb-descriptor.html#GST-MTS-DESC-ISDB-NODE-RELATION:CAPS"/>
+ <keyword type="constant" name="GST_MTS_DESC_ISDB_SHORT_NODE_INFORMATION" link="gst-plugins-bad-libs-gst-isdb-descriptor.html#GST-MTS-DESC-ISDB-SHORT-NODE-INFORMATION:CAPS"/>
+ <keyword type="constant" name="GST_MTS_DESC_ISDB_STC_REFERENCE" link="gst-plugins-bad-libs-gst-isdb-descriptor.html#GST-MTS-DESC-ISDB-STC-REFERENCE:CAPS"/>
+ <keyword type="constant" name="GST_MTS_DESC_ISDB_SERIES" link="gst-plugins-bad-libs-gst-isdb-descriptor.html#GST-MTS-DESC-ISDB-SERIES:CAPS"/>
+ <keyword type="constant" name="GST_MTS_DESC_ISDB_EVENT_GROUP" link="gst-plugins-bad-libs-gst-isdb-descriptor.html#GST-MTS-DESC-ISDB-EVENT-GROUP:CAPS"/>
+ <keyword type="constant" name="GST_MTS_DESC_ISDB_SI_PARAMETER" link="gst-plugins-bad-libs-gst-isdb-descriptor.html#GST-MTS-DESC-ISDB-SI-PARAMETER:CAPS"/>
+ <keyword type="constant" name="GST_MTS_DESC_ISDB_BROADCASTER_NAME" link="gst-plugins-bad-libs-gst-isdb-descriptor.html#GST-MTS-DESC-ISDB-BROADCASTER-NAME:CAPS"/>
+ <keyword type="constant" name="GST_MTS_DESC_ISDB_COMPONENT_GROUP" link="gst-plugins-bad-libs-gst-isdb-descriptor.html#GST-MTS-DESC-ISDB-COMPONENT-GROUP:CAPS"/>
+ <keyword type="constant" name="GST_MTS_DESC_ISDB_SI_PRIME_TS" link="gst-plugins-bad-libs-gst-isdb-descriptor.html#GST-MTS-DESC-ISDB-SI-PRIME-TS:CAPS"/>
+ <keyword type="constant" name="GST_MTS_DESC_ISDB_BOARD_INFORMATION" link="gst-plugins-bad-libs-gst-isdb-descriptor.html#GST-MTS-DESC-ISDB-BOARD-INFORMATION:CAPS"/>
+ <keyword type="constant" name="GST_MTS_DESC_ISDB_LDT_LINKAGE" link="gst-plugins-bad-libs-gst-isdb-descriptor.html#GST-MTS-DESC-ISDB-LDT-LINKAGE:CAPS"/>
+ <keyword type="constant" name="GST_MTS_DESC_ISDB_CONNECTED_TRANSMISSION" link="gst-plugins-bad-libs-gst-isdb-descriptor.html#GST-MTS-DESC-ISDB-CONNECTED-TRANSMISSION:CAPS"/>
+ <keyword type="constant" name="GST_MTS_DESC_ISDB_CONTENT_AVAILABILITY" link="gst-plugins-bad-libs-gst-isdb-descriptor.html#GST-MTS-DESC-ISDB-CONTENT-AVAILABILITY:CAPS"/>
+ <keyword type="constant" name="GST_MTS_DESC_ISDB_SERVICE_GROUP" link="gst-plugins-bad-libs-gst-isdb-descriptor.html#GST-MTS-DESC-ISDB-SERVICE-GROUP:CAPS"/>
<keyword type="constant" name="GST_GL_API_NONE" link="gst-plugins-bad-libs-GstGLAPI.html#GST-GL-API-NONE:CAPS"/>
<keyword type="constant" name="GST_GL_API_OPENGL" link="gst-plugins-bad-libs-GstGLAPI.html#GST-GL-API-OPENGL:CAPS"/>
<keyword type="constant" name="GST_GL_API_OPENGL3" link="gst-plugins-bad-libs-GstGLAPI.html#GST-GL-API-OPENGL3:CAPS"/>
@@ -1835,556 +1834,5 @@
<keyword type="constant" name="GST_PHOTOGRAPHY_SHAKE_RISK_LOW" link="gst-plugins-bad-libs-GstPhotography.html#GST-PHOTOGRAPHY-SHAKE-RISK-LOW:CAPS"/>
<keyword type="constant" name="GST_PHOTOGRAPHY_SHAKE_RISK_MEDIUM" link="gst-plugins-bad-libs-GstPhotography.html#GST-PHOTOGRAPHY-SHAKE-RISK-MEDIUM:CAPS"/>
<keyword type="constant" name="GST_PHOTOGRAPHY_SHAKE_RISK_HIGH" link="gst-plugins-bad-libs-GstPhotography.html#GST-PHOTOGRAPHY-SHAKE-RISK-HIGH:CAPS"/>
- <keyword type="member" name="GstH264NalUnit.ref-idc" link="gst-plugins-bad-libs-h264parser.html#GstH264NalUnit.ref-idc"/>
- <keyword type="member" name="GstH264NalUnit.type" link="gst-plugins-bad-libs-h264parser.html#GstH264NalUnit.type"/>
- <keyword type="member" name="GstH264NalUnit.idr-pic-flag" link="gst-plugins-bad-libs-h264parser.html#GstH264NalUnit.idr-pic-flag"/>
- <keyword type="member" name="GstH264NalUnit.size" link="gst-plugins-bad-libs-h264parser.html#GstH264NalUnit.size"/>
- <keyword type="member" name="GstH264NalUnit.offset" link="gst-plugins-bad-libs-h264parser.html#GstH264NalUnit.offset"/>
- <keyword type="member" name="GstH264NalUnit.sc-offset" link="gst-plugins-bad-libs-h264parser.html#GstH264NalUnit.sc-offset"/>
- <keyword type="member" name="GstH264NalUnit.valid" link="gst-plugins-bad-libs-h264parser.html#GstH264NalUnit.valid"/>
- <keyword type="member" name="GstH264NalUnit.data" link="gst-plugins-bad-libs-h264parser.html#GstH264NalUnit.data"/>
- <keyword type="member" name="GstH264NalUnit.header-bytes" link="gst-plugins-bad-libs-h264parser.html#GstH264NalUnit.header-bytes"/>
- <keyword type="member" name="GstH264NalUnit.extension-type" link="gst-plugins-bad-libs-h264parser.html#GstH264NalUnit.extension-type"/>
- <keyword type="member" name="GstH264SPS.id" link="gst-plugins-bad-libs-h264parser.html#GstH264SPS.id"/>
- <keyword type="member" name="GstH264SPS.profile-idc" link="gst-plugins-bad-libs-h264parser.html#GstH264SPS.profile-idc"/>
- <keyword type="member" name="GstH264SPS.constraint-set0-flag" link="gst-plugins-bad-libs-h264parser.html#GstH264SPS.constraint-set0-flag"/>
- <keyword type="member" name="GstH264SPS.constraint-set1-flag" link="gst-plugins-bad-libs-h264parser.html#GstH264SPS.constraint-set1-flag"/>
- <keyword type="member" name="GstH264SPS.constraint-set2-flag" link="gst-plugins-bad-libs-h264parser.html#GstH264SPS.constraint-set2-flag"/>
- <keyword type="member" name="GstH264SPS.constraint-set3-flag" link="gst-plugins-bad-libs-h264parser.html#GstH264SPS.constraint-set3-flag"/>
- <keyword type="member" name="GstH264SPS.constraint-set4-flag" link="gst-plugins-bad-libs-h264parser.html#GstH264SPS.constraint-set4-flag"/>
- <keyword type="member" name="GstH264SPS.constraint-set5-flag" link="gst-plugins-bad-libs-h264parser.html#GstH264SPS.constraint-set5-flag"/>
- <keyword type="member" name="GstH264SPS.level-idc" link="gst-plugins-bad-libs-h264parser.html#GstH264SPS.level-idc"/>
- <keyword type="member" name="GstH264SPS.chroma-format-idc" link="gst-plugins-bad-libs-h264parser.html#GstH264SPS.chroma-format-idc"/>
- <keyword type="member" name="GstH264SPS.separate-colour-plane-flag" link="gst-plugins-bad-libs-h264parser.html#GstH264SPS.separate-colour-plane-flag"/>
- <keyword type="member" name="GstH264SPS.bit-depth-luma-minus8" link="gst-plugins-bad-libs-h264parser.html#GstH264SPS.bit-depth-luma-minus8"/>
- <keyword type="member" name="GstH264SPS.bit-depth-chroma-minus8" link="gst-plugins-bad-libs-h264parser.html#GstH264SPS.bit-depth-chroma-minus8"/>
- <keyword type="member" name="GstH264SPS.qpprime-y-zero-transform-bypass-flag" link="gst-plugins-bad-libs-h264parser.html#GstH264SPS.qpprime-y-zero-transform-bypass-flag"/>
- <keyword type="member" name="GstH264SPS.scaling-matrix-present-flag" link="gst-plugins-bad-libs-h264parser.html#GstH264SPS.scaling-matrix-present-flag"/>
- <keyword type="member" name="GstH264SPS.scaling-lists-4x4" link="gst-plugins-bad-libs-h264parser.html#GstH264SPS.scaling-lists-4x4"/>
- <keyword type="member" name="GstH264SPS.scaling-lists-8x8" link="gst-plugins-bad-libs-h264parser.html#GstH264SPS.scaling-lists-8x8"/>
- <keyword type="member" name="GstH264SPS.log2-max-frame-num-minus4" link="gst-plugins-bad-libs-h264parser.html#GstH264SPS.log2-max-frame-num-minus4"/>
- <keyword type="member" name="GstH264SPS.pic-order-cnt-type" link="gst-plugins-bad-libs-h264parser.html#GstH264SPS.pic-order-cnt-type"/>
- <keyword type="member" name="GstH264SPS.log2-max-pic-order-cnt-lsb-minus4" link="gst-plugins-bad-libs-h264parser.html#GstH264SPS.log2-max-pic-order-cnt-lsb-minus4"/>
- <keyword type="member" name="GstH264SPS.delta-pic-order-always-zero-flag" link="gst-plugins-bad-libs-h264parser.html#GstH264SPS.delta-pic-order-always-zero-flag"/>
- <keyword type="member" name="GstH264SPS.offset-for-non-ref-pic" link="gst-plugins-bad-libs-h264parser.html#GstH264SPS.offset-for-non-ref-pic"/>
- <keyword type="member" name="GstH264SPS.offset-for-top-to-bottom-field" link="gst-plugins-bad-libs-h264parser.html#GstH264SPS.offset-for-top-to-bottom-field"/>
- <keyword type="member" name="GstH264SPS.num-ref-frames-in-pic-order-cnt-cycle" link="gst-plugins-bad-libs-h264parser.html#GstH264SPS.num-ref-frames-in-pic-order-cnt-cycle"/>
- <keyword type="member" name="GstH264SPS.offset-for-ref-frame" link="gst-plugins-bad-libs-h264parser.html#GstH264SPS.offset-for-ref-frame"/>
- <keyword type="member" name="GstH264SPS.num-ref-frames" link="gst-plugins-bad-libs-h264parser.html#GstH264SPS.num-ref-frames"/>
- <keyword type="member" name="GstH264SPS.gaps-in-frame-num-value-allowed-flag" link="gst-plugins-bad-libs-h264parser.html#GstH264SPS.gaps-in-frame-num-value-allowed-flag"/>
- <keyword type="member" name="GstH264SPS.pic-width-in-mbs-minus1" link="gst-plugins-bad-libs-h264parser.html#GstH264SPS.pic-width-in-mbs-minus1"/>
- <keyword type="member" name="GstH264SPS.pic-height-in-map-units-minus1" link="gst-plugins-bad-libs-h264parser.html#GstH264SPS.pic-height-in-map-units-minus1"/>
- <keyword type="member" name="GstH264SPS.frame-mbs-only-flag" link="gst-plugins-bad-libs-h264parser.html#GstH264SPS.frame-mbs-only-flag"/>
- <keyword type="member" name="GstH264SPS.mb-adaptive-frame-field-flag" link="gst-plugins-bad-libs-h264parser.html#GstH264SPS.mb-adaptive-frame-field-flag"/>
- <keyword type="member" name="GstH264SPS.direct-8x8-inference-flag" link="gst-plugins-bad-libs-h264parser.html#GstH264SPS.direct-8x8-inference-flag"/>
- <keyword type="member" name="GstH264SPS.frame-cropping-flag" link="gst-plugins-bad-libs-h264parser.html#GstH264SPS.frame-cropping-flag"/>
- <keyword type="member" name="GstH264SPS.frame-crop-left-offset" link="gst-plugins-bad-libs-h264parser.html#GstH264SPS.frame-crop-left-offset"/>
- <keyword type="member" name="GstH264SPS.frame-crop-right-offset" link="gst-plugins-bad-libs-h264parser.html#GstH264SPS.frame-crop-right-offset"/>
- <keyword type="member" name="GstH264SPS.frame-crop-top-offset" link="gst-plugins-bad-libs-h264parser.html#GstH264SPS.frame-crop-top-offset"/>
- <keyword type="member" name="GstH264SPS.frame-crop-bottom-offset" link="gst-plugins-bad-libs-h264parser.html#GstH264SPS.frame-crop-bottom-offset"/>
- <keyword type="member" name="GstH264SPS.vui-parameters-present-flag" link="gst-plugins-bad-libs-h264parser.html#GstH264SPS.vui-parameters-present-flag"/>
- <keyword type="member" name="GstH264SPS.vui-parameters" link="gst-plugins-bad-libs-h264parser.html#GstH264SPS.vui-parameters"/>
- <keyword type="member" name="GstH264SPS.chroma-array-type" link="gst-plugins-bad-libs-h264parser.html#GstH264SPS.chroma-array-type"/>
- <keyword type="member" name="GstH264SPS.max-frame-num" link="gst-plugins-bad-libs-h264parser.html#GstH264SPS.max-frame-num"/>
- <keyword type="member" name="GstH264SPS.width" link="gst-plugins-bad-libs-h264parser.html#GstH264SPS.width"/>
- <keyword type="member" name="GstH264SPS.height" link="gst-plugins-bad-libs-h264parser.html#GstH264SPS.height"/>
- <keyword type="member" name="GstH264SPS.crop-rect-width" link="gst-plugins-bad-libs-h264parser.html#GstH264SPS.crop-rect-width"/>
- <keyword type="member" name="GstH264SPS.crop-rect-height" link="gst-plugins-bad-libs-h264parser.html#GstH264SPS.crop-rect-height"/>
- <keyword type="member" name="GstH264SPS.crop-rect-x" link="gst-plugins-bad-libs-h264parser.html#GstH264SPS.crop-rect-x"/>
- <keyword type="member" name="GstH264SPS.crop-rect-y" link="gst-plugins-bad-libs-h264parser.html#GstH264SPS.crop-rect-y"/>
- <keyword type="member" name="GstH264SPS.fps-num" link="gst-plugins-bad-libs-h264parser.html#GstH264SPS.fps-num"/>
- <keyword type="member" name="GstH264SPS.fps-den" link="gst-plugins-bad-libs-h264parser.html#GstH264SPS.fps-den"/>
- <keyword type="member" name="GstH264SPS.valid" link="gst-plugins-bad-libs-h264parser.html#GstH264SPS.valid"/>
- <keyword type="member" name="GstH264SPS.extension-type" link="gst-plugins-bad-libs-h264parser.html#GstH264SPS.extension-type"/>
- <keyword type="member" name="GstH264HRDParams.cpb-cnt-minus1" link="gst-plugins-bad-libs-h264parser.html#GstH264HRDParams.cpb-cnt-minus1"/>
- <keyword type="member" name="GstH264HRDParams.bit-rate-scale" link="gst-plugins-bad-libs-h264parser.html#GstH264HRDParams.bit-rate-scale"/>
- <keyword type="member" name="GstH264HRDParams.cpb-size-scale" link="gst-plugins-bad-libs-h264parser.html#GstH264HRDParams.cpb-size-scale"/>
- <keyword type="member" name="GstH264HRDParams.bit-rate-value-minus1" link="gst-plugins-bad-libs-h264parser.html#GstH264HRDParams.bit-rate-value-minus1"/>
- <keyword type="member" name="GstH264HRDParams.cpb-size-value-minus1" link="gst-plugins-bad-libs-h264parser.html#GstH264HRDParams.cpb-size-value-minus1"/>
- <keyword type="member" name="GstH264HRDParams.cbr-flag" link="gst-plugins-bad-libs-h264parser.html#GstH264HRDParams.cbr-flag"/>
- <keyword type="member" name="GstH264HRDParams.initial-cpb-removal-delay-length-minus1" link="gst-plugins-bad-libs-h264parser.html#GstH264HRDParams.initial-cpb-removal-delay-length-minus1"/>
- <keyword type="member" name="GstH264HRDParams.cpb-removal-delay-length-minus1" link="gst-plugins-bad-libs-h264parser.html#GstH264HRDParams.cpb-removal-delay-length-minus1"/>
- <keyword type="member" name="GstH264HRDParams.dpb-output-delay-length-minus1" link="gst-plugins-bad-libs-h264parser.html#GstH264HRDParams.dpb-output-delay-length-minus1"/>
- <keyword type="member" name="GstH264HRDParams.time-offset-length" link="gst-plugins-bad-libs-h264parser.html#GstH264HRDParams.time-offset-length"/>
- <keyword type="member" name="GstH264VUIParams.aspect-ratio-info-present-flag" link="gst-plugins-bad-libs-h264parser.html#GstH264VUIParams.aspect-ratio-info-present-flag"/>
- <keyword type="member" name="GstH264VUIParams.aspect-ratio-idc" link="gst-plugins-bad-libs-h264parser.html#GstH264VUIParams.aspect-ratio-idc"/>
- <keyword type="member" name="GstH264VUIParams.sar-width" link="gst-plugins-bad-libs-h264parser.html#GstH264VUIParams.sar-width"/>
- <keyword type="member" name="GstH264VUIParams.sar-height" link="gst-plugins-bad-libs-h264parser.html#GstH264VUIParams.sar-height"/>
- <keyword type="member" name="GstH264VUIParams.overscan-info-present-flag" link="gst-plugins-bad-libs-h264parser.html#GstH264VUIParams.overscan-info-present-flag"/>
- <keyword type="member" name="GstH264VUIParams.overscan-appropriate-flag" link="gst-plugins-bad-libs-h264parser.html#GstH264VUIParams.overscan-appropriate-flag"/>
- <keyword type="member" name="GstH264VUIParams.video-signal-type-present-flag" link="gst-plugins-bad-libs-h264parser.html#GstH264VUIParams.video-signal-type-present-flag"/>
- <keyword type="member" name="GstH264VUIParams.video-format" link="gst-plugins-bad-libs-h264parser.html#GstH264VUIParams.video-format"/>
- <keyword type="member" name="GstH264VUIParams.video-full-range-flag" link="gst-plugins-bad-libs-h264parser.html#GstH264VUIParams.video-full-range-flag"/>
- <keyword type="member" name="GstH264VUIParams.colour-description-present-flag" link="gst-plugins-bad-libs-h264parser.html#GstH264VUIParams.colour-description-present-flag"/>
- <keyword type="member" name="GstH264VUIParams.colour-primaries" link="gst-plugins-bad-libs-h264parser.html#GstH264VUIParams.colour-primaries"/>
- <keyword type="member" name="GstH264VUIParams.transfer-characteristics" link="gst-plugins-bad-libs-h264parser.html#GstH264VUIParams.transfer-characteristics"/>
- <keyword type="member" name="GstH264VUIParams.matrix-coefficients" link="gst-plugins-bad-libs-h264parser.html#GstH264VUIParams.matrix-coefficients"/>
- <keyword type="member" name="GstH264VUIParams.chroma-loc-info-present-flag" link="gst-plugins-bad-libs-h264parser.html#GstH264VUIParams.chroma-loc-info-present-flag"/>
- <keyword type="member" name="GstH264VUIParams.chroma-sample-loc-type-top-field" link="gst-plugins-bad-libs-h264parser.html#GstH264VUIParams.chroma-sample-loc-type-top-field"/>
- <keyword type="member" name="GstH264VUIParams.chroma-sample-loc-type-bottom-field" link="gst-plugins-bad-libs-h264parser.html#GstH264VUIParams.chroma-sample-loc-type-bottom-field"/>
- <keyword type="member" name="GstH264VUIParams.timing-info-present-flag" link="gst-plugins-bad-libs-h264parser.html#GstH264VUIParams.timing-info-present-flag"/>
- <keyword type="member" name="GstH264VUIParams.num-units-in-tick" link="gst-plugins-bad-libs-h264parser.html#GstH264VUIParams.num-units-in-tick"/>
- <keyword type="member" name="GstH264VUIParams.time-scale" link="gst-plugins-bad-libs-h264parser.html#GstH264VUIParams.time-scale"/>
- <keyword type="member" name="GstH264VUIParams.fixed-frame-rate-flag" link="gst-plugins-bad-libs-h264parser.html#GstH264VUIParams.fixed-frame-rate-flag"/>
- <keyword type="member" name="GstH264VUIParams.nal-hrd-parameters-present-flag" link="gst-plugins-bad-libs-h264parser.html#GstH264VUIParams.nal-hrd-parameters-present-flag"/>
- <keyword type="member" name="GstH264VUIParams.nal-hrd-parameters" link="gst-plugins-bad-libs-h264parser.html#GstH264VUIParams.nal-hrd-parameters"/>
- <keyword type="member" name="GstH264VUIParams.vcl-hrd-parameters-present-flag" link="gst-plugins-bad-libs-h264parser.html#GstH264VUIParams.vcl-hrd-parameters-present-flag"/>
- <keyword type="member" name="GstH264VUIParams.vcl-hrd-parameters" link="gst-plugins-bad-libs-h264parser.html#GstH264VUIParams.vcl-hrd-parameters"/>
- <keyword type="member" name="GstH264VUIParams.low-delay-hrd-flag" link="gst-plugins-bad-libs-h264parser.html#GstH264VUIParams.low-delay-hrd-flag"/>
- <keyword type="member" name="GstH264VUIParams.pic-struct-present-flag" link="gst-plugins-bad-libs-h264parser.html#GstH264VUIParams.pic-struct-present-flag"/>
- <keyword type="member" name="GstH264VUIParams.bitstream-restriction-flag" link="gst-plugins-bad-libs-h264parser.html#GstH264VUIParams.bitstream-restriction-flag"/>
- <keyword type="member" name="GstH264VUIParams.motion-vectors-over-pic-boundaries-flag" link="gst-plugins-bad-libs-h264parser.html#GstH264VUIParams.motion-vectors-over-pic-boundaries-flag"/>
- <keyword type="member" name="GstH264VUIParams.max-bytes-per-pic-denom" link="gst-plugins-bad-libs-h264parser.html#GstH264VUIParams.max-bytes-per-pic-denom"/>
- <keyword type="member" name="GstH264VUIParams.max-bits-per-mb-denom" link="gst-plugins-bad-libs-h264parser.html#GstH264VUIParams.max-bits-per-mb-denom"/>
- <keyword type="member" name="GstH264VUIParams.log2-max-mv-length-horizontal" link="gst-plugins-bad-libs-h264parser.html#GstH264VUIParams.log2-max-mv-length-horizontal"/>
- <keyword type="member" name="GstH264VUIParams.log2-max-mv-length-vertical" link="gst-plugins-bad-libs-h264parser.html#GstH264VUIParams.log2-max-mv-length-vertical"/>
- <keyword type="member" name="GstH264VUIParams.num-reorder-frames" link="gst-plugins-bad-libs-h264parser.html#GstH264VUIParams.num-reorder-frames"/>
- <keyword type="member" name="GstH264VUIParams.max-dec-frame-buffering" link="gst-plugins-bad-libs-h264parser.html#GstH264VUIParams.max-dec-frame-buffering"/>
- <keyword type="member" name="GstH264VUIParams.par-n" link="gst-plugins-bad-libs-h264parser.html#GstH264VUIParams.par-n"/>
- <keyword type="member" name="GstH264VUIParams.par-d" link="gst-plugins-bad-libs-h264parser.html#GstH264VUIParams.par-d"/>
- <keyword type="member" name="GstJpegSegment.marker" link="gst-plugins-bad-libs-jpegparser.html#GstJpegSegment.marker"/>
- <keyword type="member" name="GstJpegSegment.data" link="gst-plugins-bad-libs-jpegparser.html#GstJpegSegment.data"/>
- <keyword type="member" name="GstJpegSegment.offset" link="gst-plugins-bad-libs-jpegparser.html#GstJpegSegment.offset"/>
- <keyword type="member" name="GstJpegSegment.size" link="gst-plugins-bad-libs-jpegparser.html#GstJpegSegment.size"/>
- <keyword type="member" name="GstJpegFrameHdr.sample-precision" link="gst-plugins-bad-libs-jpegparser.html#GstJpegFrameHdr.sample-precision"/>
- <keyword type="member" name="GstJpegFrameHdr.width" link="gst-plugins-bad-libs-jpegparser.html#GstJpegFrameHdr.width"/>
- <keyword type="member" name="GstJpegFrameHdr.height" link="gst-plugins-bad-libs-jpegparser.html#GstJpegFrameHdr.height"/>
- <keyword type="member" name="GstJpegFrameHdr.num-components" link="gst-plugins-bad-libs-jpegparser.html#GstJpegFrameHdr.num-components"/>
- <keyword type="member" name="GstJpegFrameHdr.components" link="gst-plugins-bad-libs-jpegparser.html#GstJpegFrameHdr.components"/>
- <keyword type="member" name="GstJpegFrameComponent.identifier" link="gst-plugins-bad-libs-jpegparser.html#GstJpegFrameComponent.identifier"/>
- <keyword type="member" name="GstJpegFrameComponent.horizontal-factor" link="gst-plugins-bad-libs-jpegparser.html#GstJpegFrameComponent.horizontal-factor"/>
- <keyword type="member" name="GstJpegFrameComponent.vertical-factor" link="gst-plugins-bad-libs-jpegparser.html#GstJpegFrameComponent.vertical-factor"/>
- <keyword type="member" name="GstJpegFrameComponent.quant-table-selector" link="gst-plugins-bad-libs-jpegparser.html#GstJpegFrameComponent.quant-table-selector"/>
- <keyword type="member" name="GstJpegScanHdr.num-components" link="gst-plugins-bad-libs-jpegparser.html#GstJpegScanHdr.num-components"/>
- <keyword type="member" name="GstJpegScanHdr.components" link="gst-plugins-bad-libs-jpegparser.html#GstJpegScanHdr.components"/>
- <keyword type="member" name="GstJpegScanComponent.component-selector" link="gst-plugins-bad-libs-jpegparser.html#GstJpegScanComponent.component-selector"/>
- <keyword type="member" name="GstJpegScanComponent.dc-selector" link="gst-plugins-bad-libs-jpegparser.html#GstJpegScanComponent.dc-selector"/>
- <keyword type="member" name="GstJpegScanComponent.ac-selector" link="gst-plugins-bad-libs-jpegparser.html#GstJpegScanComponent.ac-selector"/>
- <keyword type="member" name="GstJpegHuffmanTables.dc-tables" link="gst-plugins-bad-libs-jpegparser.html#GstJpegHuffmanTables.dc-tables"/>
- <keyword type="member" name="GstJpegHuffmanTables.ac-tables" link="gst-plugins-bad-libs-jpegparser.html#GstJpegHuffmanTables.ac-tables"/>
- <keyword type="member" name="GstJpegHuffmanTable.huf-bits" link="gst-plugins-bad-libs-jpegparser.html#GstJpegHuffmanTable.huf-bits"/>
- <keyword type="member" name="GstJpegHuffmanTable.huf-values" link="gst-plugins-bad-libs-jpegparser.html#GstJpegHuffmanTable.huf-values"/>
- <keyword type="member" name="GstJpegHuffmanTable.valid" link="gst-plugins-bad-libs-jpegparser.html#GstJpegHuffmanTable.valid"/>
- <keyword type="member" name="GstJpegQuantTable.quant-precision" link="gst-plugins-bad-libs-jpegparser.html#GstJpegQuantTable.quant-precision"/>
- <keyword type="member" name="GstJpegQuantTable.quant-table" link="gst-plugins-bad-libs-jpegparser.html#GstJpegQuantTable.quant-table"/>
- <keyword type="member" name="GstJpegQuantTable.valid" link="gst-plugins-bad-libs-jpegparser.html#GstJpegQuantTable.valid"/>
- <keyword type="member" name="GstMpegVideoSequenceHdr.width" link="gst-plugins-bad-libs-mpegvideoparser.html#GstMpegVideoSequenceHdr.width"/>
- <keyword type="member" name="GstMpegVideoSequenceHdr.height" link="gst-plugins-bad-libs-mpegvideoparser.html#GstMpegVideoSequenceHdr.height"/>
- <keyword type="member" name="GstMpegVideoSequenceHdr.aspect-ratio-info" link="gst-plugins-bad-libs-mpegvideoparser.html#GstMpegVideoSequenceHdr.aspect-ratio-info"/>
- <keyword type="member" name="GstMpegVideoSequenceHdr.frame-rate-code" link="gst-plugins-bad-libs-mpegvideoparser.html#GstMpegVideoSequenceHdr.frame-rate-code"/>
- <keyword type="member" name="GstMpegVideoSequenceHdr.bitrate-value" link="gst-plugins-bad-libs-mpegvideoparser.html#GstMpegVideoSequenceHdr.bitrate-value"/>
- <keyword type="member" name="GstMpegVideoSequenceHdr.vbv-buffer-size-value" link="gst-plugins-bad-libs-mpegvideoparser.html#GstMpegVideoSequenceHdr.vbv-buffer-size-value"/>
- <keyword type="member" name="GstMpegVideoSequenceHdr.constrained-parameters-flag" link="gst-plugins-bad-libs-mpegvideoparser.html#GstMpegVideoSequenceHdr.constrained-parameters-flag"/>
- <keyword type="member" name="GstMpegVideoSequenceHdr.intra-quantizer-matrix" link="gst-plugins-bad-libs-mpegvideoparser.html#GstMpegVideoSequenceHdr.intra-quantizer-matrix"/>
- <keyword type="member" name="GstMpegVideoSequenceHdr.non-intra-quantizer-matrix" link="gst-plugins-bad-libs-mpegvideoparser.html#GstMpegVideoSequenceHdr.non-intra-quantizer-matrix"/>
- <keyword type="member" name="GstMpegVideoSequenceHdr.par-w" link="gst-plugins-bad-libs-mpegvideoparser.html#GstMpegVideoSequenceHdr.par-w"/>
- <keyword type="member" name="GstMpegVideoSequenceHdr.par-h" link="gst-plugins-bad-libs-mpegvideoparser.html#GstMpegVideoSequenceHdr.par-h"/>
- <keyword type="member" name="GstMpegVideoSequenceHdr.fps-n" link="gst-plugins-bad-libs-mpegvideoparser.html#GstMpegVideoSequenceHdr.fps-n"/>
- <keyword type="member" name="GstMpegVideoSequenceHdr.fps-d" link="gst-plugins-bad-libs-mpegvideoparser.html#GstMpegVideoSequenceHdr.fps-d"/>
- <keyword type="member" name="GstMpegVideoSequenceHdr.bitrate" link="gst-plugins-bad-libs-mpegvideoparser.html#GstMpegVideoSequenceHdr.bitrate"/>
- <keyword type="member" name="GstMpegVideoSequenceExt.profile" link="gst-plugins-bad-libs-mpegvideoparser.html#GstMpegVideoSequenceExt.profile"/>
- <keyword type="member" name="GstMpegVideoSequenceExt.level" link="gst-plugins-bad-libs-mpegvideoparser.html#GstMpegVideoSequenceExt.level"/>
- <keyword type="member" name="GstMpegVideoSequenceExt.progressive" link="gst-plugins-bad-libs-mpegvideoparser.html#GstMpegVideoSequenceExt.progressive"/>
- <keyword type="member" name="GstMpegVideoSequenceExt.chroma-format" link="gst-plugins-bad-libs-mpegvideoparser.html#GstMpegVideoSequenceExt.chroma-format"/>
- <keyword type="member" name="GstMpegVideoSequenceExt.horiz-size-ext" link="gst-plugins-bad-libs-mpegvideoparser.html#GstMpegVideoSequenceExt.horiz-size-ext"/>
- <keyword type="member" name="GstMpegVideoSequenceExt.vert-size-ext" link="gst-plugins-bad-libs-mpegvideoparser.html#GstMpegVideoSequenceExt.vert-size-ext"/>
- <keyword type="member" name="GstMpegVideoSequenceExt.bitrate-ext" link="gst-plugins-bad-libs-mpegvideoparser.html#GstMpegVideoSequenceExt.bitrate-ext"/>
- <keyword type="member" name="GstMpegVideoSequenceExt.vbv-buffer-size-extension" link="gst-plugins-bad-libs-mpegvideoparser.html#GstMpegVideoSequenceExt.vbv-buffer-size-extension"/>
- <keyword type="member" name="GstMpegVideoSequenceExt.low-delay" link="gst-plugins-bad-libs-mpegvideoparser.html#GstMpegVideoSequenceExt.low-delay"/>
- <keyword type="member" name="GstMpegVideoSequenceExt.fps-n-ext" link="gst-plugins-bad-libs-mpegvideoparser.html#GstMpegVideoSequenceExt.fps-n-ext"/>
- <keyword type="member" name="GstMpegVideoSequenceExt.fps-d-ext" link="gst-plugins-bad-libs-mpegvideoparser.html#GstMpegVideoSequenceExt.fps-d-ext"/>
- <keyword type="member" name="GstMpegVideoSequenceExt.profile-level-escape-bit" link="gst-plugins-bad-libs-mpegvideoparser.html#GstMpegVideoSequenceExt.profile-level-escape-bit"/>
- <keyword type="member" name="GstMpegVideoPictureHdr.tsn" link="gst-plugins-bad-libs-mpegvideoparser.html#GstMpegVideoPictureHdr.tsn"/>
- <keyword type="member" name="GstMpegVideoPictureHdr.pic-type" link="gst-plugins-bad-libs-mpegvideoparser.html#GstMpegVideoPictureHdr.pic-type"/>
- <keyword type="member" name="GstMpegVideoPictureHdr.full-pel-forward-vector" link="gst-plugins-bad-libs-mpegvideoparser.html#GstMpegVideoPictureHdr.full-pel-forward-vector"/>
- <keyword type="member" name="GstMpegVideoPictureHdr.full-pel-backward-vector" link="gst-plugins-bad-libs-mpegvideoparser.html#GstMpegVideoPictureHdr.full-pel-backward-vector"/>
- <keyword type="member" name="GstMpegVideoPictureHdr.f-code" link="gst-plugins-bad-libs-mpegvideoparser.html#GstMpegVideoPictureHdr.f-code"/>
- <keyword type="member" name="GstMpegVideoGop.drop-frame-flag" link="gst-plugins-bad-libs-mpegvideoparser.html#GstMpegVideoGop.drop-frame-flag"/>
- <keyword type="member" name="GstMpegVideoGop.hour" link="gst-plugins-bad-libs-mpegvideoparser.html#GstMpegVideoGop.hour"/>
- <keyword type="member" name="GstMpegVideoGop.minute" link="gst-plugins-bad-libs-mpegvideoparser.html#GstMpegVideoGop.minute"/>
- <keyword type="member" name="GstMpegVideoGop.second" link="gst-plugins-bad-libs-mpegvideoparser.html#GstMpegVideoGop.second"/>
- <keyword type="member" name="GstMpegVideoGop.frame" link="gst-plugins-bad-libs-mpegvideoparser.html#GstMpegVideoGop.frame"/>
- <keyword type="member" name="GstMpegVideoGop.closed-gop" link="gst-plugins-bad-libs-mpegvideoparser.html#GstMpegVideoGop.closed-gop"/>
- <keyword type="member" name="GstMpegVideoGop.broken-link" link="gst-plugins-bad-libs-mpegvideoparser.html#GstMpegVideoGop.broken-link"/>
- <keyword type="member" name="GstMpegVideoPictureExt.f-code" link="gst-plugins-bad-libs-mpegvideoparser.html#GstMpegVideoPictureExt.f-code"/>
- <keyword type="member" name="GstMpegVideoPictureExt.intra-dc-precision" link="gst-plugins-bad-libs-mpegvideoparser.html#GstMpegVideoPictureExt.intra-dc-precision"/>
- <keyword type="member" name="GstMpegVideoPictureExt.picture-structure" link="gst-plugins-bad-libs-mpegvideoparser.html#GstMpegVideoPictureExt.picture-structure"/>
- <keyword type="member" name="GstMpegVideoPictureExt.top-field-first" link="gst-plugins-bad-libs-mpegvideoparser.html#GstMpegVideoPictureExt.top-field-first"/>
- <keyword type="member" name="GstMpegVideoPictureExt.frame-pred-frame-dct" link="gst-plugins-bad-libs-mpegvideoparser.html#GstMpegVideoPictureExt.frame-pred-frame-dct"/>
- <keyword type="member" name="GstMpegVideoPictureExt.concealment-motion-vectors" link="gst-plugins-bad-libs-mpegvideoparser.html#GstMpegVideoPictureExt.concealment-motion-vectors"/>
- <keyword type="member" name="GstMpegVideoPictureExt.q-scale-type" link="gst-plugins-bad-libs-mpegvideoparser.html#GstMpegVideoPictureExt.q-scale-type"/>
- <keyword type="member" name="GstMpegVideoPictureExt.intra-vlc-format" link="gst-plugins-bad-libs-mpegvideoparser.html#GstMpegVideoPictureExt.intra-vlc-format"/>
- <keyword type="member" name="GstMpegVideoPictureExt.alternate-scan" link="gst-plugins-bad-libs-mpegvideoparser.html#GstMpegVideoPictureExt.alternate-scan"/>
- <keyword type="member" name="GstMpegVideoPictureExt.repeat-first-field" link="gst-plugins-bad-libs-mpegvideoparser.html#GstMpegVideoPictureExt.repeat-first-field"/>
- <keyword type="member" name="GstMpegVideoPictureExt.chroma-420-type" link="gst-plugins-bad-libs-mpegvideoparser.html#GstMpegVideoPictureExt.chroma-420-type"/>
- <keyword type="member" name="GstMpegVideoPictureExt.progressive-frame" link="gst-plugins-bad-libs-mpegvideoparser.html#GstMpegVideoPictureExt.progressive-frame"/>
- <keyword type="member" name="GstMpegVideoPictureExt.composite-display" link="gst-plugins-bad-libs-mpegvideoparser.html#GstMpegVideoPictureExt.composite-display"/>
- <keyword type="member" name="GstMpegVideoPictureExt.v-axis" link="gst-plugins-bad-libs-mpegvideoparser.html#GstMpegVideoPictureExt.v-axis"/>
- <keyword type="member" name="GstMpegVideoPictureExt.field-sequence" link="gst-plugins-bad-libs-mpegvideoparser.html#GstMpegVideoPictureExt.field-sequence"/>
- <keyword type="member" name="GstMpegVideoPictureExt.sub-carrier" link="gst-plugins-bad-libs-mpegvideoparser.html#GstMpegVideoPictureExt.sub-carrier"/>
- <keyword type="member" name="GstMpegVideoPictureExt.burst-amplitude" link="gst-plugins-bad-libs-mpegvideoparser.html#GstMpegVideoPictureExt.burst-amplitude"/>
- <keyword type="member" name="GstMpegVideoPictureExt.sub-carrier-phase" link="gst-plugins-bad-libs-mpegvideoparser.html#GstMpegVideoPictureExt.sub-carrier-phase"/>
- <keyword type="member" name="GstMpeg4Packet.data" link="gst-plugins-bad-libs-mpeg4parser.html#GstMpeg4Packet.data"/>
- <keyword type="member" name="GstMpeg4Packet.offset" link="gst-plugins-bad-libs-mpeg4parser.html#GstMpeg4Packet.offset"/>
- <keyword type="member" name="GstMpeg4Packet.size" link="gst-plugins-bad-libs-mpeg4parser.html#GstMpeg4Packet.size"/>
- <keyword type="member" name="GstMpeg4Packet.marker-size" link="gst-plugins-bad-libs-mpeg4parser.html#GstMpeg4Packet.marker-size"/>
- <keyword type="member" name="GstMpeg4Packet.type" link="gst-plugins-bad-libs-mpeg4parser.html#GstMpeg4Packet.type"/>
- <keyword type="member" name="GstMpeg4VideoPacketHdr.header-extension-code" link="gst-plugins-bad-libs-mpeg4parser.html#GstMpeg4VideoPacketHdr.header-extension-code"/>
- <keyword type="member" name="GstMpeg4VideoPacketHdr.macroblock-number" link="gst-plugins-bad-libs-mpeg4parser.html#GstMpeg4VideoPacketHdr.macroblock-number"/>
- <keyword type="member" name="GstMpeg4VideoPacketHdr.quant-scale" link="gst-plugins-bad-libs-mpeg4parser.html#GstMpeg4VideoPacketHdr.quant-scale"/>
- <keyword type="member" name="GstMpeg4VideoPacketHdr.size" link="gst-plugins-bad-libs-mpeg4parser.html#GstMpeg4VideoPacketHdr.size"/>
- <keyword type="member" name="GstVC1PicAdvanced.fcm" link="gst-plugins-bad-libs-vc1parser.html#GstVC1PicAdvanced.fcm"/>
- <keyword type="member" name="GstVC1PicAdvanced.tfcntr" link="gst-plugins-bad-libs-vc1parser.html#GstVC1PicAdvanced.tfcntr"/>
- <keyword type="member" name="GstVC1PicAdvanced.rptfrm" link="gst-plugins-bad-libs-vc1parser.html#GstVC1PicAdvanced.rptfrm"/>
- <keyword type="member" name="GstVC1PicAdvanced.tff" link="gst-plugins-bad-libs-vc1parser.html#GstVC1PicAdvanced.tff"/>
- <keyword type="member" name="GstVC1PicAdvanced.rff" link="gst-plugins-bad-libs-vc1parser.html#GstVC1PicAdvanced.rff"/>
- <keyword type="member" name="GstVC1PicAdvanced.ps-present" link="gst-plugins-bad-libs-vc1parser.html#GstVC1PicAdvanced.ps-present"/>
- <keyword type="member" name="GstVC1PicAdvanced.ps-hoffset" link="gst-plugins-bad-libs-vc1parser.html#GstVC1PicAdvanced.ps-hoffset"/>
- <keyword type="member" name="GstVC1PicAdvanced.ps-voffset" link="gst-plugins-bad-libs-vc1parser.html#GstVC1PicAdvanced.ps-voffset"/>
- <keyword type="member" name="GstVC1PicAdvanced.ps-width" link="gst-plugins-bad-libs-vc1parser.html#GstVC1PicAdvanced.ps-width"/>
- <keyword type="member" name="GstVC1PicAdvanced.ps-height" link="gst-plugins-bad-libs-vc1parser.html#GstVC1PicAdvanced.ps-height"/>
- <keyword type="member" name="GstVC1PicAdvanced.rndctrl" link="gst-plugins-bad-libs-vc1parser.html#GstVC1PicAdvanced.rndctrl"/>
- <keyword type="member" name="GstVC1PicAdvanced.uvsamp" link="gst-plugins-bad-libs-vc1parser.html#GstVC1PicAdvanced.uvsamp"/>
- <keyword type="member" name="GstVC1PicAdvanced.postproc" link="gst-plugins-bad-libs-vc1parser.html#GstVC1PicAdvanced.postproc"/>
- <keyword type="member" name="GstVC1PicAdvanced.mvrange" link="gst-plugins-bad-libs-vc1parser.html#GstVC1PicAdvanced.mvrange"/>
- <keyword type="member" name="GstVC1PicAdvanced.mvmode" link="gst-plugins-bad-libs-vc1parser.html#GstVC1PicAdvanced.mvmode"/>
- <keyword type="member" name="GstVC1PicAdvanced.mvtab" link="gst-plugins-bad-libs-vc1parser.html#GstVC1PicAdvanced.mvtab"/>
- <keyword type="member" name="GstVC1PicAdvanced.cbptab" link="gst-plugins-bad-libs-vc1parser.html#GstVC1PicAdvanced.cbptab"/>
- <keyword type="member" name="GstVC1PicAdvanced.ttmbf" link="gst-plugins-bad-libs-vc1parser.html#GstVC1PicAdvanced.ttmbf"/>
- <keyword type="member" name="GstVC1PicAdvanced.ttfrm" link="gst-plugins-bad-libs-vc1parser.html#GstVC1PicAdvanced.ttfrm"/>
- <keyword type="member" name="GstVC1PicAdvanced.bfraction" link="gst-plugins-bad-libs-vc1parser.html#GstVC1PicAdvanced.bfraction"/>
- <keyword type="member" name="GstVC1PicAdvanced.mvmode2" link="gst-plugins-bad-libs-vc1parser.html#GstVC1PicAdvanced.mvmode2"/>
- <keyword type="member" name="GstVC1PicAdvanced.lumscale" link="gst-plugins-bad-libs-vc1parser.html#GstVC1PicAdvanced.lumscale"/>
- <keyword type="member" name="GstVC1PicAdvanced.lumshift" link="gst-plugins-bad-libs-vc1parser.html#GstVC1PicAdvanced.lumshift"/>
- <keyword type="member" name="GstVC1PicAdvanced.bf" link="gst-plugins-bad-libs-vc1parser.html#GstVC1PicAdvanced.bf"/>
- <keyword type="member" name="GstVC1PicAdvanced.condover" link="gst-plugins-bad-libs-vc1parser.html#GstVC1PicAdvanced.condover"/>
- <keyword type="member" name="GstVC1PicAdvanced.transacfrm2" link="gst-plugins-bad-libs-vc1parser.html#GstVC1PicAdvanced.transacfrm2"/>
- <keyword type="member" name="GstVC1PicAdvanced.acpred" link="gst-plugins-bad-libs-vc1parser.html#GstVC1PicAdvanced.acpred"/>
- <keyword type="member" name="GstVC1PicAdvanced.overflags" link="gst-plugins-bad-libs-vc1parser.html#GstVC1PicAdvanced.overflags"/>
- <keyword type="member" name="GstVC1PicAdvanced.mvtypemb" link="gst-plugins-bad-libs-vc1parser.html#GstVC1PicAdvanced.mvtypemb"/>
- <keyword type="member" name="GstVC1PicAdvanced.skipmb" link="gst-plugins-bad-libs-vc1parser.html#GstVC1PicAdvanced.skipmb"/>
- <keyword type="member" name="GstVC1PicAdvanced.directmb" link="gst-plugins-bad-libs-vc1parser.html#GstVC1PicAdvanced.directmb"/>
- <keyword type="member" name="GstVC1PicAdvanced.forwardmb" link="gst-plugins-bad-libs-vc1parser.html#GstVC1PicAdvanced.forwardmb"/>
- <keyword type="member" name="GstVC1PicAdvanced.fieldtx" link="gst-plugins-bad-libs-vc1parser.html#GstVC1PicAdvanced.fieldtx"/>
- <keyword type="member" name="GstVC1PicAdvanced.intcomp" link="gst-plugins-bad-libs-vc1parser.html#GstVC1PicAdvanced.intcomp"/>
- <keyword type="member" name="GstVC1PicAdvanced.dmvrange" link="gst-plugins-bad-libs-vc1parser.html#GstVC1PicAdvanced.dmvrange"/>
- <keyword type="member" name="GstVC1PicAdvanced.mbmodetab" link="gst-plugins-bad-libs-vc1parser.html#GstVC1PicAdvanced.mbmodetab"/>
- <keyword type="member" name="GstVC1PicAdvanced.imvtab" link="gst-plugins-bad-libs-vc1parser.html#GstVC1PicAdvanced.imvtab"/>
- <keyword type="member" name="GstVC1PicAdvanced.icbptab" link="gst-plugins-bad-libs-vc1parser.html#GstVC1PicAdvanced.icbptab"/>
- <keyword type="member" name="GstVC1PicAdvanced.mvbptab2" link="gst-plugins-bad-libs-vc1parser.html#GstVC1PicAdvanced.mvbptab2"/>
- <keyword type="member" name="GstVC1PicAdvanced.mvbptab4" link="gst-plugins-bad-libs-vc1parser.html#GstVC1PicAdvanced.mvbptab4"/>
- <keyword type="member" name="GstVC1PicAdvanced.mvswitch4" link="gst-plugins-bad-libs-vc1parser.html#GstVC1PicAdvanced.mvswitch4"/>
- <keyword type="member" name="GstVC1PicAdvanced.refdist" link="gst-plugins-bad-libs-vc1parser.html#GstVC1PicAdvanced.refdist"/>
- <keyword type="member" name="GstVC1PicAdvanced.fptype" link="gst-plugins-bad-libs-vc1parser.html#GstVC1PicAdvanced.fptype"/>
- <keyword type="member" name="GstVC1PicAdvanced.numref" link="gst-plugins-bad-libs-vc1parser.html#GstVC1PicAdvanced.numref"/>
- <keyword type="member" name="GstVC1PicAdvanced.reffield" link="gst-plugins-bad-libs-vc1parser.html#GstVC1PicAdvanced.reffield"/>
- <keyword type="member" name="GstVC1PicAdvanced.lumscale2" link="gst-plugins-bad-libs-vc1parser.html#GstVC1PicAdvanced.lumscale2"/>
- <keyword type="member" name="GstVC1PicAdvanced.lumshift2" link="gst-plugins-bad-libs-vc1parser.html#GstVC1PicAdvanced.lumshift2"/>
- <keyword type="member" name="GstVC1PicAdvanced.intcompfield" link="gst-plugins-bad-libs-vc1parser.html#GstVC1PicAdvanced.intcompfield"/>
- <keyword type="member" name="GstVC1PicSimpleMain.frmcnt" link="gst-plugins-bad-libs-vc1parser.html#GstVC1PicSimpleMain.frmcnt"/>
- <keyword type="member" name="GstVC1PicSimpleMain.mvrange" link="gst-plugins-bad-libs-vc1parser.html#GstVC1PicSimpleMain.mvrange"/>
- <keyword type="member" name="GstVC1PicSimpleMain.rangeredfrm" link="gst-plugins-bad-libs-vc1parser.html#GstVC1PicSimpleMain.rangeredfrm"/>
- <keyword type="member" name="GstVC1PicSimpleMain.respic" link="gst-plugins-bad-libs-vc1parser.html#GstVC1PicSimpleMain.respic"/>
- <keyword type="member" name="GstVC1PicSimpleMain.transacfrm2" link="gst-plugins-bad-libs-vc1parser.html#GstVC1PicSimpleMain.transacfrm2"/>
- <keyword type="member" name="GstVC1PicSimpleMain.bf" link="gst-plugins-bad-libs-vc1parser.html#GstVC1PicSimpleMain.bf"/>
- <keyword type="member" name="GstVC1PicSimpleMain.mvmode" link="gst-plugins-bad-libs-vc1parser.html#GstVC1PicSimpleMain.mvmode"/>
- <keyword type="member" name="GstVC1PicSimpleMain.mvtab" link="gst-plugins-bad-libs-vc1parser.html#GstVC1PicSimpleMain.mvtab"/>
- <keyword type="member" name="GstVC1PicSimpleMain.ttmbf" link="gst-plugins-bad-libs-vc1parser.html#GstVC1PicSimpleMain.ttmbf"/>
- <keyword type="member" name="GstVC1PicSimpleMain.mvmode2" link="gst-plugins-bad-libs-vc1parser.html#GstVC1PicSimpleMain.mvmode2"/>
- <keyword type="member" name="GstVC1PicSimpleMain.lumscale" link="gst-plugins-bad-libs-vc1parser.html#GstVC1PicSimpleMain.lumscale"/>
- <keyword type="member" name="GstVC1PicSimpleMain.lumshift" link="gst-plugins-bad-libs-vc1parser.html#GstVC1PicSimpleMain.lumshift"/>
- <keyword type="member" name="GstVC1PicSimpleMain.cbptab" link="gst-plugins-bad-libs-vc1parser.html#GstVC1PicSimpleMain.cbptab"/>
- <keyword type="member" name="GstVC1PicSimpleMain.ttfrm" link="gst-plugins-bad-libs-vc1parser.html#GstVC1PicSimpleMain.ttfrm"/>
- <keyword type="member" name="GstVC1PicSimpleMain.bfraction" link="gst-plugins-bad-libs-vc1parser.html#GstVC1PicSimpleMain.bfraction"/>
- <keyword type="member" name="GstVC1PicSimpleMain.mvtypemb" link="gst-plugins-bad-libs-vc1parser.html#GstVC1PicSimpleMain.mvtypemb"/>
- <keyword type="member" name="GstVC1PicSimpleMain.skipmb" link="gst-plugins-bad-libs-vc1parser.html#GstVC1PicSimpleMain.skipmb"/>
- <keyword type="member" name="GstVC1PicSimpleMain.directmb" link="gst-plugins-bad-libs-vc1parser.html#GstVC1PicSimpleMain.directmb"/>
- <keyword type="member" name="GstMpegVideoMeta.meta" link="gst-plugins-bad-libs-gstmpegvideometa.html#GstMpegVideoMeta.meta"/>
- <keyword type="member" name="GstMpegVideoMeta.sequencehdr" link="gst-plugins-bad-libs-gstmpegvideometa.html#GstMpegVideoMeta.sequencehdr"/>
- <keyword type="member" name="GstMpegVideoMeta.sequenceext" link="gst-plugins-bad-libs-gstmpegvideometa.html#GstMpegVideoMeta.sequenceext"/>
- <keyword type="member" name="GstMpegVideoMeta.sequencedispext" link="gst-plugins-bad-libs-gstmpegvideometa.html#GstMpegVideoMeta.sequencedispext"/>
- <keyword type="member" name="GstMpegVideoMeta.pichdr" link="gst-plugins-bad-libs-gstmpegvideometa.html#GstMpegVideoMeta.pichdr"/>
- <keyword type="member" name="GstMpegVideoMeta.picext" link="gst-plugins-bad-libs-gstmpegvideometa.html#GstMpegVideoMeta.picext"/>
- <keyword type="member" name="GstMpegVideoMeta.quantext" link="gst-plugins-bad-libs-gstmpegvideometa.html#GstMpegVideoMeta.quantext"/>
- <keyword type="member" name="GstMpegVideoMeta.num-slices" link="gst-plugins-bad-libs-gstmpegvideometa.html#GstMpegVideoMeta.num-slices"/>
- <keyword type="member" name="GstMpegVideoMeta.slice-offset" link="gst-plugins-bad-libs-gstmpegvideometa.html#GstMpegVideoMeta.slice-offset"/>
- <keyword type="member" name="GstMpegtsSection-struct.section-type" link="gst-plugins-bad-libs-Base-MPEG-TS-sections.html#GstMpegtsSection-struct.section-type"/>
- <keyword type="member" name="GstMpegtsSection-struct.pid" link="gst-plugins-bad-libs-Base-MPEG-TS-sections.html#GstMpegtsSection-struct.pid"/>
- <keyword type="member" name="GstMpegtsSection-struct.table-id" link="gst-plugins-bad-libs-Base-MPEG-TS-sections.html#GstMpegtsSection-struct.table-id"/>
- <keyword type="member" name="GstMpegtsSection-struct.subtable-extension" link="gst-plugins-bad-libs-Base-MPEG-TS-sections.html#GstMpegtsSection-struct.subtable-extension"/>
- <keyword type="member" name="GstMpegtsSection-struct.version-number" link="gst-plugins-bad-libs-Base-MPEG-TS-sections.html#GstMpegtsSection-struct.version-number"/>
- <keyword type="member" name="GstMpegtsSection-struct.current-next-indicator" link="gst-plugins-bad-libs-Base-MPEG-TS-sections.html#GstMpegtsSection-struct.current-next-indicator"/>
- <keyword type="member" name="GstMpegtsSection-struct.section-number" link="gst-plugins-bad-libs-Base-MPEG-TS-sections.html#GstMpegtsSection-struct.section-number"/>
- <keyword type="member" name="GstMpegtsSection-struct.last-section-number" link="gst-plugins-bad-libs-Base-MPEG-TS-sections.html#GstMpegtsSection-struct.last-section-number"/>
- <keyword type="member" name="GstMpegtsSection-struct.crc" link="gst-plugins-bad-libs-Base-MPEG-TS-sections.html#GstMpegtsSection-struct.crc"/>
- <keyword type="member" name="GstMpegtsPatProgram.program-number" link="gst-plugins-bad-libs-Base-MPEG-TS-sections.html#GstMpegtsPatProgram.program-number"/>
- <keyword type="member" name="GstMpegtsPatProgram.network-or-program-map-PID" link="gst-plugins-bad-libs-Base-MPEG-TS-sections.html#GstMpegtsPatProgram.network-or-program-map-PID"/>
- <keyword type="member" name="GstMpegtsPMT.pcr-pid" link="gst-plugins-bad-libs-Base-MPEG-TS-sections.html#GstMpegtsPMT.pcr-pid"/>
- <keyword type="member" name="GstMpegtsPMT.program-number" link="gst-plugins-bad-libs-Base-MPEG-TS-sections.html#GstMpegtsPMT.program-number"/>
- <keyword type="member" name="GstMpegtsPMT.descriptors" link="gst-plugins-bad-libs-Base-MPEG-TS-sections.html#GstMpegtsPMT.descriptors"/>
- <keyword type="member" name="GstMpegtsPMT.streams" link="gst-plugins-bad-libs-Base-MPEG-TS-sections.html#GstMpegtsPMT.streams"/>
- <keyword type="member" name="GstMpegtsPMTStream.stream-type" link="gst-plugins-bad-libs-Base-MPEG-TS-sections.html#GstMpegtsPMTStream.stream-type"/>
- <keyword type="member" name="GstMpegtsPMTStream.pid" link="gst-plugins-bad-libs-Base-MPEG-TS-sections.html#GstMpegtsPMTStream.pid"/>
- <keyword type="member" name="GstMpegtsPMTStream.descriptors" link="gst-plugins-bad-libs-Base-MPEG-TS-sections.html#GstMpegtsPMTStream.descriptors"/>
- <keyword type="member" name="GstMpegtsDescriptor-struct.tag" link="gst-plugins-bad-libs-Base-MPEG-TS-descriptors.html#GstMpegtsDescriptor-struct.tag"/>
- <keyword type="member" name="GstMpegtsDescriptor-struct.tag-extension" link="gst-plugins-bad-libs-Base-MPEG-TS-descriptors.html#GstMpegtsDescriptor-struct.tag-extension"/>
- <keyword type="member" name="GstMpegtsDescriptor-struct.length" link="gst-plugins-bad-libs-Base-MPEG-TS-descriptors.html#GstMpegtsDescriptor-struct.length"/>
- <keyword type="member" name="GstMpegtsDescriptor-struct.data" link="gst-plugins-bad-libs-Base-MPEG-TS-descriptors.html#GstMpegtsDescriptor-struct.data"/>
- <keyword type="member" name="GstMpegtsAtscVCTSource.short-name" link="gst-plugins-bad-libs-ATSC-variants-of-MPEG-TS-sections.html#GstMpegtsAtscVCTSource.short-name"/>
- <keyword type="member" name="GstMpegtsAtscVCTSource.major-channel-number" link="gst-plugins-bad-libs-ATSC-variants-of-MPEG-TS-sections.html#GstMpegtsAtscVCTSource.major-channel-number"/>
- <keyword type="member" name="GstMpegtsAtscVCTSource.minor-channel-number" link="gst-plugins-bad-libs-ATSC-variants-of-MPEG-TS-sections.html#GstMpegtsAtscVCTSource.minor-channel-number"/>
- <keyword type="member" name="GstMpegtsAtscVCTSource.modulation-mode" link="gst-plugins-bad-libs-ATSC-variants-of-MPEG-TS-sections.html#GstMpegtsAtscVCTSource.modulation-mode"/>
- <keyword type="member" name="GstMpegtsAtscVCTSource.carrier-frequency" link="gst-plugins-bad-libs-ATSC-variants-of-MPEG-TS-sections.html#GstMpegtsAtscVCTSource.carrier-frequency"/>
- <keyword type="member" name="GstMpegtsAtscVCTSource.channel-TSID" link="gst-plugins-bad-libs-ATSC-variants-of-MPEG-TS-sections.html#GstMpegtsAtscVCTSource.channel-TSID"/>
- <keyword type="member" name="GstMpegtsAtscVCTSource.program-number" link="gst-plugins-bad-libs-ATSC-variants-of-MPEG-TS-sections.html#GstMpegtsAtscVCTSource.program-number"/>
- <keyword type="member" name="GstMpegtsAtscVCTSource.ETM-location" link="gst-plugins-bad-libs-ATSC-variants-of-MPEG-TS-sections.html#GstMpegtsAtscVCTSource.ETM-location"/>
- <keyword type="member" name="GstMpegtsAtscVCTSource.access-controlled" link="gst-plugins-bad-libs-ATSC-variants-of-MPEG-TS-sections.html#GstMpegtsAtscVCTSource.access-controlled"/>
- <keyword type="member" name="GstMpegtsAtscVCTSource.hidden" link="gst-plugins-bad-libs-ATSC-variants-of-MPEG-TS-sections.html#GstMpegtsAtscVCTSource.hidden"/>
- <keyword type="member" name="GstMpegtsAtscVCTSource.path-select" link="gst-plugins-bad-libs-ATSC-variants-of-MPEG-TS-sections.html#GstMpegtsAtscVCTSource.path-select"/>
- <keyword type="member" name="GstMpegtsAtscVCTSource.out-of-band" link="gst-plugins-bad-libs-ATSC-variants-of-MPEG-TS-sections.html#GstMpegtsAtscVCTSource.out-of-band"/>
- <keyword type="member" name="GstMpegtsAtscVCTSource.hide-guide" link="gst-plugins-bad-libs-ATSC-variants-of-MPEG-TS-sections.html#GstMpegtsAtscVCTSource.hide-guide"/>
- <keyword type="member" name="GstMpegtsAtscVCTSource.service-type" link="gst-plugins-bad-libs-ATSC-variants-of-MPEG-TS-sections.html#GstMpegtsAtscVCTSource.service-type"/>
- <keyword type="member" name="GstMpegtsAtscVCTSource.source-id" link="gst-plugins-bad-libs-ATSC-variants-of-MPEG-TS-sections.html#GstMpegtsAtscVCTSource.source-id"/>
- <keyword type="member" name="GstMpegtsAtscVCTSource.descriptors" link="gst-plugins-bad-libs-ATSC-variants-of-MPEG-TS-sections.html#GstMpegtsAtscVCTSource.descriptors"/>
- <keyword type="member" name="GstMpegtsAtscVCT.transport-stream-id" link="gst-plugins-bad-libs-ATSC-variants-of-MPEG-TS-sections.html#GstMpegtsAtscVCT.transport-stream-id"/>
- <keyword type="member" name="GstMpegtsAtscVCT.protocol-version" link="gst-plugins-bad-libs-ATSC-variants-of-MPEG-TS-sections.html#GstMpegtsAtscVCT.protocol-version"/>
- <keyword type="member" name="GstMpegtsAtscVCT.sources" link="gst-plugins-bad-libs-ATSC-variants-of-MPEG-TS-sections.html#GstMpegtsAtscVCT.sources"/>
- <keyword type="member" name="GstMpegtsAtscVCT.descriptors" link="gst-plugins-bad-libs-ATSC-variants-of-MPEG-TS-sections.html#GstMpegtsAtscVCT.descriptors"/>
- <keyword type="member" name="GstMpegtsAtscMGTTable.table-type" link="gst-plugins-bad-libs-ATSC-variants-of-MPEG-TS-sections.html#GstMpegtsAtscMGTTable.table-type"/>
- <keyword type="member" name="GstMpegtsAtscMGTTable.pid" link="gst-plugins-bad-libs-ATSC-variants-of-MPEG-TS-sections.html#GstMpegtsAtscMGTTable.pid"/>
- <keyword type="member" name="GstMpegtsAtscMGTTable.version-number" link="gst-plugins-bad-libs-ATSC-variants-of-MPEG-TS-sections.html#GstMpegtsAtscMGTTable.version-number"/>
- <keyword type="member" name="GstMpegtsAtscMGTTable.number-bytes" link="gst-plugins-bad-libs-ATSC-variants-of-MPEG-TS-sections.html#GstMpegtsAtscMGTTable.number-bytes"/>
- <keyword type="member" name="GstMpegtsAtscMGTTable.descriptors" link="gst-plugins-bad-libs-ATSC-variants-of-MPEG-TS-sections.html#GstMpegtsAtscMGTTable.descriptors"/>
- <keyword type="member" name="GstMpegtsAtscMGT.protocol-version" link="gst-plugins-bad-libs-ATSC-variants-of-MPEG-TS-sections.html#GstMpegtsAtscMGT.protocol-version"/>
- <keyword type="member" name="GstMpegtsAtscMGT.tables-defined" link="gst-plugins-bad-libs-ATSC-variants-of-MPEG-TS-sections.html#GstMpegtsAtscMGT.tables-defined"/>
- <keyword type="member" name="GstMpegtsAtscMGT.tables" link="gst-plugins-bad-libs-ATSC-variants-of-MPEG-TS-sections.html#GstMpegtsAtscMGT.tables"/>
- <keyword type="member" name="GstMpegtsAtscMGT.descriptors" link="gst-plugins-bad-libs-ATSC-variants-of-MPEG-TS-sections.html#GstMpegtsAtscMGT.descriptors"/>
- <keyword type="member" name="GstMpegtsAtscMultString.iso-639-langcode" link="gst-plugins-bad-libs-ATSC-variants-of-MPEG-TS-sections.html#GstMpegtsAtscMultString.iso-639-langcode"/>
- <keyword type="member" name="GstMpegtsAtscMultString.segments" link="gst-plugins-bad-libs-ATSC-variants-of-MPEG-TS-sections.html#GstMpegtsAtscMultString.segments"/>
- <keyword type="member" name="GstMpegtsAtscEITEvent.event-id" link="gst-plugins-bad-libs-ATSC-variants-of-MPEG-TS-sections.html#GstMpegtsAtscEITEvent.event-id"/>
- <keyword type="member" name="GstMpegtsAtscEITEvent.start-time" link="gst-plugins-bad-libs-ATSC-variants-of-MPEG-TS-sections.html#GstMpegtsAtscEITEvent.start-time"/>
- <keyword type="member" name="GstMpegtsAtscEITEvent.etm-location" link="gst-plugins-bad-libs-ATSC-variants-of-MPEG-TS-sections.html#GstMpegtsAtscEITEvent.etm-location"/>
- <keyword type="member" name="GstMpegtsAtscEITEvent.length-in-seconds" link="gst-plugins-bad-libs-ATSC-variants-of-MPEG-TS-sections.html#GstMpegtsAtscEITEvent.length-in-seconds"/>
- <keyword type="member" name="GstMpegtsAtscEITEvent.titles" link="gst-plugins-bad-libs-ATSC-variants-of-MPEG-TS-sections.html#GstMpegtsAtscEITEvent.titles"/>
- <keyword type="member" name="GstMpegtsAtscEITEvent.descriptors" link="gst-plugins-bad-libs-ATSC-variants-of-MPEG-TS-sections.html#GstMpegtsAtscEITEvent.descriptors"/>
- <keyword type="member" name="GstMpegtsAtscEIT.source-id" link="gst-plugins-bad-libs-ATSC-variants-of-MPEG-TS-sections.html#GstMpegtsAtscEIT.source-id"/>
- <keyword type="member" name="GstMpegtsAtscEIT.protocol-version" link="gst-plugins-bad-libs-ATSC-variants-of-MPEG-TS-sections.html#GstMpegtsAtscEIT.protocol-version"/>
- <keyword type="member" name="GstMpegtsAtscEIT.events" link="gst-plugins-bad-libs-ATSC-variants-of-MPEG-TS-sections.html#GstMpegtsAtscEIT.events"/>
- <keyword type="member" name="GstMpegtsAtscETT.ett-table-id-extension" link="gst-plugins-bad-libs-ATSC-variants-of-MPEG-TS-sections.html#GstMpegtsAtscETT.ett-table-id-extension"/>
- <keyword type="member" name="GstMpegtsAtscETT.protocol-version" link="gst-plugins-bad-libs-ATSC-variants-of-MPEG-TS-sections.html#GstMpegtsAtscETT.protocol-version"/>
- <keyword type="member" name="GstMpegtsAtscETT.etm-id" link="gst-plugins-bad-libs-ATSC-variants-of-MPEG-TS-sections.html#GstMpegtsAtscETT.etm-id"/>
- <keyword type="member" name="GstMpegtsAtscETT.messages" link="gst-plugins-bad-libs-ATSC-variants-of-MPEG-TS-sections.html#GstMpegtsAtscETT.messages"/>
- <keyword type="member" name="GstMpegtsAtscSTT.protocol-version" link="gst-plugins-bad-libs-ATSC-variants-of-MPEG-TS-sections.html#GstMpegtsAtscSTT.protocol-version"/>
- <keyword type="member" name="GstMpegtsAtscSTT.system-time" link="gst-plugins-bad-libs-ATSC-variants-of-MPEG-TS-sections.html#GstMpegtsAtscSTT.system-time"/>
- <keyword type="member" name="GstMpegtsAtscSTT.gps-utc-offset" link="gst-plugins-bad-libs-ATSC-variants-of-MPEG-TS-sections.html#GstMpegtsAtscSTT.gps-utc-offset"/>
- <keyword type="member" name="GstMpegtsAtscSTT.ds-status" link="gst-plugins-bad-libs-ATSC-variants-of-MPEG-TS-sections.html#GstMpegtsAtscSTT.ds-status"/>
- <keyword type="member" name="GstMpegtsAtscSTT.ds-dayofmonth" link="gst-plugins-bad-libs-ATSC-variants-of-MPEG-TS-sections.html#GstMpegtsAtscSTT.ds-dayofmonth"/>
- <keyword type="member" name="GstMpegtsAtscSTT.ds-hour" link="gst-plugins-bad-libs-ATSC-variants-of-MPEG-TS-sections.html#GstMpegtsAtscSTT.ds-hour"/>
- <keyword type="member" name="GstMpegtsAtscSTT.descriptors" link="gst-plugins-bad-libs-ATSC-variants-of-MPEG-TS-sections.html#GstMpegtsAtscSTT.descriptors"/>
- <keyword type="member" name="GstMpegtsAtscSTT.utc-datetime" link="gst-plugins-bad-libs-ATSC-variants-of-MPEG-TS-sections.html#GstMpegtsAtscSTT.utc-datetime"/>
- <keyword type="member" name="GstMpegtsNIT.actual-network" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-sections.html#GstMpegtsNIT.actual-network"/>
- <keyword type="member" name="GstMpegtsNIT.network-id" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-sections.html#GstMpegtsNIT.network-id"/>
- <keyword type="member" name="GstMpegtsNIT.descriptors" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-sections.html#GstMpegtsNIT.descriptors"/>
- <keyword type="member" name="GstMpegtsNIT.streams" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-sections.html#GstMpegtsNIT.streams"/>
- <keyword type="member" name="GstMpegtsNITStream.transport-stream-id" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-sections.html#GstMpegtsNITStream.transport-stream-id"/>
- <keyword type="member" name="GstMpegtsNITStream.original-network-id" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-sections.html#GstMpegtsNITStream.original-network-id"/>
- <keyword type="member" name="GstMpegtsNITStream.descriptors" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-sections.html#GstMpegtsNITStream.descriptors"/>
- <keyword type="member" name="GstMpegtsBAT.descriptors" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-sections.html#GstMpegtsBAT.descriptors"/>
- <keyword type="member" name="GstMpegtsBAT.streams" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-sections.html#GstMpegtsBAT.streams"/>
- <keyword type="member" name="GstMpegtsSDT.original-network-id" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-sections.html#GstMpegtsSDT.original-network-id"/>
- <keyword type="member" name="GstMpegtsSDT.actual-ts" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-sections.html#GstMpegtsSDT.actual-ts"/>
- <keyword type="member" name="GstMpegtsSDT.transport-stream-id" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-sections.html#GstMpegtsSDT.transport-stream-id"/>
- <keyword type="member" name="GstMpegtsSDT.services" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-sections.html#GstMpegtsSDT.services"/>
- <keyword type="member" name="GstMpegtsSDTService.service-id" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-sections.html#GstMpegtsSDTService.service-id"/>
- <keyword type="member" name="GstMpegtsSDTService.EIT-schedule-flag" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-sections.html#GstMpegtsSDTService.EIT-schedule-flag"/>
- <keyword type="member" name="GstMpegtsSDTService.EIT-present-following-flag" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-sections.html#GstMpegtsSDTService.EIT-present-following-flag"/>
- <keyword type="member" name="GstMpegtsSDTService.running-status" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-sections.html#GstMpegtsSDTService.running-status"/>
- <keyword type="member" name="GstMpegtsSDTService.free-CA-mode" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-sections.html#GstMpegtsSDTService.free-CA-mode"/>
- <keyword type="member" name="GstMpegtsSDTService.descriptors" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-sections.html#GstMpegtsSDTService.descriptors"/>
- <keyword type="member" name="GstMpegtsEIT.transport-stream-id" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-sections.html#GstMpegtsEIT.transport-stream-id"/>
- <keyword type="member" name="GstMpegtsEIT.original-network-id" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-sections.html#GstMpegtsEIT.original-network-id"/>
- <keyword type="member" name="GstMpegtsEIT.segment-last-section-number" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-sections.html#GstMpegtsEIT.segment-last-section-number"/>
- <keyword type="member" name="GstMpegtsEIT.last-table-id" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-sections.html#GstMpegtsEIT.last-table-id"/>
- <keyword type="member" name="GstMpegtsEIT.actual-stream" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-sections.html#GstMpegtsEIT.actual-stream"/>
- <keyword type="member" name="GstMpegtsEIT.present-following" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-sections.html#GstMpegtsEIT.present-following"/>
- <keyword type="member" name="GstMpegtsEIT.events" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-sections.html#GstMpegtsEIT.events"/>
- <keyword type="member" name="GstMpegtsEITEvent.event-id" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-sections.html#GstMpegtsEITEvent.event-id"/>
- <keyword type="member" name="GstMpegtsEITEvent.start-time" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-sections.html#GstMpegtsEITEvent.start-time"/>
- <keyword type="member" name="GstMpegtsEITEvent.duration" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-sections.html#GstMpegtsEITEvent.duration"/>
- <keyword type="member" name="GstMpegtsEITEvent.running-status" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-sections.html#GstMpegtsEITEvent.running-status"/>
- <keyword type="member" name="GstMpegtsEITEvent.free-CA-mode" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-sections.html#GstMpegtsEITEvent.free-CA-mode"/>
- <keyword type="member" name="GstMpegtsEITEvent.descriptors" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-sections.html#GstMpegtsEITEvent.descriptors"/>
- <keyword type="member" name="GstMpegtsTOT.utc-time" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-sections.html#GstMpegtsTOT.utc-time"/>
- <keyword type="member" name="GstMpegtsTOT.descriptors" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-sections.html#GstMpegtsTOT.descriptors"/>
- <keyword type="member" name="GstMpegtsExtendedEventDescriptor.descriptor-number" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GstMpegtsExtendedEventDescriptor.descriptor-number"/>
- <keyword type="member" name="GstMpegtsExtendedEventDescriptor.last-descriptor-number" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GstMpegtsExtendedEventDescriptor.last-descriptor-number"/>
- <keyword type="member" name="GstMpegtsExtendedEventDescriptor.language-code" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GstMpegtsExtendedEventDescriptor.language-code"/>
- <keyword type="member" name="GstMpegtsExtendedEventDescriptor.items" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GstMpegtsExtendedEventDescriptor.items"/>
- <keyword type="member" name="GstMpegtsExtendedEventDescriptor.text" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GstMpegtsExtendedEventDescriptor.text"/>
- <keyword type="member" name="GstMpegtsSatelliteDeliverySystemDescriptor.frequency" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GstMpegtsSatelliteDeliverySystemDescriptor.frequency"/>
- <keyword type="member" name="GstMpegtsSatelliteDeliverySystemDescriptor.orbital-position" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GstMpegtsSatelliteDeliverySystemDescriptor.orbital-position"/>
- <keyword type="member" name="GstMpegtsSatelliteDeliverySystemDescriptor.west-east" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GstMpegtsSatelliteDeliverySystemDescriptor.west-east"/>
- <keyword type="member" name="GstMpegtsSatelliteDeliverySystemDescriptor.polarization" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GstMpegtsSatelliteDeliverySystemDescriptor.polarization"/>
- <keyword type="member" name="GstMpegtsSatelliteDeliverySystemDescriptor.roll-off" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GstMpegtsSatelliteDeliverySystemDescriptor.roll-off"/>
- <keyword type="member" name="GstMpegtsSatelliteDeliverySystemDescriptor.modulation-system" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GstMpegtsSatelliteDeliverySystemDescriptor.modulation-system"/>
- <keyword type="member" name="GstMpegtsSatelliteDeliverySystemDescriptor.modulation-type" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GstMpegtsSatelliteDeliverySystemDescriptor.modulation-type"/>
- <keyword type="member" name="GstMpegtsSatelliteDeliverySystemDescriptor.symbol-rate" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GstMpegtsSatelliteDeliverySystemDescriptor.symbol-rate"/>
- <keyword type="member" name="GstMpegtsSatelliteDeliverySystemDescriptor.fec-inner" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GstMpegtsSatelliteDeliverySystemDescriptor.fec-inner"/>
- <keyword type="member" name="GstMpegtsCableDeliverySystemDescriptor.frequency" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GstMpegtsCableDeliverySystemDescriptor.frequency"/>
- <keyword type="member" name="GstMpegtsCableDeliverySystemDescriptor.outer-fec" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GstMpegtsCableDeliverySystemDescriptor.outer-fec"/>
- <keyword type="member" name="GstMpegtsCableDeliverySystemDescriptor.modulation" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GstMpegtsCableDeliverySystemDescriptor.modulation"/>
- <keyword type="member" name="GstMpegtsCableDeliverySystemDescriptor.symbol-rate" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GstMpegtsCableDeliverySystemDescriptor.symbol-rate"/>
- <keyword type="member" name="GstMpegtsCableDeliverySystemDescriptor.fec-inner" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GstMpegtsCableDeliverySystemDescriptor.fec-inner"/>
- <keyword type="member" name="GstMpegtsTerrestrialDeliverySystemDescriptor.frequency" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GstMpegtsTerrestrialDeliverySystemDescriptor.frequency"/>
- <keyword type="member" name="GstMpegtsTerrestrialDeliverySystemDescriptor.bandwidth" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GstMpegtsTerrestrialDeliverySystemDescriptor.bandwidth"/>
- <keyword type="member" name="GstMpegtsTerrestrialDeliverySystemDescriptor.priority" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GstMpegtsTerrestrialDeliverySystemDescriptor.priority"/>
- <keyword type="member" name="GstMpegtsTerrestrialDeliverySystemDescriptor.time-slicing" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GstMpegtsTerrestrialDeliverySystemDescriptor.time-slicing"/>
- <keyword type="member" name="GstMpegtsTerrestrialDeliverySystemDescriptor.mpe-fec" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GstMpegtsTerrestrialDeliverySystemDescriptor.mpe-fec"/>
- <keyword type="member" name="GstMpegtsTerrestrialDeliverySystemDescriptor.constellation" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GstMpegtsTerrestrialDeliverySystemDescriptor.constellation"/>
- <keyword type="member" name="GstMpegtsTerrestrialDeliverySystemDescriptor.hierarchy" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GstMpegtsTerrestrialDeliverySystemDescriptor.hierarchy"/>
- <keyword type="member" name="GstMpegtsTerrestrialDeliverySystemDescriptor.code-rate-hp" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GstMpegtsTerrestrialDeliverySystemDescriptor.code-rate-hp"/>
- <keyword type="member" name="GstMpegtsTerrestrialDeliverySystemDescriptor.code-rate-lp" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GstMpegtsTerrestrialDeliverySystemDescriptor.code-rate-lp"/>
- <keyword type="member" name="GstMpegtsTerrestrialDeliverySystemDescriptor.guard-interval" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GstMpegtsTerrestrialDeliverySystemDescriptor.guard-interval"/>
- <keyword type="member" name="GstMpegtsTerrestrialDeliverySystemDescriptor.transmission-mode" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GstMpegtsTerrestrialDeliverySystemDescriptor.transmission-mode"/>
- <keyword type="member" name="GstMpegtsTerrestrialDeliverySystemDescriptor.other-frequency" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GstMpegtsTerrestrialDeliverySystemDescriptor.other-frequency"/>
- <keyword type="member" name="GstMpegtsT2DeliverySystemCellExtension.cell-id-extension" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GstMpegtsT2DeliverySystemCellExtension.cell-id-extension"/>
- <keyword type="member" name="GstMpegtsT2DeliverySystemCellExtension.transposer-frequency" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GstMpegtsT2DeliverySystemCellExtension.transposer-frequency"/>
- <keyword type="member" name="GstMpegtsT2DeliverySystemCell.cell-id" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GstMpegtsT2DeliverySystemCell.cell-id"/>
- <keyword type="member" name="GstMpegtsT2DeliverySystemCell.centre-frequencies" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GstMpegtsT2DeliverySystemCell.centre-frequencies"/>
- <keyword type="member" name="GstMpegtsT2DeliverySystemCell.sub-cells" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GstMpegtsT2DeliverySystemCell.sub-cells"/>
- <keyword type="member" name="GstMpegtsT2DeliverySystemDescriptor.plp-id" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GstMpegtsT2DeliverySystemDescriptor.plp-id"/>
- <keyword type="member" name="GstMpegtsT2DeliverySystemDescriptor.t2-system-id" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GstMpegtsT2DeliverySystemDescriptor.t2-system-id"/>
- <keyword type="member" name="GstMpegtsT2DeliverySystemDescriptor.siso-miso" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GstMpegtsT2DeliverySystemDescriptor.siso-miso"/>
- <keyword type="member" name="GstMpegtsT2DeliverySystemDescriptor.bandwidth" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GstMpegtsT2DeliverySystemDescriptor.bandwidth"/>
- <keyword type="member" name="GstMpegtsT2DeliverySystemDescriptor.guard-interval" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GstMpegtsT2DeliverySystemDescriptor.guard-interval"/>
- <keyword type="member" name="GstMpegtsT2DeliverySystemDescriptor.transmission-mode" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GstMpegtsT2DeliverySystemDescriptor.transmission-mode"/>
- <keyword type="member" name="GstMpegtsT2DeliverySystemDescriptor.other-frequency" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GstMpegtsT2DeliverySystemDescriptor.other-frequency"/>
- <keyword type="member" name="GstMpegtsT2DeliverySystemDescriptor.tfs" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GstMpegtsT2DeliverySystemDescriptor.tfs"/>
- <keyword type="member" name="GstMpegtsT2DeliverySystemDescriptor.cells" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GstMpegtsT2DeliverySystemDescriptor.cells"/>
- <keyword type="member" name="GstMpegtsDVBLinkageDescriptor.transport-stream-id" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GstMpegtsDVBLinkageDescriptor.transport-stream-id"/>
- <keyword type="member" name="GstMpegtsDVBLinkageDescriptor.original-network-id" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GstMpegtsDVBLinkageDescriptor.original-network-id"/>
- <keyword type="member" name="GstMpegtsDVBLinkageDescriptor.service-id" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GstMpegtsDVBLinkageDescriptor.service-id"/>
- <keyword type="member" name="GstMpegtsDVBLinkageDescriptor.linkage-type" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GstMpegtsDVBLinkageDescriptor.linkage-type"/>
- <keyword type="member" name="GstMpegtsDVBLinkageDescriptor.private-data-length" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GstMpegtsDVBLinkageDescriptor.private-data-length"/>
- <keyword type="member" name="GstMpegtsDVBLinkageDescriptor.private-data-bytes" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GstMpegtsDVBLinkageDescriptor.private-data-bytes"/>
- <keyword type="member" name="GstMpegtsDataBroadcastDescriptor.data-broadcast-id" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GstMpegtsDataBroadcastDescriptor.data-broadcast-id"/>
- <keyword type="member" name="GstMpegtsDataBroadcastDescriptor.component-tag" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GstMpegtsDataBroadcastDescriptor.component-tag"/>
- <keyword type="member" name="GstMpegtsDataBroadcastDescriptor.length" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GstMpegtsDataBroadcastDescriptor.length"/>
- <keyword type="member" name="GstMpegtsDataBroadcastDescriptor.selector-bytes" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GstMpegtsDataBroadcastDescriptor.selector-bytes"/>
- <keyword type="member" name="GstMpegtsDataBroadcastDescriptor.language-code" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GstMpegtsDataBroadcastDescriptor.language-code"/>
- <keyword type="member" name="GstMpegtsDataBroadcastDescriptor.text" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GstMpegtsDataBroadcastDescriptor.text"/>
- <keyword type="member" name="GstMpegtsDVBServiceListItem.service-id" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GstMpegtsDVBServiceListItem.service-id"/>
- <keyword type="member" name="GstMpegtsDVBServiceListItem.type" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GstMpegtsDVBServiceListItem.type"/>
- <keyword type="member" name="GstMpegtsDvbMultilingualNetworkNameItem.language-code" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GstMpegtsDvbMultilingualNetworkNameItem.language-code"/>
- <keyword type="member" name="GstMpegtsDvbMultilingualNetworkNameItem.network-name" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GstMpegtsDvbMultilingualNetworkNameItem.network-name"/>
- <keyword type="member" name="GstMpegtsDvbMultilingualBouquetNameItem.language-code" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GstMpegtsDvbMultilingualBouquetNameItem.language-code"/>
- <keyword type="member" name="GstMpegtsDvbMultilingualBouquetNameItem.bouquet-name" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GstMpegtsDvbMultilingualBouquetNameItem.bouquet-name"/>
- <keyword type="member" name="GstMpegtsDvbMultilingualServiceNameItem.language-code" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GstMpegtsDvbMultilingualServiceNameItem.language-code"/>
- <keyword type="member" name="GstMpegtsDvbMultilingualServiceNameItem.provider-name" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GstMpegtsDvbMultilingualServiceNameItem.provider-name"/>
- <keyword type="member" name="GstMpegtsDvbMultilingualServiceNameItem.service-name" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GstMpegtsDvbMultilingualServiceNameItem.service-name"/>
- <keyword type="member" name="GstMpegtsDvbMultilingualComponentItem.language-code" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GstMpegtsDvbMultilingualComponentItem.language-code"/>
- <keyword type="member" name="GstMpegtsDvbMultilingualComponentItem.description" link="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GstMpegtsDvbMultilingualComponentItem.description"/>
- <keyword type="member" name="GstAggregator.parent" link="gst-plugins-bad-libs-GstAggregator.html#GstAggregator.parent"/>
- <keyword type="member" name="GstAggregator.srcpad" link="gst-plugins-bad-libs-GstAggregator.html#GstAggregator.srcpad"/>
- <keyword type="member" name="GstAggregator.segment" link="gst-plugins-bad-libs-GstAggregator.html#GstAggregator.segment"/>
- <keyword type="member" name="GstAggregatorClass.sinkpads-type" link="gst-plugins-bad-libs-GstAggregator.html#GstAggregatorClass.sinkpads-type"/>
- <keyword type="member" name="GstAggregatorClass.flush" link="gst-plugins-bad-libs-GstAggregator.html#GstAggregatorClass.flush"/>
- <keyword type="member" name="GstAggregatorClass.clip" link="gst-plugins-bad-libs-GstAggregator.html#GstAggregatorClass.clip"/>
- <keyword type="member" name="GstAggregatorClass.sink-event" link="gst-plugins-bad-libs-GstAggregator.html#GstAggregatorClass.sink-event"/>
- <keyword type="member" name="GstAggregatorClass.sink-query" link="gst-plugins-bad-libs-GstAggregator.html#GstAggregatorClass.sink-query"/>
- <keyword type="member" name="GstAggregatorClass.src-event" link="gst-plugins-bad-libs-GstAggregator.html#GstAggregatorClass.src-event"/>
- <keyword type="member" name="GstAggregatorClass.src-query" link="gst-plugins-bad-libs-GstAggregator.html#GstAggregatorClass.src-query"/>
- <keyword type="member" name="GstAggregatorClass.src-activate" link="gst-plugins-bad-libs-GstAggregator.html#GstAggregatorClass.src-activate"/>
- <keyword type="member" name="GstAggregatorClass.aggregate" link="gst-plugins-bad-libs-GstAggregator.html#GstAggregatorClass.aggregate"/>
- <keyword type="member" name="GstAggregatorClass.stop" link="gst-plugins-bad-libs-GstAggregator.html#GstAggregatorClass.stop"/>
- <keyword type="member" name="GstAggregatorClass.start" link="gst-plugins-bad-libs-GstAggregator.html#GstAggregatorClass.start"/>
- <keyword type="member" name="GstAggregatorClass.get-next-time" link="gst-plugins-bad-libs-GstAggregator.html#GstAggregatorClass.get-next-time"/>
- <keyword type="member" name="GstAggregatorClass.create-new-pad" link="gst-plugins-bad-libs-GstAggregator.html#GstAggregatorClass.create-new-pad"/>
- <keyword type="member" name="GstAggregatorPad.parent" link="gst-plugins-bad-libs-GstAggregatorPad.html#GstAggregatorPad.parent"/>
- <keyword type="member" name="GstAggregatorPad.segment" link="gst-plugins-bad-libs-GstAggregatorPad.html#GstAggregatorPad.segment"/>
- <keyword type="member" name="GstAggregatorPad.clip-segment" link="gst-plugins-bad-libs-GstAggregatorPad.html#GstAggregatorPad.clip-segment"/>
- <keyword type="member" name="GstAggregatorPad.priv" link="gst-plugins-bad-libs-GstAggregatorPad.html#GstAggregatorPad.priv"/>
- <keyword type="member" name="GstAggregatorPad.-gst-reserved" link="gst-plugins-bad-libs-GstAggregatorPad.html#GstAggregatorPad.-gst-reserved"/>
- <keyword type="member" name="GstAggregatorPadClass.flush" link="gst-plugins-bad-libs-GstAggregatorPad.html#GstAggregatorPadClass.flush"/>
- <keyword type="member" name="GstVideoAggregator.aggregator" link="gst-plugins-bad-libs-GstVideoAggregator.html#GstVideoAggregator.aggregator"/>
- <keyword type="member" name="GstVideoAggregator.info" link="gst-plugins-bad-libs-GstVideoAggregator.html#GstVideoAggregator.info"/>
- <keyword type="member" name="GstVideoAggregatorClass.update-caps" link="gst-plugins-bad-libs-GstVideoAggregator.html#GstVideoAggregatorClass.update-caps"/>
- <keyword type="member" name="GstVideoAggregatorClass.fixate-caps" link="gst-plugins-bad-libs-GstVideoAggregator.html#GstVideoAggregatorClass.fixate-caps"/>
- <keyword type="member" name="GstVideoAggregatorClass.aggregate-frames" link="gst-plugins-bad-libs-GstVideoAggregator.html#GstVideoAggregatorClass.aggregate-frames"/>
- <keyword type="member" name="GstVideoAggregatorClass.get-output-buffer" link="gst-plugins-bad-libs-GstVideoAggregator.html#GstVideoAggregatorClass.get-output-buffer"/>
- <keyword type="member" name="GstVideoAggregatorClass.negotiated-caps" link="gst-plugins-bad-libs-GstVideoAggregator.html#GstVideoAggregatorClass.negotiated-caps"/>
- <keyword type="member" name="GstVideoAggregatorClass.find-best-format" link="gst-plugins-bad-libs-GstVideoAggregator.html#GstVideoAggregatorClass.find-best-format"/>
- <keyword type="member" name="GstVideoAggregatorClass.sink-non-alpha-caps" link="gst-plugins-bad-libs-GstVideoAggregator.html#GstVideoAggregatorClass.sink-non-alpha-caps"/>
- <keyword type="member" name="GstVideoAggregatorPad.parent" link="gst-plugins-bad-libs-GstVideoAggregatorPad.html#GstVideoAggregatorPad.parent"/>
- <keyword type="member" name="GstVideoAggregatorPad.info" link="gst-plugins-bad-libs-GstVideoAggregatorPad.html#GstVideoAggregatorPad.info"/>
- <keyword type="member" name="GstVideoAggregatorPad.buffer" link="gst-plugins-bad-libs-GstVideoAggregatorPad.html#GstVideoAggregatorPad.buffer"/>
- <keyword type="member" name="GstVideoAggregatorPad.buffer-vinfo" link="gst-plugins-bad-libs-GstVideoAggregatorPad.html#GstVideoAggregatorPad.buffer-vinfo"/>
- <keyword type="member" name="GstVideoAggregatorPad.aggregated-frame" link="gst-plugins-bad-libs-GstVideoAggregatorPad.html#GstVideoAggregatorPad.aggregated-frame"/>
- <keyword type="member" name="GstVideoAggregatorPad.zorder" link="gst-plugins-bad-libs-GstVideoAggregatorPad.html#GstVideoAggregatorPad.zorder"/>
- <keyword type="member" name="GstVideoAggregatorPad.ignore-eos" link="gst-plugins-bad-libs-GstVideoAggregatorPad.html#GstVideoAggregatorPad.ignore-eos"/>
- <keyword type="member" name="GstGLBaseMemoryAllocatorClass.alloc" link="gst-plugins-bad-libs-gstglbasememory.html#GstGLBaseMemoryAllocatorClass.alloc"/>
- <keyword type="member" name="GstGLBaseMemoryAllocatorClass.create" link="gst-plugins-bad-libs-gstglbasememory.html#GstGLBaseMemoryAllocatorClass.create"/>
- <keyword type="member" name="GstGLBaseMemoryAllocatorClass.map" link="gst-plugins-bad-libs-gstglbasememory.html#GstGLBaseMemoryAllocatorClass.map"/>
- <keyword type="member" name="GstGLBaseMemoryAllocatorClass.flush" link="gst-plugins-bad-libs-gstglbasememory.html#GstGLBaseMemoryAllocatorClass.flush"/>
- <keyword type="member" name="GstGLBaseMemoryAllocatorClass.invalidate" link="gst-plugins-bad-libs-gstglbasememory.html#GstGLBaseMemoryAllocatorClass.invalidate"/>
- <keyword type="member" name="GstGLBaseMemoryAllocatorClass.unmap" link="gst-plugins-bad-libs-gstglbasememory.html#GstGLBaseMemoryAllocatorClass.unmap"/>
- <keyword type="member" name="GstGLBaseMemoryAllocatorClass.copy" link="gst-plugins-bad-libs-gstglbasememory.html#GstGLBaseMemoryAllocatorClass.copy"/>
- <keyword type="member" name="GstGLBaseMemoryAllocatorClass.destroy" link="gst-plugins-bad-libs-gstglbasememory.html#GstGLBaseMemoryAllocatorClass.destroy"/>
- <keyword type="member" name="GstGLAllocationParams.struct-size" link="gst-plugins-bad-libs-gstglbasememory.html#GstGLAllocationParams.struct-size"/>
- <keyword type="member" name="GstGLAllocationParams.copy" link="gst-plugins-bad-libs-gstglbasememory.html#GstGLAllocationParams.copy"/>
- <keyword type="member" name="GstGLAllocationParams.free" link="gst-plugins-bad-libs-gstglbasememory.html#GstGLAllocationParams.free"/>
- <keyword type="member" name="GstGLAllocationParams.alloc-flags" link="gst-plugins-bad-libs-gstglbasememory.html#GstGLAllocationParams.alloc-flags"/>
- <keyword type="member" name="GstGLAllocationParams.alloc-size" link="gst-plugins-bad-libs-gstglbasememory.html#GstGLAllocationParams.alloc-size"/>
- <keyword type="member" name="GstGLAllocationParams.alloc-params" link="gst-plugins-bad-libs-gstglbasememory.html#GstGLAllocationParams.alloc-params"/>
- <keyword type="member" name="GstGLAllocationParams.context" link="gst-plugins-bad-libs-gstglbasememory.html#GstGLAllocationParams.context"/>
- <keyword type="member" name="GstGLAllocationParams.notify" link="gst-plugins-bad-libs-gstglbasememory.html#GstGLAllocationParams.notify"/>
- <keyword type="member" name="GstGLAllocationParams.user-data" link="gst-plugins-bad-libs-gstglbasememory.html#GstGLAllocationParams.user-data"/>
- <keyword type="member" name="GstGLAllocationParams.wrapped-data" link="gst-plugins-bad-libs-gstglbasememory.html#GstGLAllocationParams.wrapped-data"/>
- <keyword type="member" name="GstGLAllocationParams.gl-handle" link="gst-plugins-bad-libs-gstglbasememory.html#GstGLAllocationParams.gl-handle"/>
- <keyword type="member" name="GstGLBaseMemory.mem" link="gst-plugins-bad-libs-gstglbasememory.html#GstGLBaseMemory.mem"/>
- <keyword type="member" name="GstGLBaseMemory.context" link="gst-plugins-bad-libs-gstglbasememory.html#GstGLBaseMemory.context"/>
- <keyword type="member" name="GstGLBaseFilterClass.supported-gl-api" link="GstGLBaseFilter.html#GstGLBaseFilterClass.supported-gl-api"/>
- <keyword type="member" name="GstGLBaseFilterClass.gl-start" link="GstGLBaseFilter.html#GstGLBaseFilterClass.gl-start"/>
- <keyword type="member" name="GstGLBaseFilterClass.gl-stop" link="GstGLBaseFilter.html#GstGLBaseFilterClass.gl-stop"/>
- <keyword type="member" name="GstGLBaseFilterClass.gl-set-caps" link="GstGLBaseFilter.html#GstGLBaseFilterClass.gl-set-caps"/>
- <keyword type="member" name="GstGLBuffer.mem" link="gst-plugins-bad-libs-GstGLBuffer.html#GstGLBuffer.mem"/>
- <keyword type="member" name="GstGLBuffer.id" link="gst-plugins-bad-libs-GstGLBuffer.html#GstGLBuffer.id"/>
- <keyword type="member" name="GstGLBuffer.target" link="gst-plugins-bad-libs-GstGLBuffer.html#GstGLBuffer.target"/>
- <keyword type="member" name="GstGLBuffer.usage-hints" link="gst-plugins-bad-libs-GstGLBuffer.html#GstGLBuffer.usage-hints"/>
- <keyword type="member" name="GstGLBufferAllocationParams.parent" link="gst-plugins-bad-libs-GstGLBuffer.html#GstGLBufferAllocationParams.parent"/>
- <keyword type="member" name="GstGLBufferAllocationParams.gl-target" link="gst-plugins-bad-libs-GstGLBuffer.html#GstGLBufferAllocationParams.gl-target"/>
- <keyword type="member" name="GstGLBufferAllocationParams.gl-usage" link="gst-plugins-bad-libs-GstGLBuffer.html#GstGLBufferAllocationParams.gl-usage"/>
- <keyword type="member" name="GstGLFilterClass.set-caps" link="GstGLFilter.html#GstGLFilterClass.set-caps"/>
- <keyword type="member" name="GstGLFilterClass.filter" link="GstGLFilter.html#GstGLFilterClass.filter"/>
- <keyword type="member" name="GstGLFilterClass.filter-texture" link="GstGLFilter.html#GstGLFilterClass.filter-texture"/>
- <keyword type="member" name="GstGLFilterClass.init-fbo" link="GstGLFilter.html#GstGLFilterClass.init-fbo"/>
- <keyword type="member" name="GstGLFilterClass.transform-internal-caps" link="GstGLFilter.html#GstGLFilterClass.transform-internal-caps"/>
- <keyword type="member" name="GstGLFilterClass.display-init-cb" link="GstGLFilter.html#GstGLFilterClass.display-init-cb"/>
- <keyword type="member" name="GstGLFilterClass.display-reset-cb" link="GstGLFilter.html#GstGLFilterClass.display-reset-cb"/>
- <keyword type="member" name="GstGLMemory.mem" link="gst-plugins-bad-libs-GstGLMemory.html#GstGLMemory.mem"/>
- <keyword type="member" name="GstGLMemory.tex-id" link="gst-plugins-bad-libs-GstGLMemory.html#GstGLMemory.tex-id"/>
- <keyword type="member" name="GstGLMemory.tex-target" link="gst-plugins-bad-libs-GstGLMemory.html#GstGLMemory.tex-target"/>
- <keyword type="member" name="GstGLMemory.tex-type" link="gst-plugins-bad-libs-GstGLMemory.html#GstGLMemory.tex-type"/>
- <keyword type="member" name="GstGLMemory.info" link="gst-plugins-bad-libs-GstGLMemory.html#GstGLMemory.info"/>
- <keyword type="member" name="GstGLMemory.valign" link="gst-plugins-bad-libs-GstGLMemory.html#GstGLMemory.valign"/>
- <keyword type="member" name="GstGLMemory.plane" link="gst-plugins-bad-libs-GstGLMemory.html#GstGLMemory.plane"/>
- <keyword type="member" name="GstGLMemory.tex-scaling" link="gst-plugins-bad-libs-GstGLMemory.html#GstGLMemory.tex-scaling"/>
- <keyword type="member" name="GstGLWindowClass.get-display" link="GstGLWindow.html#GstGLWindowClass.get-display"/>
- <keyword type="member" name="GstGLWindowClass.set-window-handle" link="GstGLWindow.html#GstGLWindowClass.set-window-handle"/>
- <keyword type="member" name="GstGLWindowClass.get-window-handle" link="GstGLWindow.html#GstGLWindowClass.get-window-handle"/>
- <keyword type="member" name="GstGLWindowClass.draw" link="GstGLWindow.html#GstGLWindowClass.draw"/>
- <keyword type="member" name="GstGLWindowClass.run" link="GstGLWindow.html#GstGLWindowClass.run"/>
- <keyword type="member" name="GstGLWindowClass.quit" link="GstGLWindow.html#GstGLWindowClass.quit"/>
- <keyword type="member" name="GstGLWindowClass.send-message" link="GstGLWindow.html#GstGLWindowClass.send-message"/>
- <keyword type="member" name="GstGLWindowClass.send-message-async" link="GstGLWindow.html#GstGLWindowClass.send-message-async"/>
- <keyword type="member" name="GstGLWindowClass.open" link="GstGLWindow.html#GstGLWindowClass.open"/>
- <keyword type="member" name="GstGLWindowClass.close" link="GstGLWindow.html#GstGLWindowClass.close"/>
- <keyword type="member" name="GstGLWindowClass.handle-events" link="GstGLWindow.html#GstGLWindowClass.handle-events"/>
- <keyword type="member" name="GstGLWindowClass.set-preferred-size" link="GstGLWindow.html#GstGLWindowClass.set-preferred-size"/>
- <keyword type="member" name="GstGLWindowClass.show" link="GstGLWindow.html#GstGLWindowClass.show"/>
- <keyword type="member" name="GstGLWindowClass.set-render-rectangle" link="GstGLWindow.html#GstGLWindowClass.set-render-rectangle"/>
- <keyword type="member" name="GstGLWindowClass.queue-resize" link="GstGLWindow.html#GstGLWindowClass.queue-resize"/>
- <keyword type="member" name="GstPlayerVisualization-struct.name" link="gst-plugins-bad-libs-gstplayer-visualization.html#GstPlayerVisualization-struct.name"/>
- <keyword type="member" name="GstPlayerVisualization-struct.description" link="gst-plugins-bad-libs-gstplayer-visualization.html#GstPlayerVisualization-struct.description"/>
</functions>
</book>
diff --git a/docs/libs/html/gst-plugins-bad-libs-ATSC-variants-of-MPEG-TS-sections.html b/docs/libs/html/gst-plugins-bad-libs-ATSC-variants-of-MPEG-TS-sections.html
deleted file mode 100644
index dd8df26..0000000
--- a/docs/libs/html/gst-plugins-bad-libs-ATSC-variants-of-MPEG-TS-sections.html
+++ /dev/null
@@ -1,995 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>ATSC variants of MPEG-TS sections: GStreamer Bad Plugins 1.0 Library Reference Manual</title>
-<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
-<link rel="home" href="index.html" title="GStreamer Bad Plugins 1.0 Library Reference Manual">
-<link rel="up" href="mpegts.html" title="Mpeg TS helper library">
-<link rel="prev" href="gst-plugins-bad-libs-Base-MPEG-TS-descriptors.html" title="Base MPEG-TS descriptors">
-<link rel="next" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-sections.html" title="DVB variants of MPEG-TS sections">
-<meta name="generator" content="GTK-Doc V1.25 (XML mode)">
-<link rel="stylesheet" href="style.css" type="text/css">
-</head>
-<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
-<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="5"><tr valign="middle">
-<td width="100%" align="left" class="shortcuts">
-<a href="#" class="shortcut">Top</a><span id="nav_description"> <span class="dim">|</span>
- <a href="#gst-plugins-bad-libs-ATSC-variants-of-MPEG-TS-sections.description" class="shortcut">Description</a></span>
-</td>
-<td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
-<td><a accesskey="u" href="mpegts.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
-<td><a accesskey="p" href="gst-plugins-bad-libs-Base-MPEG-TS-descriptors.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
-<td><a accesskey="n" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-sections.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
-</tr></table>
-<div class="refentry">
-<a name="gst-plugins-bad-libs-ATSC-variants-of-MPEG-TS-sections"></a><div class="titlepage"></div>
-<div class="refnamediv"><table width="100%"><tr>
-<td valign="top">
-<h2><span class="refentrytitle"><a name="gst-plugins-bad-libs-ATSC-variants-of-MPEG-TS-sections.top_of_page"></a>ATSC variants of MPEG-TS sections</span></h2>
-<p>ATSC variants of MPEG-TS sections — Sections for the various ATSC specifications</p>
-</td>
-<td class="gallery_image" valign="top" align="right"></td>
-</tr></table></div>
-<div class="refsect1">
-<a name="gst-plugins-bad-libs-ATSC-variants-of-MPEG-TS-sections.functions"></a><h2>Functions</h2>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="functions_return">
-<col class="functions_name">
-</colgroup>
-<tbody>
-<tr>
-<td class="function_type">const <a class="link" href="gst-plugins-bad-libs-ATSC-variants-of-MPEG-TS-sections.html#GstMpegtsAtscVCT" title="struct GstMpegtsAtscVCT"><span class="returnvalue">GstMpegtsAtscVCT</span></a> *
-</td>
-<td class="function_name">
-<a class="link" href="gst-plugins-bad-libs-ATSC-variants-of-MPEG-TS-sections.html#gst-mpegts-section-get-atsc-tvct" title="gst_mpegts_section_get_atsc_tvct ()">gst_mpegts_section_get_atsc_tvct</a> <span class="c_punctuation">()</span>
-</td>
-</tr>
-<tr>
-<td class="function_type">const <a class="link" href="gst-plugins-bad-libs-ATSC-variants-of-MPEG-TS-sections.html#GstMpegtsAtscVCT" title="struct GstMpegtsAtscVCT"><span class="returnvalue">GstMpegtsAtscVCT</span></a> *
-</td>
-<td class="function_name">
-<a class="link" href="gst-plugins-bad-libs-ATSC-variants-of-MPEG-TS-sections.html#gst-mpegts-section-get-atsc-cvct" title="gst_mpegts_section_get_atsc_cvct ()">gst_mpegts_section_get_atsc_cvct</a> <span class="c_punctuation">()</span>
-</td>
-</tr>
-<tr>
-<td class="function_type">const <a class="link" href="gst-plugins-bad-libs-ATSC-variants-of-MPEG-TS-sections.html#GstMpegtsAtscMGT" title="struct GstMpegtsAtscMGT"><span class="returnvalue">GstMpegtsAtscMGT</span></a> *
-</td>
-<td class="function_name">
-<a class="link" href="gst-plugins-bad-libs-ATSC-variants-of-MPEG-TS-sections.html#gst-mpegts-section-get-atsc-mgt" title="gst_mpegts_section_get_atsc_mgt ()">gst_mpegts_section_get_atsc_mgt</a> <span class="c_punctuation">()</span>
-</td>
-</tr>
-<tr>
-<td class="function_type">const <a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gchar"><span class="returnvalue">gchar</span></a> *
-</td>
-<td class="function_name">
-<a class="link" href="gst-plugins-bad-libs-ATSC-variants-of-MPEG-TS-sections.html#gst-mpegts-atsc-string-segment-get-string" title="gst_mpegts_atsc_string_segment_get_string ()">gst_mpegts_atsc_string_segment_get_string</a> <span class="c_punctuation">()</span>
-</td>
-</tr>
-<tr>
-<td class="function_type">const <a class="link" href="gst-plugins-bad-libs-ATSC-variants-of-MPEG-TS-sections.html#GstMpegtsAtscEIT" title="struct GstMpegtsAtscEIT"><span class="returnvalue">GstMpegtsAtscEIT</span></a> *
-</td>
-<td class="function_name">
-<a class="link" href="gst-plugins-bad-libs-ATSC-variants-of-MPEG-TS-sections.html#gst-mpegts-section-get-atsc-eit" title="gst_mpegts_section_get_atsc_eit ()">gst_mpegts_section_get_atsc_eit</a> <span class="c_punctuation">()</span>
-</td>
-</tr>
-<tr>
-<td class="function_type">const <a class="link" href="gst-plugins-bad-libs-ATSC-variants-of-MPEG-TS-sections.html#GstMpegtsAtscETT" title="struct GstMpegtsAtscETT"><span class="returnvalue">GstMpegtsAtscETT</span></a> *
-</td>
-<td class="function_name">
-<a class="link" href="gst-plugins-bad-libs-ATSC-variants-of-MPEG-TS-sections.html#gst-mpegts-section-get-atsc-ett" title="gst_mpegts_section_get_atsc_ett ()">gst_mpegts_section_get_atsc_ett</a> <span class="c_punctuation">()</span>
-</td>
-</tr>
-<tr>
-<td class="function_type">const <a class="link" href="gst-plugins-bad-libs-ATSC-variants-of-MPEG-TS-sections.html#GstMpegtsAtscSTT" title="struct GstMpegtsAtscSTT"><span class="returnvalue">GstMpegtsAtscSTT</span></a> *
-</td>
-<td class="function_name">
-<a class="link" href="gst-plugins-bad-libs-ATSC-variants-of-MPEG-TS-sections.html#gst-mpegts-section-get-atsc-stt" title="gst_mpegts_section_get_atsc_stt ()">gst_mpegts_section_get_atsc_stt</a> <span class="c_punctuation">()</span>
-</td>
-</tr>
-<tr>
-<td class="function_type">
-<a href="/usr/share/gtk-doc/html/gstreamer-1.0GstDateTime.html#GstDateTime-struct"><span class="returnvalue">GstDateTime</span></a> *
-</td>
-<td class="function_name">
-<a class="link" href="gst-plugins-bad-libs-ATSC-variants-of-MPEG-TS-sections.html#gst-mpegts-atsc-stt-get-datetime-utc" title="gst_mpegts_atsc_stt_get_datetime_utc ()">gst_mpegts_atsc_stt_get_datetime_utc</a> <span class="c_punctuation">()</span>
-</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<div class="refsect1">
-<a name="gst-plugins-bad-libs-ATSC-variants-of-MPEG-TS-sections.other"></a><h2>Types and Values</h2>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="name">
-<col class="description">
-</colgroup>
-<tbody>
-<tr>
-<td class="datatype_keyword">enum</td>
-<td class="function_name"><a class="link" href="gst-plugins-bad-libs-ATSC-variants-of-MPEG-TS-sections.html#GstMpegtsSectionATSCTableID" title="enum GstMpegtsSectionATSCTableID">GstMpegtsSectionATSCTableID</a></td>
-</tr>
-<tr>
-<td class="datatype_keyword">struct</td>
-<td class="function_name"><a class="link" href="gst-plugins-bad-libs-ATSC-variants-of-MPEG-TS-sections.html#GstMpegtsAtscVCTSource" title="struct GstMpegtsAtscVCTSource">GstMpegtsAtscVCTSource</a></td>
-</tr>
-<tr>
-<td class="datatype_keyword">struct</td>
-<td class="function_name"><a class="link" href="gst-plugins-bad-libs-ATSC-variants-of-MPEG-TS-sections.html#GstMpegtsAtscVCT" title="struct GstMpegtsAtscVCT">GstMpegtsAtscVCT</a></td>
-</tr>
-<tr>
-<td class="datatype_keyword">enum</td>
-<td class="function_name"><a class="link" href="gst-plugins-bad-libs-ATSC-variants-of-MPEG-TS-sections.html#GstMpegtsAtscMGTTableType" title="enum GstMpegtsAtscMGTTableType">GstMpegtsAtscMGTTableType</a></td>
-</tr>
-<tr>
-<td class="datatype_keyword">struct</td>
-<td class="function_name"><a class="link" href="gst-plugins-bad-libs-ATSC-variants-of-MPEG-TS-sections.html#GstMpegtsAtscMGTTable" title="struct GstMpegtsAtscMGTTable">GstMpegtsAtscMGTTable</a></td>
-</tr>
-<tr>
-<td class="datatype_keyword">struct</td>
-<td class="function_name"><a class="link" href="gst-plugins-bad-libs-ATSC-variants-of-MPEG-TS-sections.html#GstMpegtsAtscMGT" title="struct GstMpegtsAtscMGT">GstMpegtsAtscMGT</a></td>
-</tr>
-<tr>
-<td class="datatype_keyword">struct</td>
-<td class="function_name"><a class="link" href="gst-plugins-bad-libs-ATSC-variants-of-MPEG-TS-sections.html#GstMpegtsAtscMultString" title="struct GstMpegtsAtscMultString">GstMpegtsAtscMultString</a></td>
-</tr>
-<tr>
-<td class="datatype_keyword">struct</td>
-<td class="function_name"><a class="link" href="gst-plugins-bad-libs-ATSC-variants-of-MPEG-TS-sections.html#GstMpegtsAtscEITEvent" title="struct GstMpegtsAtscEITEvent">GstMpegtsAtscEITEvent</a></td>
-</tr>
-<tr>
-<td class="datatype_keyword">struct</td>
-<td class="function_name"><a class="link" href="gst-plugins-bad-libs-ATSC-variants-of-MPEG-TS-sections.html#GstMpegtsAtscEIT" title="struct GstMpegtsAtscEIT">GstMpegtsAtscEIT</a></td>
-</tr>
-<tr>
-<td class="datatype_keyword">struct</td>
-<td class="function_name"><a class="link" href="gst-plugins-bad-libs-ATSC-variants-of-MPEG-TS-sections.html#GstMpegtsAtscETT" title="struct GstMpegtsAtscETT">GstMpegtsAtscETT</a></td>
-</tr>
-<tr>
-<td class="datatype_keyword">struct</td>
-<td class="function_name"><a class="link" href="gst-plugins-bad-libs-ATSC-variants-of-MPEG-TS-sections.html#GstMpegtsAtscSTT" title="struct GstMpegtsAtscSTT">GstMpegtsAtscSTT</a></td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<div class="refsect1">
-<a name="gst-plugins-bad-libs-ATSC-variants-of-MPEG-TS-sections.includes"></a><h2>Includes</h2>
-<pre class="synopsis">#include <gst/mpegts/mpegts.h>
-</pre>
-</div>
-<div class="refsect1">
-<a name="gst-plugins-bad-libs-ATSC-variants-of-MPEG-TS-sections.description"></a><h2>Description</h2>
-</div>
-<div class="refsect1">
-<a name="gst-plugins-bad-libs-ATSC-variants-of-MPEG-TS-sections.functions_details"></a><h2>Functions</h2>
-<div class="refsect2">
-<a name="gst-mpegts-section-get-atsc-tvct"></a><h3>gst_mpegts_section_get_atsc_tvct ()</h3>
-<pre class="programlisting">const <a class="link" href="gst-plugins-bad-libs-ATSC-variants-of-MPEG-TS-sections.html#GstMpegtsAtscVCT" title="struct GstMpegtsAtscVCT"><span class="returnvalue">GstMpegtsAtscVCT</span></a> *
-gst_mpegts_section_get_atsc_tvct (<em class="parameter"><code><a class="link" href="gst-plugins-bad-libs-Base-MPEG-TS-sections.html#GstMpegtsSection"><span class="type">GstMpegtsSection</span></a> *section</code></em>);</pre>
-<p>Returns the <a class="link" href="gst-plugins-bad-libs-ATSC-variants-of-MPEG-TS-sections.html#GstMpegtsAtscVCT" title="struct GstMpegtsAtscVCT"><span class="type">GstMpegtsAtscVCT</span></a> contained in the <em class="parameter"><code>section</code></em>
-</p>
-<div class="refsect3">
-<a name="gst-mpegts-section-get-atsc-tvct.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody><tr>
-<td class="parameter_name"><p>section</p></td>
-<td class="parameter_description"><p>a <a class="link" href="gst-plugins-bad-libs-Base-MPEG-TS-sections.html#GstMpegtsSection"><span class="type">GstMpegtsSection</span></a> of type <a class="link" href="gst-plugins-bad-libs-Base-MPEG-TS-sections.html#GST-MPEGTS-SECTION-ATSC-TVCT:CAPS"><code class="literal">GST_MPEGTS_SECTION_ATSC_TVCT</code></a></p></td>
-<td class="parameter_annotations"> </td>
-</tr></tbody>
-</table></div>
-</div>
-<div class="refsect3">
-<a name="gst-mpegts-section-get-atsc-tvct.returns"></a><h4>Returns</h4>
-<p> The <a class="link" href="gst-plugins-bad-libs-ATSC-variants-of-MPEG-TS-sections.html#GstMpegtsAtscVCT" title="struct GstMpegtsAtscVCT"><span class="type">GstMpegtsAtscVCT</span></a> contained in the section, or <a href="/usr/share/gtk-doc/html/glibglib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a> if an error
-happened.</p>
-</div>
-</div>
-<hr>
-<div class="refsect2">
-<a name="gst-mpegts-section-get-atsc-cvct"></a><h3>gst_mpegts_section_get_atsc_cvct ()</h3>
-<pre class="programlisting">const <a class="link" href="gst-plugins-bad-libs-ATSC-variants-of-MPEG-TS-sections.html#GstMpegtsAtscVCT" title="struct GstMpegtsAtscVCT"><span class="returnvalue">GstMpegtsAtscVCT</span></a> *
-gst_mpegts_section_get_atsc_cvct (<em class="parameter"><code><a class="link" href="gst-plugins-bad-libs-Base-MPEG-TS-sections.html#GstMpegtsSection"><span class="type">GstMpegtsSection</span></a> *section</code></em>);</pre>
-<p>Returns the <a class="link" href="gst-plugins-bad-libs-ATSC-variants-of-MPEG-TS-sections.html#GstMpegtsAtscVCT" title="struct GstMpegtsAtscVCT"><span class="type">GstMpegtsAtscVCT</span></a> contained in the <em class="parameter"><code>section</code></em>
-</p>
-<div class="refsect3">
-<a name="gst-mpegts-section-get-atsc-cvct.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody><tr>
-<td class="parameter_name"><p>section</p></td>
-<td class="parameter_description"><p>a <a class="link" href="gst-plugins-bad-libs-Base-MPEG-TS-sections.html#GstMpegtsSection"><span class="type">GstMpegtsSection</span></a> of type <a class="link" href="gst-plugins-bad-libs-Base-MPEG-TS-sections.html#GST-MPEGTS-SECTION-ATSC-CVCT:CAPS"><code class="literal">GST_MPEGTS_SECTION_ATSC_CVCT</code></a></p></td>
-<td class="parameter_annotations"> </td>
-</tr></tbody>
-</table></div>
-</div>
-<div class="refsect3">
-<a name="gst-mpegts-section-get-atsc-cvct.returns"></a><h4>Returns</h4>
-<p> The <a class="link" href="gst-plugins-bad-libs-ATSC-variants-of-MPEG-TS-sections.html#GstMpegtsAtscVCT" title="struct GstMpegtsAtscVCT"><span class="type">GstMpegtsAtscVCT</span></a> contained in the section, or <a href="/usr/share/gtk-doc/html/glibglib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a> if an error
-happened.</p>
-</div>
-</div>
-<hr>
-<div class="refsect2">
-<a name="gst-mpegts-section-get-atsc-mgt"></a><h3>gst_mpegts_section_get_atsc_mgt ()</h3>
-<pre class="programlisting">const <a class="link" href="gst-plugins-bad-libs-ATSC-variants-of-MPEG-TS-sections.html#GstMpegtsAtscMGT" title="struct GstMpegtsAtscMGT"><span class="returnvalue">GstMpegtsAtscMGT</span></a> *
-gst_mpegts_section_get_atsc_mgt (<em class="parameter"><code><a class="link" href="gst-plugins-bad-libs-Base-MPEG-TS-sections.html#GstMpegtsSection"><span class="type">GstMpegtsSection</span></a> *section</code></em>);</pre>
-<p>Returns the <a class="link" href="gst-plugins-bad-libs-ATSC-variants-of-MPEG-TS-sections.html#GstMpegtsAtscMGT" title="struct GstMpegtsAtscMGT"><span class="type">GstMpegtsAtscMGT</span></a> contained in the <em class="parameter"><code>section</code></em>
-.</p>
-<div class="refsect3">
-<a name="gst-mpegts-section-get-atsc-mgt.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody><tr>
-<td class="parameter_name"><p>section</p></td>
-<td class="parameter_description"><p>a <a class="link" href="gst-plugins-bad-libs-Base-MPEG-TS-sections.html#GstMpegtsSection"><span class="type">GstMpegtsSection</span></a> of type <a class="link" href="gst-plugins-bad-libs-Base-MPEG-TS-sections.html#GST-MPEGTS-SECTION-ATSC-MGT:CAPS"><code class="literal">GST_MPEGTS_SECTION_ATSC_MGT</code></a></p></td>
-<td class="parameter_annotations"> </td>
-</tr></tbody>
-</table></div>
-</div>
-<div class="refsect3">
-<a name="gst-mpegts-section-get-atsc-mgt.returns"></a><h4>Returns</h4>
-<p> The <a class="link" href="gst-plugins-bad-libs-ATSC-variants-of-MPEG-TS-sections.html#GstMpegtsAtscMGT" title="struct GstMpegtsAtscMGT"><span class="type">GstMpegtsAtscMGT</span></a> contained in the section, or <a href="/usr/share/gtk-doc/html/glibglib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a> if an error
-happened.</p>
-</div>
-</div>
-<hr>
-<div class="refsect2">
-<a name="gst-mpegts-atsc-string-segment-get-string"></a><h3>gst_mpegts_atsc_string_segment_get_string ()</h3>
-<pre class="programlisting">const <a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gchar"><span class="returnvalue">gchar</span></a> *
-gst_mpegts_atsc_string_segment_get_string
- (<em class="parameter"><code><span class="type">GstMpegtsAtscStringSegment</span> *seg</code></em>);</pre>
-</div>
-<hr>
-<div class="refsect2">
-<a name="gst-mpegts-section-get-atsc-eit"></a><h3>gst_mpegts_section_get_atsc_eit ()</h3>
-<pre class="programlisting">const <a class="link" href="gst-plugins-bad-libs-ATSC-variants-of-MPEG-TS-sections.html#GstMpegtsAtscEIT" title="struct GstMpegtsAtscEIT"><span class="returnvalue">GstMpegtsAtscEIT</span></a> *
-gst_mpegts_section_get_atsc_eit (<em class="parameter"><code><a class="link" href="gst-plugins-bad-libs-Base-MPEG-TS-sections.html#GstMpegtsSection"><span class="type">GstMpegtsSection</span></a> *section</code></em>);</pre>
-<p>Returns the <a class="link" href="gst-plugins-bad-libs-ATSC-variants-of-MPEG-TS-sections.html#GstMpegtsAtscEIT" title="struct GstMpegtsAtscEIT"><span class="type">GstMpegtsAtscEIT</span></a> contained in the <em class="parameter"><code>section</code></em>
-.</p>
-<div class="refsect3">
-<a name="gst-mpegts-section-get-atsc-eit.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody><tr>
-<td class="parameter_name"><p>section</p></td>
-<td class="parameter_description"><p>a <a class="link" href="gst-plugins-bad-libs-Base-MPEG-TS-sections.html#GstMpegtsSection"><span class="type">GstMpegtsSection</span></a> of type <a class="link" href="gst-plugins-bad-libs-Base-MPEG-TS-sections.html#GST-MPEGTS-SECTION-ATSC-EIT:CAPS"><code class="literal">GST_MPEGTS_SECTION_ATSC_EIT</code></a></p></td>
-<td class="parameter_annotations"> </td>
-</tr></tbody>
-</table></div>
-</div>
-<div class="refsect3">
-<a name="gst-mpegts-section-get-atsc-eit.returns"></a><h4>Returns</h4>
-<p> The <a class="link" href="gst-plugins-bad-libs-ATSC-variants-of-MPEG-TS-sections.html#GstMpegtsAtscEIT" title="struct GstMpegtsAtscEIT"><span class="type">GstMpegtsAtscEIT</span></a> contained in the section, or <a href="/usr/share/gtk-doc/html/glibglib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a> if an error
-happened.</p>
-</div>
-</div>
-<hr>
-<div class="refsect2">
-<a name="gst-mpegts-section-get-atsc-ett"></a><h3>gst_mpegts_section_get_atsc_ett ()</h3>
-<pre class="programlisting">const <a class="link" href="gst-plugins-bad-libs-ATSC-variants-of-MPEG-TS-sections.html#GstMpegtsAtscETT" title="struct GstMpegtsAtscETT"><span class="returnvalue">GstMpegtsAtscETT</span></a> *
-gst_mpegts_section_get_atsc_ett (<em class="parameter"><code><a class="link" href="gst-plugins-bad-libs-Base-MPEG-TS-sections.html#GstMpegtsSection"><span class="type">GstMpegtsSection</span></a> *section</code></em>);</pre>
-<p>Returns the <a class="link" href="gst-plugins-bad-libs-ATSC-variants-of-MPEG-TS-sections.html#GstMpegtsAtscETT" title="struct GstMpegtsAtscETT"><span class="type">GstMpegtsAtscETT</span></a> contained in the <em class="parameter"><code>section</code></em>
-.</p>
-<div class="refsect3">
-<a name="gst-mpegts-section-get-atsc-ett.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody><tr>
-<td class="parameter_name"><p>section</p></td>
-<td class="parameter_description"><p>a <a class="link" href="gst-plugins-bad-libs-Base-MPEG-TS-sections.html#GstMpegtsSection"><span class="type">GstMpegtsSection</span></a> of type <a class="link" href="gst-plugins-bad-libs-Base-MPEG-TS-sections.html#GST-MPEGTS-SECTION-ATSC-ETT:CAPS"><code class="literal">GST_MPEGTS_SECTION_ATSC_ETT</code></a></p></td>
-<td class="parameter_annotations"> </td>
-</tr></tbody>
-</table></div>
-</div>
-<div class="refsect3">
-<a name="gst-mpegts-section-get-atsc-ett.returns"></a><h4>Returns</h4>
-<p> The <a class="link" href="gst-plugins-bad-libs-ATSC-variants-of-MPEG-TS-sections.html#GstMpegtsAtscETT" title="struct GstMpegtsAtscETT"><span class="type">GstMpegtsAtscETT</span></a> contained in the section, or <a href="/usr/share/gtk-doc/html/glibglib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a> if an error
-happened.</p>
-</div>
-</div>
-<hr>
-<div class="refsect2">
-<a name="gst-mpegts-section-get-atsc-stt"></a><h3>gst_mpegts_section_get_atsc_stt ()</h3>
-<pre class="programlisting">const <a class="link" href="gst-plugins-bad-libs-ATSC-variants-of-MPEG-TS-sections.html#GstMpegtsAtscSTT" title="struct GstMpegtsAtscSTT"><span class="returnvalue">GstMpegtsAtscSTT</span></a> *
-gst_mpegts_section_get_atsc_stt (<em class="parameter"><code><a class="link" href="gst-plugins-bad-libs-Base-MPEG-TS-sections.html#GstMpegtsSection"><span class="type">GstMpegtsSection</span></a> *section</code></em>);</pre>
-<p>Returns the <a class="link" href="gst-plugins-bad-libs-ATSC-variants-of-MPEG-TS-sections.html#GstMpegtsAtscSTT" title="struct GstMpegtsAtscSTT"><span class="type">GstMpegtsAtscSTT</span></a> contained in the <em class="parameter"><code>section</code></em>
-.</p>
-<div class="refsect3">
-<a name="gst-mpegts-section-get-atsc-stt.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody><tr>
-<td class="parameter_name"><p>section</p></td>
-<td class="parameter_description"><p>a <a class="link" href="gst-plugins-bad-libs-Base-MPEG-TS-sections.html#GstMpegtsSection"><span class="type">GstMpegtsSection</span></a> of type <a class="link" href="gst-plugins-bad-libs-Base-MPEG-TS-sections.html#GST-MPEGTS-SECTION-ATSC-STT:CAPS"><code class="literal">GST_MPEGTS_SECTION_ATSC_STT</code></a></p></td>
-<td class="parameter_annotations"> </td>
-</tr></tbody>
-</table></div>
-</div>
-<div class="refsect3">
-<a name="gst-mpegts-section-get-atsc-stt.returns"></a><h4>Returns</h4>
-<p> The <a class="link" href="gst-plugins-bad-libs-ATSC-variants-of-MPEG-TS-sections.html#GstMpegtsAtscSTT" title="struct GstMpegtsAtscSTT"><span class="type">GstMpegtsAtscSTT</span></a> contained in the section, or <a href="/usr/share/gtk-doc/html/glibglib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a> if an error
-happened.</p>
-</div>
-</div>
-<hr>
-<div class="refsect2">
-<a name="gst-mpegts-atsc-stt-get-datetime-utc"></a><h3>gst_mpegts_atsc_stt_get_datetime_utc ()</h3>
-<pre class="programlisting"><a href="/usr/share/gtk-doc/html/gstreamer-1.0GstDateTime.html#GstDateTime-struct"><span class="returnvalue">GstDateTime</span></a> *
-gst_mpegts_atsc_stt_get_datetime_utc (<em class="parameter"><code><a class="link" href="gst-plugins-bad-libs-ATSC-variants-of-MPEG-TS-sections.html#GstMpegtsAtscSTT" title="struct GstMpegtsAtscSTT"><span class="type">GstMpegtsAtscSTT</span></a> *stt</code></em>);</pre>
-</div>
-</div>
-<div class="refsect1">
-<a name="gst-plugins-bad-libs-ATSC-variants-of-MPEG-TS-sections.other_details"></a><h2>Types and Values</h2>
-<div class="refsect2">
-<a name="GstMpegtsSectionATSCTableID"></a><h3>enum GstMpegtsSectionATSCTableID</h3>
-<p>Values for a <a class="link" href="gst-plugins-bad-libs-Base-MPEG-TS-sections.html#GstMpegtsSection"><span class="type">GstMpegtsSection</span></a> table_id.</p>
-<p>These are the registered ATSC table_id variants.</p>
-<p>see also: <a class="link" href="gst-plugins-bad-libs-Base-MPEG-TS-sections.html#GstMpegtsSectionTableID" title="enum GstMpegtsSectionTableID"><span class="type">GstMpegtsSectionTableID</span></a></p>
-<div class="refsect3">
-<a name="GstMpegtsSectionATSCTableID.members"></a><h4>Members</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="300px" class="enum_members_name">
-<col class="enum_members_description">
-<col width="200px" class="enum_members_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="enum_member_name"><p><a name="GST-MTS-TABLE-ID-ATSC-MASTER-GUIDE:CAPS"></a>GST_MTS_TABLE_ID_ATSC_MASTER_GUIDE</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="enum_member_name"><p><a name="GST-MTS-TABLE-ID-ATSC-TERRESTRIAL-VIRTUAL-CHANNEL:CAPS"></a>GST_MTS_TABLE_ID_ATSC_TERRESTRIAL_VIRTUAL_CHANNEL</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="enum_member_name"><p><a name="GST-MTS-TABLE-ID-ATSC-CABLE-VIRTUAL-CHANNEL:CAPS"></a>GST_MTS_TABLE_ID_ATSC_CABLE_VIRTUAL_CHANNEL</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="enum_member_name"><p><a name="GST-MTS-TABLE-ID-ATSC-RATING-REGION:CAPS"></a>GST_MTS_TABLE_ID_ATSC_RATING_REGION</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="enum_member_name"><p><a name="GST-MTS-TABLE-ID-ATSC-EVENT-INFORMATION:CAPS"></a>GST_MTS_TABLE_ID_ATSC_EVENT_INFORMATION</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="enum_member_name"><p><a name="GST-MTS-TABLE-ID-ATSC-CHANNEL-OR-EVENT-EXTENDED-TEXT:CAPS"></a>GST_MTS_TABLE_ID_ATSC_CHANNEL_OR_EVENT_EXTENDED_TEXT</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="enum_member_name"><p><a name="GST-MTS-TABLE-ID-ATSC-SYSTEM-TIME:CAPS"></a>GST_MTS_TABLE_ID_ATSC_SYSTEM_TIME</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="enum_member_name"><p><a name="GST-MTS-TABLE-ID-ATSC-DATA-EVENT:CAPS"></a>GST_MTS_TABLE_ID_ATSC_DATA_EVENT</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="enum_member_name"><p><a name="GST-MTS-TABLE-ID-ATSC-DATA-SERVICE:CAPS"></a>GST_MTS_TABLE_ID_ATSC_DATA_SERVICE</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="enum_member_name"><p><a name="GST-MTS-TABLE-ID-ATSC-NETWORK-RESOURCE:CAPS"></a>GST_MTS_TABLE_ID_ATSC_NETWORK_RESOURCE</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="enum_member_name"><p><a name="GST-MTS-TABLE-ID-ATSC-LONG-TERM-SERVICE:CAPS"></a>GST_MTS_TABLE_ID_ATSC_LONG_TERM_SERVICE</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="enum_member_name"><p><a name="GST-MTS-TABLE-ID-ATSC-DIRECTED-CHANNEL-CHANGE:CAPS"></a>GST_MTS_TABLE_ID_ATSC_DIRECTED_CHANNEL_CHANGE</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="enum_member_name"><p><a name="GST-MTS-TABLE-ID-ATSC-DIRECTED-CHANNEL-CHANGE-SECTION-CODE:CAPS"></a>GST_MTS_TABLE_ID_ATSC_DIRECTED_CHANNEL_CHANGE_SECTION_CODE</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="enum_member_name"><p><a name="GST-MTS-TABLE-ID-ATSC-AGGREGATE-EVENT-INFORMATION:CAPS"></a>GST_MTS_TABLE_ID_ATSC_AGGREGATE_EVENT_INFORMATION</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="enum_member_name"><p><a name="GST-MTS-TABLE-ID-ATSC-AGGREGATE-EXTENDED-TEXT:CAPS"></a>GST_MTS_TABLE_ID_ATSC_AGGREGATE_EXTENDED_TEXT</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="enum_member_name"><p><a name="GST-MTS-TABLE-ID-ATSC-AGGREGATE-DATA-EVENT:CAPS"></a>GST_MTS_TABLE_ID_ATSC_AGGREGATE_DATA_EVENT</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="enum_member_name"><p><a name="GST-MTS-TABLE-ID-ATSC-SATELLITE-VIRTUAL-CHANNEL:CAPS"></a>GST_MTS_TABLE_ID_ATSC_SATELLITE_VIRTUAL_CHANNEL</p></td>
-<td> </td>
-<td> </td>
-</tr>
-</tbody>
-</table></div>
-</div>
-</div>
-<hr>
-<div class="refsect2">
-<a name="GstMpegtsAtscVCTSource"></a><h3>struct GstMpegtsAtscVCTSource</h3>
-<pre class="programlisting">struct GstMpegtsAtscVCTSource {
- gchar *short_name;
- guint16 major_channel_number;
- guint16 minor_channel_number;
- guint8 modulation_mode;
- guint32 carrier_frequency;
- guint16 channel_TSID;
- guint16 program_number;
- /* FIXME: */
- guint8 ETM_location;
- gboolean access_controlled;
- gboolean hidden;
- gboolean path_select; /* CVCT only - reserved bit in TVCT */
- gboolean out_of_band; /* CVCT only - reserved bit in TVCT */
- gboolean hide_guide;
- /* FIXME: */
- guint8 service_type;
- guint16 source_id;
- GPtrArray *descriptors;
-};
-</pre>
-<p>Source from a <em class="parameter"><code>GstMpegtsAtscVCT</code></em>
-, can be used both for TVCT and CVCT tables</p>
-<div class="refsect3">
-<a name="GstMpegtsAtscVCTSource.members"></a><h4>Members</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="300px" class="struct_members_name">
-<col class="struct_members_description">
-<col width="200px" class="struct_members_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *<em class="structfield"><code><a name="GstMpegtsAtscVCTSource.short-name"></a>short_name</code></em>;</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint16"><span class="type">guint16</span></a> <em class="structfield"><code><a name="GstMpegtsAtscVCTSource.major-channel-number"></a>major_channel_number</code></em>;</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint16"><span class="type">guint16</span></a> <em class="structfield"><code><a name="GstMpegtsAtscVCTSource.minor-channel-number"></a>minor_channel_number</code></em>;</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint8"><span class="type">guint8</span></a> <em class="structfield"><code><a name="GstMpegtsAtscVCTSource.modulation-mode"></a>modulation_mode</code></em>;</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint32"><span class="type">guint32</span></a> <em class="structfield"><code><a name="GstMpegtsAtscVCTSource.carrier-frequency"></a>carrier_frequency</code></em>;</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint16"><span class="type">guint16</span></a> <em class="structfield"><code><a name="GstMpegtsAtscVCTSource.channel-TSID"></a>channel_TSID</code></em>;</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint16"><span class="type">guint16</span></a> <em class="structfield"><code><a name="GstMpegtsAtscVCTSource.program-number"></a>program_number</code></em>;</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint8"><span class="type">guint8</span></a> <em class="structfield"><code><a name="GstMpegtsAtscVCTSource.ETM-location"></a>ETM_location</code></em>;</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a> <em class="structfield"><code><a name="GstMpegtsAtscVCTSource.access-controlled"></a>access_controlled</code></em>;</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a> <em class="structfield"><code><a name="GstMpegtsAtscVCTSource.hidden"></a>hidden</code></em>;</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a> <em class="structfield"><code><a name="GstMpegtsAtscVCTSource.path-select"></a>path_select</code></em>;</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a> <em class="structfield"><code><a name="GstMpegtsAtscVCTSource.out-of-band"></a>out_of_band</code></em>;</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a> <em class="structfield"><code><a name="GstMpegtsAtscVCTSource.hide-guide"></a>hide_guide</code></em>;</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint8"><span class="type">guint8</span></a> <em class="structfield"><code><a name="GstMpegtsAtscVCTSource.service-type"></a>service_type</code></em>;</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint16"><span class="type">guint16</span></a> <em class="structfield"><code><a name="GstMpegtsAtscVCTSource.source-id"></a>source_id</code></em>;</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Pointer-Arrays.html#GPtrArray"><span class="type">GPtrArray</span></a> *<em class="structfield"><code><a name="GstMpegtsAtscVCTSource.descriptors"></a>descriptors</code></em>;</p></td>
-<td class="struct_member_description"><p> descriptors. </p></td>
-<td class="struct_member_annotations"><span class="annotation">[<acronym title="Generics and defining elements of containers and arrays."><span class="acronym">element-type</span></acronym> GstMpegtsDescriptor]</span></td>
-</tr>
-</tbody>
-</table></div>
-</div>
-</div>
-<hr>
-<div class="refsect2">
-<a name="GstMpegtsAtscVCT"></a><h3>struct GstMpegtsAtscVCT</h3>
-<pre class="programlisting">struct GstMpegtsAtscVCT {
- guint16 transport_stream_id;
- guint8 protocol_version;
- GPtrArray *sources;
- GPtrArray *descriptors;
-};
-</pre>
-<p>Represents both:
- Terrestrial Virtual Channel Table (A65)
- Cable Virtual Channel Table (A65)</p>
-<div class="refsect3">
-<a name="GstMpegtsAtscVCT.members"></a><h4>Members</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="300px" class="struct_members_name">
-<col class="struct_members_description">
-<col width="200px" class="struct_members_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint16"><span class="type">guint16</span></a> <em class="structfield"><code><a name="GstMpegtsAtscVCT.transport-stream-id"></a>transport_stream_id</code></em>;</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint8"><span class="type">guint8</span></a> <em class="structfield"><code><a name="GstMpegtsAtscVCT.protocol-version"></a>protocol_version</code></em>;</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Pointer-Arrays.html#GPtrArray"><span class="type">GPtrArray</span></a> *<em class="structfield"><code><a name="GstMpegtsAtscVCT.sources"></a>sources</code></em>;</p></td>
-<td class="struct_member_description"><p> sources. </p></td>
-<td class="struct_member_annotations"><span class="annotation">[<acronym title="Generics and defining elements of containers and arrays."><span class="acronym">element-type</span></acronym> GstMpegtsAtscVCTSource]</span></td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Pointer-Arrays.html#GPtrArray"><span class="type">GPtrArray</span></a> *<em class="structfield"><code><a name="GstMpegtsAtscVCT.descriptors"></a>descriptors</code></em>;</p></td>
-<td class="struct_member_description"><p> descriptors. </p></td>
-<td class="struct_member_annotations"><span class="annotation">[<acronym title="Generics and defining elements of containers and arrays."><span class="acronym">element-type</span></acronym> GstMpegtsDescriptor]</span></td>
-</tr>
-</tbody>
-</table></div>
-</div>
-</div>
-<hr>
-<div class="refsect2">
-<a name="GstMpegtsAtscMGTTableType"></a><h3>enum GstMpegtsAtscMGTTableType</h3>
-<div class="refsect3">
-<a name="GstMpegtsAtscMGTTableType.members"></a><h4>Members</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="300px" class="enum_members_name">
-<col class="enum_members_description">
-<col width="200px" class="enum_members_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="enum_member_name"><p><a name="GST-MPEGTS-ATSC-MGT-TABLE-TYPE-EIT0:CAPS"></a>GST_MPEGTS_ATSC_MGT_TABLE_TYPE_EIT0</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="enum_member_name"><p><a name="GST-MPEGTS-ATSC-MGT-TABLE-TYPE-EIT127:CAPS"></a>GST_MPEGTS_ATSC_MGT_TABLE_TYPE_EIT127</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="enum_member_name"><p><a name="GST-MPEGTS-ATSC-MGT-TABLE-TYPE-ETT0:CAPS"></a>GST_MPEGTS_ATSC_MGT_TABLE_TYPE_ETT0</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="enum_member_name"><p><a name="GST-MPEGTS-ATSC-MGT-TABLE-TYPE-ETT127:CAPS"></a>GST_MPEGTS_ATSC_MGT_TABLE_TYPE_ETT127</p></td>
-<td> </td>
-<td> </td>
-</tr>
-</tbody>
-</table></div>
-</div>
-</div>
-<hr>
-<div class="refsect2">
-<a name="GstMpegtsAtscMGTTable"></a><h3>struct GstMpegtsAtscMGTTable</h3>
-<pre class="programlisting">struct GstMpegtsAtscMGTTable {
- guint16 table_type;
- guint16 pid;
- guint8 version_number;
- guint32 number_bytes;
- GPtrArray *descriptors;
-};
-</pre>
-<p>Source from a <em class="parameter"><code>GstMpegtsAtscMGT</code></em>
-</p>
-<div class="refsect3">
-<a name="GstMpegtsAtscMGTTable.members"></a><h4>Members</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="300px" class="struct_members_name">
-<col class="struct_members_description">
-<col width="200px" class="struct_members_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint16"><span class="type">guint16</span></a> <em class="structfield"><code><a name="GstMpegtsAtscMGTTable.table-type"></a>table_type</code></em>;</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint16"><span class="type">guint16</span></a> <em class="structfield"><code><a name="GstMpegtsAtscMGTTable.pid"></a>pid</code></em>;</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint8"><span class="type">guint8</span></a> <em class="structfield"><code><a name="GstMpegtsAtscMGTTable.version-number"></a>version_number</code></em>;</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint32"><span class="type">guint32</span></a> <em class="structfield"><code><a name="GstMpegtsAtscMGTTable.number-bytes"></a>number_bytes</code></em>;</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Pointer-Arrays.html#GPtrArray"><span class="type">GPtrArray</span></a> *<em class="structfield"><code><a name="GstMpegtsAtscMGTTable.descriptors"></a>descriptors</code></em>;</p></td>
-<td class="struct_member_description"><p> descriptors. </p></td>
-<td class="struct_member_annotations"><span class="annotation">[<acronym title="Generics and defining elements of containers and arrays."><span class="acronym">element-type</span></acronym> GstMpegtsDescriptor]</span></td>
-</tr>
-</tbody>
-</table></div>
-</div>
-</div>
-<hr>
-<div class="refsect2">
-<a name="GstMpegtsAtscMGT"></a><h3>struct GstMpegtsAtscMGT</h3>
-<pre class="programlisting">struct GstMpegtsAtscMGT {
- guint8 protocol_version;
- guint16 tables_defined;
- GPtrArray *tables;
- GPtrArray *descriptors;
-};
-</pre>
-<p>Master Guide Table (A65)</p>
-<div class="refsect3">
-<a name="GstMpegtsAtscMGT.members"></a><h4>Members</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="300px" class="struct_members_name">
-<col class="struct_members_description">
-<col width="200px" class="struct_members_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint8"><span class="type">guint8</span></a> <em class="structfield"><code><a name="GstMpegtsAtscMGT.protocol-version"></a>protocol_version</code></em>;</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint16"><span class="type">guint16</span></a> <em class="structfield"><code><a name="GstMpegtsAtscMGT.tables-defined"></a>tables_defined</code></em>;</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Pointer-Arrays.html#GPtrArray"><span class="type">GPtrArray</span></a> *<em class="structfield"><code><a name="GstMpegtsAtscMGT.tables"></a>tables</code></em>;</p></td>
-<td class="struct_member_description"><p> the tables. </p></td>
-<td class="struct_member_annotations"><span class="annotation">[<acronym title="Generics and defining elements of containers and arrays."><span class="acronym">element-type</span></acronym> GstMpegtsAtscMGTTable]</span></td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Pointer-Arrays.html#GPtrArray"><span class="type">GPtrArray</span></a> *<em class="structfield"><code><a name="GstMpegtsAtscMGT.descriptors"></a>descriptors</code></em>;</p></td>
-<td class="struct_member_description"><p> descriptors. </p></td>
-<td class="struct_member_annotations"><span class="annotation">[<acronym title="Generics and defining elements of containers and arrays."><span class="acronym">element-type</span></acronym> GstMpegtsDescriptor]</span></td>
-</tr>
-</tbody>
-</table></div>
-</div>
-</div>
-<hr>
-<div class="refsect2">
-<a name="GstMpegtsAtscMultString"></a><h3>struct GstMpegtsAtscMultString</h3>
-<pre class="programlisting">struct GstMpegtsAtscMultString {
- gchar iso_639_langcode[4];
- GPtrArray *segments;
-};
-</pre>
-<div class="refsect3">
-<a name="GstMpegtsAtscMultString.members"></a><h4>Members</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="300px" class="struct_members_name">
-<col class="struct_members_description">
-<col width="200px" class="struct_members_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gchar"><span class="type">gchar</span></a> <em class="structfield"><code><a name="GstMpegtsAtscMultString.iso-639-langcode"></a>iso_639_langcode</code></em>[4];</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Pointer-Arrays.html#GPtrArray"><span class="type">GPtrArray</span></a> *<em class="structfield"><code><a name="GstMpegtsAtscMultString.segments"></a>segments</code></em>;</p></td>
-<td class="struct_member_description"><p>. </p></td>
-<td class="struct_member_annotations"><span class="annotation">[<acronym title="Generics and defining elements of containers and arrays."><span class="acronym">element-type</span></acronym> GstMpegtsAtscStringSegment]</span></td>
-</tr>
-</tbody>
-</table></div>
-</div>
-</div>
-<hr>
-<div class="refsect2">
-<a name="GstMpegtsAtscEITEvent"></a><h3>struct GstMpegtsAtscEITEvent</h3>
-<pre class="programlisting">struct GstMpegtsAtscEITEvent {
- guint16 event_id;
- guint32 start_time;
- guint8 etm_location;
- guint32 length_in_seconds;
- GPtrArray *titles;
-
- GPtrArray *descriptors;
-};
-</pre>
-<p>An ATSC EIT Event</p>
-<div class="refsect3">
-<a name="GstMpegtsAtscEITEvent.members"></a><h4>Members</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="300px" class="struct_members_name">
-<col class="struct_members_description">
-<col width="200px" class="struct_members_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint16"><span class="type">guint16</span></a> <em class="structfield"><code><a name="GstMpegtsAtscEITEvent.event-id"></a>event_id</code></em>;</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint32"><span class="type">guint32</span></a> <em class="structfield"><code><a name="GstMpegtsAtscEITEvent.start-time"></a>start_time</code></em>;</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint8"><span class="type">guint8</span></a> <em class="structfield"><code><a name="GstMpegtsAtscEITEvent.etm-location"></a>etm_location</code></em>;</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint32"><span class="type">guint32</span></a> <em class="structfield"><code><a name="GstMpegtsAtscEITEvent.length-in-seconds"></a>length_in_seconds</code></em>;</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Pointer-Arrays.html#GPtrArray"><span class="type">GPtrArray</span></a> *<em class="structfield"><code><a name="GstMpegtsAtscEITEvent.titles"></a>titles</code></em>;</p></td>
-<td class="struct_member_description"><p> the titles. </p></td>
-<td class="struct_member_annotations"><span class="annotation">[<acronym title="Generics and defining elements of containers and arrays."><span class="acronym">element-type</span></acronym> GstMpegtsAtscMultString]</span></td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Pointer-Arrays.html#GPtrArray"><span class="type">GPtrArray</span></a> *<em class="structfield"><code><a name="GstMpegtsAtscEITEvent.descriptors"></a>descriptors</code></em>;</p></td>
-<td class="struct_member_description"><p> descriptors. </p></td>
-<td class="struct_member_annotations"><span class="annotation">[<acronym title="Generics and defining elements of containers and arrays."><span class="acronym">element-type</span></acronym> GstMpegtsDescriptor]</span></td>
-</tr>
-</tbody>
-</table></div>
-</div>
-</div>
-<hr>
-<div class="refsect2">
-<a name="GstMpegtsAtscEIT"></a><h3>struct GstMpegtsAtscEIT</h3>
-<pre class="programlisting">struct GstMpegtsAtscEIT {
- guint16 source_id;
- guint8 protocol_version;
-
- GPtrArray *events;
-};
-</pre>
-<p>Event Information Table (ATSC)</p>
-<div class="refsect3">
-<a name="GstMpegtsAtscEIT.members"></a><h4>Members</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="300px" class="struct_members_name">
-<col class="struct_members_description">
-<col width="200px" class="struct_members_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint16"><span class="type">guint16</span></a> <em class="structfield"><code><a name="GstMpegtsAtscEIT.source-id"></a>source_id</code></em>;</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint8"><span class="type">guint8</span></a> <em class="structfield"><code><a name="GstMpegtsAtscEIT.protocol-version"></a>protocol_version</code></em>;</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Pointer-Arrays.html#GPtrArray"><span class="type">GPtrArray</span></a> *<em class="structfield"><code><a name="GstMpegtsAtscEIT.events"></a>events</code></em>;</p></td>
-<td class="struct_member_description"><p> Events. </p></td>
-<td class="struct_member_annotations"><span class="annotation">[<acronym title="Generics and defining elements of containers and arrays."><span class="acronym">element-type</span></acronym> GstMpegtsAtscEITEvent]</span></td>
-</tr>
-</tbody>
-</table></div>
-</div>
-</div>
-<hr>
-<div class="refsect2">
-<a name="GstMpegtsAtscETT"></a><h3>struct GstMpegtsAtscETT</h3>
-<pre class="programlisting">struct GstMpegtsAtscETT {
- guint16 ett_table_id_extension;
- guint16 protocol_version;
- guint32 etm_id;
-
- GPtrArray *messages;
-};
-</pre>
-<p>Extended Text Table (ATSC)</p>
-<div class="refsect3">
-<a name="GstMpegtsAtscETT.members"></a><h4>Members</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="300px" class="struct_members_name">
-<col class="struct_members_description">
-<col width="200px" class="struct_members_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint16"><span class="type">guint16</span></a> <em class="structfield"><code><a name="GstMpegtsAtscETT.ett-table-id-extension"></a>ett_table_id_extension</code></em>;</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint16"><span class="type">guint16</span></a> <em class="structfield"><code><a name="GstMpegtsAtscETT.protocol-version"></a>protocol_version</code></em>;</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint32"><span class="type">guint32</span></a> <em class="structfield"><code><a name="GstMpegtsAtscETT.etm-id"></a>etm_id</code></em>;</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Pointer-Arrays.html#GPtrArray"><span class="type">GPtrArray</span></a> *<em class="structfield"><code><a name="GstMpegtsAtscETT.messages"></a>messages</code></em>;</p></td>
-<td class="struct_member_description"><p> List of texts. </p></td>
-<td class="struct_member_annotations"><span class="annotation">[<acronym title="Generics and defining elements of containers and arrays."><span class="acronym">element-type</span></acronym> GstMpegtsAtscMultString]</span></td>
-</tr>
-</tbody>
-</table></div>
-</div>
-</div>
-<hr>
-<div class="refsect2">
-<a name="GstMpegtsAtscSTT"></a><h3>struct GstMpegtsAtscSTT</h3>
-<pre class="programlisting">struct GstMpegtsAtscSTT {
- guint8 protocol_version;
- guint32 system_time;
- guint8 gps_utc_offset;
- gboolean ds_status;
- guint8 ds_dayofmonth;
- guint8 ds_hour;
- GPtrArray *descriptors;
-
- GstDateTime *utc_datetime;
-};
-</pre>
-<p>System Time Table (A65)</p>
-<div class="refsect3">
-<a name="GstMpegtsAtscSTT.members"></a><h4>Members</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="300px" class="struct_members_name">
-<col class="struct_members_description">
-<col width="200px" class="struct_members_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint8"><span class="type">guint8</span></a> <em class="structfield"><code><a name="GstMpegtsAtscSTT.protocol-version"></a>protocol_version</code></em>;</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint32"><span class="type">guint32</span></a> <em class="structfield"><code><a name="GstMpegtsAtscSTT.system-time"></a>system_time</code></em>;</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint8"><span class="type">guint8</span></a> <em class="structfield"><code><a name="GstMpegtsAtscSTT.gps-utc-offset"></a>gps_utc_offset</code></em>;</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a> <em class="structfield"><code><a name="GstMpegtsAtscSTT.ds-status"></a>ds_status</code></em>;</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint8"><span class="type">guint8</span></a> <em class="structfield"><code><a name="GstMpegtsAtscSTT.ds-dayofmonth"></a>ds_dayofmonth</code></em>;</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint8"><span class="type">guint8</span></a> <em class="structfield"><code><a name="GstMpegtsAtscSTT.ds-hour"></a>ds_hour</code></em>;</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Pointer-Arrays.html#GPtrArray"><span class="type">GPtrArray</span></a> *<em class="structfield"><code><a name="GstMpegtsAtscSTT.descriptors"></a>descriptors</code></em>;</p></td>
-<td class="struct_member_description"><p> descriptors. </p></td>
-<td class="struct_member_annotations"><span class="annotation">[<acronym title="Generics and defining elements of containers and arrays."><span class="acronym">element-type</span></acronym> GstMpegtsDescriptor]</span></td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/gstreamer-1.0GstDateTime.html#GstDateTime-struct"><span class="type">GstDateTime</span></a> *<em class="structfield"><code><a name="GstMpegtsAtscSTT.utc-datetime"></a>utc_datetime</code></em>;</p></td>
-<td> </td>
-<td> </td>
-</tr>
-</tbody>
-</table></div>
-</div>
-</div>
-</div>
-</div>
-<div class="footer">
-<hr>Generated by GTK-Doc V1.25</div>
-</body>
-</html>
\ No newline at end of file
diff --git a/docs/libs/html/gst-plugins-bad-libs-Base-MPEG-TS-descriptors.html b/docs/libs/html/gst-plugins-bad-libs-Base-MPEG-TS-descriptors.html
deleted file mode 100644
index deb2cbe..0000000
--- a/docs/libs/html/gst-plugins-bad-libs-Base-MPEG-TS-descriptors.html
+++ /dev/null
@@ -1,938 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>Base MPEG-TS descriptors: GStreamer Bad Plugins 1.0 Library Reference Manual</title>
-<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
-<link rel="home" href="index.html" title="GStreamer Bad Plugins 1.0 Library Reference Manual">
-<link rel="up" href="mpegts.html" title="Mpeg TS helper library">
-<link rel="prev" href="gst-plugins-bad-libs-Base-MPEG-TS-sections.html" title="Base MPEG-TS sections">
-<link rel="next" href="gst-plugins-bad-libs-ATSC-variants-of-MPEG-TS-sections.html" title="ATSC variants of MPEG-TS sections">
-<meta name="generator" content="GTK-Doc V1.25 (XML mode)">
-<link rel="stylesheet" href="style.css" type="text/css">
-</head>
-<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
-<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="5"><tr valign="middle">
-<td width="100%" align="left" class="shortcuts">
-<a href="#" class="shortcut">Top</a><span id="nav_description"> <span class="dim">|</span>
- <a href="#gst-plugins-bad-libs-Base-MPEG-TS-descriptors.description" class="shortcut">Description</a></span><span id="nav_hierarchy"> <span class="dim">|</span>
- <a href="#gst-plugins-bad-libs-Base-MPEG-TS-descriptors.object-hierarchy" class="shortcut">Object Hierarchy</a></span>
-</td>
-<td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
-<td><a accesskey="u" href="mpegts.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
-<td><a accesskey="p" href="gst-plugins-bad-libs-Base-MPEG-TS-sections.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
-<td><a accesskey="n" href="gst-plugins-bad-libs-ATSC-variants-of-MPEG-TS-sections.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
-</tr></table>
-<div class="refentry">
-<a name="gst-plugins-bad-libs-Base-MPEG-TS-descriptors"></a><div class="titlepage"></div>
-<div class="refnamediv"><table width="100%"><tr>
-<td valign="top">
-<h2><span class="refentrytitle"><a name="gst-plugins-bad-libs-Base-MPEG-TS-descriptors.top_of_page"></a>Base MPEG-TS descriptors</span></h2>
-<p>Base MPEG-TS descriptors — Descriptors for ITU H.222.0 | ISO/IEC 13818-1</p>
-</td>
-<td class="gallery_image" valign="top" align="right"></td>
-</tr></table></div>
-<div class="refsect1">
-<a name="gst-plugins-bad-libs-Base-MPEG-TS-descriptors.functions"></a><h2>Functions</h2>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="functions_return">
-<col class="functions_name">
-</colgroup>
-<tbody>
-<tr>
-<td class="function_type">const <a class="link" href="gst-plugins-bad-libs-Base-MPEG-TS-descriptors.html#GstMpegtsDescriptor"><span class="returnvalue">GstMpegtsDescriptor</span></a> *
-</td>
-<td class="function_name">
-<a class="link" href="gst-plugins-bad-libs-Base-MPEG-TS-descriptors.html#gst-mpegts-find-descriptor" title="gst_mpegts_find_descriptor ()">gst_mpegts_find_descriptor</a> <span class="c_punctuation">()</span>
-</td>
-</tr>
-<tr>
-<td class="function_type">
-<a href="/usr/share/gtk-doc/html/glibglib-Pointer-Arrays.html#GPtrArray"><span class="returnvalue">GPtrArray</span></a> *
-</td>
-<td class="function_name">
-<a class="link" href="gst-plugins-bad-libs-Base-MPEG-TS-descriptors.html#gst-mpegts-parse-descriptors" title="gst_mpegts_parse_descriptors ()">gst_mpegts_parse_descriptors</a> <span class="c_punctuation">()</span>
-</td>
-</tr>
-<tr>
-<td class="function_type">
-<a class="link" href="gst-plugins-bad-libs-Base-MPEG-TS-descriptors.html#GstMpegtsDescriptor"><span class="returnvalue">GstMpegtsDescriptor</span></a> *
-</td>
-<td class="function_name">
-<a class="link" href="gst-plugins-bad-libs-Base-MPEG-TS-descriptors.html#gst-mpegts-descriptor-from-custom" title="gst_mpegts_descriptor_from_custom ()">gst_mpegts_descriptor_from_custom</a> <span class="c_punctuation">()</span>
-</td>
-</tr>
-<tr>
-<td class="function_type">
-<a class="link" href="gst-plugins-bad-libs-Base-MPEG-TS-descriptors.html#GstMpegtsDescriptor"><span class="returnvalue">GstMpegtsDescriptor</span></a> *
-</td>
-<td class="function_name">
-<a class="link" href="gst-plugins-bad-libs-Base-MPEG-TS-descriptors.html#gst-mpegts-descriptor-from-registration" title="gst_mpegts_descriptor_from_registration ()">gst_mpegts_descriptor_from_registration</a> <span class="c_punctuation">()</span>
-</td>
-</tr>
-<tr>
-<td class="function_type">
-<a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
-</td>
-<td class="function_name">
-<a class="link" href="gst-plugins-bad-libs-Base-MPEG-TS-descriptors.html#gst-mpegts-descriptor-parse-iso-639-language" title="gst_mpegts_descriptor_parse_iso_639_language ()">gst_mpegts_descriptor_parse_iso_639_language</a> <span class="c_punctuation">()</span>
-</td>
-</tr>
-<tr>
-<td class="function_type">
-<a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
-</td>
-<td class="function_name">
-<a class="link" href="gst-plugins-bad-libs-Base-MPEG-TS-descriptors.html#gst-mpegts-descriptor-parse-iso-639-language-idx" title="gst_mpegts_descriptor_parse_iso_639_language_idx ()">gst_mpegts_descriptor_parse_iso_639_language_idx</a> <span class="c_punctuation">()</span>
-</td>
-</tr>
-<tr>
-<td class="function_type">
-<a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint"><span class="returnvalue">guint</span></a>
-</td>
-<td class="function_name">
-<a class="link" href="gst-plugins-bad-libs-Base-MPEG-TS-descriptors.html#gst-mpegts-descriptor-parse-iso-639-language-nb" title="gst_mpegts_descriptor_parse_iso_639_language_nb ()">gst_mpegts_descriptor_parse_iso_639_language_nb</a> <span class="c_punctuation">()</span>
-</td>
-</tr>
-<tr>
-<td class="function_type">
-<span class="returnvalue">void</span>
-</td>
-<td class="function_name">
-<a class="link" href="gst-plugins-bad-libs-Base-MPEG-TS-descriptors.html#gst-mpegts-iso-639-language-descriptor-free" title="gst_mpegts_iso_639_language_descriptor_free ()">gst_mpegts_iso_639_language_descriptor_free</a> <span class="c_punctuation">()</span>
-</td>
-</tr>
-<tr>
-<td class="function_type">
-<a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
-</td>
-<td class="function_name">
-<a class="link" href="gst-plugins-bad-libs-Base-MPEG-TS-descriptors.html#gst-mpegts-descriptor-parse-logical-channel" title="gst_mpegts_descriptor_parse_logical_channel ()">gst_mpegts_descriptor_parse_logical_channel</a> <span class="c_punctuation">()</span>
-</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<a name="GstMpegtsDescriptor"></a><div class="refsect1">
-<a name="gst-plugins-bad-libs-Base-MPEG-TS-descriptors.other"></a><h2>Types and Values</h2>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="name">
-<col class="description">
-</colgroup>
-<tbody>
-<tr>
-<td class="datatype_keyword">struct</td>
-<td class="function_name"><a class="link" href="gst-plugins-bad-libs-Base-MPEG-TS-descriptors.html#GstMpegtsDescriptor-struct" title="struct GstMpegtsDescriptor">GstMpegtsDescriptor</a></td>
-</tr>
-<tr>
-<td class="datatype_keyword">enum</td>
-<td class="function_name"><a class="link" href="gst-plugins-bad-libs-Base-MPEG-TS-descriptors.html#GstMpegtsDescriptorType" title="enum GstMpegtsDescriptorType">GstMpegtsDescriptorType</a></td>
-</tr>
-<tr>
-<td class="datatype_keyword">enum</td>
-<td class="function_name"><a class="link" href="gst-plugins-bad-libs-Base-MPEG-TS-descriptors.html#GstMpegtsMiscDescriptorType" title="enum GstMpegtsMiscDescriptorType">GstMpegtsMiscDescriptorType</a></td>
-</tr>
-<tr>
-<td class="datatype_keyword">struct</td>
-<td class="function_name"><a class="link" href="gst-plugins-bad-libs-Base-MPEG-TS-descriptors.html#GstMpegtsISO639LanguageDescriptor" title="struct GstMpegtsISO639LanguageDescriptor">GstMpegtsISO639LanguageDescriptor</a></td>
-</tr>
-<tr>
-<td class="datatype_keyword">enum</td>
-<td class="function_name"><a class="link" href="gst-plugins-bad-libs-Base-MPEG-TS-descriptors.html#GstMpegtsIso639AudioType" title="enum GstMpegtsIso639AudioType">GstMpegtsIso639AudioType</a></td>
-</tr>
-<tr>
-<td class="datatype_keyword">struct</td>
-<td class="function_name"><a class="link" href="gst-plugins-bad-libs-Base-MPEG-TS-descriptors.html#GstMpegtsLogicalChannel" title="struct GstMpegtsLogicalChannel">GstMpegtsLogicalChannel</a></td>
-</tr>
-<tr>
-<td class="datatype_keyword">struct</td>
-<td class="function_name"><a class="link" href="gst-plugins-bad-libs-Base-MPEG-TS-descriptors.html#GstMpegtsLogicalChannelDescriptor" title="struct GstMpegtsLogicalChannelDescriptor">GstMpegtsLogicalChannelDescriptor</a></td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<div class="refsect1">
-<a name="gst-plugins-bad-libs-Base-MPEG-TS-descriptors.object-hierarchy"></a><h2>Object Hierarchy</h2>
-<pre class="screen"> <a href="https://developer.gnome.org/gobject/unstable/gobject-Boxed-Types.html">GBoxed</a>
- <span class="lineart">╰──</span> GstMpegtsDescriptor
- <a href="https://developer.gnome.org/gobject/unstable/gobject-Enumeration-and-Flag-Types.html">GEnum</a>
- <span class="lineart">├──</span> GstMpegtsDescriptorType
- <span class="lineart">╰──</span> GstMpegtsIso639AudioType
-</pre>
-</div>
-<div class="refsect1">
-<a name="gst-plugins-bad-libs-Base-MPEG-TS-descriptors.includes"></a><h2>Includes</h2>
-<pre class="synopsis">#include <gst/mpegts/mpegts.h>
-</pre>
-</div>
-<div class="refsect1">
-<a name="gst-plugins-bad-libs-Base-MPEG-TS-descriptors.description"></a><h2>Description</h2>
-<p>These are the base descriptor types and methods.</p>
-<p>For more details, refer to the ITU H.222.0 or ISO/IEC 13818-1 specifications
-and other specifications mentionned in the documentation.</p>
-</div>
-<div class="refsect1">
-<a name="gst-plugins-bad-libs-Base-MPEG-TS-descriptors.functions_details"></a><h2>Functions</h2>
-<div class="refsect2">
-<a name="gst-mpegts-find-descriptor"></a><h3>gst_mpegts_find_descriptor ()</h3>
-<pre class="programlisting">const <a class="link" href="gst-plugins-bad-libs-Base-MPEG-TS-descriptors.html#GstMpegtsDescriptor"><span class="returnvalue">GstMpegtsDescriptor</span></a> *
-gst_mpegts_find_descriptor (<em class="parameter"><code><a href="/usr/share/gtk-doc/html/glibglib-Pointer-Arrays.html#GPtrArray"><span class="type">GPtrArray</span></a> *descriptors</code></em>,
- <em class="parameter"><code><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint8"><span class="type">guint8</span></a> tag</code></em>);</pre>
-<p>Finds the first descriptor of type <em class="parameter"><code>tag</code></em>
- in the array.</p>
-<p>Note: To look for descriptors that can be present more than once in an
-array of descriptors, iterate the <a href="/usr/share/gtk-doc/html/glibglib-Arrays.html#GArray"><span class="type">GArray</span></a> manually.</p>
-<div class="refsect3">
-<a name="gst-mpegts-find-descriptor.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="parameter_name"><p>descriptors</p></td>
-<td class="parameter_description"><p> an array
-of <a class="link" href="gst-plugins-bad-libs-Base-MPEG-TS-descriptors.html#GstMpegtsDescriptor"><span class="type">GstMpegtsDescriptor</span></a>. </p></td>
-<td class="parameter_annotations"><span class="annotation">[<acronym title="Generics and defining elements of containers and arrays."><span class="acronym">element-type</span></acronym> GstMpegtsDescriptor][<acronym title="Don't free data after the code is done."><span class="acronym">transfer none</span></acronym>]</span></td>
-</tr>
-<tr>
-<td class="parameter_name"><p>tag</p></td>
-<td class="parameter_description"><p>the tag to look for</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<div class="refsect3">
-<a name="gst-mpegts-find-descriptor.returns"></a><h4>Returns</h4>
-<p> the first descriptor matchin <em class="parameter"><code>tag</code></em>
-, else <a href="/usr/share/gtk-doc/html/glibglib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a>. </p>
-<p><span class="annotation">[<acronym title="Don't free data after the code is done."><span class="acronym">transfer none</span></acronym>]</span></p>
-</div>
-</div>
-<hr>
-<div class="refsect2">
-<a name="gst-mpegts-parse-descriptors"></a><h3>gst_mpegts_parse_descriptors ()</h3>
-<pre class="programlisting"><a href="/usr/share/gtk-doc/html/glibglib-Pointer-Arrays.html#GPtrArray"><span class="returnvalue">GPtrArray</span></a> *
-gst_mpegts_parse_descriptors (<em class="parameter"><code><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint8"><span class="type">guint8</span></a> *buffer</code></em>,
- <em class="parameter"><code><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gsize"><span class="type">gsize</span></a> buf_len</code></em>);</pre>
-<p>Parses the descriptors present in <em class="parameter"><code>buffer</code></em>
- and returns them as an
-array.</p>
-<p>Note: The data provided in <em class="parameter"><code>buffer</code></em>
- will not be copied.</p>
-<div class="refsect3">
-<a name="gst-mpegts-parse-descriptors.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="parameter_name"><p>buffer</p></td>
-<td class="parameter_description"><p> descriptors to parse. </p></td>
-<td class="parameter_annotations"><span class="annotation">[<acronym title="Don't free data after the code is done."><span class="acronym">transfer none</span></acronym>]</span></td>
-</tr>
-<tr>
-<td class="parameter_name"><p>buf_len</p></td>
-<td class="parameter_description"><p>Size of <em class="parameter"><code>buffer</code></em>
-</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<div class="refsect3">
-<a name="gst-mpegts-parse-descriptors.returns"></a><h4>Returns</h4>
-<p> an
-array of the parsed descriptors or <a href="/usr/share/gtk-doc/html/glibglib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a> if there was an error.
-Release with <a href="/usr/share/gtk-doc/html/glibglib-Arrays.html#g-array-unref"><span class="type">g_array_unref</span></a> when done with it. </p>
-<p><span class="annotation">[<acronym title="Free data after the code is done."><span class="acronym">transfer full</span></acronym>][<acronym title="Generics and defining elements of containers and arrays."><span class="acronym">element-type</span></acronym> GstMpegtsDescriptor]</span></p>
-</div>
-</div>
-<hr>
-<div class="refsect2">
-<a name="gst-mpegts-descriptor-from-custom"></a><h3>gst_mpegts_descriptor_from_custom ()</h3>
-<pre class="programlisting"><a class="link" href="gst-plugins-bad-libs-Base-MPEG-TS-descriptors.html#GstMpegtsDescriptor"><span class="returnvalue">GstMpegtsDescriptor</span></a> *
-gst_mpegts_descriptor_from_custom (<em class="parameter"><code><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint8"><span class="type">guint8</span></a> tag</code></em>,
- <em class="parameter"><code>const <a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint8"><span class="type">guint8</span></a> *data</code></em>,
- <em class="parameter"><code><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gsize"><span class="type">gsize</span></a> length</code></em>);</pre>
-<p>Creates a <a class="link" href="gst-plugins-bad-libs-Base-MPEG-TS-descriptors.html#GstMpegtsDescriptor"><span class="type">GstMpegtsDescriptor</span></a> with custom <em class="parameter"><code>tag</code></em>
- and <em class="parameter"><code>data</code></em>
-</p>
-<div class="refsect3">
-<a name="gst-mpegts-descriptor-from-custom.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="parameter_name"><p>tag</p></td>
-<td class="parameter_description"><p>descriptor tag</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>data</p></td>
-<td class="parameter_description"><p> descriptor data (after tag and length field). </p></td>
-<td class="parameter_annotations"><span class="annotation">[<acronym title="Don't free data after the code is done."><span class="acronym">transfer none</span></acronym>]</span></td>
-</tr>
-<tr>
-<td class="parameter_name"><p>length</p></td>
-<td class="parameter_description"><p>length of <em class="parameter"><code>data</code></em>
-</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<div class="refsect3">
-<a name="gst-mpegts-descriptor-from-custom.returns"></a><h4>Returns</h4>
-<p> <a class="link" href="gst-plugins-bad-libs-Base-MPEG-TS-descriptors.html#GstMpegtsDescriptor"><span class="type">GstMpegtsDescriptor</span></a></p>
-</div>
-</div>
-<hr>
-<div class="refsect2">
-<a name="gst-mpegts-descriptor-from-registration"></a><h3>gst_mpegts_descriptor_from_registration ()</h3>
-<pre class="programlisting"><a class="link" href="gst-plugins-bad-libs-Base-MPEG-TS-descriptors.html#GstMpegtsDescriptor"><span class="returnvalue">GstMpegtsDescriptor</span></a> *
-gst_mpegts_descriptor_from_registration
- (<em class="parameter"><code>const <a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *format_identifier</code></em>,
- <em class="parameter"><code><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint8"><span class="type">guint8</span></a> *additional_info</code></em>,
- <em class="parameter"><code><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gsize"><span class="type">gsize</span></a> additional_info_length</code></em>);</pre>
-<p>Creates a <a class="link" href="gst-plugins-bad-libs-Base-MPEG-TS-descriptors.html#GST-MTS-DESC-REGISTRATION:CAPS"><code class="literal">GST_MTS_DESC_REGISTRATION</code></a> <a class="link" href="gst-plugins-bad-libs-Base-MPEG-TS-descriptors.html#GstMpegtsDescriptor"><span class="type">GstMpegtsDescriptor</span></a></p>
-<p>Return: <a class="link" href="gst-plugins-bad-libs-Base-MPEG-TS-descriptors.html#GstMpegtsDescriptor"><span class="type">GstMpegtsDescriptor</span></a>, <a href="/usr/share/gtk-doc/html/glibglib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a> on failure</p>
-<div class="refsect3">
-<a name="gst-mpegts-descriptor-from-registration.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="parameter_name"><p>format_identifier</p></td>
-<td class="parameter_description"><p> a 4 character format identifier string. </p></td>
-<td class="parameter_annotations"><span class="annotation">[<acronym title="Don't free data after the code is done."><span class="acronym">transfer none</span></acronym>]</span></td>
-</tr>
-<tr>
-<td class="parameter_name"><p>additional_info</p></td>
-<td class="parameter_description"><p> pointer to optional additional info. </p></td>
-<td class="parameter_annotations"><span class="annotation">[<acronym title="Don't free data after the code is done."><span class="acronym">transfer none</span></acronym>][<acronym title="NULL is OK, both for passing and for returning."><span class="acronym">allow-none</span></acronym>]</span></td>
-</tr>
-<tr>
-<td class="parameter_name"><p>additional_info_length</p></td>
-<td class="parameter_description"><p>length of the optional <em class="parameter"><code>additional_info</code></em>
-</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-</tbody>
-</table></div>
-</div>
-</div>
-<hr>
-<div class="refsect2">
-<a name="gst-mpegts-descriptor-parse-iso-639-language"></a><h3>gst_mpegts_descriptor_parse_iso_639_language ()</h3>
-<pre class="programlisting"><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
-gst_mpegts_descriptor_parse_iso_639_language
- (<em class="parameter"><code>const <a class="link" href="gst-plugins-bad-libs-Base-MPEG-TS-descriptors.html#GstMpegtsDescriptor"><span class="type">GstMpegtsDescriptor</span></a> *descriptor</code></em>,
- <em class="parameter"><code><a class="link" href="gst-plugins-bad-libs-Base-MPEG-TS-descriptors.html#GstMpegtsISO639LanguageDescriptor" title="struct GstMpegtsISO639LanguageDescriptor"><span class="type">GstMpegtsISO639LanguageDescriptor</span></a> **res</code></em>);</pre>
-<p>Extracts the iso 639-2 language information from <em class="parameter"><code>descriptor</code></em>
-.</p>
-<p>Note: Use <a href="/usr/share/gtk-doc/html/gst-plugins-base-libs-1.0gst-plugins-base-libs-gsttaglanguagecodes.html#gst-tag-get-language-code"><span class="type">gst_tag_get_language_code</span></a> if you want to get the the
-ISO 639-1 language code from the returned ISO 639-2 one.</p>
-<div class="refsect3">
-<a name="gst-mpegts-descriptor-parse-iso-639-language.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="parameter_name"><p>descriptor</p></td>
-<td class="parameter_description"><p>a <a class="link" href="gst-plugins-bad-libs-Base-MPEG-TS-descriptors.html#GST-MTS-DESC-ISO-639-LANGUAGE:CAPS"><code class="literal">GST_MTS_DESC_ISO_639_LANGUAGE</code></a> <a class="link" href="gst-plugins-bad-libs-Base-MPEG-TS-descriptors.html#GstMpegtsDescriptor"><span class="type">GstMpegtsDescriptor</span></a></p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>res</p></td>
-<td class="parameter_description"><p> the <a class="link" href="gst-plugins-bad-libs-Base-MPEG-TS-descriptors.html#GstMpegtsISO639LanguageDescriptor" title="struct GstMpegtsISO639LanguageDescriptor"><span class="type">GstMpegtsISO639LanguageDescriptor</span></a> to fill. </p></td>
-<td class="parameter_annotations"><span class="annotation">[<acronym title="Parameter for returning results. Default is transfer full."><span class="acronym">out</span></acronym>][<acronym title="Free data after the code is done."><span class="acronym">transfer full</span></acronym>]</span></td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<div class="refsect3">
-<a name="gst-mpegts-descriptor-parse-iso-639-language.returns"></a><h4>Returns</h4>
-<p> <a href="/usr/share/gtk-doc/html/glibglib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if parsing succeeded, else <a href="/usr/share/gtk-doc/html/glibglib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a>.</p>
-</div>
-</div>
-<hr>
-<div class="refsect2">
-<a name="gst-mpegts-descriptor-parse-iso-639-language-idx"></a><h3>gst_mpegts_descriptor_parse_iso_639_language_idx ()</h3>
-<pre class="programlisting"><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
-gst_mpegts_descriptor_parse_iso_639_language_idx
- (<em class="parameter"><code>const <a class="link" href="gst-plugins-bad-libs-Base-MPEG-TS-descriptors.html#GstMpegtsDescriptor"><span class="type">GstMpegtsDescriptor</span></a> *descriptor</code></em>,
- <em class="parameter"><code><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint"><span class="type">guint</span></a> idx</code></em>,
- <em class="parameter"><code><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gchar"><span class="type">gchar</span></a> **lang</code></em>,
- <em class="parameter"><code><a class="link" href="gst-plugins-bad-libs-Base-MPEG-TS-descriptors.html#GstMpegtsIso639AudioType" title="enum GstMpegtsIso639AudioType"><span class="type">GstMpegtsIso639AudioType</span></a> *audio_type</code></em>);</pre>
-<p>Extracts the iso 639-2 language information from specific table id in <em class="parameter"><code>descriptor</code></em>
-.</p>
-<p>Note: Use <a href="/usr/share/gtk-doc/html/gst-plugins-base-libs-1.0gst-plugins-base-libs-gsttaglanguagecodes.html#gst-tag-get-language-code"><span class="type">gst_tag_get_language_code</span></a> if you want to get the the
-ISO 639-1 language code from the returned ISO 639-2 one.</p>
-<div class="refsect3">
-<a name="gst-mpegts-descriptor-parse-iso-639-language-idx.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="parameter_name"><p>descriptor</p></td>
-<td class="parameter_description"><p>a <a class="link" href="gst-plugins-bad-libs-Base-MPEG-TS-descriptors.html#GST-MTS-DESC-ISO-639-LANGUAGE:CAPS"><code class="literal">GST_MTS_DESC_ISO_639_LANGUAGE</code></a> <a class="link" href="gst-plugins-bad-libs-Base-MPEG-TS-descriptors.html#GstMpegtsDescriptor"><span class="type">GstMpegtsDescriptor</span></a></p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>idx</p></td>
-<td class="parameter_description"><p>Table id of the language to parse</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>lang</p></td>
-<td class="parameter_description"><p> 4-byte gchar array to hold the language code. </p></td>
-<td class="parameter_annotations"><span class="annotation">[<acronym title="Parameter for returning results. Default is transfer full."><span class="acronym">out</span></acronym>][<acronym title="Free data after the code is done."><span class="acronym">transfer full</span></acronym>]</span></td>
-</tr>
-<tr>
-<td class="parameter_name"><p>audio_type</p></td>
-<td class="parameter_description"><p> the <a class="link" href="gst-plugins-bad-libs-Base-MPEG-TS-descriptors.html#GstMpegtsIso639AudioType" title="enum GstMpegtsIso639AudioType"><span class="type">GstMpegtsIso639AudioType</span></a> to set. </p></td>
-<td class="parameter_annotations"><span class="annotation">[<acronym title="Parameter for returning results. Default is transfer full."><span class="acronym">out</span></acronym>][<acronym title="Don't free data after the code is done."><span class="acronym">transfer none</span></acronym>][<acronym title="NULL is OK, both for passing and for returning."><span class="acronym">allow-none</span></acronym>]</span></td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<div class="refsect3">
-<a name="gst-mpegts-descriptor-parse-iso-639-language-idx.returns"></a><h4>Returns</h4>
-<p> <a href="/usr/share/gtk-doc/html/glibglib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if parsing succeeded, else <a href="/usr/share/gtk-doc/html/glibglib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a>.</p>
-</div>
-</div>
-<hr>
-<div class="refsect2">
-<a name="gst-mpegts-descriptor-parse-iso-639-language-nb"></a><h3>gst_mpegts_descriptor_parse_iso_639_language_nb ()</h3>
-<pre class="programlisting"><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint"><span class="returnvalue">guint</span></a>
-gst_mpegts_descriptor_parse_iso_639_language_nb
- (<em class="parameter"><code>const <a class="link" href="gst-plugins-bad-libs-Base-MPEG-TS-descriptors.html#GstMpegtsDescriptor"><span class="type">GstMpegtsDescriptor</span></a> *descriptor</code></em>);</pre>
-<div class="refsect3">
-<a name="gst-mpegts-descriptor-parse-iso-639-language-nb.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody><tr>
-<td class="parameter_name"><p>descriptor</p></td>
-<td class="parameter_description"><p>a <a class="link" href="gst-plugins-bad-libs-Base-MPEG-TS-descriptors.html#GST-MTS-DESC-ISO-639-LANGUAGE:CAPS"><code class="literal">GST_MTS_DESC_ISO_639_LANGUAGE</code></a> <a class="link" href="gst-plugins-bad-libs-Base-MPEG-TS-descriptors.html#GstMpegtsDescriptor"><span class="type">GstMpegtsDescriptor</span></a></p></td>
-<td class="parameter_annotations"> </td>
-</tr></tbody>
-</table></div>
-</div>
-<div class="refsect3">
-<a name="gst-mpegts-descriptor-parse-iso-639-language-nb.returns"></a><h4>Returns</h4>
-<p> The number of languages in <em class="parameter"><code>descriptor</code></em>
-</p>
-</div>
-</div>
-<hr>
-<div class="refsect2">
-<a name="gst-mpegts-iso-639-language-descriptor-free"></a><h3>gst_mpegts_iso_639_language_descriptor_free ()</h3>
-<pre class="programlisting"><span class="returnvalue">void</span>
-gst_mpegts_iso_639_language_descriptor_free
- (<em class="parameter"><code><a class="link" href="gst-plugins-bad-libs-Base-MPEG-TS-descriptors.html#GstMpegtsISO639LanguageDescriptor" title="struct GstMpegtsISO639LanguageDescriptor"><span class="type">GstMpegtsISO639LanguageDescriptor</span></a> *desc</code></em>);</pre>
-</div>
-<hr>
-<div class="refsect2">
-<a name="gst-mpegts-descriptor-parse-logical-channel"></a><h3>gst_mpegts_descriptor_parse_logical_channel ()</h3>
-<pre class="programlisting"><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
-gst_mpegts_descriptor_parse_logical_channel
- (<em class="parameter"><code>const <a class="link" href="gst-plugins-bad-libs-Base-MPEG-TS-descriptors.html#GstMpegtsDescriptor"><span class="type">GstMpegtsDescriptor</span></a> *descriptor</code></em>,
- <em class="parameter"><code><a class="link" href="gst-plugins-bad-libs-Base-MPEG-TS-descriptors.html#GstMpegtsLogicalChannelDescriptor" title="struct GstMpegtsLogicalChannelDescriptor"><span class="type">GstMpegtsLogicalChannelDescriptor</span></a> *res</code></em>);</pre>
-<p>Extracts the logical channels from <em class="parameter"><code>descriptor</code></em>
-.</p>
-<div class="refsect3">
-<a name="gst-mpegts-descriptor-parse-logical-channel.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="parameter_name"><p>descriptor</p></td>
-<td class="parameter_description"><p>a <a class="link" href="gst-plugins-bad-libs-Base-MPEG-TS-descriptors.html#GST-MTS-DESC-DTG-LOGICAL-CHANNEL:CAPS"><code class="literal">GST_MTS_DESC_DTG_LOGICAL_CHANNEL</code></a> <a class="link" href="gst-plugins-bad-libs-Base-MPEG-TS-descriptors.html#GstMpegtsDescriptor"><span class="type">GstMpegtsDescriptor</span></a></p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>res</p></td>
-<td class="parameter_description"><p> the <a class="link" href="gst-plugins-bad-libs-Base-MPEG-TS-descriptors.html#GstMpegtsLogicalChannelDescriptor" title="struct GstMpegtsLogicalChannelDescriptor"><span class="type">GstMpegtsLogicalChannelDescriptor</span></a> to fill. </p></td>
-<td class="parameter_annotations"><span class="annotation">[<acronym title="Parameter for returning results. Default is transfer full."><span class="acronym">out</span></acronym>][<acronym title="Don't free data after the code is done."><span class="acronym">transfer none</span></acronym>]</span></td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<div class="refsect3">
-<a name="gst-mpegts-descriptor-parse-logical-channel.returns"></a><h4>Returns</h4>
-<p> <a href="/usr/share/gtk-doc/html/glibglib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if parsing succeeded, else <a href="/usr/share/gtk-doc/html/glibglib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a>.</p>
-</div>
-</div>
-</div>
-<div class="refsect1">
-<a name="gst-plugins-bad-libs-Base-MPEG-TS-descriptors.other_details"></a><h2>Types and Values</h2>
-<div class="refsect2">
-<a name="GstMpegtsDescriptor-struct"></a><h3>struct GstMpegtsDescriptor</h3>
-<pre class="programlisting">struct GstMpegtsDescriptor {
- guint8 tag;
- guint8 tag_extension;
- guint8 length;
- guint8 *data;
-};
-</pre>
-<p>Mpeg-TS descriptor (ISO/IEC 13818-1).</p>
-<div class="refsect3">
-<a name="GstMpegtsDescriptor.members"></a><h4>Members</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="300px" class="struct_members_name">
-<col class="struct_members_description">
-<col width="200px" class="struct_members_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint8"><span class="type">guint8</span></a> <em class="structfield"><code><a name="GstMpegtsDescriptor-struct.tag"></a>tag</code></em>;</p></td>
-<td class="struct_member_description"><p>the type of descriptor</p></td>
-<td class="struct_member_annotations"> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint8"><span class="type">guint8</span></a> <em class="structfield"><code><a name="GstMpegtsDescriptor-struct.tag-extension"></a>tag_extension</code></em>;</p></td>
-<td class="struct_member_description"><p>the extended type (if <em class="parameter"><code>descriptor_tag</code></em>
-is 0x7f)</p></td>
-<td class="struct_member_annotations"> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint8"><span class="type">guint8</span></a> <em class="structfield"><code><a name="GstMpegtsDescriptor-struct.length"></a>length</code></em>;</p></td>
-<td class="struct_member_description"><p>the length of the descriptor content (excluding tag/length field)</p></td>
-<td class="struct_member_annotations"> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint8"><span class="type">guint8</span></a> *<em class="structfield"><code><a name="GstMpegtsDescriptor-struct.data"></a>data</code></em>;</p></td>
-<td class="struct_member_description"><p>the full descriptor data (including tag, extension, length). The first
-two bytes are the <em class="parameter"><code>tag</code></em>
-and <em class="parameter"><code>tag_extension</code></em>
-.</p></td>
-<td class="struct_member_annotations"> </td>
-</tr>
-</tbody>
-</table></div>
-</div>
-</div>
-<hr>
-<div class="refsect2">
-<a name="GstMpegtsDescriptorType"></a><h3>enum GstMpegtsDescriptorType</h3>
-<p>The type of <a class="link" href="gst-plugins-bad-libs-Base-MPEG-TS-descriptors.html#GstMpegtsDescriptor"><span class="type">GstMpegtsDescriptor</span></a></p>
-<p>These values correspond to the registered descriptor type from
-the base MPEG-TS specifications (ITU H.222.0 | ISO/IEC 13818-1).</p>
-<p>Consult the relevant specifications for more details.</p>
-<div class="refsect3">
-<a name="GstMpegtsDescriptorType.members"></a><h4>Members</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="300px" class="enum_members_name">
-<col class="enum_members_description">
-<col width="200px" class="enum_members_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="enum_member_name"><p><a name="GST-MTS-DESC-RESERVED-00:CAPS"></a>GST_MTS_DESC_RESERVED_00</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="enum_member_name"><p><a name="GST-MTS-DESC-RESERVED-01:CAPS"></a>GST_MTS_DESC_RESERVED_01</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="enum_member_name"><p><a name="GST-MTS-DESC-VIDEO-STREAM:CAPS"></a>GST_MTS_DESC_VIDEO_STREAM</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="enum_member_name"><p><a name="GST-MTS-DESC-AUDIO-STREAM:CAPS"></a>GST_MTS_DESC_AUDIO_STREAM</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="enum_member_name"><p><a name="GST-MTS-DESC-HIERARCHY:CAPS"></a>GST_MTS_DESC_HIERARCHY</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="enum_member_name"><p><a name="GST-MTS-DESC-REGISTRATION:CAPS"></a>GST_MTS_DESC_REGISTRATION</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="enum_member_name"><p><a name="GST-MTS-DESC-DATA-STREAM-ALIGNMENT:CAPS"></a>GST_MTS_DESC_DATA_STREAM_ALIGNMENT</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="enum_member_name"><p><a name="GST-MTS-DESC-TARGET-BACKGROUND-GRID:CAPS"></a>GST_MTS_DESC_TARGET_BACKGROUND_GRID</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="enum_member_name"><p><a name="GST-MTS-DESC-VIDEO-WINDOW:CAPS"></a>GST_MTS_DESC_VIDEO_WINDOW</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="enum_member_name"><p><a name="GST-MTS-DESC-CA:CAPS"></a>GST_MTS_DESC_CA</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="enum_member_name"><p><a name="GST-MTS-DESC-ISO-639-LANGUAGE:CAPS"></a>GST_MTS_DESC_ISO_639_LANGUAGE</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="enum_member_name"><p><a name="GST-MTS-DESC-SYSTEM-CLOCK:CAPS"></a>GST_MTS_DESC_SYSTEM_CLOCK</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="enum_member_name"><p><a name="GST-MTS-DESC-MULTIPLEX-BUFFER-UTILISATION:CAPS"></a>GST_MTS_DESC_MULTIPLEX_BUFFER_UTILISATION</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="enum_member_name"><p><a name="GST-MTS-DESC-COPYRIGHT:CAPS"></a>GST_MTS_DESC_COPYRIGHT</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="enum_member_name"><p><a name="GST-MTS-DESC-MAXIMUM-BITRATE:CAPS"></a>GST_MTS_DESC_MAXIMUM_BITRATE</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="enum_member_name"><p><a name="GST-MTS-DESC-PRIVATE-DATA-INDICATOR:CAPS"></a>GST_MTS_DESC_PRIVATE_DATA_INDICATOR</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="enum_member_name"><p><a name="GST-MTS-DESC-SMOOTHING-BUFFER:CAPS"></a>GST_MTS_DESC_SMOOTHING_BUFFER</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="enum_member_name"><p><a name="GST-MTS-DESC-STD:CAPS"></a>GST_MTS_DESC_STD</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="enum_member_name"><p><a name="GST-MTS-DESC-IBP:CAPS"></a>GST_MTS_DESC_IBP</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="enum_member_name"><p><a name="GST-MTS-DESC-DSMCC-CAROUSEL-IDENTIFIER:CAPS"></a>GST_MTS_DESC_DSMCC_CAROUSEL_IDENTIFIER</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="enum_member_name"><p><a name="GST-MTS-DESC-DSMCC-ASSOCIATION-TAG:CAPS"></a>GST_MTS_DESC_DSMCC_ASSOCIATION_TAG</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="enum_member_name"><p><a name="GST-MTS-DESC-DSMCC-DEFERRED-ASSOCIATION-TAG:CAPS"></a>GST_MTS_DESC_DSMCC_DEFERRED_ASSOCIATION_TAG</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="enum_member_name"><p><a name="GST-MTS-DESC-DSMCC-NPT-REFERENCE:CAPS"></a>GST_MTS_DESC_DSMCC_NPT_REFERENCE</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="enum_member_name"><p><a name="GST-MTS-DESC-DSMCC-NPT-ENDPOINT:CAPS"></a>GST_MTS_DESC_DSMCC_NPT_ENDPOINT</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="enum_member_name"><p><a name="GST-MTS-DESC-DSMCC-STREAM-MODE:CAPS"></a>GST_MTS_DESC_DSMCC_STREAM_MODE</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="enum_member_name"><p><a name="GST-MTS-DESC-DSMCC-STREAM-EVENT:CAPS"></a>GST_MTS_DESC_DSMCC_STREAM_EVENT</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="enum_member_name"><p><a name="GST-MTS-DESC-MPEG4-VIDEO:CAPS"></a>GST_MTS_DESC_MPEG4_VIDEO</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="enum_member_name"><p><a name="GST-MTS-DESC-MPEG4-AUDIO:CAPS"></a>GST_MTS_DESC_MPEG4_AUDIO</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="enum_member_name"><p><a name="GST-MTS-DESC-IOD:CAPS"></a>GST_MTS_DESC_IOD</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="enum_member_name"><p><a name="GST-MTS-DESC-SL:CAPS"></a>GST_MTS_DESC_SL</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="enum_member_name"><p><a name="GST-MTS-DESC-FMC:CAPS"></a>GST_MTS_DESC_FMC</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="enum_member_name"><p><a name="GST-MTS-DESC-EXTERNAL-ES-ID:CAPS"></a>GST_MTS_DESC_EXTERNAL_ES_ID</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="enum_member_name"><p><a name="GST-MTS-DESC-MUX-CODE:CAPS"></a>GST_MTS_DESC_MUX_CODE</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="enum_member_name"><p><a name="GST-MTS-DESC-FMX-BUFFER-SIZE:CAPS"></a>GST_MTS_DESC_FMX_BUFFER_SIZE</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="enum_member_name"><p><a name="GST-MTS-DESC-MULTIPLEX-BUFFER:CAPS"></a>GST_MTS_DESC_MULTIPLEX_BUFFER</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="enum_member_name"><p><a name="GST-MTS-DESC-CONTENT-LABELING:CAPS"></a>GST_MTS_DESC_CONTENT_LABELING</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="enum_member_name"><p><a name="GST-MTS-DESC-METADATA-POINTER:CAPS"></a>GST_MTS_DESC_METADATA_POINTER</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="enum_member_name"><p><a name="GST-MTS-DESC-METADATA:CAPS"></a>GST_MTS_DESC_METADATA</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="enum_member_name"><p><a name="GST-MTS-DESC-METADATA-STD:CAPS"></a>GST_MTS_DESC_METADATA_STD</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="enum_member_name"><p><a name="GST-MTS-DESC-AVC-VIDEO:CAPS"></a>GST_MTS_DESC_AVC_VIDEO</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="enum_member_name"><p><a name="GST-MTS-DESC-IPMP:CAPS"></a>GST_MTS_DESC_IPMP</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="enum_member_name"><p><a name="GST-MTS-DESC-AVC-TIMING-AND-HRD:CAPS"></a>GST_MTS_DESC_AVC_TIMING_AND_HRD</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="enum_member_name"><p><a name="GST-MTS-DESC-MPEG2-AAC-AUDIO:CAPS"></a>GST_MTS_DESC_MPEG2_AAC_AUDIO</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="enum_member_name"><p><a name="GST-MTS-DESC-FLEX-MUX-TIMING:CAPS"></a>GST_MTS_DESC_FLEX_MUX_TIMING</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="enum_member_name"><p><a name="GST-MTS-DESC-MPEG4-TEXT:CAPS"></a>GST_MTS_DESC_MPEG4_TEXT</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="enum_member_name"><p><a name="GST-MTS-DESC-MPEG4-AUDIO-EXTENSION:CAPS"></a>GST_MTS_DESC_MPEG4_AUDIO_EXTENSION</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="enum_member_name"><p><a name="GST-MTS-DESC-AUXILIARY-VIDEO-STREAM:CAPS"></a>GST_MTS_DESC_AUXILIARY_VIDEO_STREAM</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="enum_member_name"><p><a name="GST-MTS-DESC-SVC-EXTENSION:CAPS"></a>GST_MTS_DESC_SVC_EXTENSION</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="enum_member_name"><p><a name="GST-MTS-DESC-MVC-EXTENSION:CAPS"></a>GST_MTS_DESC_MVC_EXTENSION</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="enum_member_name"><p><a name="GST-MTS-DESC-J2K-VIDEO:CAPS"></a>GST_MTS_DESC_J2K_VIDEO</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="enum_member_name"><p><a name="GST-MTS-DESC-MVC-OPERATION-POINT:CAPS"></a>GST_MTS_DESC_MVC_OPERATION_POINT</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="enum_member_name"><p><a name="GST-MTS-DESC-MPEG2-STEREOSCOPIC-VIDEO-FORMAT:CAPS"></a>GST_MTS_DESC_MPEG2_STEREOSCOPIC_VIDEO_FORMAT</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="enum_member_name"><p><a name="GST-MTS-DESC-STEREOSCOPIC-PROGRAM-INFO:CAPS"></a>GST_MTS_DESC_STEREOSCOPIC_PROGRAM_INFO</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="enum_member_name"><p><a name="GST-MTS-DESC-STEREOSCOPIC-VIDEO-INFO:CAPS"></a>GST_MTS_DESC_STEREOSCOPIC_VIDEO_INFO</p></td>
-<td> </td>
-<td> </td>
-</tr>
-</tbody>
-</table></div>
-</div>
-</div>
-<hr>
-<div class="refsect2">
-<a name="GstMpegtsMiscDescriptorType"></a><h3>enum GstMpegtsMiscDescriptorType</h3>
-<p>The type of <a class="link" href="gst-plugins-bad-libs-Base-MPEG-TS-descriptors.html#GstMpegtsDescriptor"><span class="type">GstMpegtsDescriptor</span></a></p>
-<p>These values correspond to miscellaneous descriptor types that are
-not yet identified from known specifications.</p>
-<div class="refsect3">
-<a name="GstMpegtsMiscDescriptorType.members"></a><h4>Members</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="300px" class="enum_members_name">
-<col class="enum_members_description">
-<col width="200px" class="enum_members_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="enum_member_name"><p><a name="GST-MTS-DESC-AC3-AUDIO-STREAM:CAPS"></a>GST_MTS_DESC_AC3_AUDIO_STREAM</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="enum_member_name"><p><a name="GST-MTS-DESC-DTG-LOGICAL-CHANNEL:CAPS"></a>GST_MTS_DESC_DTG_LOGICAL_CHANNEL</p></td>
-<td> </td>
-<td> </td>
-</tr>
-</tbody>
-</table></div>
-</div>
-</div>
-<hr>
-<div class="refsect2">
-<a name="GstMpegtsISO639LanguageDescriptor"></a><h3>struct GstMpegtsISO639LanguageDescriptor</h3>
-<pre class="programlisting">struct GstMpegtsISO639LanguageDescriptor {
- guint nb_language;
- gchar *language[64];
- GstMpegtsIso639AudioType audio_type[64];
-};
-</pre>
-</div>
-<hr>
-<div class="refsect2">
-<a name="GstMpegtsIso639AudioType"></a><h3>enum GstMpegtsIso639AudioType</h3>
-<div class="refsect3">
-<a name="GstMpegtsIso639AudioType.members"></a><h4>Members</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="300px" class="enum_members_name">
-<col class="enum_members_description">
-<col width="200px" class="enum_members_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="enum_member_name"><p><a name="GST-MPEGTS-AUDIO-TYPE-UNDEFINED:CAPS"></a>GST_MPEGTS_AUDIO_TYPE_UNDEFINED</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="enum_member_name"><p><a name="GST-MPEGTS-AUDIO-TYPE-CLEAN-EFFECTS:CAPS"></a>GST_MPEGTS_AUDIO_TYPE_CLEAN_EFFECTS</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="enum_member_name"><p><a name="GST-MPEGTS-AUDIO-TYPE-HEARING-IMPAIRED:CAPS"></a>GST_MPEGTS_AUDIO_TYPE_HEARING_IMPAIRED</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="enum_member_name"><p><a name="GST-MPEGTS-AUDIO-TYPE-VISUAL-IMPAIRED-COMMENTARY:CAPS"></a>GST_MPEGTS_AUDIO_TYPE_VISUAL_IMPAIRED_COMMENTARY</p></td>
-<td> </td>
-<td> </td>
-</tr>
-</tbody>
-</table></div>
-</div>
-</div>
-<hr>
-<div class="refsect2">
-<a name="GstMpegtsLogicalChannel"></a><h3>struct GstMpegtsLogicalChannel</h3>
-<pre class="programlisting">struct GstMpegtsLogicalChannel {
- guint16 service_id;
- gboolean visible_service;
- guint16 logical_channel_number;
-};
-</pre>
-</div>
-<hr>
-<div class="refsect2">
-<a name="GstMpegtsLogicalChannelDescriptor"></a><h3>struct GstMpegtsLogicalChannelDescriptor</h3>
-<pre class="programlisting">struct GstMpegtsLogicalChannelDescriptor {
- guint nb_channels;
- GstMpegtsLogicalChannel channels[64];
-};
-</pre>
-</div>
-</div>
-</div>
-<div class="footer">
-<hr>Generated by GTK-Doc V1.25</div>
-</body>
-</html>
\ No newline at end of file
diff --git a/docs/libs/html/gst-plugins-bad-libs-Base-MPEG-TS-sections.html b/docs/libs/html/gst-plugins-bad-libs-Base-MPEG-TS-sections.html
deleted file mode 100644
index c521b5a..0000000
--- a/docs/libs/html/gst-plugins-bad-libs-Base-MPEG-TS-sections.html
+++ /dev/null
@@ -1,1475 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>Base MPEG-TS sections: GStreamer Bad Plugins 1.0 Library Reference Manual</title>
-<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
-<link rel="home" href="index.html" title="GStreamer Bad Plugins 1.0 Library Reference Manual">
-<link rel="up" href="mpegts.html" title="Mpeg TS helper library">
-<link rel="prev" href="gst-plugins-bad-libs-Mpeg-ts-helper-library.html" title="Mpeg-ts helper library">
-<link rel="next" href="gst-plugins-bad-libs-Base-MPEG-TS-descriptors.html" title="Base MPEG-TS descriptors">
-<meta name="generator" content="GTK-Doc V1.25 (XML mode)">
-<link rel="stylesheet" href="style.css" type="text/css">
-</head>
-<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
-<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="5"><tr valign="middle">
-<td width="100%" align="left" class="shortcuts">
-<a href="#" class="shortcut">Top</a><span id="nav_description"> <span class="dim">|</span>
- <a href="#gst-plugins-bad-libs-Base-MPEG-TS-sections.description" class="shortcut">Description</a></span><span id="nav_hierarchy"> <span class="dim">|</span>
- <a href="#gst-plugins-bad-libs-Base-MPEG-TS-sections.object-hierarchy" class="shortcut">Object Hierarchy</a></span>
-</td>
-<td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
-<td><a accesskey="u" href="mpegts.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
-<td><a accesskey="p" href="gst-plugins-bad-libs-Mpeg-ts-helper-library.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
-<td><a accesskey="n" href="gst-plugins-bad-libs-Base-MPEG-TS-descriptors.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
-</tr></table>
-<div class="refentry">
-<a name="gst-plugins-bad-libs-Base-MPEG-TS-sections"></a><div class="titlepage"></div>
-<div class="refnamediv"><table width="100%"><tr>
-<td valign="top">
-<h2><span class="refentrytitle"><a name="gst-plugins-bad-libs-Base-MPEG-TS-sections.top_of_page"></a>Base MPEG-TS sections</span></h2>
-<p>Base MPEG-TS sections — Sections for ITU H.222.0 | ISO/IEC 13818-1</p>
-</td>
-<td class="gallery_image" valign="top" align="right"></td>
-</tr></table></div>
-<div class="refsect1">
-<a name="gst-plugins-bad-libs-Base-MPEG-TS-sections.functions"></a><h2>Functions</h2>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="functions_return">
-<col class="functions_name">
-</colgroup>
-<tbody>
-<tr>
-<td class="define_keyword">#define</td>
-<td class="function_name">
-<a class="link" href="gst-plugins-bad-libs-Base-MPEG-TS-sections.html#GST-MPEGTS-SECTION-TYPE:CAPS" title="GST_MPEGTS_SECTION_TYPE()">GST_MPEGTS_SECTION_TYPE</a><span class="c_punctuation">()</span>
-</td>
-</tr>
-<tr>
-<td class="function_type">
-<a href="/usr/share/gtk-doc/html/gstreamer-1.0GstMessage.html#GstMessage-struct"><span class="returnvalue">GstMessage</span></a> *
-</td>
-<td class="function_name">
-<a class="link" href="gst-plugins-bad-libs-Base-MPEG-TS-sections.html#gst-message-new-mpegts-section" title="gst_message_new_mpegts_section ()">gst_message_new_mpegts_section</a> <span class="c_punctuation">()</span>
-</td>
-</tr>
-<tr>
-<td class="function_type">
-<a class="link" href="gst-plugins-bad-libs-Base-MPEG-TS-sections.html#GstMpegtsSection"><span class="returnvalue">GstMpegtsSection</span></a> *
-</td>
-<td class="function_name">
-<a class="link" href="gst-plugins-bad-libs-Base-MPEG-TS-sections.html#gst-message-parse-mpegts-section" title="gst_message_parse_mpegts_section ()">gst_message_parse_mpegts_section</a> <span class="c_punctuation">()</span>
-</td>
-</tr>
-<tr>
-<td class="function_type">
-<a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
-</td>
-<td class="function_name">
-<a class="link" href="gst-plugins-bad-libs-Base-MPEG-TS-sections.html#gst-mpegts-section-send-event" title="gst_mpegts_section_send_event ()">gst_mpegts_section_send_event</a> <span class="c_punctuation">()</span>
-</td>
-</tr>
-<tr>
-<td class="function_type">
-<a class="link" href="gst-plugins-bad-libs-Base-MPEG-TS-sections.html#GstMpegtsSection"><span class="returnvalue">GstMpegtsSection</span></a> *
-</td>
-<td class="function_name">
-<a class="link" href="gst-plugins-bad-libs-Base-MPEG-TS-sections.html#gst-event-parse-mpegts-section" title="gst_event_parse_mpegts_section ()">gst_event_parse_mpegts_section</a> <span class="c_punctuation">()</span>
-</td>
-</tr>
-<tr>
-<td class="function_type">
-<a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint8"><span class="returnvalue">guint8</span></a> *
-</td>
-<td class="function_name">
-<a class="link" href="gst-plugins-bad-libs-Base-MPEG-TS-sections.html#gst-mpegts-section-packetize" title="gst_mpegts_section_packetize ()">gst_mpegts_section_packetize</a> <span class="c_punctuation">()</span>
-</td>
-</tr>
-<tr>
-<td class="function_type">
-<a class="link" href="gst-plugins-bad-libs-Base-MPEG-TS-sections.html#GstMpegtsSection"><span class="returnvalue">GstMpegtsSection</span></a> *
-</td>
-<td class="function_name">
-<a class="link" href="gst-plugins-bad-libs-Base-MPEG-TS-sections.html#gst-mpegts-section-new" title="gst_mpegts_section_new ()">gst_mpegts_section_new</a> <span class="c_punctuation">()</span>
-</td>
-</tr>
-<tr>
-<td class="define_keyword">#define</td>
-<td class="function_name">
-<a class="link" href="gst-plugins-bad-libs-Base-MPEG-TS-sections.html#gst-mpegts-section-ref" title="gst_mpegts_section_ref()">gst_mpegts_section_ref</a><span class="c_punctuation">()</span>
-</td>
-</tr>
-<tr>
-<td class="define_keyword">#define</td>
-<td class="function_name">
-<a class="link" href="gst-plugins-bad-libs-Base-MPEG-TS-sections.html#gst-mpegts-section-unref" title="gst_mpegts_section_unref()">gst_mpegts_section_unref</a><span class="c_punctuation">()</span>
-</td>
-</tr>
-<tr>
-<td class="function_type">
-<a href="/usr/share/gtk-doc/html/glibglib-Pointer-Arrays.html#GPtrArray"><span class="returnvalue">GPtrArray</span></a> *
-</td>
-<td class="function_name">
-<a class="link" href="gst-plugins-bad-libs-Base-MPEG-TS-sections.html#gst-mpegts-section-get-pat" title="gst_mpegts_section_get_pat ()">gst_mpegts_section_get_pat</a> <span class="c_punctuation">()</span>
-</td>
-</tr>
-<tr>
-<td class="function_type">
-<a href="/usr/share/gtk-doc/html/glibglib-Pointer-Arrays.html#GPtrArray"><span class="returnvalue">GPtrArray</span></a> *
-</td>
-<td class="function_name">
-<a class="link" href="gst-plugins-bad-libs-Base-MPEG-TS-sections.html#gst-mpegts-pat-new" title="gst_mpegts_pat_new ()">gst_mpegts_pat_new</a> <span class="c_punctuation">()</span>
-</td>
-</tr>
-<tr>
-<td class="function_type">
-<a class="link" href="gst-plugins-bad-libs-Base-MPEG-TS-sections.html#GstMpegtsPatProgram" title="struct GstMpegtsPatProgram"><span class="returnvalue">GstMpegtsPatProgram</span></a> *
-</td>
-<td class="function_name">
-<a class="link" href="gst-plugins-bad-libs-Base-MPEG-TS-sections.html#gst-mpegts-pat-program-new" title="gst_mpegts_pat_program_new ()">gst_mpegts_pat_program_new</a> <span class="c_punctuation">()</span>
-</td>
-</tr>
-<tr>
-<td class="function_type">
-<a class="link" href="gst-plugins-bad-libs-Base-MPEG-TS-sections.html#GstMpegtsSection"><span class="returnvalue">GstMpegtsSection</span></a> *
-</td>
-<td class="function_name">
-<a class="link" href="gst-plugins-bad-libs-Base-MPEG-TS-sections.html#gst-mpegts-section-from-pat" title="gst_mpegts_section_from_pat ()">gst_mpegts_section_from_pat</a> <span class="c_punctuation">()</span>
-</td>
-</tr>
-<tr>
-<td class="function_type">const <a class="link" href="gst-plugins-bad-libs-Base-MPEG-TS-sections.html#GstMpegtsPMT" title="struct GstMpegtsPMT"><span class="returnvalue">GstMpegtsPMT</span></a> *
-</td>
-<td class="function_name">
-<a class="link" href="gst-plugins-bad-libs-Base-MPEG-TS-sections.html#gst-mpegts-section-get-pmt" title="gst_mpegts_section_get_pmt ()">gst_mpegts_section_get_pmt</a> <span class="c_punctuation">()</span>
-</td>
-</tr>
-<tr>
-<td class="function_type">
-<a class="link" href="gst-plugins-bad-libs-Base-MPEG-TS-sections.html#GstMpegtsPMT" title="struct GstMpegtsPMT"><span class="returnvalue">GstMpegtsPMT</span></a> *
-</td>
-<td class="function_name">
-<a class="link" href="gst-plugins-bad-libs-Base-MPEG-TS-sections.html#gst-mpegts-pmt-new" title="gst_mpegts_pmt_new ()">gst_mpegts_pmt_new</a> <span class="c_punctuation">()</span>
-</td>
-</tr>
-<tr>
-<td class="function_type">
-<a class="link" href="gst-plugins-bad-libs-Base-MPEG-TS-sections.html#GstMpegtsPMTStream" title="struct GstMpegtsPMTStream"><span class="returnvalue">GstMpegtsPMTStream</span></a> *
-</td>
-<td class="function_name">
-<a class="link" href="gst-plugins-bad-libs-Base-MPEG-TS-sections.html#gst-mpegts-pmt-stream-new" title="gst_mpegts_pmt_stream_new ()">gst_mpegts_pmt_stream_new</a> <span class="c_punctuation">()</span>
-</td>
-</tr>
-<tr>
-<td class="function_type">
-<a class="link" href="gst-plugins-bad-libs-Base-MPEG-TS-sections.html#GstMpegtsSection"><span class="returnvalue">GstMpegtsSection</span></a> *
-</td>
-<td class="function_name">
-<a class="link" href="gst-plugins-bad-libs-Base-MPEG-TS-sections.html#gst-mpegts-section-from-pmt" title="gst_mpegts_section_from_pmt ()">gst_mpegts_section_from_pmt</a> <span class="c_punctuation">()</span>
-</td>
-</tr>
-<tr>
-<td class="function_type">
-<a href="/usr/share/gtk-doc/html/glibglib-Pointer-Arrays.html#GPtrArray"><span class="returnvalue">GPtrArray</span></a> *
-</td>
-<td class="function_name">
-<a class="link" href="gst-plugins-bad-libs-Base-MPEG-TS-sections.html#gst-mpegts-section-get-tsdt" title="gst_mpegts_section_get_tsdt ()">gst_mpegts_section_get_tsdt</a> <span class="c_punctuation">()</span>
-</td>
-</tr>
-<tr>
-<td class="function_type">
-<a href="/usr/share/gtk-doc/html/glibglib-Pointer-Arrays.html#GPtrArray"><span class="returnvalue">GPtrArray</span></a> *
-</td>
-<td class="function_name">
-<a class="link" href="gst-plugins-bad-libs-Base-MPEG-TS-sections.html#gst-mpegts-section-get-cat" title="gst_mpegts_section_get_cat ()">gst_mpegts_section_get_cat</a> <span class="c_punctuation">()</span>
-</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<a name="GstMpegtsSection"></a><div class="refsect1">
-<a name="gst-plugins-bad-libs-Base-MPEG-TS-sections.other"></a><h2>Types and Values</h2>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="name">
-<col class="description">
-</colgroup>
-<tbody>
-<tr>
-<td class="datatype_keyword">struct</td>
-<td class="function_name"><a class="link" href="gst-plugins-bad-libs-Base-MPEG-TS-sections.html#GstMpegtsSection-struct" title="struct GstMpegtsSection">GstMpegtsSection</a></td>
-</tr>
-<tr>
-<td class="datatype_keyword">enum</td>
-<td class="function_name"><a class="link" href="gst-plugins-bad-libs-Base-MPEG-TS-sections.html#GstMpegtsSectionTableID" title="enum GstMpegtsSectionTableID">GstMpegtsSectionTableID</a></td>
-</tr>
-<tr>
-<td class="datatype_keyword">enum</td>
-<td class="function_name"><a class="link" href="gst-plugins-bad-libs-Base-MPEG-TS-sections.html#GstMpegtsSectionType" title="enum GstMpegtsSectionType">GstMpegtsSectionType</a></td>
-</tr>
-<tr>
-<td class="datatype_keyword">struct</td>
-<td class="function_name"><a class="link" href="gst-plugins-bad-libs-Base-MPEG-TS-sections.html#GstMpegtsPatProgram" title="struct GstMpegtsPatProgram">GstMpegtsPatProgram</a></td>
-</tr>
-<tr>
-<td class="datatype_keyword">struct</td>
-<td class="function_name"><a class="link" href="gst-plugins-bad-libs-Base-MPEG-TS-sections.html#GstMpegtsPMT" title="struct GstMpegtsPMT">GstMpegtsPMT</a></td>
-</tr>
-<tr>
-<td class="datatype_keyword">struct</td>
-<td class="function_name"><a class="link" href="gst-plugins-bad-libs-Base-MPEG-TS-sections.html#GstMpegtsPMTStream" title="struct GstMpegtsPMTStream">GstMpegtsPMTStream</a></td>
-</tr>
-<tr>
-<td class="datatype_keyword">enum</td>
-<td class="function_name"><a class="link" href="gst-plugins-bad-libs-Base-MPEG-TS-sections.html#GstMpegtsStreamType" title="enum GstMpegtsStreamType">GstMpegtsStreamType</a></td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<div class="refsect1">
-<a name="gst-plugins-bad-libs-Base-MPEG-TS-sections.object-hierarchy"></a><h2>Object Hierarchy</h2>
-<pre class="screen"> <a href="https://developer.gnome.org/gobject/unstable/gobject-Boxed-Types.html">GBoxed</a>
- <span class="lineart">╰──</span> GstMpegtsSection
- <a href="https://developer.gnome.org/gobject/unstable/gobject-Enumeration-and-Flag-Types.html">GEnum</a>
- <span class="lineart">├──</span> GstMpegtsSectionTableID
- <span class="lineart">├──</span> GstMpegtsSectionType
- <span class="lineart">╰──</span> GstMpegtsStreamType
-</pre>
-</div>
-<div class="refsect1">
-<a name="gst-plugins-bad-libs-Base-MPEG-TS-sections.includes"></a><h2>Includes</h2>
-<pre class="synopsis">#include <gst/mpegts/mpegts.h>
-</pre>
-</div>
-<div class="refsect1">
-<a name="gst-plugins-bad-libs-Base-MPEG-TS-sections.description"></a><h2>Description</h2>
-<p>For more details, refer to the ITU H.222.0 or ISO/IEC 13818-1 specifications
-and other specifications mentioned in the documentation.</p>
-</div>
-<div class="refsect1">
-<a name="gst-plugins-bad-libs-Base-MPEG-TS-sections.functions_details"></a><h2>Functions</h2>
-<div class="refsect2">
-<a name="GST-MPEGTS-SECTION-TYPE:CAPS"></a><h3>GST_MPEGTS_SECTION_TYPE()</h3>
-<pre class="programlisting">#define GST_MPEGTS_SECTION_TYPE(section) (GST_MPEGTS_SECTION (section)->section_type)
-</pre>
-</div>
-<hr>
-<div class="refsect2">
-<a name="gst-message-new-mpegts-section"></a><h3>gst_message_new_mpegts_section ()</h3>
-<pre class="programlisting"><a href="/usr/share/gtk-doc/html/gstreamer-1.0GstMessage.html#GstMessage-struct"><span class="returnvalue">GstMessage</span></a> *
-gst_message_new_mpegts_section (<em class="parameter"><code><a href="/usr/share/gtk-doc/html/gstreamer-1.0GstObject.html#GstObject-struct"><span class="type">GstObject</span></a> *parent</code></em>,
- <em class="parameter"><code><a class="link" href="gst-plugins-bad-libs-Base-MPEG-TS-sections.html#GstMpegtsSection"><span class="type">GstMpegtsSection</span></a> *section</code></em>);</pre>
-<p>Creates a new <a href="/usr/share/gtk-doc/html/gstreamer-1.0GstMessage.html#GstMessage-struct"><span class="type">GstMessage</span></a> for a <em class="parameter"><code>GstMpegtsSection</code></em>
-.</p>
-<div class="refsect3">
-<a name="gst-message-new-mpegts-section.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="parameter_name"><p>parent</p></td>
-<td class="parameter_description"><p> The creator of the message. </p></td>
-<td class="parameter_annotations"><span class="annotation">[<acronym title="Don't free data after the code is done."><span class="acronym">transfer none</span></acronym>]</span></td>
-</tr>
-<tr>
-<td class="parameter_name"><p>section</p></td>
-<td class="parameter_description"><p> The <a class="link" href="gst-plugins-bad-libs-Base-MPEG-TS-sections.html#GstMpegtsSection"><span class="type">GstMpegtsSection</span></a> to put in a message. </p></td>
-<td class="parameter_annotations"><span class="annotation">[<acronym title="Don't free data after the code is done."><span class="acronym">transfer none</span></acronym>]</span></td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<div class="refsect3">
-<a name="gst-message-new-mpegts-section.returns"></a><h4>Returns</h4>
-<p> The new <a href="/usr/share/gtk-doc/html/gstreamer-1.0GstMessage.html#GstMessage-struct"><span class="type">GstMessage</span></a> to be posted, or <a href="/usr/share/gtk-doc/html/glibglib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a> if the
-section is not valid. </p>
-<p><span class="annotation">[<acronym title="Free data after the code is done."><span class="acronym">transfer full</span></acronym>]</span></p>
-</div>
-</div>
-<hr>
-<div class="refsect2">
-<a name="gst-message-parse-mpegts-section"></a><h3>gst_message_parse_mpegts_section ()</h3>
-<pre class="programlisting"><a class="link" href="gst-plugins-bad-libs-Base-MPEG-TS-sections.html#GstMpegtsSection"><span class="returnvalue">GstMpegtsSection</span></a> *
-gst_message_parse_mpegts_section (<em class="parameter"><code><a href="/usr/share/gtk-doc/html/gstreamer-1.0GstMessage.html#GstMessage-struct"><span class="type">GstMessage</span></a> *message</code></em>);</pre>
-<p>Returns the <a class="link" href="gst-plugins-bad-libs-Base-MPEG-TS-sections.html#GstMpegtsSection"><span class="type">GstMpegtsSection</span></a> contained in a message.</p>
-<div class="refsect3">
-<a name="gst-message-parse-mpegts-section.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody><tr>
-<td class="parameter_name"><p>message</p></td>
-<td class="parameter_description"><p>a <a href="/usr/share/gtk-doc/html/gstreamer-1.0GstMessage.html#GstMessage-struct"><span class="type">GstMessage</span></a></p></td>
-<td class="parameter_annotations"> </td>
-</tr></tbody>
-</table></div>
-</div>
-<div class="refsect3">
-<a name="gst-message-parse-mpegts-section.returns"></a><h4>Returns</h4>
-<p> the contained <a class="link" href="gst-plugins-bad-libs-Base-MPEG-TS-sections.html#GstMpegtsSection"><span class="type">GstMpegtsSection</span></a>, or <a href="/usr/share/gtk-doc/html/glibglib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a>. </p>
-<p><span class="annotation">[<acronym title="Free data after the code is done."><span class="acronym">transfer full</span></acronym>]</span></p>
-</div>
-</div>
-<hr>
-<div class="refsect2">
-<a name="gst-mpegts-section-send-event"></a><h3>gst_mpegts_section_send_event ()</h3>
-<pre class="programlisting"><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
-gst_mpegts_section_send_event (<em class="parameter"><code><a class="link" href="gst-plugins-bad-libs-Base-MPEG-TS-sections.html#GstMpegtsSection"><span class="type">GstMpegtsSection</span></a> *section</code></em>,
- <em class="parameter"><code><a href="/usr/share/gtk-doc/html/gstreamer-1.0GstElement.html#GstElement-struct"><span class="type">GstElement</span></a> *element</code></em>);</pre>
-<p>Creates a custom <a href="/usr/share/gtk-doc/html/gstreamer-1.0GstEvent.html#GstEvent-struct"><span class="type">GstEvent</span></a> with a <em class="parameter"><code>GstMpegtsSection</code></em>
-.
-The <a href="/usr/share/gtk-doc/html/gstreamer-1.0GstEvent.html#GstEvent-struct"><span class="type">GstEvent</span></a> is sent to the <em class="parameter"><code>element</code></em>
- <a href="/usr/share/gtk-doc/html/gstreamer-1.0GstElement.html#GstElement-struct"><span class="type">GstElement</span></a>.</p>
-<div class="refsect3">
-<a name="gst-mpegts-section-send-event.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="parameter_name"><p>element</p></td>
-<td class="parameter_description"><p> The <a href="/usr/share/gtk-doc/html/gstreamer-1.0GstElement.html#GstElement-struct"><span class="type">GstElement</span></a> to send to section event to. </p></td>
-<td class="parameter_annotations"><span class="annotation">[<acronym title="Don't free data after the code is done."><span class="acronym">transfer none</span></acronym>]</span></td>
-</tr>
-<tr>
-<td class="parameter_name"><p>section</p></td>
-<td class="parameter_description"><p> The <a class="link" href="gst-plugins-bad-libs-Base-MPEG-TS-sections.html#GstMpegtsSection"><span class="type">GstMpegtsSection</span></a> to put in the event. </p></td>
-<td class="parameter_annotations"><span class="annotation">[<acronym title="Don't free data after the code is done."><span class="acronym">transfer none</span></acronym>]</span></td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<div class="refsect3">
-<a name="gst-mpegts-section-send-event.returns"></a><h4>Returns</h4>
-<p> <a href="/usr/share/gtk-doc/html/glibglib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if the event is sent</p>
-</div>
-</div>
-<hr>
-<div class="refsect2">
-<a name="gst-event-parse-mpegts-section"></a><h3>gst_event_parse_mpegts_section ()</h3>
-<pre class="programlisting"><a class="link" href="gst-plugins-bad-libs-Base-MPEG-TS-sections.html#GstMpegtsSection"><span class="returnvalue">GstMpegtsSection</span></a> *
-gst_event_parse_mpegts_section (<em class="parameter"><code><a href="/usr/share/gtk-doc/html/gstreamer-1.0GstEvent.html#GstEvent-struct"><span class="type">GstEvent</span></a> *event</code></em>);</pre>
-<p>Extracts the <a class="link" href="gst-plugins-bad-libs-Base-MPEG-TS-sections.html#GstMpegtsSection"><span class="type">GstMpegtsSection</span></a> contained in the <em class="parameter"><code>event</code></em>
- <a href="/usr/share/gtk-doc/html/gstreamer-1.0GstEvent.html#GstEvent-struct"><span class="type">GstEvent</span></a></p>
-<div class="refsect3">
-<a name="gst-event-parse-mpegts-section.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody><tr>
-<td class="parameter_name"><p>event</p></td>
-<td class="parameter_description"><p> <a href="/usr/share/gtk-doc/html/gstreamer-1.0GstEvent.html#GstEvent-struct"><span class="type">GstEvent</span></a> containing a <a class="link" href="gst-plugins-bad-libs-Base-MPEG-TS-sections.html#GstMpegtsSection"><span class="type">GstMpegtsSection</span></a>. </p></td>
-<td class="parameter_annotations"><span class="annotation">[<acronym title="Don't free data after the code is done."><span class="acronym">transfer none</span></acronym>]</span></td>
-</tr></tbody>
-</table></div>
-</div>
-<div class="refsect3">
-<a name="gst-event-parse-mpegts-section.returns"></a><h4>Returns</h4>
-<p> The extracted <a class="link" href="gst-plugins-bad-libs-Base-MPEG-TS-sections.html#GstMpegtsSection"><span class="type">GstMpegtsSection</span></a>. </p>
-<p><span class="annotation">[<acronym title="Free data after the code is done."><span class="acronym">transfer full</span></acronym>]</span></p>
-</div>
-</div>
-<hr>
-<div class="refsect2">
-<a name="gst-mpegts-section-packetize"></a><h3>gst_mpegts_section_packetize ()</h3>
-<pre class="programlisting"><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint8"><span class="returnvalue">guint8</span></a> *
-gst_mpegts_section_packetize (<em class="parameter"><code><a class="link" href="gst-plugins-bad-libs-Base-MPEG-TS-sections.html#GstMpegtsSection"><span class="type">GstMpegtsSection</span></a> *section</code></em>,
- <em class="parameter"><code><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gsize"><span class="type">gsize</span></a> *output_size</code></em>);</pre>
-<p>If the data in <em class="parameter"><code>section</code></em>
- has already been packetized, the data pointer is returned
-immediately. Otherwise, the data field is allocated and populated.</p>
-<div class="refsect3">
-<a name="gst-mpegts-section-packetize.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="parameter_name"><p>section</p></td>
-<td class="parameter_description"><p> the <a class="link" href="gst-plugins-bad-libs-Base-MPEG-TS-sections.html#GstMpegtsSection"><span class="type">GstMpegtsSection</span></a> that holds the data. </p></td>
-<td class="parameter_annotations"><span class="annotation">[<acronym title="Don't free data after the code is done."><span class="acronym">transfer none</span></acronym>]</span></td>
-</tr>
-<tr>
-<td class="parameter_name"><p>output_size</p></td>
-<td class="parameter_description"><p> <a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gsize"><span class="type">gsize</span></a> to hold the size of the data. </p></td>
-<td class="parameter_annotations"><span class="annotation">[<acronym title="Parameter for returning results. Default is transfer full."><span class="acronym">out</span></acronym>]</span></td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<div class="refsect3">
-<a name="gst-mpegts-section-packetize.returns"></a><h4>Returns</h4>
-<p> pointer to section data, or <a href="/usr/share/gtk-doc/html/glibglib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a> on fail. </p>
-<p><span class="annotation">[<acronym title="Don't free data after the code is done."><span class="acronym">transfer none</span></acronym>]</span></p>
-</div>
-</div>
-<hr>
-<div class="refsect2">
-<a name="gst-mpegts-section-new"></a><h3>gst_mpegts_section_new ()</h3>
-<pre class="programlisting"><a class="link" href="gst-plugins-bad-libs-Base-MPEG-TS-sections.html#GstMpegtsSection"><span class="returnvalue">GstMpegtsSection</span></a> *
-gst_mpegts_section_new (<em class="parameter"><code><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint16"><span class="type">guint16</span></a> pid</code></em>,
- <em class="parameter"><code><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint8"><span class="type">guint8</span></a> *data</code></em>,
- <em class="parameter"><code><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gsize"><span class="type">gsize</span></a> data_size</code></em>);</pre>
-<p>Creates a new <a class="link" href="gst-plugins-bad-libs-Base-MPEG-TS-sections.html#GstMpegtsSection"><span class="type">GstMpegtsSection</span></a> from the provided <em class="parameter"><code>data</code></em>
-.</p>
-<p>Note: Ensuring <em class="parameter"><code>data</code></em>
- is big enough to contain the full section is the
-responsibility of the caller. If it is not big enough, <a href="/usr/share/gtk-doc/html/glibglib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a> will be
-returned.</p>
-<p>Note: it is the responsibility of the caller to ensure <em class="parameter"><code>data</code></em>
- does point
-to the beginning of the section.</p>
-<div class="refsect3">
-<a name="gst-mpegts-section-new.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="parameter_name"><p>pid</p></td>
-<td class="parameter_description"><p>the PID to which this section belongs</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>data</p></td>
-<td class="parameter_description"><p> a pointer to the beginning of the section (i.e. the first byte
-should contain the table_id field). </p></td>
-<td class="parameter_annotations"><span class="annotation">[<acronym title="Free data after the code is done."><span class="acronym">transfer full</span></acronym>]</span></td>
-</tr>
-<tr>
-<td class="parameter_name"><p>data_size</p></td>
-<td class="parameter_description"><p>size of the <em class="parameter"><code>data</code></em>
-argument.</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<div class="refsect3">
-<a name="gst-mpegts-section-new.returns"></a><h4>Returns</h4>
-<p> A new <a class="link" href="gst-plugins-bad-libs-Base-MPEG-TS-sections.html#GstMpegtsSection"><span class="type">GstMpegtsSection</span></a> if the data was valid,
-else <a href="/usr/share/gtk-doc/html/glibglib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a>. </p>
-<p><span class="annotation">[<acronym title="Free data after the code is done."><span class="acronym">transfer full</span></acronym>]</span></p>
-</div>
-</div>
-<hr>
-<div class="refsect2">
-<a name="gst-mpegts-section-ref"></a><h3>gst_mpegts_section_ref()</h3>
-<pre class="programlisting">#define gst_mpegts_section_ref(section) ((GstMpegtsSection*) gst_mini_object_ref (GST_MINI_OBJECT_CAST (section)))
-</pre>
-</div>
-<hr>
-<div class="refsect2">
-<a name="gst-mpegts-section-unref"></a><h3>gst_mpegts_section_unref()</h3>
-<pre class="programlisting">#define gst_mpegts_section_unref(section) (gst_mini_object_unref (GST_MINI_OBJECT_CAST (section)))
-</pre>
-</div>
-<hr>
-<div class="refsect2">
-<a name="gst-mpegts-section-get-pat"></a><h3>gst_mpegts_section_get_pat ()</h3>
-<pre class="programlisting"><a href="/usr/share/gtk-doc/html/glibglib-Pointer-Arrays.html#GPtrArray"><span class="returnvalue">GPtrArray</span></a> *
-gst_mpegts_section_get_pat (<em class="parameter"><code><a class="link" href="gst-plugins-bad-libs-Base-MPEG-TS-sections.html#GstMpegtsSection"><span class="type">GstMpegtsSection</span></a> *section</code></em>);</pre>
-<p>Parses a Program Association Table (ITU H.222.0, ISO/IEC 13818-1).</p>
-<p>Returns the array of <a class="link" href="gst-plugins-bad-libs-Base-MPEG-TS-sections.html#GstMpegtsPatProgram" title="struct GstMpegtsPatProgram"><span class="type">GstMpegtsPatProgram</span></a> contained in the section.</p>
-<p>Note: The PAT "transport_id" field corresponds to the "subtable_extension"
-field of the provided <em class="parameter"><code>section</code></em>
-.</p>
-<div class="refsect3">
-<a name="gst-mpegts-section-get-pat.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody><tr>
-<td class="parameter_name"><p>section</p></td>
-<td class="parameter_description"><p>a <a class="link" href="gst-plugins-bad-libs-Base-MPEG-TS-sections.html#GstMpegtsSection"><span class="type">GstMpegtsSection</span></a> of type <a class="link" href="gst-plugins-bad-libs-Base-MPEG-TS-sections.html#GST-MPEGTS-SECTION-PAT:CAPS"><code class="literal">GST_MPEGTS_SECTION_PAT</code></a></p></td>
-<td class="parameter_annotations"> </td>
-</tr></tbody>
-</table></div>
-</div>
-<div class="refsect3">
-<a name="gst-mpegts-section-get-pat.returns"></a><h4>Returns</h4>
-<p> The
-<a class="link" href="gst-plugins-bad-libs-Base-MPEG-TS-sections.html#GstMpegtsPatProgram" title="struct GstMpegtsPatProgram"><span class="type">GstMpegtsPatProgram</span></a> contained in the section, or <a href="/usr/share/gtk-doc/html/glibglib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a> if an error
-happened. Release with <a href="/usr/share/gtk-doc/html/glibglib-Pointer-Arrays.html#g-ptr-array-unref"><span class="type">g_ptr_array_unref</span></a> when done. </p>
-<p><span class="annotation">[<acronym title="Free data container after the code is done."><span class="acronym">transfer container</span></acronym>][<acronym title="Generics and defining elements of containers and arrays."><span class="acronym">element-type</span></acronym> GstMpegtsPatProgram]</span></p>
-</div>
-</div>
-<hr>
-<div class="refsect2">
-<a name="gst-mpegts-pat-new"></a><h3>gst_mpegts_pat_new ()</h3>
-<pre class="programlisting"><a href="/usr/share/gtk-doc/html/glibglib-Pointer-Arrays.html#GPtrArray"><span class="returnvalue">GPtrArray</span></a> *
-gst_mpegts_pat_new (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
-<p>Allocates a new <a href="/usr/share/gtk-doc/html/glibglib-Pointer-Arrays.html#GPtrArray"><span class="type">GPtrArray</span></a> for <a class="link" href="gst-plugins-bad-libs-Base-MPEG-TS-sections.html#GstMpegtsPatProgram" title="struct GstMpegtsPatProgram"><span class="type">GstMpegtsPatProgram</span></a></p>
-<div class="refsect3">
-<a name="gst-mpegts-pat-new.returns"></a><h4>Returns</h4>
-<p> A newly allocated <a href="/usr/share/gtk-doc/html/glibglib-Pointer-Arrays.html#GPtrArray"><span class="type">GPtrArray</span></a>. </p>
-<p><span class="annotation">[<acronym title="Free data after the code is done."><span class="acronym">transfer full</span></acronym>][<acronym title="Generics and defining elements of containers and arrays."><span class="acronym">element-type</span></acronym> GstMpegtsPatProgram]</span></p>
-</div>
-</div>
-<hr>
-<div class="refsect2">
-<a name="gst-mpegts-pat-program-new"></a><h3>gst_mpegts_pat_program_new ()</h3>
-<pre class="programlisting"><a class="link" href="gst-plugins-bad-libs-Base-MPEG-TS-sections.html#GstMpegtsPatProgram" title="struct GstMpegtsPatProgram"><span class="returnvalue">GstMpegtsPatProgram</span></a> *
-gst_mpegts_pat_program_new (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
-<p>Allocates a new <a class="link" href="gst-plugins-bad-libs-Base-MPEG-TS-sections.html#GstMpegtsPatProgram" title="struct GstMpegtsPatProgram"><span class="type">GstMpegtsPatProgram</span></a>.</p>
-<div class="refsect3">
-<a name="gst-mpegts-pat-program-new.returns"></a><h4>Returns</h4>
-<p> A newly allocated <a class="link" href="gst-plugins-bad-libs-Base-MPEG-TS-sections.html#GstMpegtsPatProgram" title="struct GstMpegtsPatProgram"><span class="type">GstMpegtsPatProgram</span></a>. </p>
-<p><span class="annotation">[<acronym title="Free data after the code is done."><span class="acronym">transfer full</span></acronym>]</span></p>
-</div>
-</div>
-<hr>
-<div class="refsect2">
-<a name="gst-mpegts-section-from-pat"></a><h3>gst_mpegts_section_from_pat ()</h3>
-<pre class="programlisting"><a class="link" href="gst-plugins-bad-libs-Base-MPEG-TS-sections.html#GstMpegtsSection"><span class="returnvalue">GstMpegtsSection</span></a> *
-gst_mpegts_section_from_pat (<em class="parameter"><code><a href="/usr/share/gtk-doc/html/glibglib-Pointer-Arrays.html#GPtrArray"><span class="type">GPtrArray</span></a> *programs</code></em>,
- <em class="parameter"><code><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint16"><span class="type">guint16</span></a> ts_id</code></em>);</pre>
-<p>Creates a PAT <a class="link" href="gst-plugins-bad-libs-Base-MPEG-TS-sections.html#GstMpegtsSection"><span class="type">GstMpegtsSection</span></a> from the <em class="parameter"><code>programs</code></em>
- array of <a href="gst-plugins-bad-libs-Base-MPEG-TS-sections.html#GstMpegtsPatProgram"><span class="type">GstMpegtsPatPrograms</span></a></p>
-<div class="refsect3">
-<a name="gst-mpegts-section-from-pat.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="parameter_name"><p>programs</p></td>
-<td class="parameter_description"><p> an array of <a class="link" href="gst-plugins-bad-libs-Base-MPEG-TS-sections.html#GstMpegtsPatProgram" title="struct GstMpegtsPatProgram"><span class="type">GstMpegtsPatProgram</span></a>. </p></td>
-<td class="parameter_annotations"><span class="annotation">[<acronym title="Free data after the code is done."><span class="acronym">transfer full</span></acronym>][<acronym title="Generics and defining elements of containers and arrays."><span class="acronym">element-type</span></acronym> GstMpegtsPatProgram]</span></td>
-</tr>
-<tr>
-<td class="parameter_name"><p>ts_id</p></td>
-<td class="parameter_description"><p>Transport stream ID of the PAT</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<div class="refsect3">
-<a name="gst-mpegts-section-from-pat.returns"></a><h4>Returns</h4>
-<p> a <a class="link" href="gst-plugins-bad-libs-Base-MPEG-TS-sections.html#GstMpegtsSection"><span class="type">GstMpegtsSection</span></a>. </p>
-<p><span class="annotation">[<acronym title="Free data after the code is done."><span class="acronym">transfer full</span></acronym>]</span></p>
-</div>
-</div>
-<hr>
-<div class="refsect2">
-<a name="gst-mpegts-section-get-pmt"></a><h3>gst_mpegts_section_get_pmt ()</h3>
-<pre class="programlisting">const <a class="link" href="gst-plugins-bad-libs-Base-MPEG-TS-sections.html#GstMpegtsPMT" title="struct GstMpegtsPMT"><span class="returnvalue">GstMpegtsPMT</span></a> *
-gst_mpegts_section_get_pmt (<em class="parameter"><code><a class="link" href="gst-plugins-bad-libs-Base-MPEG-TS-sections.html#GstMpegtsSection"><span class="type">GstMpegtsSection</span></a> *section</code></em>);</pre>
-<p>Returns the <a class="link" href="gst-plugins-bad-libs-Base-MPEG-TS-sections.html#GstMpegtsPMT" title="struct GstMpegtsPMT"><span class="type">GstMpegtsPMT</span></a> contained in the <em class="parameter"><code>section</code></em>
-.</p>
-<div class="refsect3">
-<a name="gst-mpegts-section-get-pmt.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody><tr>
-<td class="parameter_name"><p>section</p></td>
-<td class="parameter_description"><p>a <a class="link" href="gst-plugins-bad-libs-Base-MPEG-TS-sections.html#GstMpegtsSection"><span class="type">GstMpegtsSection</span></a> of type <a class="link" href="gst-plugins-bad-libs-Base-MPEG-TS-sections.html#GST-MPEGTS-SECTION-PMT:CAPS"><code class="literal">GST_MPEGTS_SECTION_PMT</code></a></p></td>
-<td class="parameter_annotations"> </td>
-</tr></tbody>
-</table></div>
-</div>
-<div class="refsect3">
-<a name="gst-mpegts-section-get-pmt.returns"></a><h4>Returns</h4>
-<p> The <a class="link" href="gst-plugins-bad-libs-Base-MPEG-TS-sections.html#GstMpegtsPMT" title="struct GstMpegtsPMT"><span class="type">GstMpegtsPMT</span></a> contained in the section, or <a href="/usr/share/gtk-doc/html/glibglib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a> if an error
-happened.</p>
-</div>
-</div>
-<hr>
-<div class="refsect2">
-<a name="gst-mpegts-pmt-new"></a><h3>gst_mpegts_pmt_new ()</h3>
-<pre class="programlisting"><a class="link" href="gst-plugins-bad-libs-Base-MPEG-TS-sections.html#GstMpegtsPMT" title="struct GstMpegtsPMT"><span class="returnvalue">GstMpegtsPMT</span></a> *
-gst_mpegts_pmt_new (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
-<p>Allocates and initializes a new <a class="link" href="gst-plugins-bad-libs-Base-MPEG-TS-sections.html#GstMpegtsPMT" title="struct GstMpegtsPMT"><span class="type">GstMpegtsPMT</span></a>.</p>
-<div class="refsect3">
-<a name="gst-mpegts-pmt-new.returns"></a><h4>Returns</h4>
-<p> <a class="link" href="gst-plugins-bad-libs-Base-MPEG-TS-sections.html#GstMpegtsPMT" title="struct GstMpegtsPMT"><span class="type">GstMpegtsPMT</span></a>. </p>
-<p><span class="annotation">[<acronym title="Free data after the code is done."><span class="acronym">transfer full</span></acronym>]</span></p>
-</div>
-</div>
-<hr>
-<div class="refsect2">
-<a name="gst-mpegts-pmt-stream-new"></a><h3>gst_mpegts_pmt_stream_new ()</h3>
-<pre class="programlisting"><a class="link" href="gst-plugins-bad-libs-Base-MPEG-TS-sections.html#GstMpegtsPMTStream" title="struct GstMpegtsPMTStream"><span class="returnvalue">GstMpegtsPMTStream</span></a> *
-gst_mpegts_pmt_stream_new (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
-<p>Allocates and initializes a new <a class="link" href="gst-plugins-bad-libs-Base-MPEG-TS-sections.html#GstMpegtsPMTStream" title="struct GstMpegtsPMTStream"><span class="type">GstMpegtsPMTStream</span></a>.</p>
-<div class="refsect3">
-<a name="gst-mpegts-pmt-stream-new.returns"></a><h4>Returns</h4>
-<p> <a class="link" href="gst-plugins-bad-libs-Base-MPEG-TS-sections.html#GstMpegtsPMTStream" title="struct GstMpegtsPMTStream"><span class="type">GstMpegtsPMTStream</span></a>. </p>
-<p><span class="annotation">[<acronym title="Free data after the code is done."><span class="acronym">transfer full</span></acronym>]</span></p>
-</div>
-</div>
-<hr>
-<div class="refsect2">
-<a name="gst-mpegts-section-from-pmt"></a><h3>gst_mpegts_section_from_pmt ()</h3>
-<pre class="programlisting"><a class="link" href="gst-plugins-bad-libs-Base-MPEG-TS-sections.html#GstMpegtsSection"><span class="returnvalue">GstMpegtsSection</span></a> *
-gst_mpegts_section_from_pmt (<em class="parameter"><code><a class="link" href="gst-plugins-bad-libs-Base-MPEG-TS-sections.html#GstMpegtsPMT" title="struct GstMpegtsPMT"><span class="type">GstMpegtsPMT</span></a> *pmt</code></em>,
- <em class="parameter"><code><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint16"><span class="type">guint16</span></a> pid</code></em>);</pre>
-<p>Creates a <a class="link" href="gst-plugins-bad-libs-Base-MPEG-TS-sections.html#GstMpegtsSection"><span class="type">GstMpegtsSection</span></a> from <em class="parameter"><code>pmt</code></em>
- that is bound to <em class="parameter"><code>pid</code></em>
-</p>
-<div class="refsect3">
-<a name="gst-mpegts-section-from-pmt.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="parameter_name"><p>pmt</p></td>
-<td class="parameter_description"><p> a <a class="link" href="gst-plugins-bad-libs-Base-MPEG-TS-sections.html#GstMpegtsPMT" title="struct GstMpegtsPMT"><span class="type">GstMpegtsPMT</span></a> to create a <a class="link" href="gst-plugins-bad-libs-Base-MPEG-TS-sections.html#GstMpegtsSection"><span class="type">GstMpegtsSection</span></a> from. </p></td>
-<td class="parameter_annotations"><span class="annotation">[<acronym title="Free data after the code is done."><span class="acronym">transfer full</span></acronym>]</span></td>
-</tr>
-<tr>
-<td class="parameter_name"><p>pid</p></td>
-<td class="parameter_description"><p>The PID that the <a class="link" href="gst-plugins-bad-libs-Base-MPEG-TS-sections.html#GstMpegtsPMT" title="struct GstMpegtsPMT"><span class="type">GstMpegtsPMT</span></a> belongs to</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<div class="refsect3">
-<a name="gst-mpegts-section-from-pmt.returns"></a><h4>Returns</h4>
-<p> <a class="link" href="gst-plugins-bad-libs-Base-MPEG-TS-sections.html#GstMpegtsSection"><span class="type">GstMpegtsSection</span></a>. </p>
-<p><span class="annotation">[<acronym title="Free data after the code is done."><span class="acronym">transfer full</span></acronym>]</span></p>
-</div>
-</div>
-<hr>
-<div class="refsect2">
-<a name="gst-mpegts-section-get-tsdt"></a><h3>gst_mpegts_section_get_tsdt ()</h3>
-<pre class="programlisting"><a href="/usr/share/gtk-doc/html/glibglib-Pointer-Arrays.html#GPtrArray"><span class="returnvalue">GPtrArray</span></a> *
-gst_mpegts_section_get_tsdt (<em class="parameter"><code><a class="link" href="gst-plugins-bad-libs-Base-MPEG-TS-sections.html#GstMpegtsSection"><span class="type">GstMpegtsSection</span></a> *section</code></em>);</pre>
-<p>Returns the array of <a class="link" href="gst-plugins-bad-libs-Base-MPEG-TS-descriptors.html#GstMpegtsDescriptor"><span class="type">GstMpegtsDescriptor</span></a> contained in the section</p>
-<div class="refsect3">
-<a name="gst-mpegts-section-get-tsdt.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody><tr>
-<td class="parameter_name"><p>section</p></td>
-<td class="parameter_description"><p>a <a class="link" href="gst-plugins-bad-libs-Base-MPEG-TS-sections.html#GstMpegtsSection"><span class="type">GstMpegtsSection</span></a> of type <a class="link" href="gst-plugins-bad-libs-Base-MPEG-TS-sections.html#GST-MPEGTS-SECTION-TSDT:CAPS"><code class="literal">GST_MPEGTS_SECTION_TSDT</code></a></p></td>
-<td class="parameter_annotations"> </td>
-</tr></tbody>
-</table></div>
-</div>
-<div class="refsect3">
-<a name="gst-mpegts-section-get-tsdt.returns"></a><h4>Returns</h4>
-<p> The
-<a class="link" href="gst-plugins-bad-libs-Base-MPEG-TS-descriptors.html#GstMpegtsDescriptor"><span class="type">GstMpegtsDescriptor</span></a> contained in the section, or <a href="/usr/share/gtk-doc/html/glibglib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a> if an error
-happened. Release with <a href="/usr/share/gtk-doc/html/glibglib-Arrays.html#g-array-unref"><span class="type">g_array_unref</span></a> when done. </p>
-<p><span class="annotation">[<acronym title="Free data container after the code is done."><span class="acronym">transfer container</span></acronym>][<acronym title="Generics and defining elements of containers and arrays."><span class="acronym">element-type</span></acronym> GstMpegtsDescriptor]</span></p>
-</div>
-</div>
-<hr>
-<div class="refsect2">
-<a name="gst-mpegts-section-get-cat"></a><h3>gst_mpegts_section_get_cat ()</h3>
-<pre class="programlisting"><a href="/usr/share/gtk-doc/html/glibglib-Pointer-Arrays.html#GPtrArray"><span class="returnvalue">GPtrArray</span></a> *
-gst_mpegts_section_get_cat (<em class="parameter"><code><a class="link" href="gst-plugins-bad-libs-Base-MPEG-TS-sections.html#GstMpegtsSection"><span class="type">GstMpegtsSection</span></a> *section</code></em>);</pre>
-<p>Returns the array of <a class="link" href="gst-plugins-bad-libs-Base-MPEG-TS-descriptors.html#GstMpegtsDescriptor"><span class="type">GstMpegtsDescriptor</span></a> contained in the Conditional
-Access Table.</p>
-<div class="refsect3">
-<a name="gst-mpegts-section-get-cat.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody><tr>
-<td class="parameter_name"><p>section</p></td>
-<td class="parameter_description"><p>a <a class="link" href="gst-plugins-bad-libs-Base-MPEG-TS-sections.html#GstMpegtsSection"><span class="type">GstMpegtsSection</span></a> of type <a class="link" href="gst-plugins-bad-libs-Base-MPEG-TS-sections.html#GST-MPEGTS-SECTION-CAT:CAPS"><code class="literal">GST_MPEGTS_SECTION_CAT</code></a></p></td>
-<td class="parameter_annotations"> </td>
-</tr></tbody>
-</table></div>
-</div>
-<div class="refsect3">
-<a name="gst-mpegts-section-get-cat.returns"></a><h4>Returns</h4>
-<p> The
-<a class="link" href="gst-plugins-bad-libs-Base-MPEG-TS-descriptors.html#GstMpegtsDescriptor"><span class="type">GstMpegtsDescriptor</span></a> contained in the section, or <a href="/usr/share/gtk-doc/html/glibglib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a> if an error
-happened. Release with <a href="/usr/share/gtk-doc/html/glibglib-Arrays.html#g-array-unref"><span class="type">g_array_unref</span></a> when done. </p>
-<p><span class="annotation">[<acronym title="Free data container after the code is done."><span class="acronym">transfer container</span></acronym>][<acronym title="Generics and defining elements of containers and arrays."><span class="acronym">element-type</span></acronym> GstMpegtsDescriptor]</span></p>
-</div>
-</div>
-</div>
-<div class="refsect1">
-<a name="gst-plugins-bad-libs-Base-MPEG-TS-sections.other_details"></a><h2>Types and Values</h2>
-<div class="refsect2">
-<a name="GstMpegtsSection-struct"></a><h3>struct GstMpegtsSection</h3>
-<pre class="programlisting">struct GstMpegtsSection {
- GstMpegtsSectionType section_type;
-
- guint16 pid;
- guint8 table_id;
-
- guint16 subtable_extension;
- guint8 version_number;
-
- gboolean current_next_indicator;
-
- guint8 section_number;
- guint8 last_section_number;
-
- guint32 crc;
-};
-</pre>
-<p>Mpeg-TS Section Information (SI) (ISO/IEC 13818-1)</p>
-<div class="refsect3">
-<a name="GstMpegtsSection.members"></a><h4>Members</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="300px" class="struct_members_name">
-<col class="struct_members_description">
-<col width="200px" class="struct_members_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="struct_member_name"><p><a class="link" href="gst-plugins-bad-libs-Base-MPEG-TS-sections.html#GstMpegtsSectionType" title="enum GstMpegtsSectionType"><span class="type">GstMpegtsSectionType</span></a> <em class="structfield"><code><a name="GstMpegtsSection-struct.section-type"></a>section_type</code></em>;</p></td>
-<td class="struct_member_description"><p>The type of section</p></td>
-<td class="struct_member_annotations"> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint16"><span class="type">guint16</span></a> <em class="structfield"><code><a name="GstMpegtsSection-struct.pid"></a>pid</code></em>;</p></td>
-<td class="struct_member_description"><p>The pid on which this section was found</p></td>
-<td class="struct_member_annotations"> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint8"><span class="type">guint8</span></a> <em class="structfield"><code><a name="GstMpegtsSection-struct.table-id"></a>table_id</code></em>;</p></td>
-<td class="struct_member_description"><p>The table id of this section</p></td>
-<td class="struct_member_annotations"> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint16"><span class="type">guint16</span></a> <em class="structfield"><code><a name="GstMpegtsSection-struct.subtable-extension"></a>subtable_extension</code></em>;</p></td>
-<td class="struct_member_description"><p>This meaning differs per section. See the documentation
-of the parsed section type for the meaning of this field</p></td>
-<td class="struct_member_annotations"> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint8"><span class="type">guint8</span></a> <em class="structfield"><code><a name="GstMpegtsSection-struct.version-number"></a>version_number</code></em>;</p></td>
-<td class="struct_member_description"><p>Version of the section.</p></td>
-<td class="struct_member_annotations"> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a> <em class="structfield"><code><a name="GstMpegtsSection-struct.current-next-indicator"></a>current_next_indicator</code></em>;</p></td>
-<td class="struct_member_description"><p>Applies to current/next stream or not</p></td>
-<td class="struct_member_annotations"> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint8"><span class="type">guint8</span></a> <em class="structfield"><code><a name="GstMpegtsSection-struct.section-number"></a>section_number</code></em>;</p></td>
-<td class="struct_member_description"><p>Number of the section (if multiple)</p></td>
-<td class="struct_member_annotations"> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint8"><span class="type">guint8</span></a> <em class="structfield"><code><a name="GstMpegtsSection-struct.last-section-number"></a>last_section_number</code></em>;</p></td>
-<td class="struct_member_description"><p>Number of the last expected section (if multiple)</p></td>
-<td class="struct_member_annotations"> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint32"><span class="type">guint32</span></a> <em class="structfield"><code><a name="GstMpegtsSection-struct.crc"></a>crc</code></em>;</p></td>
-<td class="struct_member_description"><p>CRC</p></td>
-<td class="struct_member_annotations"> </td>
-</tr>
-</tbody>
-</table></div>
-</div>
-</div>
-<hr>
-<div class="refsect2">
-<a name="GstMpegtsSectionTableID"></a><h3>enum GstMpegtsSectionTableID</h3>
-<p>Values for a <a class="link" href="gst-plugins-bad-libs-Base-MPEG-TS-sections.html#GstMpegtsSection"><span class="type">GstMpegtsSection</span></a> table_id</p>
-<p>These are the registered ITU H.222.0 | ISO/IEC 13818-1 table_id variants.</p>
-<p>see also <a class="link" href="gst-plugins-bad-libs-ATSC-variants-of-MPEG-TS-sections.html#GstMpegtsSectionATSCTableID" title="enum GstMpegtsSectionATSCTableID"><span class="type">GstMpegtsSectionATSCTableID</span></a>, <a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-sections.html#GstMpegtsSectionDVBTableID" title="enum GstMpegtsSectionDVBTableID"><span class="type">GstMpegtsSectionDVBTableID</span></a>, and
-<span class="type">GstMpegtsSectionSCTETableID</span></p>
-<div class="refsect3">
-<a name="GstMpegtsSectionTableID.members"></a><h4>Members</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="300px" class="enum_members_name">
-<col class="enum_members_description">
-<col width="200px" class="enum_members_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="enum_member_name"><p><a name="GST-MTS-TABLE-ID-PROGRAM-ASSOCIATION:CAPS"></a>GST_MTS_TABLE_ID_PROGRAM_ASSOCIATION</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="enum_member_name"><p><a name="GST-MTS-TABLE-ID-CONDITIONAL-ACCESS:CAPS"></a>GST_MTS_TABLE_ID_CONDITIONAL_ACCESS</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="enum_member_name"><p><a name="GST-MTS-TABLE-ID-TS-PROGRAM-MAP:CAPS"></a>GST_MTS_TABLE_ID_TS_PROGRAM_MAP</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="enum_member_name"><p><a name="GST-MTS-TABLE-ID-TS-DESCRIPTION:CAPS"></a>GST_MTS_TABLE_ID_TS_DESCRIPTION</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="enum_member_name"><p><a name="GST-MTS-TABLE-ID-14496-SCENE-DESCRIPTION:CAPS"></a>GST_MTS_TABLE_ID_14496_SCENE_DESCRIPTION</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="enum_member_name"><p><a name="GST-MTS-TABLE-ID-14496-OBJET-DESCRIPTOR:CAPS"></a>GST_MTS_TABLE_ID_14496_OBJET_DESCRIPTOR</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="enum_member_name"><p><a name="GST-MTS-TABLE-ID-METADATA:CAPS"></a>GST_MTS_TABLE_ID_METADATA</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="enum_member_name"><p><a name="GST-MTS-TABLE-ID-IPMP-CONTROL-INFORMATION:CAPS"></a>GST_MTS_TABLE_ID_IPMP_CONTROL_INFORMATION</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="enum_member_name"><p><a name="GST-MTS-TABLE-ID-DSM-CC-MULTIPROTO-ENCAPSULATED-DATA:CAPS"></a>GST_MTS_TABLE_ID_DSM_CC_MULTIPROTO_ENCAPSULATED_DATA</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="enum_member_name"><p><a name="GST-MTS-TABLE-ID-DSM-CC-U-N-MESSAGES:CAPS"></a>GST_MTS_TABLE_ID_DSM_CC_U_N_MESSAGES</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="enum_member_name"><p><a name="GST-MTS-TABLE-ID-DSM-CC-DOWNLOAD-DATA-MESSAGES:CAPS"></a>GST_MTS_TABLE_ID_DSM_CC_DOWNLOAD_DATA_MESSAGES</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="enum_member_name"><p><a name="GST-MTS-TABLE-ID-DSM-CC-STREAM-DESCRIPTORS:CAPS"></a>GST_MTS_TABLE_ID_DSM_CC_STREAM_DESCRIPTORS</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="enum_member_name"><p><a name="GST-MTS-TABLE-ID-DSM-CC-PRIVATE-DATA:CAPS"></a>GST_MTS_TABLE_ID_DSM_CC_PRIVATE_DATA</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="enum_member_name"><p><a name="GST-MTS-TABLE-ID-DSM-CC-ADDRESSABLE-SECTIONS:CAPS"></a>GST_MTS_TABLE_ID_DSM_CC_ADDRESSABLE_SECTIONS</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="enum_member_name"><p><a name="GST-MTS-TABLE-ID-UNSET:CAPS"></a>GST_MTS_TABLE_ID_UNSET</p></td>
-<td> </td>
-<td> </td>
-</tr>
-</tbody>
-</table></div>
-</div>
-</div>
-<hr>
-<div class="refsect2">
-<a name="GstMpegtsSectionType"></a><h3>enum GstMpegtsSectionType</h3>
-<p>Types of <a class="link" href="gst-plugins-bad-libs-Base-MPEG-TS-sections.html#GstMpegtsSection"><span class="type">GstMpegtsSection</span></a> that the library handles.</p>
-<div class="refsect3">
-<a name="GstMpegtsSectionType.members"></a><h4>Members</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="300px" class="enum_members_name">
-<col class="enum_members_description">
-<col width="200px" class="enum_members_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="enum_member_name"><p><a name="GST-MPEGTS-SECTION-UNKNOWN:CAPS"></a>GST_MPEGTS_SECTION_UNKNOWN</p></td>
-<td class="enum_member_description">
-<p>Unknown section type</p>
-</td>
-<td class="enum_member_annotations"> </td>
-</tr>
-<tr>
-<td class="enum_member_name"><p><a name="GST-MPEGTS-SECTION-PAT:CAPS"></a>GST_MPEGTS_SECTION_PAT</p></td>
-<td class="enum_member_description">
-<p>Program Association Table (ISO/IEC 13818-1)</p>
-</td>
-<td class="enum_member_annotations"> </td>
-</tr>
-<tr>
-<td class="enum_member_name"><p><a name="GST-MPEGTS-SECTION-PMT:CAPS"></a>GST_MPEGTS_SECTION_PMT</p></td>
-<td class="enum_member_description">
-<p>Program Map Table (ISO/IEC 13818-1)</p>
-</td>
-<td class="enum_member_annotations"> </td>
-</tr>
-<tr>
-<td class="enum_member_name"><p><a name="GST-MPEGTS-SECTION-CAT:CAPS"></a>GST_MPEGTS_SECTION_CAT</p></td>
-<td class="enum_member_description">
-<p>Conditional Access Table (ISO/IEC 13818-1)</p>
-</td>
-<td class="enum_member_annotations"> </td>
-</tr>
-<tr>
-<td class="enum_member_name"><p><a name="GST-MPEGTS-SECTION-TSDT:CAPS"></a>GST_MPEGTS_SECTION_TSDT</p></td>
-<td class="enum_member_description">
-<p>Transport Stream Description Table (ISO/IEC 13818-1)</p>
-</td>
-<td class="enum_member_annotations"> </td>
-</tr>
-<tr>
-<td class="enum_member_name"><p><a name="GST-MPEGTS-SECTION-EIT:CAPS"></a>GST_MPEGTS_SECTION_EIT</p></td>
-<td class="enum_member_description">
-<p>Event Information Table (EN 300 468)</p>
-</td>
-<td class="enum_member_annotations"> </td>
-</tr>
-<tr>
-<td class="enum_member_name"><p><a name="GST-MPEGTS-SECTION-NIT:CAPS"></a>GST_MPEGTS_SECTION_NIT</p></td>
-<td class="enum_member_description">
-<p>Network Information Table (ISO/IEC 13818-1 / EN 300 468)</p>
-</td>
-<td class="enum_member_annotations"> </td>
-</tr>
-<tr>
-<td class="enum_member_name"><p><a name="GST-MPEGTS-SECTION-BAT:CAPS"></a>GST_MPEGTS_SECTION_BAT</p></td>
-<td class="enum_member_description">
-<p>Bouquet Association Table ((EN 300 468)</p>
-</td>
-<td class="enum_member_annotations"> </td>
-</tr>
-<tr>
-<td class="enum_member_name"><p><a name="GST-MPEGTS-SECTION-SDT:CAPS"></a>GST_MPEGTS_SECTION_SDT</p></td>
-<td class="enum_member_description">
-<p>Service Description Table (EN 300 468)</p>
-</td>
-<td class="enum_member_annotations"> </td>
-</tr>
-<tr>
-<td class="enum_member_name"><p><a name="GST-MPEGTS-SECTION-TDT:CAPS"></a>GST_MPEGTS_SECTION_TDT</p></td>
-<td class="enum_member_description">
-<p>Time and Date Table (EN 300 468)</p>
-</td>
-<td class="enum_member_annotations"> </td>
-</tr>
-<tr>
-<td class="enum_member_name"><p><a name="GST-MPEGTS-SECTION-TOT:CAPS"></a>GST_MPEGTS_SECTION_TOT</p></td>
-<td class="enum_member_description">
-<p>Time Offset Table (EN 300 468)</p>
-</td>
-<td class="enum_member_annotations"> </td>
-</tr>
-<tr>
-<td class="enum_member_name"><p><a name="GST-MPEGTS-SECTION-ATSC-TVCT:CAPS"></a>GST_MPEGTS_SECTION_ATSC_TVCT</p></td>
-<td class="enum_member_description">
-<p>ATSC Terrestrial Virtual Channel Table (A65)</p>
-</td>
-<td class="enum_member_annotations"> </td>
-</tr>
-<tr>
-<td class="enum_member_name"><p><a name="GST-MPEGTS-SECTION-ATSC-CVCT:CAPS"></a>GST_MPEGTS_SECTION_ATSC_CVCT</p></td>
-<td class="enum_member_description">
-<p>ATSC Cable Virtual Channel Table (A65)</p>
-</td>
-<td class="enum_member_annotations"> </td>
-</tr>
-<tr>
-<td class="enum_member_name"><p><a name="GST-MPEGTS-SECTION-ATSC-MGT:CAPS"></a>GST_MPEGTS_SECTION_ATSC_MGT</p></td>
-<td class="enum_member_description">
-<p>ATSC Master Guide Table (A65)</p>
-</td>
-<td class="enum_member_annotations"> </td>
-</tr>
-<tr>
-<td class="enum_member_name"><p><a name="GST-MPEGTS-SECTION-ATSC-ETT:CAPS"></a>GST_MPEGTS_SECTION_ATSC_ETT</p></td>
-<td class="enum_member_description">
-<p>ATSC Extended Text Table (A65)</p>
-</td>
-<td class="enum_member_annotations"> </td>
-</tr>
-<tr>
-<td class="enum_member_name"><p><a name="GST-MPEGTS-SECTION-ATSC-EIT:CAPS"></a>GST_MPEGTS_SECTION_ATSC_EIT</p></td>
-<td class="enum_member_description">
-<p>ATSC Event Information Table (A65)</p>
-</td>
-<td class="enum_member_annotations"> </td>
-</tr>
-<tr>
-<td class="enum_member_name"><p><a name="GST-MPEGTS-SECTION-ATSC-STT:CAPS"></a>GST_MPEGTS_SECTION_ATSC_STT</p></td>
-<td class="enum_member_description">
-<p>ATSC System Time Table (A65)</p>
-</td>
-<td class="enum_member_annotations"> </td>
-</tr>
-</tbody>
-</table></div>
-</div>
-</div>
-<hr>
-<div class="refsect2">
-<a name="GstMpegtsPatProgram"></a><h3>struct GstMpegtsPatProgram</h3>
-<pre class="programlisting">struct GstMpegtsPatProgram {
- guint16 program_number;
- guint16 network_or_program_map_PID;
-};
-</pre>
-<p>A program entry from a Program Association Table (ITU H.222.0, ISO/IEC 13818-1).</p>
-<div class="refsect3">
-<a name="GstMpegtsPatProgram.members"></a><h4>Members</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="300px" class="struct_members_name">
-<col class="struct_members_description">
-<col width="200px" class="struct_members_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint16"><span class="type">guint16</span></a> <em class="structfield"><code><a name="GstMpegtsPatProgram.program-number"></a>program_number</code></em>;</p></td>
-<td class="struct_member_description"><p>the program number</p></td>
-<td class="struct_member_annotations"> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint16"><span class="type">guint16</span></a> <em class="structfield"><code><a name="GstMpegtsPatProgram.network-or-program-map-PID"></a>network_or_program_map_PID</code></em>;</p></td>
-<td class="struct_member_description"><p>the network of program map PID</p></td>
-<td class="struct_member_annotations"> </td>
-</tr>
-</tbody>
-</table></div>
-</div>
-</div>
-<hr>
-<div class="refsect2">
-<a name="GstMpegtsPMT"></a><h3>struct GstMpegtsPMT</h3>
-<pre class="programlisting">struct GstMpegtsPMT {
- guint16 pcr_pid;
- guint16 program_number;
-
- GPtrArray *descriptors;
- GPtrArray *streams;
-};
-</pre>
-<p>Program Map Table (ISO/IEC 13818-1).</p>
-<p>The program_number is contained in the subtable_extension field of the
-container <a class="link" href="gst-plugins-bad-libs-Base-MPEG-TS-sections.html#GstMpegtsSection"><span class="type">GstMpegtsSection</span></a>.</p>
-<div class="refsect3">
-<a name="GstMpegtsPMT.members"></a><h4>Members</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="300px" class="struct_members_name">
-<col class="struct_members_description">
-<col width="200px" class="struct_members_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint16"><span class="type">guint16</span></a> <em class="structfield"><code><a name="GstMpegtsPMT.pcr-pid"></a>pcr_pid</code></em>;</p></td>
-<td class="struct_member_description"><p>PID of the stream containing PCR</p></td>
-<td class="struct_member_annotations"> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint16"><span class="type">guint16</span></a> <em class="structfield"><code><a name="GstMpegtsPMT.program-number"></a>program_number</code></em>;</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Pointer-Arrays.html#GPtrArray"><span class="type">GPtrArray</span></a> *<em class="structfield"><code><a name="GstMpegtsPMT.descriptors"></a>descriptors</code></em>;</p></td>
-<td class="struct_member_description"><p> array of <a class="link" href="gst-plugins-bad-libs-Base-MPEG-TS-descriptors.html#GstMpegtsDescriptor"><span class="type">GstMpegtsDescriptor</span></a>. </p></td>
-<td class="struct_member_annotations"><span class="annotation">[<acronym title="Generics and defining elements of containers and arrays."><span class="acronym">element-type</span></acronym> GstMpegtsDescriptor]</span></td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Pointer-Arrays.html#GPtrArray"><span class="type">GPtrArray</span></a> *<em class="structfield"><code><a name="GstMpegtsPMT.streams"></a>streams</code></em>;</p></td>
-<td class="struct_member_description"><p> Array of <a class="link" href="gst-plugins-bad-libs-Base-MPEG-TS-sections.html#GstMpegtsPMTStream" title="struct GstMpegtsPMTStream"><span class="type">GstMpegtsPMTStream</span></a>. </p></td>
-<td class="struct_member_annotations"><span class="annotation">[<acronym title="Generics and defining elements of containers and arrays."><span class="acronym">element-type</span></acronym> GstMpegtsPMTStream]</span></td>
-</tr>
-</tbody>
-</table></div>
-</div>
-</div>
-<hr>
-<div class="refsect2">
-<a name="GstMpegtsPMTStream"></a><h3>struct GstMpegtsPMTStream</h3>
-<pre class="programlisting">struct GstMpegtsPMTStream {
- guint8 stream_type;
- guint16 pid;
-
- GPtrArray *descriptors;
-};
-</pre>
-<p>An individual stream definition.</p>
-<div class="refsect3">
-<a name="GstMpegtsPMTStream.members"></a><h4>Members</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="300px" class="struct_members_name">
-<col class="struct_members_description">
-<col width="200px" class="struct_members_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint8"><span class="type">guint8</span></a> <em class="structfield"><code><a name="GstMpegtsPMTStream.stream-type"></a>stream_type</code></em>;</p></td>
-<td class="struct_member_description"><p>the type of stream. See <a class="link" href="gst-plugins-bad-libs-Base-MPEG-TS-sections.html#GstMpegtsStreamType" title="enum GstMpegtsStreamType"><span class="type">GstMpegtsStreamType</span></a></p></td>
-<td class="struct_member_annotations"> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint16"><span class="type">guint16</span></a> <em class="structfield"><code><a name="GstMpegtsPMTStream.pid"></a>pid</code></em>;</p></td>
-<td class="struct_member_description"><p>the PID of the stream</p></td>
-<td class="struct_member_annotations"> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Pointer-Arrays.html#GPtrArray"><span class="type">GPtrArray</span></a> *<em class="structfield"><code><a name="GstMpegtsPMTStream.descriptors"></a>descriptors</code></em>;</p></td>
-<td class="struct_member_description"><p> the descriptors of the
-stream. </p></td>
-<td class="struct_member_annotations"><span class="annotation">[<acronym title="Generics and defining elements of containers and arrays."><span class="acronym">element-type</span></acronym> GstMpegtsDescriptor]</span></td>
-</tr>
-</tbody>
-</table></div>
-</div>
-</div>
-<hr>
-<div class="refsect2">
-<a name="GstMpegtsStreamType"></a><h3>enum GstMpegtsStreamType</h3>
-<p>Type of mpeg-ts stream type.</p>
-<p>These values correspond to the base standard registered types. Depending
-on the variant of mpeg-ts being used (Bluray, ATSC, DVB, ...), other
-types might also be used, but will not conflict with these.</p>
-<p>Corresponds to table 2-34 of ITU H.222.0 | ISO/IEC 13818-1</p>
-<div class="refsect3">
-<a name="GstMpegtsStreamType.members"></a><h4>Members</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="300px" class="enum_members_name">
-<col class="enum_members_description">
-<col width="200px" class="enum_members_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="enum_member_name"><p><a name="GST-MPEGTS-STREAM-TYPE-RESERVED-00:CAPS"></a>GST_MPEGTS_STREAM_TYPE_RESERVED_00</p></td>
-<td class="enum_member_description">
-<p>ITU-T | ISO/IEC Reserved</p>
-</td>
-<td class="enum_member_annotations"> </td>
-</tr>
-<tr>
-<td class="enum_member_name"><p><a name="GST-MPEGTS-STREAM-TYPE-VIDEO-MPEG1:CAPS"></a>GST_MPEGTS_STREAM_TYPE_VIDEO_MPEG1</p></td>
-<td class="enum_member_description">
-<p>ISO/IEC 11172-2 Video</p>
-</td>
-<td class="enum_member_annotations"> </td>
-</tr>
-<tr>
-<td class="enum_member_name"><p><a name="GST-MPEGTS-STREAM-TYPE-VIDEO-MPEG2:CAPS"></a>GST_MPEGTS_STREAM_TYPE_VIDEO_MPEG2</p></td>
-<td class="enum_member_description">
-<p>Rec. ITU-T H.262 | ISO/IEC 13818-2
-Video or ISO/IEC 11172-2 constrained parameter video stream</p>
-</td>
-<td class="enum_member_annotations"> </td>
-</tr>
-<tr>
-<td class="enum_member_name"><p><a name="GST-MPEGTS-STREAM-TYPE-AUDIO-MPEG1:CAPS"></a>GST_MPEGTS_STREAM_TYPE_AUDIO_MPEG1</p></td>
-<td class="enum_member_description">
-<p>ISO/IEC 11172-3 Audio</p>
-</td>
-<td class="enum_member_annotations"> </td>
-</tr>
-<tr>
-<td class="enum_member_name"><p><a name="GST-MPEGTS-STREAM-TYPE-AUDIO-MPEG2:CAPS"></a>GST_MPEGTS_STREAM_TYPE_AUDIO_MPEG2</p></td>
-<td class="enum_member_description">
-<p>ISO/IEC 13818-3 Audio</p>
-</td>
-<td class="enum_member_annotations"> </td>
-</tr>
-<tr>
-<td class="enum_member_name"><p><a name="GST-MPEGTS-STREAM-TYPE-PRIVATE-SECTIONS:CAPS"></a>GST_MPEGTS_STREAM_TYPE_PRIVATE_SECTIONS</p></td>
-<td class="enum_member_description">
-<p>private sections</p>
-</td>
-<td class="enum_member_annotations"> </td>
-</tr>
-<tr>
-<td class="enum_member_name"><p><a name="GST-MPEGTS-STREAM-TYPE-PRIVATE-PES-PACKETS:CAPS"></a>GST_MPEGTS_STREAM_TYPE_PRIVATE_PES_PACKETS</p></td>
-<td class="enum_member_description">
-<p>PES packets containing private data</p>
-</td>
-<td class="enum_member_annotations"> </td>
-</tr>
-<tr>
-<td class="enum_member_name"><p><a name="GST-MPEGTS-STREAM-TYPE-MHEG:CAPS"></a>GST_MPEGTS_STREAM_TYPE_MHEG</p></td>
-<td class="enum_member_description">
-<p>ISO/IEC 13522 MHEG</p>
-</td>
-<td class="enum_member_annotations"> </td>
-</tr>
-<tr>
-<td class="enum_member_name"><p><a name="GST-MPEGTS-STREAM-TYPE-DSM-CC:CAPS"></a>GST_MPEGTS_STREAM_TYPE_DSM_CC</p></td>
-<td class="enum_member_description">
-<p>Annex A DSM-CC</p>
-</td>
-<td class="enum_member_annotations"> </td>
-</tr>
-<tr>
-<td class="enum_member_name"><p><a name="GST-MPEGTS-STREAM-TYPE-H-222-1:CAPS"></a>GST_MPEGTS_STREAM_TYPE_H_222_1</p></td>
-<td class="enum_member_description">
-<p>Rec. ITU-T H.222.1</p>
-</td>
-<td class="enum_member_annotations"> </td>
-</tr>
-<tr>
-<td class="enum_member_name"><p><a name="GST-MPEGTS-STREAM-TYPE-DSMCC-A:CAPS"></a>GST_MPEGTS_STREAM_TYPE_DSMCC_A</p></td>
-<td class="enum_member_description">
-<p>ISO/IEC 13818-6 type A</p>
-</td>
-<td class="enum_member_annotations"> </td>
-</tr>
-<tr>
-<td class="enum_member_name"><p><a name="GST-MPEGTS-STREAM-TYPE-DSMCC-B:CAPS"></a>GST_MPEGTS_STREAM_TYPE_DSMCC_B</p></td>
-<td class="enum_member_description">
-<p>ISO/IEC 13818-6 type B</p>
-</td>
-<td class="enum_member_annotations"> </td>
-</tr>
-<tr>
-<td class="enum_member_name"><p><a name="GST-MPEGTS-STREAM-TYPE-DSMCC-C:CAPS"></a>GST_MPEGTS_STREAM_TYPE_DSMCC_C</p></td>
-<td class="enum_member_description">
-<p>ISO/IEC 13818-6 type C</p>
-</td>
-<td class="enum_member_annotations"> </td>
-</tr>
-<tr>
-<td class="enum_member_name"><p><a name="GST-MPEGTS-STREAM-TYPE-DSMCC-D:CAPS"></a>GST_MPEGTS_STREAM_TYPE_DSMCC_D</p></td>
-<td class="enum_member_description">
-<p>ISO/IEC 13818-6 type D</p>
-</td>
-<td class="enum_member_annotations"> </td>
-</tr>
-<tr>
-<td class="enum_member_name"><p><a name="GST-MPEGTS-STREAM-TYPE-AUXILIARY:CAPS"></a>GST_MPEGTS_STREAM_TYPE_AUXILIARY</p></td>
-<td class="enum_member_description">
-<p>auxiliary streams</p>
-</td>
-<td class="enum_member_annotations"> </td>
-</tr>
-<tr>
-<td class="enum_member_name"><p><a name="GST-MPEGTS-STREAM-TYPE-AUDIO-AAC-ADTS:CAPS"></a>GST_MPEGTS_STREAM_TYPE_AUDIO_AAC_ADTS</p></td>
-<td class="enum_member_description">
-<p>ISO/IEC 13818-7 Audio with ADTS
-transport syntax</p>
-</td>
-<td class="enum_member_annotations"> </td>
-</tr>
-<tr>
-<td class="enum_member_name"><p><a name="GST-MPEGTS-STREAM-TYPE-VIDEO-MPEG4:CAPS"></a>GST_MPEGTS_STREAM_TYPE_VIDEO_MPEG4</p></td>
-<td class="enum_member_description">
-<p>ISO/IEC 14496-2 Visual</p>
-</td>
-<td class="enum_member_annotations"> </td>
-</tr>
-<tr>
-<td class="enum_member_name"><p><a name="GST-MPEGTS-STREAM-TYPE-AUDIO-AAC-LATM:CAPS"></a>GST_MPEGTS_STREAM_TYPE_AUDIO_AAC_LATM</p></td>
-<td class="enum_member_description">
-<p>ISO/IEC 14496-3 Audio with the LATM
-transport syntax as defined in ISO/IEC 14496-3</p>
-</td>
-<td class="enum_member_annotations"> </td>
-</tr>
-<tr>
-<td class="enum_member_name"><p><a name="GST-MPEGTS-STREAM-TYPE-SL-FLEXMUX-PES-PACKETS:CAPS"></a>GST_MPEGTS_STREAM_TYPE_SL_FLEXMUX_PES_PACKETS</p></td>
-<td class="enum_member_description">
-<p>ISO/IEC 14496-1
-SL-packetized stream or FlexMux stream carried in PES packets</p>
-</td>
-<td class="enum_member_annotations"> </td>
-</tr>
-<tr>
-<td class="enum_member_name"><p><a name="GST-MPEGTS-STREAM-TYPE-SL-FLEXMUX-SECTIONS:CAPS"></a>GST_MPEGTS_STREAM_TYPE_SL_FLEXMUX_SECTIONS</p></td>
-<td class="enum_member_description">
-<p>ISO/IEC 14496-1 SL-packetized
-stream or FlexMux stream carried in ISO/IEC 14496_sections</p>
-</td>
-<td class="enum_member_annotations"> </td>
-</tr>
-<tr>
-<td class="enum_member_name"><p><a name="GST-MPEGTS-STREAM-TYPE-SYNCHRONIZED-DOWNLOAD:CAPS"></a>GST_MPEGTS_STREAM_TYPE_SYNCHRONIZED_DOWNLOAD</p></td>
-<td class="enum_member_description">
-<p>ISO/IEC 13818-6 Synchronized
-Download Protocol</p>
-</td>
-<td class="enum_member_annotations"> </td>
-</tr>
-<tr>
-<td class="enum_member_name"><p><a name="GST-MPEGTS-STREAM-TYPE-METADATA-PES-PACKETS:CAPS"></a>GST_MPEGTS_STREAM_TYPE_METADATA_PES_PACKETS</p></td>
-<td class="enum_member_description">
-<p>Metadata carried in PES packets</p>
-</td>
-<td class="enum_member_annotations"> </td>
-</tr>
-<tr>
-<td class="enum_member_name"><p><a name="GST-MPEGTS-STREAM-TYPE-METADATA-SECTIONS:CAPS"></a>GST_MPEGTS_STREAM_TYPE_METADATA_SECTIONS</p></td>
-<td class="enum_member_description">
-<p>Metadata carried in metadata_sections</p>
-</td>
-<td class="enum_member_annotations"> </td>
-</tr>
-<tr>
-<td class="enum_member_name"><p><a name="GST-MPEGTS-STREAM-TYPE-METADATA-DATA-CAROUSEL:CAPS"></a>GST_MPEGTS_STREAM_TYPE_METADATA_DATA_CAROUSEL</p></td>
-<td class="enum_member_description">
-<p>Metadata carried in ISO/IEC
-13818-6 Data Carousel</p>
-</td>
-<td class="enum_member_annotations"> </td>
-</tr>
-<tr>
-<td class="enum_member_name"><p><a name="GST-MPEGTS-STREAM-TYPE-METADATA-OBJECT-CAROUSEL:CAPS"></a>GST_MPEGTS_STREAM_TYPE_METADATA_OBJECT_CAROUSEL</p></td>
-<td class="enum_member_description">
-<p>Metadata carried in
-ISO/IEC 13818-6 Object Carousel</p>
-</td>
-<td class="enum_member_annotations"> </td>
-</tr>
-<tr>
-<td class="enum_member_name"><p><a name="GST-MPEGTS-STREAM-TYPE-METADATA-SYNCHRONIZED-DOWNLOAD:CAPS"></a>GST_MPEGTS_STREAM_TYPE_METADATA_SYNCHRONIZED_DOWNLOAD</p></td>
-<td class="enum_member_description">
-<p>Metadata carried in
-ISO/IEC 13818-6 Synchronized Download Protocol</p>
-</td>
-<td class="enum_member_annotations"> </td>
-</tr>
-<tr>
-<td class="enum_member_name"><p><a name="GST-MPEGTS-STREAM-TYPE-MPEG2-IPMP:CAPS"></a>GST_MPEGTS_STREAM_TYPE_MPEG2_IPMP</p></td>
-<td class="enum_member_description">
-<p>IPMP stream (defined in ISO/IEC 13818-11,
-MPEG-2 IPMP)</p>
-</td>
-<td class="enum_member_annotations"> </td>
-</tr>
-<tr>
-<td class="enum_member_name"><p><a name="GST-MPEGTS-STREAM-TYPE-VIDEO-H264:CAPS"></a>GST_MPEGTS_STREAM_TYPE_VIDEO_H264</p></td>
-<td class="enum_member_description">
-<p>AVC video stream conforming to one or
-more profiles defined in Annex A of Rec. ITU-T H.264 | ISO/IEC 14496-10 or
-AVC video sub-bitstream of SVC as defined in 2.1.78 or MVC base view
-sub-bitstream, as defined in 2.1.85, or AVC video sub-bitstream of MVC, as
-defined in 2.1.88</p>
-</td>
-<td class="enum_member_annotations"> </td>
-</tr>
-<tr>
-<td class="enum_member_name"><p><a name="GST-MPEGTS-STREAM-TYPE-AUDIO-AAC-CLEAN:CAPS"></a>GST_MPEGTS_STREAM_TYPE_AUDIO_AAC_CLEAN</p></td>
-<td class="enum_member_description">
-<p>ISO/IEC 14496-3 Audio, without
-using any additional transport syntax, such as DST, ALS and SLS</p>
-</td>
-<td class="enum_member_annotations"> </td>
-</tr>
-<tr>
-<td class="enum_member_name"><p><a name="GST-MPEGTS-STREAM-TYPE-MPEG4-TIMED-TEXT:CAPS"></a>GST_MPEGTS_STREAM_TYPE_MPEG4_TIMED_TEXT</p></td>
-<td class="enum_member_description">
-<p>ISO/IEC 14496-17 Text</p>
-</td>
-<td class="enum_member_annotations"> </td>
-</tr>
-<tr>
-<td class="enum_member_name"><p><a name="GST-MPEGTS-STREAM-TYPE-VIDEO-RVC:CAPS"></a>GST_MPEGTS_STREAM_TYPE_VIDEO_RVC</p></td>
-<td class="enum_member_description">
-<p>Auxiliary video stream as defined in
-ISO/IEC 23002-3</p>
-</td>
-<td class="enum_member_annotations"> </td>
-</tr>
-<tr>
-<td class="enum_member_name"><p><a name="GST-MPEGTS-STREAM-TYPE-VIDEO-H264-SVC-SUB-BITSTREAM:CAPS"></a>GST_MPEGTS_STREAM_TYPE_VIDEO_H264_SVC_SUB_BITSTREAM</p></td>
-<td class="enum_member_description">
-<p>SVC video sub-bitstream
-of an AVC video stream conforming to one or more profiles defined in Annex G
-of Rec. ITU-T H.264 | ISO/IEC 14496-10</p>
-</td>
-<td class="enum_member_annotations"> </td>
-</tr>
-<tr>
-<td class="enum_member_name"><p><a name="GST-MPEGTS-STREAM-TYPE-VIDEO-H264-MVC-SUB-BITSTREAM:CAPS"></a>GST_MPEGTS_STREAM_TYPE_VIDEO_H264_MVC_SUB_BITSTREAM</p></td>
-<td class="enum_member_description">
-<p>MVC video sub-bitstream
-of an AVC video stream conforming to one or more profiles defined in Annex H
-of Rec. ITU-T H.264 | ISO/IEC 14496-10</p>
-</td>
-<td class="enum_member_annotations"> </td>
-</tr>
-<tr>
-<td class="enum_member_name"><p><a name="GST-MPEGTS-STREAM-TYPE-VIDEO-JP2K:CAPS"></a>GST_MPEGTS_STREAM_TYPE_VIDEO_JP2K</p></td>
-<td class="enum_member_description">
-<p>Video stream conforming to one or more
-profiles as defined in Rec. ITU-T T.800 | ISO/IEC 15444-1</p>
-</td>
-<td class="enum_member_annotations"> </td>
-</tr>
-<tr>
-<td class="enum_member_name"><p><a name="GST-MPEGTS-STREAM-TYPE-VIDEO-MPEG2-STEREO-ADDITIONAL-VIEW:CAPS"></a>GST_MPEGTS_STREAM_TYPE_VIDEO_MPEG2_STEREO_ADDITIONAL_VIEW</p></td>
-<td class="enum_member_description">
-<p>Additional view
-Rec. ITU-T H.262 | ISO/IEC 13818-2 video stream for service-compatible
-stereoscopic 3D services</p>
-</td>
-<td class="enum_member_annotations"> </td>
-</tr>
-<tr>
-<td class="enum_member_name"><p><a name="GST-MPEGTS-STREAM-TYPE-VIDEO-H264-STEREO-ADDITIONAL-VIEW:CAPS"></a>GST_MPEGTS_STREAM_TYPE_VIDEO_H264_STEREO_ADDITIONAL_VIEW</p></td>
-<td class="enum_member_description">
-<p>Additional view
-Rec. ITU-T H.264 | ISO/IEC 14496-10 video stream conforming to one or more
-profiles defined in Annex A for service-compatible stereoscopic 3D services</p>
-</td>
-<td class="enum_member_annotations"> </td>
-</tr>
-<tr>
-<td class="enum_member_name"><p><a name="GST-MPEGTS-STREAM-TYPE-VIDEO-HEVC:CAPS"></a>GST_MPEGTS_STREAM_TYPE_VIDEO_HEVC</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="enum_member_name"><p><a name="GST-MPEGTS-STREAM-TYPE-IPMP-STREAM:CAPS"></a>GST_MPEGTS_STREAM_TYPE_IPMP_STREAM</p></td>
-<td class="enum_member_description">
-<p>IPMP stream</p>
-</td>
-<td class="enum_member_annotations"> </td>
-</tr>
-</tbody>
-</table></div>
-</div>
-</div>
-</div>
-</div>
-<div class="footer">
-<hr>Generated by GTK-Doc V1.25</div>
-</body>
-</html>
\ No newline at end of file
diff --git a/docs/libs/html/gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html b/docs/libs/html/gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html
deleted file mode 100644
index 7cff3fe..0000000
--- a/docs/libs/html/gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html
+++ /dev/null
@@ -1,4033 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>DVB variants of MPEG-TS descriptors: GStreamer Bad Plugins 1.0 Library Reference Manual</title>
-<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
-<link rel="home" href="index.html" title="GStreamer Bad Plugins 1.0 Library Reference Manual">
-<link rel="up" href="mpegts.html" title="Mpeg TS helper library">
-<link rel="prev" href="gst-plugins-bad-libs-ATSC-variants-of-MPEG-TS-descriptors.html" title="ATSC variants of MPEG-TS descriptors">
-<link rel="next" href="gst-plugins-bad-libs-ISDB-variants-of-MPEG-TS-descriptors.html" title="ISDB variants of MPEG-TS descriptors">
-<meta name="generator" content="GTK-Doc V1.25 (XML mode)">
-<link rel="stylesheet" href="style.css" type="text/css">
-</head>
-<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
-<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="5"><tr valign="middle">
-<td width="100%" align="left" class="shortcuts">
-<a href="#" class="shortcut">Top</a><span id="nav_description"> <span class="dim">|</span>
- <a href="#gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.description" class="shortcut">Description</a></span><span id="nav_hierarchy"> <span class="dim">|</span>
- <a href="#gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.object-hierarchy" class="shortcut">Object Hierarchy</a></span>
-</td>
-<td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
-<td><a accesskey="u" href="mpegts.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
-<td><a accesskey="p" href="gst-plugins-bad-libs-ATSC-variants-of-MPEG-TS-descriptors.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
-<td><a accesskey="n" href="gst-plugins-bad-libs-ISDB-variants-of-MPEG-TS-descriptors.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
-</tr></table>
-<div class="refentry">
-<a name="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors"></a><div class="titlepage"></div>
-<div class="refnamediv"><table width="100%"><tr>
-<td valign="top">
-<h2><span class="refentrytitle"><a name="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.top_of_page"></a>DVB variants of MPEG-TS descriptors</span></h2>
-<p>DVB variants of MPEG-TS descriptors — Descriptors for the various DVB specifications</p>
-</td>
-<td class="gallery_image" valign="top" align="right"></td>
-</tr></table></div>
-<div class="refsect1">
-<a name="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.functions"></a><h2>Functions</h2>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="functions_return">
-<col class="functions_name">
-</colgroup>
-<tbody>
-<tr>
-<td class="function_type">
-<a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
-</td>
-<td class="function_name">
-<a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#gst-mpegts-descriptor-parse-dvb-content" title="gst_mpegts_descriptor_parse_dvb_content ()">gst_mpegts_descriptor_parse_dvb_content</a> <span class="c_punctuation">()</span>
-</td>
-</tr>
-<tr>
-<td class="function_type">
-<span class="returnvalue">void</span>
-</td>
-<td class="function_name">
-<a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#gst-mpegts-dvb-component-descriptor-free" title="gst_mpegts_dvb_component_descriptor_free ()">gst_mpegts_dvb_component_descriptor_free</a> <span class="c_punctuation">()</span>
-</td>
-</tr>
-<tr>
-<td class="function_type">
-<a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
-</td>
-<td class="function_name">
-<a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#gst-mpegts-descriptor-parse-dvb-component" title="gst_mpegts_descriptor_parse_dvb_component ()">gst_mpegts_descriptor_parse_dvb_component</a> <span class="c_punctuation">()</span>
-</td>
-</tr>
-<tr>
-<td class="function_type">
-<span class="returnvalue">void</span>
-</td>
-<td class="function_name">
-<a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#gst-mpegts-extended-event-descriptor-free" title="gst_mpegts_extended_event_descriptor_free ()">gst_mpegts_extended_event_descriptor_free</a> <span class="c_punctuation">()</span>
-</td>
-</tr>
-<tr>
-<td class="function_type">
-<a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
-</td>
-<td class="function_name">
-<a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#gst-mpegts-descriptor-parse-dvb-extended-event" title="gst_mpegts_descriptor_parse_dvb_extended_event ()">gst_mpegts_descriptor_parse_dvb_extended_event</a> <span class="c_punctuation">()</span>
-</td>
-</tr>
-<tr>
-<td class="function_type">
-<a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
-</td>
-<td class="function_name">
-<a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#gst-mpegts-descriptor-parse-satellite-delivery-system" title="gst_mpegts_descriptor_parse_satellite_delivery_system ()">gst_mpegts_descriptor_parse_satellite_delivery_system</a> <span class="c_punctuation">()</span>
-</td>
-</tr>
-<tr>
-<td class="function_type">
-<a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
-</td>
-<td class="function_name">
-<a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#gst-mpegts-descriptor-parse-cable-delivery-system" title="gst_mpegts_descriptor_parse_cable_delivery_system ()">gst_mpegts_descriptor_parse_cable_delivery_system</a> <span class="c_punctuation">()</span>
-</td>
-</tr>
-<tr>
-<td class="function_type">
-<a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
-</td>
-<td class="function_name">
-<a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#gst-mpegts-descriptor-parse-terrestrial-delivery-system" title="gst_mpegts_descriptor_parse_terrestrial_delivery_system ()">gst_mpegts_descriptor_parse_terrestrial_delivery_system</a> <span class="c_punctuation">()</span>
-</td>
-</tr>
-<tr>
-<td class="function_type">
-<span class="returnvalue">void</span>
-</td>
-<td class="function_name">
-<a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#gst-mpegts-t2-delivery-system-descriptor-free" title="gst_mpegts_t2_delivery_system_descriptor_free ()">gst_mpegts_t2_delivery_system_descriptor_free</a> <span class="c_punctuation">()</span>
-</td>
-</tr>
-<tr>
-<td class="function_type">
-<a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
-</td>
-<td class="function_name">
-<a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#gst-mpegts-descriptor-parse-dvb-t2-delivery-system" title="gst_mpegts_descriptor_parse_dvb_t2_delivery_system ()">gst_mpegts_descriptor_parse_dvb_t2_delivery_system</a> <span class="c_punctuation">()</span>
-</td>
-</tr>
-<tr>
-<td class="function_type">
-<a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
-</td>
-<td class="function_name">
-<a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#gst-mpegts-descriptor-parse-dvb-short-event" title="gst_mpegts_descriptor_parse_dvb_short_event ()">gst_mpegts_descriptor_parse_dvb_short_event</a> <span class="c_punctuation">()</span>
-</td>
-</tr>
-<tr>
-<td class="function_type">
-<a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
-</td>
-<td class="function_name">
-<a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#gst-mpegts-descriptor-parse-dvb-network-name" title="gst_mpegts_descriptor_parse_dvb_network_name ()">gst_mpegts_descriptor_parse_dvb_network_name</a> <span class="c_punctuation">()</span>
-</td>
-</tr>
-<tr>
-<td class="function_type">
-<a class="link" href="gst-plugins-bad-libs-Base-MPEG-TS-descriptors.html#GstMpegtsDescriptor"><span class="returnvalue">GstMpegtsDescriptor</span></a> *
-</td>
-<td class="function_name">
-<a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#gst-mpegts-descriptor-from-dvb-network-name" title="gst_mpegts_descriptor_from_dvb_network_name ()">gst_mpegts_descriptor_from_dvb_network_name</a> <span class="c_punctuation">()</span>
-</td>
-</tr>
-<tr>
-<td class="function_type">
-<a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
-</td>
-<td class="function_name">
-<a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#gst-mpegts-descriptor-parse-dvb-service" title="gst_mpegts_descriptor_parse_dvb_service ()">gst_mpegts_descriptor_parse_dvb_service</a> <span class="c_punctuation">()</span>
-</td>
-</tr>
-<tr>
-<td class="function_type">
-<a class="link" href="gst-plugins-bad-libs-Base-MPEG-TS-descriptors.html#GstMpegtsDescriptor"><span class="returnvalue">GstMpegtsDescriptor</span></a> *
-</td>
-<td class="function_name">
-<a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#gst-mpegts-descriptor-from-dvb-service" title="gst_mpegts_descriptor_from_dvb_service ()">gst_mpegts_descriptor_from_dvb_service</a> <span class="c_punctuation">()</span>
-</td>
-</tr>
-<tr>
-<td class="function_type">
-<a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
-</td>
-<td class="function_name">
-<a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#gst-mpegts-descriptor-parse-dvb-teletext-idx" title="gst_mpegts_descriptor_parse_dvb_teletext_idx ()">gst_mpegts_descriptor_parse_dvb_teletext_idx</a> <span class="c_punctuation">()</span>
-</td>
-</tr>
-<tr>
-<td class="function_type">
-<a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint"><span class="returnvalue">guint</span></a>
-</td>
-<td class="function_name">
-<a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#gst-mpegts-descriptor-parse-dvb-teletext-nb" title="gst_mpegts_descriptor_parse_dvb_teletext_nb ()">gst_mpegts_descriptor_parse_dvb_teletext_nb</a> <span class="c_punctuation">()</span>
-</td>
-</tr>
-<tr>
-<td class="function_type">
-<a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
-</td>
-<td class="function_name">
-<a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#gst-mpegts-descriptor-parse-dvb-subtitling-idx" title="gst_mpegts_descriptor_parse_dvb_subtitling_idx ()">gst_mpegts_descriptor_parse_dvb_subtitling_idx</a> <span class="c_punctuation">()</span>
-</td>
-</tr>
-<tr>
-<td class="function_type">
-<a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint"><span class="returnvalue">guint</span></a>
-</td>
-<td class="function_name">
-<a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#gst-mpegts-descriptor-parse-dvb-subtitling-nb" title="gst_mpegts_descriptor_parse_dvb_subtitling_nb ()">gst_mpegts_descriptor_parse_dvb_subtitling_nb</a> <span class="c_punctuation">()</span>
-</td>
-</tr>
-<tr>
-<td class="function_type">
-<a class="link" href="gst-plugins-bad-libs-Base-MPEG-TS-descriptors.html#GstMpegtsDescriptor"><span class="returnvalue">GstMpegtsDescriptor</span></a> *
-</td>
-<td class="function_name">
-<a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#gst-mpegts-descriptor-from-dvb-subtitling" title="gst_mpegts_descriptor_from_dvb_subtitling ()">gst_mpegts_descriptor_from_dvb_subtitling</a> <span class="c_punctuation">()</span>
-</td>
-</tr>
-<tr>
-<td class="function_type">
-<span class="returnvalue">void</span>
-</td>
-<td class="function_name">
-<a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#gst-mpegts-dvb-linkage-descriptor-free" title="gst_mpegts_dvb_linkage_descriptor_free ()">gst_mpegts_dvb_linkage_descriptor_free</a> <span class="c_punctuation">()</span>
-</td>
-</tr>
-<tr>
-<td class="function_type">const <a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GstMpegtsDVBLinkageMobileHandOver" title="struct GstMpegtsDVBLinkageMobileHandOver"><span class="returnvalue">GstMpegtsDVBLinkageMobileHandOver</span></a> *
-</td>
-<td class="function_name">
-<a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#gst-mpegts-dvb-linkage-descriptor-get-mobile-hand-over" title="gst_mpegts_dvb_linkage_descriptor_get_mobile_hand_over ()">gst_mpegts_dvb_linkage_descriptor_get_mobile_hand_over</a> <span class="c_punctuation">()</span>
-</td>
-</tr>
-<tr>
-<td class="function_type">const <a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GstMpegtsDVBLinkageEvent" title="struct GstMpegtsDVBLinkageEvent"><span class="returnvalue">GstMpegtsDVBLinkageEvent</span></a> *
-</td>
-<td class="function_name">
-<a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#gst-mpegts-dvb-linkage-descriptor-get-event" title="gst_mpegts_dvb_linkage_descriptor_get_event ()">gst_mpegts_dvb_linkage_descriptor_get_event</a> <span class="c_punctuation">()</span>
-</td>
-</tr>
-<tr>
-<td class="function_type">const <a href="/usr/share/gtk-doc/html/glibglib-Pointer-Arrays.html#GPtrArray"><span class="returnvalue">GPtrArray</span></a> *
-</td>
-<td class="function_name">
-<a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#gst-mpegts-dvb-linkage-descriptor-get-extended-event" title="gst_mpegts_dvb_linkage_descriptor_get_extended_event ()">gst_mpegts_dvb_linkage_descriptor_get_extended_event</a> <span class="c_punctuation">()</span>
-</td>
-</tr>
-<tr>
-<td class="function_type">
-<a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
-</td>
-<td class="function_name">
-<a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#gst-mpegts-descriptor-parse-dvb-linkage" title="gst_mpegts_descriptor_parse_dvb_linkage ()">gst_mpegts_descriptor_parse_dvb_linkage</a> <span class="c_punctuation">()</span>
-</td>
-</tr>
-<tr>
-<td class="function_type">
-<a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
-</td>
-<td class="function_name">
-<a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#gst-mpegts-descriptor-parse-dvb-private-data-specifier" title="gst_mpegts_descriptor_parse_dvb_private_data_specifier ()">gst_mpegts_descriptor_parse_dvb_private_data_specifier</a> <span class="c_punctuation">()</span>
-</td>
-</tr>
-<tr>
-<td class="function_type">
-<a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
-</td>
-<td class="function_name">
-<a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#gst-mpegts-descriptor-parse-dvb-frequency-list" title="gst_mpegts_descriptor_parse_dvb_frequency_list ()">gst_mpegts_descriptor_parse_dvb_frequency_list</a> <span class="c_punctuation">()</span>
-</td>
-</tr>
-<tr>
-<td class="function_type">
-<span class="returnvalue">void</span>
-</td>
-<td class="function_name">
-<a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#gst-mpegts-dvb-data-broadcast-descriptor-free" title="gst_mpegts_dvb_data_broadcast_descriptor_free ()">gst_mpegts_dvb_data_broadcast_descriptor_free</a> <span class="c_punctuation">()</span>
-</td>
-</tr>
-<tr>
-<td class="function_type">
-<a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
-</td>
-<td class="function_name">
-<a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#gst-mpegts-descriptor-parse-dvb-data-broadcast" title="gst_mpegts_descriptor_parse_dvb_data_broadcast ()">gst_mpegts_descriptor_parse_dvb_data_broadcast</a> <span class="c_punctuation">()</span>
-</td>
-</tr>
-<tr>
-<td class="function_type">
-<a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
-</td>
-<td class="function_name">
-<a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#gst-mpegts-descriptor-parse-dvb-scrambling" title="gst_mpegts_descriptor_parse_dvb_scrambling ()">gst_mpegts_descriptor_parse_dvb_scrambling</a> <span class="c_punctuation">()</span>
-</td>
-</tr>
-<tr>
-<td class="function_type">
-<a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
-</td>
-<td class="function_name">
-<a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#gst-mpegts-descriptor-parse-dvb-data-broadcast-id" title="gst_mpegts_descriptor_parse_dvb_data_broadcast_id ()">gst_mpegts_descriptor_parse_dvb_data_broadcast_id</a> <span class="c_punctuation">()</span>
-</td>
-</tr>
-<tr>
-<td class="function_type">
-<a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
-</td>
-<td class="function_name">
-<a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#gst-mpegts-descriptor-parse-dvb-parental-rating" title="gst_mpegts_descriptor_parse_dvb_parental_rating ()">gst_mpegts_descriptor_parse_dvb_parental_rating</a> <span class="c_punctuation">()</span>
-</td>
-</tr>
-<tr>
-<td class="function_type">
-<a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
-</td>
-<td class="function_name">
-<a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#gst-mpegts-descriptor-parse-dvb-stream-identifier" title="gst_mpegts_descriptor_parse_dvb_stream_identifier ()">gst_mpegts_descriptor_parse_dvb_stream_identifier</a> <span class="c_punctuation">()</span>
-</td>
-</tr>
-<tr>
-<td class="function_type">
-<a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
-</td>
-<td class="function_name">
-<a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#gst-mpegts-descriptor-parse-dvb-ca-identifier" title="gst_mpegts_descriptor_parse_dvb_ca_identifier ()">gst_mpegts_descriptor_parse_dvb_ca_identifier</a> <span class="c_punctuation">()</span>
-</td>
-</tr>
-<tr>
-<td class="function_type">
-<a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
-</td>
-<td class="function_name">
-<a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#gst-mpegts-descriptor-parse-dvb-service-list" title="gst_mpegts_descriptor_parse_dvb_service_list ()">gst_mpegts_descriptor_parse_dvb_service_list</a> <span class="c_punctuation">()</span>
-</td>
-</tr>
-<tr>
-<td class="function_type">
-<a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
-</td>
-<td class="function_name">
-<a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#gst-mpegts-descriptor-parse-dvb-stuffing" title="gst_mpegts_descriptor_parse_dvb_stuffing ()">gst_mpegts_descriptor_parse_dvb_stuffing</a> <span class="c_punctuation">()</span>
-</td>
-</tr>
-<tr>
-<td class="function_type">
-<a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
-</td>
-<td class="function_name">
-<a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#gst-mpegts-descriptor-parse-dvb-bouquet-name" title="gst_mpegts_descriptor_parse_dvb_bouquet_name ()">gst_mpegts_descriptor_parse_dvb_bouquet_name</a> <span class="c_punctuation">()</span>
-</td>
-</tr>
-<tr>
-<td class="function_type">
-<a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
-</td>
-<td class="function_name">
-<a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#gst-mpegts-descriptor-parse-dvb-multilingual-network-name" title="gst_mpegts_descriptor_parse_dvb_multilingual_network_name ()">gst_mpegts_descriptor_parse_dvb_multilingual_network_name</a> <span class="c_punctuation">()</span>
-</td>
-</tr>
-<tr>
-<td class="function_type">
-<a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
-</td>
-<td class="function_name">
-<a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#gst-mpegts-descriptor-parse-dvb-multilingual-bouquet-name" title="gst_mpegts_descriptor_parse_dvb_multilingual_bouquet_name ()">gst_mpegts_descriptor_parse_dvb_multilingual_bouquet_name</a> <span class="c_punctuation">()</span>
-</td>
-</tr>
-<tr>
-<td class="function_type">
-<a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
-</td>
-<td class="function_name">
-<a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#gst-mpegts-descriptor-parse-dvb-multilingual-service-name" title="gst_mpegts_descriptor_parse_dvb_multilingual_service_name ()">gst_mpegts_descriptor_parse_dvb_multilingual_service_name</a> <span class="c_punctuation">()</span>
-</td>
-</tr>
-<tr>
-<td class="function_type">
-<a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
-</td>
-<td class="function_name">
-<a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#gst-mpegts-descriptor-parse-dvb-multilingual-component" title="gst_mpegts_descriptor_parse_dvb_multilingual_component ()">gst_mpegts_descriptor_parse_dvb_multilingual_component</a> <span class="c_punctuation">()</span>
-</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<div class="refsect1">
-<a name="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.other"></a><h2>Types and Values</h2>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="name">
-<col class="description">
-</colgroup>
-<tbody>
-<tr>
-<td class="datatype_keyword">enum</td>
-<td class="function_name"><a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GstMpegtsDVBDescriptorType" title="enum GstMpegtsDVBDescriptorType">GstMpegtsDVBDescriptorType</a></td>
-</tr>
-<tr>
-<td class="datatype_keyword">enum</td>
-<td class="function_name"><a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GstMpegtsDVBExtendedDescriptorType" title="enum GstMpegtsDVBExtendedDescriptorType">GstMpegtsDVBExtendedDescriptorType</a></td>
-</tr>
-<tr>
-<td class="datatype_keyword">struct</td>
-<td class="function_name"><a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GstMpegtsContent" title="struct GstMpegtsContent">GstMpegtsContent</a></td>
-</tr>
-<tr>
-<td class="datatype_keyword">struct</td>
-<td class="function_name"><a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GstMpegtsComponentDescriptor" title="struct GstMpegtsComponentDescriptor">GstMpegtsComponentDescriptor</a></td>
-</tr>
-<tr>
-<td class="datatype_keyword">struct</td>
-<td class="function_name"><a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GstMpegtsExtendedEventItem" title="struct GstMpegtsExtendedEventItem">GstMpegtsExtendedEventItem</a></td>
-</tr>
-<tr>
-<td class="datatype_keyword">struct</td>
-<td class="function_name"><a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GstMpegtsExtendedEventDescriptor" title="struct GstMpegtsExtendedEventDescriptor">GstMpegtsExtendedEventDescriptor</a></td>
-</tr>
-<tr>
-<td class="datatype_keyword">struct</td>
-<td class="function_name"><a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GstMpegtsSatelliteDeliverySystemDescriptor" title="struct GstMpegtsSatelliteDeliverySystemDescriptor">GstMpegtsSatelliteDeliverySystemDescriptor</a></td>
-</tr>
-<tr>
-<td class="datatype_keyword">enum</td>
-<td class="function_name"><a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GstMpegtsDVBCodeRate" title="enum GstMpegtsDVBCodeRate">GstMpegtsDVBCodeRate</a></td>
-</tr>
-<tr>
-<td class="datatype_keyword">enum</td>
-<td class="function_name"><a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GstMpegtsModulationType" title="enum GstMpegtsModulationType">GstMpegtsModulationType</a></td>
-</tr>
-<tr>
-<td class="datatype_keyword">enum</td>
-<td class="function_name"><a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GstMpegtsSatellitePolarizationType" title="enum GstMpegtsSatellitePolarizationType">GstMpegtsSatellitePolarizationType</a></td>
-</tr>
-<tr>
-<td class="datatype_keyword">enum</td>
-<td class="function_name"><a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GstMpegtsSatelliteRolloff" title="enum GstMpegtsSatelliteRolloff">GstMpegtsSatelliteRolloff</a></td>
-</tr>
-<tr>
-<td class="datatype_keyword">struct</td>
-<td class="function_name"><a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GstMpegtsCableDeliverySystemDescriptor" title="struct GstMpegtsCableDeliverySystemDescriptor">GstMpegtsCableDeliverySystemDescriptor</a></td>
-</tr>
-<tr>
-<td class="datatype_keyword">enum</td>
-<td class="function_name"><a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GstMpegtsCableOuterFECScheme" title="enum GstMpegtsCableOuterFECScheme">GstMpegtsCableOuterFECScheme</a></td>
-</tr>
-<tr>
-<td class="datatype_keyword">struct</td>
-<td class="function_name"><a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GstMpegtsTerrestrialDeliverySystemDescriptor" title="struct GstMpegtsTerrestrialDeliverySystemDescriptor">GstMpegtsTerrestrialDeliverySystemDescriptor</a></td>
-</tr>
-<tr>
-<td class="datatype_keyword">enum</td>
-<td class="function_name"><a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GstMpegtsTerrestrialTransmissionMode" title="enum GstMpegtsTerrestrialTransmissionMode">GstMpegtsTerrestrialTransmissionMode</a></td>
-</tr>
-<tr>
-<td class="datatype_keyword">enum</td>
-<td class="function_name"><a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GstMpegtsTerrestrialGuardInterval" title="enum GstMpegtsTerrestrialGuardInterval">GstMpegtsTerrestrialGuardInterval</a></td>
-</tr>
-<tr>
-<td class="datatype_keyword">enum</td>
-<td class="function_name"><a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GstMpegtsTerrestrialHierarchy" title="enum GstMpegtsTerrestrialHierarchy">GstMpegtsTerrestrialHierarchy</a></td>
-</tr>
-<tr>
-<td class="datatype_keyword">struct</td>
-<td class="function_name"><a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GstMpegtsT2DeliverySystemCellExtension" title="struct GstMpegtsT2DeliverySystemCellExtension">GstMpegtsT2DeliverySystemCellExtension</a></td>
-</tr>
-<tr>
-<td class="datatype_keyword">struct</td>
-<td class="function_name"><a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GstMpegtsT2DeliverySystemCell" title="struct GstMpegtsT2DeliverySystemCell">GstMpegtsT2DeliverySystemCell</a></td>
-</tr>
-<tr>
-<td class="datatype_keyword">struct</td>
-<td class="function_name"><a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GstMpegtsT2DeliverySystemDescriptor" title="struct GstMpegtsT2DeliverySystemDescriptor">GstMpegtsT2DeliverySystemDescriptor</a></td>
-</tr>
-<tr>
-<td class="datatype_keyword">enum</td>
-<td class="function_name"><a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GstMpegtsDVBServiceType" title="enum GstMpegtsDVBServiceType">GstMpegtsDVBServiceType</a></td>
-</tr>
-<tr>
-<td class="datatype_keyword">enum</td>
-<td class="function_name"><a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GstMpegtsDVBTeletextType" title="enum GstMpegtsDVBTeletextType">GstMpegtsDVBTeletextType</a></td>
-</tr>
-<tr>
-<td class="datatype_keyword">enum</td>
-<td class="function_name"><a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GstMpegtsDVBLinkageType" title="enum GstMpegtsDVBLinkageType">GstMpegtsDVBLinkageType</a></td>
-</tr>
-<tr>
-<td class="datatype_keyword">enum</td>
-<td class="function_name"><a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GstMpegtsDVBLinkageHandOverType" title="enum GstMpegtsDVBLinkageHandOverType">GstMpegtsDVBLinkageHandOverType</a></td>
-</tr>
-<tr>
-<td class="datatype_keyword">struct</td>
-<td class="function_name"><a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GstMpegtsDVBLinkageMobileHandOver" title="struct GstMpegtsDVBLinkageMobileHandOver">GstMpegtsDVBLinkageMobileHandOver</a></td>
-</tr>
-<tr>
-<td class="datatype_keyword">struct</td>
-<td class="function_name"><a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GstMpegtsDVBLinkageEvent" title="struct GstMpegtsDVBLinkageEvent">GstMpegtsDVBLinkageEvent</a></td>
-</tr>
-<tr>
-<td class="datatype_keyword">struct</td>
-<td class="function_name"><a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GstMpegtsDVBLinkageExtendedEvent" title="struct GstMpegtsDVBLinkageExtendedEvent">GstMpegtsDVBLinkageExtendedEvent</a></td>
-</tr>
-<tr>
-<td class="datatype_keyword">struct</td>
-<td class="function_name"><a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GstMpegtsDVBLinkageDescriptor" title="struct GstMpegtsDVBLinkageDescriptor">GstMpegtsDVBLinkageDescriptor</a></td>
-</tr>
-<tr>
-<td class="datatype_keyword">struct</td>
-<td class="function_name"><a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GstMpegtsDataBroadcastDescriptor" title="struct GstMpegtsDataBroadcastDescriptor">GstMpegtsDataBroadcastDescriptor</a></td>
-</tr>
-<tr>
-<td class="datatype_keyword">enum</td>
-<td class="function_name"><a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GstMpegtsDVBScramblingModeType" title="enum GstMpegtsDVBScramblingModeType">GstMpegtsDVBScramblingModeType</a></td>
-</tr>
-<tr>
-<td class="datatype_keyword">struct</td>
-<td class="function_name"><a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GstMpegtsDVBParentalRatingItem" title="struct GstMpegtsDVBParentalRatingItem">GstMpegtsDVBParentalRatingItem</a></td>
-</tr>
-<tr>
-<td class="datatype_keyword">struct</td>
-<td class="function_name"><a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GstMpegtsDVBServiceListItem" title="struct GstMpegtsDVBServiceListItem">GstMpegtsDVBServiceListItem</a></td>
-</tr>
-<tr>
-<td class="datatype_keyword">struct</td>
-<td class="function_name"><a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GstMpegtsDvbMultilingualNetworkNameItem" title="struct GstMpegtsDvbMultilingualNetworkNameItem">GstMpegtsDvbMultilingualNetworkNameItem</a></td>
-</tr>
-<tr>
-<td class="datatype_keyword">struct</td>
-<td class="function_name"><a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GstMpegtsDvbMultilingualBouquetNameItem" title="struct GstMpegtsDvbMultilingualBouquetNameItem">GstMpegtsDvbMultilingualBouquetNameItem</a></td>
-</tr>
-<tr>
-<td class="datatype_keyword">struct</td>
-<td class="function_name"><a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GstMpegtsDvbMultilingualServiceNameItem" title="struct GstMpegtsDvbMultilingualServiceNameItem">GstMpegtsDvbMultilingualServiceNameItem</a></td>
-</tr>
-<tr>
-<td class="datatype_keyword">struct</td>
-<td class="function_name"><a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GstMpegtsDvbMultilingualComponentItem" title="struct GstMpegtsDvbMultilingualComponentItem">GstMpegtsDvbMultilingualComponentItem</a></td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<div class="refsect1">
-<a name="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.object-hierarchy"></a><h2>Object Hierarchy</h2>
-<pre class="screen"> <a href="https://developer.gnome.org/gobject/unstable/gobject-Enumeration-and-Flag-Types.html">GEnum</a>
- <span class="lineart">├──</span> GstMpegtsCableOuterFECScheme
- <span class="lineart">├──</span> GstMpegtsDVBCodeRate
- <span class="lineart">├──</span> GstMpegtsDVBServiceType
- <span class="lineart">├──</span> GstMpegtsModulationType
- <span class="lineart">├──</span> GstMpegtsSatellitePolarizationType
- <span class="lineart">╰──</span> GstMpegtsSatelliteRolloff
-</pre>
-</div>
-<div class="refsect1">
-<a name="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.includes"></a><h2>Includes</h2>
-<pre class="synopsis">#include <gst/mpegts/mpegts.h>
-</pre>
-</div>
-<div class="refsect1">
-<a name="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.description"></a><h2>Description</h2>
-</div>
-<div class="refsect1">
-<a name="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.functions_details"></a><h2>Functions</h2>
-<div class="refsect2">
-<a name="gst-mpegts-descriptor-parse-dvb-content"></a><h3>gst_mpegts_descriptor_parse_dvb_content ()</h3>
-<pre class="programlisting"><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
-gst_mpegts_descriptor_parse_dvb_content
- (<em class="parameter"><code>const <a class="link" href="gst-plugins-bad-libs-Base-MPEG-TS-descriptors.html#GstMpegtsDescriptor"><span class="type">GstMpegtsDescriptor</span></a> *descriptor</code></em>,
- <em class="parameter"><code><a href="/usr/share/gtk-doc/html/glibglib-Pointer-Arrays.html#GPtrArray"><span class="type">GPtrArray</span></a> **content</code></em>);</pre>
-<p>Extracts the DVB content information from <em class="parameter"><code>descriptor</code></em>
-.</p>
-<div class="refsect3">
-<a name="gst-mpegts-descriptor-parse-dvb-content.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="parameter_name"><p>descriptor</p></td>
-<td class="parameter_description"><p>a <a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GST-MTS-DESC-DVB-CONTENT:CAPS"><code class="literal">GST_MTS_DESC_DVB_CONTENT</code></a> <a class="link" href="gst-plugins-bad-libs-Base-MPEG-TS-descriptors.html#GstMpegtsDescriptor"><span class="type">GstMpegtsDescriptor</span></a></p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>content</p></td>
-<td class="parameter_description"><p> <a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GstMpegtsContent" title="struct GstMpegtsContent"><span class="type">GstMpegtsContent</span></a>. </p></td>
-<td class="parameter_annotations"><span class="annotation">[<acronym title="Parameter for returning results. Default is transfer full."><span class="acronym">out</span></acronym>][<acronym title="Free data after the code is done."><span class="acronym">transfer full</span></acronym>][<acronym title="Generics and defining elements of containers and arrays."><span class="acronym">element-type</span></acronym> GstMpegtsContent]</span></td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<div class="refsect3">
-<a name="gst-mpegts-descriptor-parse-dvb-content.returns"></a><h4>Returns</h4>
-<p> <a href="/usr/share/gtk-doc/html/glibglib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if the parsing happened correctly, else <a href="/usr/share/gtk-doc/html/glibglib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a>.</p>
-</div>
-</div>
-<hr>
-<div class="refsect2">
-<a name="gst-mpegts-dvb-component-descriptor-free"></a><h3>gst_mpegts_dvb_component_descriptor_free ()</h3>
-<pre class="programlisting"><span class="returnvalue">void</span>
-gst_mpegts_dvb_component_descriptor_free
- (<em class="parameter"><code><a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GstMpegtsComponentDescriptor" title="struct GstMpegtsComponentDescriptor"><span class="type">GstMpegtsComponentDescriptor</span></a> *source</code></em>);</pre>
-</div>
-<hr>
-<div class="refsect2">
-<a name="gst-mpegts-descriptor-parse-dvb-component"></a><h3>gst_mpegts_descriptor_parse_dvb_component ()</h3>
-<pre class="programlisting"><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
-gst_mpegts_descriptor_parse_dvb_component
- (<em class="parameter"><code>const <a class="link" href="gst-plugins-bad-libs-Base-MPEG-TS-descriptors.html#GstMpegtsDescriptor"><span class="type">GstMpegtsDescriptor</span></a> *descriptor</code></em>,
- <em class="parameter"><code><a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GstMpegtsComponentDescriptor" title="struct GstMpegtsComponentDescriptor"><span class="type">GstMpegtsComponentDescriptor</span></a> **res</code></em>);</pre>
-<p>Extracts the DVB component information from <em class="parameter"><code>descriptor</code></em>
-.</p>
-<div class="refsect3">
-<a name="gst-mpegts-descriptor-parse-dvb-component.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="parameter_name"><p>descriptor</p></td>
-<td class="parameter_description"><p>a <a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GST-MTS-DESC-DVB-COMPONENT:CAPS"><code class="literal">GST_MTS_DESC_DVB_COMPONENT</code></a> <a class="link" href="gst-plugins-bad-libs-Base-MPEG-TS-descriptors.html#GstMpegtsDescriptor"><span class="type">GstMpegtsDescriptor</span></a></p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>res</p></td>
-<td class="parameter_description"><p> the <a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GstMpegtsComponentDescriptor" title="struct GstMpegtsComponentDescriptor"><span class="type">GstMpegtsComponentDescriptor</span></a> to fill. </p></td>
-<td class="parameter_annotations"><span class="annotation">[<acronym title="Parameter for returning results. Default is transfer full."><span class="acronym">out</span></acronym>][<acronym title="Free data after the code is done."><span class="acronym">transfer full</span></acronym>]</span></td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<div class="refsect3">
-<a name="gst-mpegts-descriptor-parse-dvb-component.returns"></a><h4>Returns</h4>
-<p> <a href="/usr/share/gtk-doc/html/glibglib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if parsing succeeded, else <a href="/usr/share/gtk-doc/html/glibglib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a>.</p>
-</div>
-</div>
-<hr>
-<div class="refsect2">
-<a name="gst-mpegts-extended-event-descriptor-free"></a><h3>gst_mpegts_extended_event_descriptor_free ()</h3>
-<pre class="programlisting"><span class="returnvalue">void</span>
-gst_mpegts_extended_event_descriptor_free
- (<em class="parameter"><code><a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GstMpegtsExtendedEventDescriptor" title="struct GstMpegtsExtendedEventDescriptor"><span class="type">GstMpegtsExtendedEventDescriptor</span></a> *source</code></em>);</pre>
-</div>
-<hr>
-<div class="refsect2">
-<a name="gst-mpegts-descriptor-parse-dvb-extended-event"></a><h3>gst_mpegts_descriptor_parse_dvb_extended_event ()</h3>
-<pre class="programlisting"><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
-gst_mpegts_descriptor_parse_dvb_extended_event
- (<em class="parameter"><code>const <a class="link" href="gst-plugins-bad-libs-Base-MPEG-TS-descriptors.html#GstMpegtsDescriptor"><span class="type">GstMpegtsDescriptor</span></a> *descriptor</code></em>,
- <em class="parameter"><code><a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GstMpegtsExtendedEventDescriptor" title="struct GstMpegtsExtendedEventDescriptor"><span class="type">GstMpegtsExtendedEventDescriptor</span></a> **res</code></em>);</pre>
-<p>Extracts the DVB extended event information from <em class="parameter"><code>descriptor</code></em>
-.</p>
-<div class="refsect3">
-<a name="gst-mpegts-descriptor-parse-dvb-extended-event.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="parameter_name"><p>descriptor</p></td>
-<td class="parameter_description"><p>a <a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GST-MTS-DESC-DVB-EXTENDED-EVENT:CAPS"><code class="literal">GST_MTS_DESC_DVB_EXTENDED_EVENT</code></a> <a class="link" href="gst-plugins-bad-libs-Base-MPEG-TS-descriptors.html#GstMpegtsDescriptor"><span class="type">GstMpegtsDescriptor</span></a></p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>res</p></td>
-<td class="parameter_description"><p> the <a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GstMpegtsExtendedEventDescriptor" title="struct GstMpegtsExtendedEventDescriptor"><span class="type">GstMpegtsExtendedEventDescriptor</span></a> to fill. </p></td>
-<td class="parameter_annotations"><span class="annotation">[<acronym title="Parameter for returning results. Default is transfer full."><span class="acronym">out</span></acronym>][<acronym title="Free data after the code is done."><span class="acronym">transfer full</span></acronym>]</span></td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<div class="refsect3">
-<a name="gst-mpegts-descriptor-parse-dvb-extended-event.returns"></a><h4>Returns</h4>
-<p> <a href="/usr/share/gtk-doc/html/glibglib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if parsing succeeded, else <a href="/usr/share/gtk-doc/html/glibglib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a>.</p>
-</div>
-</div>
-<hr>
-<div class="refsect2">
-<a name="gst-mpegts-descriptor-parse-satellite-delivery-system"></a><h3>gst_mpegts_descriptor_parse_satellite_delivery_system ()</h3>
-<pre class="programlisting"><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
-gst_mpegts_descriptor_parse_satellite_delivery_system
- (<em class="parameter"><code>const <a class="link" href="gst-plugins-bad-libs-Base-MPEG-TS-descriptors.html#GstMpegtsDescriptor"><span class="type">GstMpegtsDescriptor</span></a> *descriptor</code></em>,
- <em class="parameter"><code><a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GstMpegtsSatelliteDeliverySystemDescriptor" title="struct GstMpegtsSatelliteDeliverySystemDescriptor"><span class="type">GstMpegtsSatelliteDeliverySystemDescriptor</span></a> *res</code></em>);</pre>
-<p>Extracts the satellite delivery system information from <em class="parameter"><code>descriptor</code></em>
-.</p>
-<div class="refsect3">
-<a name="gst-mpegts-descriptor-parse-satellite-delivery-system.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="parameter_name"><p>descriptor</p></td>
-<td class="parameter_description"><p>a <a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GST-MTS-DESC-DVB-SATELLITE-DELIVERY-SYSTEM:CAPS"><code class="literal">GST_MTS_DESC_DVB_SATELLITE_DELIVERY_SYSTEM</code></a> <a class="link" href="gst-plugins-bad-libs-Base-MPEG-TS-descriptors.html#GstMpegtsDescriptor"><span class="type">GstMpegtsDescriptor</span></a></p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>res</p></td>
-<td class="parameter_description"><p> the <a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GstMpegtsSatelliteDeliverySystemDescriptor" title="struct GstMpegtsSatelliteDeliverySystemDescriptor"><span class="type">GstMpegtsSatelliteDeliverySystemDescriptor</span></a> to fill. </p></td>
-<td class="parameter_annotations"><span class="annotation">[<acronym title="Parameter for returning results. Default is transfer full."><span class="acronym">out</span></acronym>][<acronym title="Don't free data after the code is done."><span class="acronym">transfer none</span></acronym>]</span></td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<div class="refsect3">
-<a name="gst-mpegts-descriptor-parse-satellite-delivery-system.returns"></a><h4>Returns</h4>
-<p> <a href="/usr/share/gtk-doc/html/glibglib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if parsing succeeded, else <a href="/usr/share/gtk-doc/html/glibglib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a>.</p>
-</div>
-</div>
-<hr>
-<div class="refsect2">
-<a name="gst-mpegts-descriptor-parse-cable-delivery-system"></a><h3>gst_mpegts_descriptor_parse_cable_delivery_system ()</h3>
-<pre class="programlisting"><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
-gst_mpegts_descriptor_parse_cable_delivery_system
- (<em class="parameter"><code>const <a class="link" href="gst-plugins-bad-libs-Base-MPEG-TS-descriptors.html#GstMpegtsDescriptor"><span class="type">GstMpegtsDescriptor</span></a> *descriptor</code></em>,
- <em class="parameter"><code><a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GstMpegtsCableDeliverySystemDescriptor" title="struct GstMpegtsCableDeliverySystemDescriptor"><span class="type">GstMpegtsCableDeliverySystemDescriptor</span></a> *res</code></em>);</pre>
-<p>Extracts the cable delivery system information from <em class="parameter"><code>descriptor</code></em>
-.</p>
-<div class="refsect3">
-<a name="gst-mpegts-descriptor-parse-cable-delivery-system.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="parameter_name"><p>descriptor</p></td>
-<td class="parameter_description"><p>a <a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GST-MTS-DESC-DVB-CABLE-DELIVERY-SYSTEM:CAPS"><code class="literal">GST_MTS_DESC_DVB_CABLE_DELIVERY_SYSTEM</code></a> <a class="link" href="gst-plugins-bad-libs-Base-MPEG-TS-descriptors.html#GstMpegtsDescriptor"><span class="type">GstMpegtsDescriptor</span></a></p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>res</p></td>
-<td class="parameter_description"><p> the <a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GstMpegtsCableDeliverySystemDescriptor" title="struct GstMpegtsCableDeliverySystemDescriptor"><span class="type">GstMpegtsCableDeliverySystemDescriptor</span></a> to fill. </p></td>
-<td class="parameter_annotations"><span class="annotation">[<acronym title="Parameter for returning results. Default is transfer full."><span class="acronym">out</span></acronym>][<acronym title="Don't free data after the code is done."><span class="acronym">transfer none</span></acronym>]</span></td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<div class="refsect3">
-<a name="gst-mpegts-descriptor-parse-cable-delivery-system.returns"></a><h4>Returns</h4>
-<p> <a href="/usr/share/gtk-doc/html/glibglib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if parsing succeeded, else <a href="/usr/share/gtk-doc/html/glibglib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a>.</p>
-</div>
-</div>
-<hr>
-<div class="refsect2">
-<a name="gst-mpegts-descriptor-parse-terrestrial-delivery-system"></a><h3>gst_mpegts_descriptor_parse_terrestrial_delivery_system ()</h3>
-<pre class="programlisting"><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
-gst_mpegts_descriptor_parse_terrestrial_delivery_system
- (<em class="parameter"><code>const <a class="link" href="gst-plugins-bad-libs-Base-MPEG-TS-descriptors.html#GstMpegtsDescriptor"><span class="type">GstMpegtsDescriptor</span></a> *descriptor</code></em>,
- <em class="parameter"><code><a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GstMpegtsTerrestrialDeliverySystemDescriptor" title="struct GstMpegtsTerrestrialDeliverySystemDescriptor"><span class="type">GstMpegtsTerrestrialDeliverySystemDescriptor</span></a> *res</code></em>);</pre>
-<p>Parses out the terrestrial delivery system from the <em class="parameter"><code>descriptor</code></em>
-.</p>
-<div class="refsect3">
-<a name="gst-mpegts-descriptor-parse-terrestrial-delivery-system.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="parameter_name"><p>descriptor</p></td>
-<td class="parameter_description"><p>a <a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GST-MTS-DESC-DVB-TERRESTRIAL-DELIVERY-SYSTEM:CAPS"><code class="literal">GST_MTS_DESC_DVB_TERRESTRIAL_DELIVERY_SYSTEM</code></a> <a class="link" href="gst-plugins-bad-libs-Base-MPEG-TS-descriptors.html#GstMpegtsDescriptor"><span class="type">GstMpegtsDescriptor</span></a></p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>res</p></td>
-<td class="parameter_description"><p> <a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GstMpegtsTerrestrialDeliverySystemDescriptor" title="struct GstMpegtsTerrestrialDeliverySystemDescriptor"><span class="type">GstMpegtsTerrestrialDeliverySystemDescriptor</span></a>. </p></td>
-<td class="parameter_annotations"><span class="annotation">[<acronym title="Parameter for returning results. Default is transfer full."><span class="acronym">out</span></acronym>][<acronym title="Don't free data after the code is done."><span class="acronym">transfer none</span></acronym>]</span></td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<div class="refsect3">
-<a name="gst-mpegts-descriptor-parse-terrestrial-delivery-system.returns"></a><h4>Returns</h4>
-<p> <a href="/usr/share/gtk-doc/html/glibglib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if the parsing happened correctly, else <a href="/usr/share/gtk-doc/html/glibglib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a>.</p>
-</div>
-</div>
-<hr>
-<div class="refsect2">
-<a name="gst-mpegts-t2-delivery-system-descriptor-free"></a><h3>gst_mpegts_t2_delivery_system_descriptor_free ()</h3>
-<pre class="programlisting"><span class="returnvalue">void</span>
-gst_mpegts_t2_delivery_system_descriptor_free
- (<em class="parameter"><code><a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GstMpegtsT2DeliverySystemDescriptor" title="struct GstMpegtsT2DeliverySystemDescriptor"><span class="type">GstMpegtsT2DeliverySystemDescriptor</span></a> *source</code></em>);</pre>
-</div>
-<hr>
-<div class="refsect2">
-<a name="gst-mpegts-descriptor-parse-dvb-t2-delivery-system"></a><h3>gst_mpegts_descriptor_parse_dvb_t2_delivery_system ()</h3>
-<pre class="programlisting"><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
-gst_mpegts_descriptor_parse_dvb_t2_delivery_system
- (<em class="parameter"><code>const <a class="link" href="gst-plugins-bad-libs-Base-MPEG-TS-descriptors.html#GstMpegtsDescriptor"><span class="type">GstMpegtsDescriptor</span></a> *descriptor</code></em>,
- <em class="parameter"><code><a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GstMpegtsT2DeliverySystemDescriptor" title="struct GstMpegtsT2DeliverySystemDescriptor"><span class="type">GstMpegtsT2DeliverySystemDescriptor</span></a> **res</code></em>);</pre>
-<p>Parses out the DVB-T2 delivery system from the <em class="parameter"><code>descriptor</code></em>
-.</p>
-<div class="refsect3">
-<a name="gst-mpegts-descriptor-parse-dvb-t2-delivery-system.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="parameter_name"><p>descriptor</p></td>
-<td class="parameter_description"><p>a <a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GST-MTS-DESC-EXT-DVB-T2-DELIVERY-SYSTEM:CAPS"><code class="literal">GST_MTS_DESC_EXT_DVB_T2_DELIVERY_SYSTEM</code></a> <a class="link" href="gst-plugins-bad-libs-Base-MPEG-TS-descriptors.html#GstMpegtsDescriptor"><span class="type">GstMpegtsDescriptor</span></a></p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>res</p></td>
-<td class="parameter_description"><p> <a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GstMpegtsT2DeliverySystemDescriptor" title="struct GstMpegtsT2DeliverySystemDescriptor"><span class="type">GstMpegtsT2DeliverySystemDescriptor</span></a>. </p></td>
-<td class="parameter_annotations"><span class="annotation">[<acronym title="Parameter for returning results. Default is transfer full."><span class="acronym">out</span></acronym>][<acronym title="Free data after the code is done."><span class="acronym">transfer full</span></acronym>]</span></td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<div class="refsect3">
-<a name="gst-mpegts-descriptor-parse-dvb-t2-delivery-system.returns"></a><h4>Returns</h4>
-<p> <a href="/usr/share/gtk-doc/html/glibglib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if the parsing happened correctly, else <a href="/usr/share/gtk-doc/html/glibglib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a>.</p>
-</div>
-</div>
-<hr>
-<div class="refsect2">
-<a name="gst-mpegts-descriptor-parse-dvb-short-event"></a><h3>gst_mpegts_descriptor_parse_dvb_short_event ()</h3>
-<pre class="programlisting"><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
-gst_mpegts_descriptor_parse_dvb_short_event
- (<em class="parameter"><code>const <a class="link" href="gst-plugins-bad-libs-Base-MPEG-TS-descriptors.html#GstMpegtsDescriptor"><span class="type">GstMpegtsDescriptor</span></a> *descriptor</code></em>,
- <em class="parameter"><code><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gchar"><span class="type">gchar</span></a> **language_code</code></em>,
- <em class="parameter"><code><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gchar"><span class="type">gchar</span></a> **event_name</code></em>,
- <em class="parameter"><code><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gchar"><span class="type">gchar</span></a> **text</code></em>);</pre>
-<p>Extracts the DVB short event information from <em class="parameter"><code>descriptor</code></em>
-.</p>
-<div class="refsect3">
-<a name="gst-mpegts-descriptor-parse-dvb-short-event.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="parameter_name"><p>descriptor</p></td>
-<td class="parameter_description"><p>a <a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GST-MTS-DESC-DVB-SHORT-EVENT:CAPS"><code class="literal">GST_MTS_DESC_DVB_SHORT_EVENT</code></a> <a class="link" href="gst-plugins-bad-libs-Base-MPEG-TS-descriptors.html#GstMpegtsDescriptor"><span class="type">GstMpegtsDescriptor</span></a></p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>language_code</p></td>
-<td class="parameter_description"><p> the language code. </p></td>
-<td class="parameter_annotations"><span class="annotation">[<acronym title="Parameter for returning results. Default is transfer full."><span class="acronym">out</span></acronym>][<acronym title="Free data after the code is done."><span class="acronym">transfer full</span></acronym>][<acronym title="NULL is OK, both for passing and for returning."><span class="acronym">allow-none</span></acronym>]</span></td>
-</tr>
-<tr>
-<td class="parameter_name"><p>event_name</p></td>
-<td class="parameter_description"><p> the event name. </p></td>
-<td class="parameter_annotations"><span class="annotation">[<acronym title="Parameter for returning results. Default is transfer full."><span class="acronym">out</span></acronym>][<acronym title="Free data after the code is done."><span class="acronym">transfer full</span></acronym>][<acronym title="NULL is OK, both for passing and for returning."><span class="acronym">allow-none</span></acronym>]</span></td>
-</tr>
-<tr>
-<td class="parameter_name"><p>text</p></td>
-<td class="parameter_description"><p> the event text. </p></td>
-<td class="parameter_annotations"><span class="annotation">[<acronym title="Parameter for returning results. Default is transfer full."><span class="acronym">out</span></acronym>][<acronym title="Free data after the code is done."><span class="acronym">transfer full</span></acronym>][<acronym title="NULL is OK, both for passing and for returning."><span class="acronym">allow-none</span></acronym>]</span></td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<div class="refsect3">
-<a name="gst-mpegts-descriptor-parse-dvb-short-event.returns"></a><h4>Returns</h4>
-<p> <a href="/usr/share/gtk-doc/html/glibglib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if parsing succeeded, else <a href="/usr/share/gtk-doc/html/glibglib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a>.</p>
-</div>
-</div>
-<hr>
-<div class="refsect2">
-<a name="gst-mpegts-descriptor-parse-dvb-network-name"></a><h3>gst_mpegts_descriptor_parse_dvb_network_name ()</h3>
-<pre class="programlisting"><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
-gst_mpegts_descriptor_parse_dvb_network_name
- (<em class="parameter"><code>const <a class="link" href="gst-plugins-bad-libs-Base-MPEG-TS-descriptors.html#GstMpegtsDescriptor"><span class="type">GstMpegtsDescriptor</span></a> *descriptor</code></em>,
- <em class="parameter"><code><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gchar"><span class="type">gchar</span></a> **name</code></em>);</pre>
-<p>Parses out the dvb network name from the <em class="parameter"><code>descriptor</code></em>
-:</p>
-<div class="refsect3">
-<a name="gst-mpegts-descriptor-parse-dvb-network-name.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="parameter_name"><p>descriptor</p></td>
-<td class="parameter_description"><p>a <a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GST-MTS-DESC-DVB-NETWORK-NAME:CAPS"><code class="literal">GST_MTS_DESC_DVB_NETWORK_NAME</code></a> <a class="link" href="gst-plugins-bad-libs-Base-MPEG-TS-descriptors.html#GstMpegtsDescriptor"><span class="type">GstMpegtsDescriptor</span></a></p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>name</p></td>
-<td class="parameter_description"><p> the extracted name. </p></td>
-<td class="parameter_annotations"><span class="annotation">[<acronym title="Parameter for returning results. Default is transfer full."><span class="acronym">out</span></acronym>][<acronym title="Free data after the code is done."><span class="acronym">transfer full</span></acronym>]</span></td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<div class="refsect3">
-<a name="gst-mpegts-descriptor-parse-dvb-network-name.returns"></a><h4>Returns</h4>
-<p> <a href="/usr/share/gtk-doc/html/glibglib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if the parsing happened correctly, else <a href="/usr/share/gtk-doc/html/glibglib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a>.</p>
-</div>
-</div>
-<hr>
-<div class="refsect2">
-<a name="gst-mpegts-descriptor-from-dvb-network-name"></a><h3>gst_mpegts_descriptor_from_dvb_network_name ()</h3>
-<pre class="programlisting"><a class="link" href="gst-plugins-bad-libs-Base-MPEG-TS-descriptors.html#GstMpegtsDescriptor"><span class="returnvalue">GstMpegtsDescriptor</span></a> *
-gst_mpegts_descriptor_from_dvb_network_name
- (<em class="parameter"><code>const <a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *name</code></em>);</pre>
-<p>Creates a <a class="link" href="gst-plugins-bad-libs-Base-MPEG-TS-descriptors.html#GstMpegtsDescriptor"><span class="type">GstMpegtsDescriptor</span></a> to be a <a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GST-MTS-DESC-DVB-NETWORK-NAME:CAPS"><code class="literal">GST_MTS_DESC_DVB_NETWORK_NAME</code></a>,
-with the network name <em class="parameter"><code>name</code></em>
-. The data field of the <a class="link" href="gst-plugins-bad-libs-Base-MPEG-TS-descriptors.html#GstMpegtsDescriptor"><span class="type">GstMpegtsDescriptor</span></a>
-will be allocated, and transferred to the caller.</p>
-<div class="refsect3">
-<a name="gst-mpegts-descriptor-from-dvb-network-name.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody><tr>
-<td class="parameter_name"><p>name</p></td>
-<td class="parameter_description"><p>the network name to set</p></td>
-<td class="parameter_annotations"> </td>
-</tr></tbody>
-</table></div>
-</div>
-<div class="refsect3">
-<a name="gst-mpegts-descriptor-from-dvb-network-name.returns"></a><h4>Returns</h4>
-<p> the <a class="link" href="gst-plugins-bad-libs-Base-MPEG-TS-descriptors.html#GstMpegtsDescriptor"><span class="type">GstMpegtsDescriptor</span></a> or <a href="/usr/share/gtk-doc/html/glibglib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a> on fail. </p>
-<p><span class="annotation">[<acronym title="Free data after the code is done."><span class="acronym">transfer full</span></acronym>]</span></p>
-</div>
-</div>
-<hr>
-<div class="refsect2">
-<a name="gst-mpegts-descriptor-parse-dvb-service"></a><h3>gst_mpegts_descriptor_parse_dvb_service ()</h3>
-<pre class="programlisting"><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
-gst_mpegts_descriptor_parse_dvb_service
- (<em class="parameter"><code>const <a class="link" href="gst-plugins-bad-libs-Base-MPEG-TS-descriptors.html#GstMpegtsDescriptor"><span class="type">GstMpegtsDescriptor</span></a> *descriptor</code></em>,
- <em class="parameter"><code><a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GstMpegtsDVBServiceType" title="enum GstMpegtsDVBServiceType"><span class="type">GstMpegtsDVBServiceType</span></a> *service_type</code></em>,
- <em class="parameter"><code><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gchar"><span class="type">gchar</span></a> **service_name</code></em>,
- <em class="parameter"><code><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gchar"><span class="type">gchar</span></a> **provider_name</code></em>);</pre>
-<p>Extracts the dvb service information from <em class="parameter"><code>descriptor</code></em>
-.</p>
-<div class="refsect3">
-<a name="gst-mpegts-descriptor-parse-dvb-service.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="parameter_name"><p>descriptor</p></td>
-<td class="parameter_description"><p>a <a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GST-MTS-DESC-DVB-SERVICE:CAPS"><code class="literal">GST_MTS_DESC_DVB_SERVICE</code></a> <a class="link" href="gst-plugins-bad-libs-Base-MPEG-TS-descriptors.html#GstMpegtsDescriptor"><span class="type">GstMpegtsDescriptor</span></a></p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>service_type</p></td>
-<td class="parameter_description"><p> the service type. </p></td>
-<td class="parameter_annotations"><span class="annotation">[<acronym title="Parameter for returning results. Default is transfer full."><span class="acronym">out</span></acronym>][<acronym title="NULL is OK, both for passing and for returning."><span class="acronym">allow-none</span></acronym>]</span></td>
-</tr>
-<tr>
-<td class="parameter_name"><p>service_name</p></td>
-<td class="parameter_description"><p> the service name. </p></td>
-<td class="parameter_annotations"><span class="annotation">[<acronym title="Parameter for returning results. Default is transfer full."><span class="acronym">out</span></acronym>][<acronym title="Free data after the code is done."><span class="acronym">transfer full</span></acronym>][<acronym title="NULL is OK, both for passing and for returning."><span class="acronym">allow-none</span></acronym>]</span></td>
-</tr>
-<tr>
-<td class="parameter_name"><p>provider_name</p></td>
-<td class="parameter_description"><p> the provider name. </p></td>
-<td class="parameter_annotations"><span class="annotation">[<acronym title="Parameter for returning results. Default is transfer full."><span class="acronym">out</span></acronym>][<acronym title="Free data after the code is done."><span class="acronym">transfer full</span></acronym>][<acronym title="NULL is OK, both for passing and for returning."><span class="acronym">allow-none</span></acronym>]</span></td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<div class="refsect3">
-<a name="gst-mpegts-descriptor-parse-dvb-service.returns"></a><h4>Returns</h4>
-<p> <a href="/usr/share/gtk-doc/html/glibglib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if parsing succeeded, else <a href="/usr/share/gtk-doc/html/glibglib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a>.</p>
-</div>
-</div>
-<hr>
-<div class="refsect2">
-<a name="gst-mpegts-descriptor-from-dvb-service"></a><h3>gst_mpegts_descriptor_from_dvb_service ()</h3>
-<pre class="programlisting"><a class="link" href="gst-plugins-bad-libs-Base-MPEG-TS-descriptors.html#GstMpegtsDescriptor"><span class="returnvalue">GstMpegtsDescriptor</span></a> *
-gst_mpegts_descriptor_from_dvb_service
- (<em class="parameter"><code><a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GstMpegtsDVBServiceType" title="enum GstMpegtsDVBServiceType"><span class="type">GstMpegtsDVBServiceType</span></a> service_type</code></em>,
- <em class="parameter"><code>const <a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *service_name</code></em>,
- <em class="parameter"><code>const <a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *service_provider</code></em>);</pre>
-<p>Fills a <a class="link" href="gst-plugins-bad-libs-Base-MPEG-TS-descriptors.html#GstMpegtsDescriptor"><span class="type">GstMpegtsDescriptor</span></a> to be a <a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GST-MTS-DESC-DVB-SERVICE:CAPS"><code class="literal">GST_MTS_DESC_DVB_SERVICE</code></a>.
-The data field of the <a class="link" href="gst-plugins-bad-libs-Base-MPEG-TS-descriptors.html#GstMpegtsDescriptor"><span class="type">GstMpegtsDescriptor</span></a> will be allocated,
-and transferred to the caller.</p>
-<div class="refsect3">
-<a name="gst-mpegts-descriptor-from-dvb-service.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="parameter_name"><p>service_type</p></td>
-<td class="parameter_description"><p>Service type defined as a <a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GstMpegtsDVBServiceType" title="enum GstMpegtsDVBServiceType"><span class="type">GstMpegtsDVBServiceType</span></a></p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>service_name</p></td>
-<td class="parameter_description"><p> Name of the service. </p></td>
-<td class="parameter_annotations"><span class="annotation">[<acronym title="NULL is OK, both for passing and for returning."><span class="acronym">allow-none</span></acronym>]</span></td>
-</tr>
-<tr>
-<td class="parameter_name"><p>service_provider</p></td>
-<td class="parameter_description"><p> Name of the service provider. </p></td>
-<td class="parameter_annotations"><span class="annotation">[<acronym title="NULL is OK, both for passing and for returning."><span class="acronym">allow-none</span></acronym>]</span></td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<div class="refsect3">
-<a name="gst-mpegts-descriptor-from-dvb-service.returns"></a><h4>Returns</h4>
-<p> the <a class="link" href="gst-plugins-bad-libs-Base-MPEG-TS-descriptors.html#GstMpegtsDescriptor"><span class="type">GstMpegtsDescriptor</span></a> or <a href="/usr/share/gtk-doc/html/glibglib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a> on fail. </p>
-<p><span class="annotation">[<acronym title="Free data after the code is done."><span class="acronym">transfer full</span></acronym>]</span></p>
-</div>
-</div>
-<hr>
-<div class="refsect2">
-<a name="gst-mpegts-descriptor-parse-dvb-teletext-idx"></a><h3>gst_mpegts_descriptor_parse_dvb_teletext_idx ()</h3>
-<pre class="programlisting"><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
-gst_mpegts_descriptor_parse_dvb_teletext_idx
- (<em class="parameter"><code>const <a class="link" href="gst-plugins-bad-libs-Base-MPEG-TS-descriptors.html#GstMpegtsDescriptor"><span class="type">GstMpegtsDescriptor</span></a> *descriptor</code></em>,
- <em class="parameter"><code><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint"><span class="type">guint</span></a> idx</code></em>,
- <em class="parameter"><code><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gchar"><span class="type">gchar</span></a> **language_code</code></em>,
- <em class="parameter"><code><a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GstMpegtsDVBTeletextType" title="enum GstMpegtsDVBTeletextType"><span class="type">GstMpegtsDVBTeletextType</span></a> *teletext_type</code></em>,
- <em class="parameter"><code><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint8"><span class="type">guint8</span></a> *magazine_number</code></em>,
- <em class="parameter"><code><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint8"><span class="type">guint8</span></a> *page_number</code></em>);</pre>
-<p>Parses teletext number <em class="parameter"><code>idx</code></em>
- in the <em class="parameter"><code>descriptor</code></em>
-. The language is in ISO639 format.</p>
-<div class="refsect3">
-<a name="gst-mpegts-descriptor-parse-dvb-teletext-idx.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="parameter_name"><p>descriptor</p></td>
-<td class="parameter_description"><p>a <a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GST-MTS-DESC-DVB-TELETEXT:CAPS"><code class="literal">GST_MTS_DESC_DVB_TELETEXT</code></a> <a class="link" href="gst-plugins-bad-libs-Base-MPEG-TS-descriptors.html#GstMpegtsDescriptor"><span class="type">GstMpegtsDescriptor</span></a></p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>idx</p></td>
-<td class="parameter_description"><p>The id of the teletext to get</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>language_code</p></td>
-<td class="parameter_description"><p> a null-terminated string. </p></td>
-<td class="parameter_annotations"><span class="annotation">[<acronym title="Parameter for returning results. Default is transfer full."><span class="acronym">out</span></acronym>][<acronym title="Free data after the code is done."><span class="acronym">transfer full</span></acronym>][<acronym title="NULL is OK, both for passing and for returning."><span class="acronym">allow-none</span></acronym>]</span></td>
-</tr>
-<tr>
-<td class="parameter_name"><p>teletext_type</p></td>
-<td class="parameter_description"><p> <a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GstMpegtsDVBTeletextType" title="enum GstMpegtsDVBTeletextType"><span class="type">GstMpegtsDVBTeletextType</span></a>. </p></td>
-<td class="parameter_annotations"><span class="annotation">[<acronym title="Parameter for returning results. Default is transfer full."><span class="acronym">out</span></acronym>][<acronym title="NULL is OK, both for passing and for returning."><span class="acronym">allow-none</span></acronym>]</span></td>
-</tr>
-<tr>
-<td class="parameter_name"><p>magazine_number</p></td>
-<td class="parameter_description"><p>. </p></td>
-<td class="parameter_annotations"><span class="annotation">[<acronym title="Parameter for returning results. Default is transfer full."><span class="acronym">out</span></acronym>][<acronym title="NULL is OK, both for passing and for returning."><span class="acronym">allow-none</span></acronym>]</span></td>
-</tr>
-<tr>
-<td class="parameter_name"><p>page_number</p></td>
-<td class="parameter_description"><p>. </p></td>
-<td class="parameter_annotations"><span class="annotation">[<acronym title="Parameter for returning results. Default is transfer full."><span class="acronym">out</span></acronym>][<acronym title="NULL is OK, both for passing and for returning."><span class="acronym">allow-none</span></acronym>]</span></td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<div class="refsect3">
-<a name="gst-mpegts-descriptor-parse-dvb-teletext-idx.returns"></a><h4>Returns</h4>
-<p> FALSE on out-of-bounds and errors</p>
-</div>
-</div>
-<hr>
-<div class="refsect2">
-<a name="gst-mpegts-descriptor-parse-dvb-teletext-nb"></a><h3>gst_mpegts_descriptor_parse_dvb_teletext_nb ()</h3>
-<pre class="programlisting"><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint"><span class="returnvalue">guint</span></a>
-gst_mpegts_descriptor_parse_dvb_teletext_nb
- (<em class="parameter"><code>const <a class="link" href="gst-plugins-bad-libs-Base-MPEG-TS-descriptors.html#GstMpegtsDescriptor"><span class="type">GstMpegtsDescriptor</span></a> *descriptor</code></em>);</pre>
-<p>Find the number of teletext entries in <em class="parameter"><code>descriptor</code></em>
-</p>
-<div class="refsect3">
-<a name="gst-mpegts-descriptor-parse-dvb-teletext-nb.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody><tr>
-<td class="parameter_name"><p>descriptor</p></td>
-<td class="parameter_description"><p>a <a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GST-MTS-DESC-DVB-TELETEXT:CAPS"><code class="literal">GST_MTS_DESC_DVB_TELETEXT</code></a> <a class="link" href="gst-plugins-bad-libs-Base-MPEG-TS-descriptors.html#GstMpegtsDescriptor"><span class="type">GstMpegtsDescriptor</span></a></p></td>
-<td class="parameter_annotations"> </td>
-</tr></tbody>
-</table></div>
-</div>
-<div class="refsect3">
-<a name="gst-mpegts-descriptor-parse-dvb-teletext-nb.returns"></a><h4>Returns</h4>
-<p> Number of teletext entries</p>
-</div>
-</div>
-<hr>
-<div class="refsect2">
-<a name="gst-mpegts-descriptor-parse-dvb-subtitling-idx"></a><h3>gst_mpegts_descriptor_parse_dvb_subtitling_idx ()</h3>
-<pre class="programlisting"><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
-gst_mpegts_descriptor_parse_dvb_subtitling_idx
- (<em class="parameter"><code>const <a class="link" href="gst-plugins-bad-libs-Base-MPEG-TS-descriptors.html#GstMpegtsDescriptor"><span class="type">GstMpegtsDescriptor</span></a> *descriptor</code></em>,
- <em class="parameter"><code><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint"><span class="type">guint</span></a> idx</code></em>,
- <em class="parameter"><code><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gchar"><span class="type">gchar</span></a> **lang</code></em>,
- <em class="parameter"><code><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint8"><span class="type">guint8</span></a> *type</code></em>,
- <em class="parameter"><code><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint16"><span class="type">guint16</span></a> *composition_page_id</code></em>,
- <em class="parameter"><code><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint16"><span class="type">guint16</span></a> *ancillary_page_id</code></em>);</pre>
-<p>Extracts the DVB subtitling informatio from specific table id in <em class="parameter"><code>descriptor</code></em>
-.</p>
-<p>Note: Use <a href="/usr/share/gtk-doc/html/gst-plugins-base-libs-1.0gst-plugins-base-libs-gsttaglanguagecodes.html#gst-tag-get-language-code"><span class="type">gst_tag_get_language_code</span></a> if you want to get the the
-ISO 639-1 language code from the returned ISO 639-2 one.</p>
-<div class="refsect3">
-<a name="gst-mpegts-descriptor-parse-dvb-subtitling-idx.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="parameter_name"><p>descriptor</p></td>
-<td class="parameter_description"><p>a <a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GST-MTS-DESC-DVB-SUBTITLING:CAPS"><code class="literal">GST_MTS_DESC_DVB_SUBTITLING</code></a> <a class="link" href="gst-plugins-bad-libs-Base-MPEG-TS-descriptors.html#GstMpegtsDescriptor"><span class="type">GstMpegtsDescriptor</span></a></p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>idx</p></td>
-<td class="parameter_description"><p>Table id of the entry to parse</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>lang</p></td>
-<td class="parameter_description"><p> the language code. </p></td>
-<td class="parameter_annotations"><span class="annotation">[<acronym title="Parameter for returning results. Default is transfer full."><span class="acronym">out</span></acronym>][<acronym title="Free data after the code is done."><span class="acronym">transfer full</span></acronym>]</span></td>
-</tr>
-<tr>
-<td class="parameter_name"><p>type</p></td>
-<td class="parameter_description"><p> the type of subtitling. </p></td>
-<td class="parameter_annotations"><span class="annotation">[<acronym title="Parameter for returning results. Default is transfer full."><span class="acronym">out</span></acronym>][<acronym title="Don't free data after the code is done."><span class="acronym">transfer none</span></acronym>][<acronym title="NULL is OK, both for passing and for returning."><span class="acronym">allow-none</span></acronym>]</span></td>
-</tr>
-<tr>
-<td class="parameter_name"><p>composition_page_id</p></td>
-<td class="parameter_description"><p> the composition page id. </p></td>
-<td class="parameter_annotations"><span class="annotation">[<acronym title="Parameter for returning results. Default is transfer full."><span class="acronym">out</span></acronym>][<acronym title="Don't free data after the code is done."><span class="acronym">transfer none</span></acronym>][<acronym title="NULL is OK, both for passing and for returning."><span class="acronym">allow-none</span></acronym>]</span></td>
-</tr>
-<tr>
-<td class="parameter_name"><p>ancillary_page_id</p></td>
-<td class="parameter_description"><p> the ancillary page id. </p></td>
-<td class="parameter_annotations"><span class="annotation">[<acronym title="Parameter for returning results. Default is transfer full."><span class="acronym">out</span></acronym>][<acronym title="Don't free data after the code is done."><span class="acronym">transfer none</span></acronym>][<acronym title="NULL is OK, both for passing and for returning."><span class="acronym">allow-none</span></acronym>]</span></td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<div class="refsect3">
-<a name="gst-mpegts-descriptor-parse-dvb-subtitling-idx.returns"></a><h4>Returns</h4>
-<p> <a href="/usr/share/gtk-doc/html/glibglib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if parsing succeeded, else <a href="/usr/share/gtk-doc/html/glibglib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a>.</p>
-</div>
-</div>
-<hr>
-<div class="refsect2">
-<a name="gst-mpegts-descriptor-parse-dvb-subtitling-nb"></a><h3>gst_mpegts_descriptor_parse_dvb_subtitling_nb ()</h3>
-<pre class="programlisting"><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint"><span class="returnvalue">guint</span></a>
-gst_mpegts_descriptor_parse_dvb_subtitling_nb
- (<em class="parameter"><code>const <a class="link" href="gst-plugins-bad-libs-Base-MPEG-TS-descriptors.html#GstMpegtsDescriptor"><span class="type">GstMpegtsDescriptor</span></a> *descriptor</code></em>);</pre>
-<div class="refsect3">
-<a name="gst-mpegts-descriptor-parse-dvb-subtitling-nb.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody><tr>
-<td class="parameter_name"><p>descriptor</p></td>
-<td class="parameter_description"><p>a <a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GST-MTS-DESC-DVB-SUBTITLING:CAPS"><code class="literal">GST_MTS_DESC_DVB_SUBTITLING</code></a> <a class="link" href="gst-plugins-bad-libs-Base-MPEG-TS-descriptors.html#GstMpegtsDescriptor"><span class="type">GstMpegtsDescriptor</span></a></p></td>
-<td class="parameter_annotations"> </td>
-</tr></tbody>
-</table></div>
-</div>
-<div class="refsect3">
-<a name="gst-mpegts-descriptor-parse-dvb-subtitling-nb.returns"></a><h4>Returns</h4>
-<p> The number of entries in <em class="parameter"><code>descriptor</code></em>
-</p>
-</div>
-</div>
-<hr>
-<div class="refsect2">
-<a name="gst-mpegts-descriptor-from-dvb-subtitling"></a><h3>gst_mpegts_descriptor_from_dvb_subtitling ()</h3>
-<pre class="programlisting"><a class="link" href="gst-plugins-bad-libs-Base-MPEG-TS-descriptors.html#GstMpegtsDescriptor"><span class="returnvalue">GstMpegtsDescriptor</span></a> *
-gst_mpegts_descriptor_from_dvb_subtitling
- (<em class="parameter"><code>const <a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *lang</code></em>,
- <em class="parameter"><code><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint8"><span class="type">guint8</span></a> type</code></em>,
- <em class="parameter"><code><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint16"><span class="type">guint16</span></a> composition</code></em>,
- <em class="parameter"><code><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint16"><span class="type">guint16</span></a> ancillary</code></em>);</pre>
-<div class="refsect3">
-<a name="gst-mpegts-descriptor-from-dvb-subtitling.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="parameter_name"><p>lang</p></td>
-<td class="parameter_description"><p> a string containing the ISO639 language. </p></td>
-<td class="parameter_annotations"><span class="annotation">[<acronym title="Don't free data after the code is done."><span class="acronym">transfer none</span></acronym>]</span></td>
-</tr>
-<tr>
-<td class="parameter_name"><p>type</p></td>
-<td class="parameter_description"><p>subtitling type</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>composition</p></td>
-<td class="parameter_description"><p>composition page id</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>ancillary</p></td>
-<td class="parameter_description"><p>ancillary page id</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-</tbody>
-</table></div>
-</div>
-</div>
-<hr>
-<div class="refsect2">
-<a name="gst-mpegts-dvb-linkage-descriptor-free"></a><h3>gst_mpegts_dvb_linkage_descriptor_free ()</h3>
-<pre class="programlisting"><span class="returnvalue">void</span>
-gst_mpegts_dvb_linkage_descriptor_free
- (<em class="parameter"><code><a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GstMpegtsDVBLinkageDescriptor" title="struct GstMpegtsDVBLinkageDescriptor"><span class="type">GstMpegtsDVBLinkageDescriptor</span></a> *source</code></em>);</pre>
-</div>
-<hr>
-<div class="refsect2">
-<a name="gst-mpegts-dvb-linkage-descriptor-get-mobile-hand-over"></a><h3>gst_mpegts_dvb_linkage_descriptor_get_mobile_hand_over ()</h3>
-<pre class="programlisting">const <a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GstMpegtsDVBLinkageMobileHandOver" title="struct GstMpegtsDVBLinkageMobileHandOver"><span class="returnvalue">GstMpegtsDVBLinkageMobileHandOver</span></a> *
-gst_mpegts_dvb_linkage_descriptor_get_mobile_hand_over
- (<em class="parameter"><code>const <a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GstMpegtsDVBLinkageDescriptor" title="struct GstMpegtsDVBLinkageDescriptor"><span class="type">GstMpegtsDVBLinkageDescriptor</span></a> *desc</code></em>);</pre>
-<div class="refsect3">
-<a name="gst-mpegts-dvb-linkage-descriptor-get-mobile-hand-over.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody><tr>
-<td class="parameter_name"><p>desc</p></td>
-<td class="parameter_description"><p>the <a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GstMpegtsDVBLinkageDescriptor" title="struct GstMpegtsDVBLinkageDescriptor"><span class="type">GstMpegtsDVBLinkageDescriptor</span></a></p></td>
-<td class="parameter_annotations"> </td>
-</tr></tbody>
-</table></div>
-</div>
-<div class="refsect3">
-<a name="gst-mpegts-dvb-linkage-descriptor-get-mobile-hand-over.returns"></a><h4>Returns</h4>
-<p> The <a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GstMpegtsDVBLinkageMobileHandOver" title="struct GstMpegtsDVBLinkageMobileHandOver"><span class="type">GstMpegtsDVBLinkageMobileHandOver</span></a> or <a href="/usr/share/gtk-doc/html/glibglib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a> if an error happened</p>
-</div>
-</div>
-<hr>
-<div class="refsect2">
-<a name="gst-mpegts-dvb-linkage-descriptor-get-event"></a><h3>gst_mpegts_dvb_linkage_descriptor_get_event ()</h3>
-<pre class="programlisting">const <a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GstMpegtsDVBLinkageEvent" title="struct GstMpegtsDVBLinkageEvent"><span class="returnvalue">GstMpegtsDVBLinkageEvent</span></a> *
-gst_mpegts_dvb_linkage_descriptor_get_event
- (<em class="parameter"><code>const <a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GstMpegtsDVBLinkageDescriptor" title="struct GstMpegtsDVBLinkageDescriptor"><span class="type">GstMpegtsDVBLinkageDescriptor</span></a> *desc</code></em>);</pre>
-<div class="refsect3">
-<a name="gst-mpegts-dvb-linkage-descriptor-get-event.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody><tr>
-<td class="parameter_name"><p>desc</p></td>
-<td class="parameter_description"><p>the <a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GstMpegtsDVBLinkageDescriptor" title="struct GstMpegtsDVBLinkageDescriptor"><span class="type">GstMpegtsDVBLinkageDescriptor</span></a></p></td>
-<td class="parameter_annotations"> </td>
-</tr></tbody>
-</table></div>
-</div>
-<div class="refsect3">
-<a name="gst-mpegts-dvb-linkage-descriptor-get-event.returns"></a><h4>Returns</h4>
-<p> The <a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GstMpegtsDVBLinkageEvent" title="struct GstMpegtsDVBLinkageEvent"><span class="type">GstMpegtsDVBLinkageEvent</span></a> or <a href="/usr/share/gtk-doc/html/glibglib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a> if an error happened</p>
-</div>
-</div>
-<hr>
-<div class="refsect2">
-<a name="gst-mpegts-dvb-linkage-descriptor-get-extended-event"></a><h3>gst_mpegts_dvb_linkage_descriptor_get_extended_event ()</h3>
-<pre class="programlisting">const <a href="/usr/share/gtk-doc/html/glibglib-Pointer-Arrays.html#GPtrArray"><span class="returnvalue">GPtrArray</span></a> *
-gst_mpegts_dvb_linkage_descriptor_get_extended_event
- (<em class="parameter"><code>const <a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GstMpegtsDVBLinkageDescriptor" title="struct GstMpegtsDVBLinkageDescriptor"><span class="type">GstMpegtsDVBLinkageDescriptor</span></a> *desc</code></em>);</pre>
-<div class="refsect3">
-<a name="gst-mpegts-dvb-linkage-descriptor-get-extended-event.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody><tr>
-<td class="parameter_name"><p>desc</p></td>
-<td class="parameter_description"><p>the <a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GstMpegtsDVBLinkageDescriptor" title="struct GstMpegtsDVBLinkageDescriptor"><span class="type">GstMpegtsDVBLinkageDescriptor</span></a></p></td>
-<td class="parameter_annotations"> </td>
-</tr></tbody>
-</table></div>
-</div>
-<div class="refsect3">
-<a name="gst-mpegts-dvb-linkage-descriptor-get-extended-event.returns"></a><h4>Returns</h4>
-<p> an <a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GstMpegtsDVBLinkageExtendedEvent" title="struct GstMpegtsDVBLinkageExtendedEvent"><span class="type">GstMpegtsDVBLinkageExtendedEvent</span></a> array or <a href="/usr/share/gtk-doc/html/glibglib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a> if an error happened. </p>
-<p><span class="annotation">[<acronym title="Generics and defining elements of containers and arrays."><span class="acronym">element-type</span></acronym> GstMpegtsDVBLinkageExtendedEvent]</span></p>
-</div>
-</div>
-<hr>
-<div class="refsect2">
-<a name="gst-mpegts-descriptor-parse-dvb-linkage"></a><h3>gst_mpegts_descriptor_parse_dvb_linkage ()</h3>
-<pre class="programlisting"><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
-gst_mpegts_descriptor_parse_dvb_linkage
- (<em class="parameter"><code>const <a class="link" href="gst-plugins-bad-libs-Base-MPEG-TS-descriptors.html#GstMpegtsDescriptor"><span class="type">GstMpegtsDescriptor</span></a> *descriptor</code></em>,
- <em class="parameter"><code><a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GstMpegtsDVBLinkageDescriptor" title="struct GstMpegtsDVBLinkageDescriptor"><span class="type">GstMpegtsDVBLinkageDescriptor</span></a> **res</code></em>);</pre>
-<p>Extracts the DVB linkage information from <em class="parameter"><code>descriptor</code></em>
-.</p>
-<div class="refsect3">
-<a name="gst-mpegts-descriptor-parse-dvb-linkage.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="parameter_name"><p>descriptor</p></td>
-<td class="parameter_description"><p>a <a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GST-MTS-DESC-DVB-LINKAGE:CAPS"><code class="literal">GST_MTS_DESC_DVB_LINKAGE</code></a> <a class="link" href="gst-plugins-bad-libs-Base-MPEG-TS-descriptors.html#GstMpegtsDescriptor"><span class="type">GstMpegtsDescriptor</span></a></p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>res</p></td>
-<td class="parameter_description"><p> the <a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GstMpegtsDVBLinkageDescriptor" title="struct GstMpegtsDVBLinkageDescriptor"><span class="type">GstMpegtsDVBLinkageDescriptor</span></a> to fill. </p></td>
-<td class="parameter_annotations"><span class="annotation">[<acronym title="Parameter for returning results. Default is transfer full."><span class="acronym">out</span></acronym>][<acronym title="Free data after the code is done."><span class="acronym">transfer full</span></acronym>]</span></td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<div class="refsect3">
-<a name="gst-mpegts-descriptor-parse-dvb-linkage.returns"></a><h4>Returns</h4>
-<p> <a href="/usr/share/gtk-doc/html/glibglib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if parsing succeeded, else <a href="/usr/share/gtk-doc/html/glibglib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a>.</p>
-</div>
-</div>
-<hr>
-<div class="refsect2">
-<a name="gst-mpegts-descriptor-parse-dvb-private-data-specifier"></a><h3>gst_mpegts_descriptor_parse_dvb_private_data_specifier ()</h3>
-<pre class="programlisting"><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
-gst_mpegts_descriptor_parse_dvb_private_data_specifier
- (<em class="parameter"><code>const <a class="link" href="gst-plugins-bad-libs-Base-MPEG-TS-descriptors.html#GstMpegtsDescriptor"><span class="type">GstMpegtsDescriptor</span></a> *descriptor</code></em>,
- <em class="parameter"><code><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint32"><span class="type">guint32</span></a> *private_data_specifier</code></em>,
- <em class="parameter"><code><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint8"><span class="type">guint8</span></a> **private_data</code></em>,
- <em class="parameter"><code><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint8"><span class="type">guint8</span></a> *length</code></em>);</pre>
-<p>Parses out the private data specifier from the <em class="parameter"><code>descriptor</code></em>
-.</p>
-<div class="refsect3">
-<a name="gst-mpegts-descriptor-parse-dvb-private-data-specifier.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="parameter_name"><p>descriptor</p></td>
-<td class="parameter_description"><p>a <a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GST-MTS-DESC-DVB-PRIVATE-DATA-SPECIFIER:CAPS"><code class="literal">GST_MTS_DESC_DVB_PRIVATE_DATA_SPECIFIER</code></a> <a class="link" href="gst-plugins-bad-libs-Base-MPEG-TS-descriptors.html#GstMpegtsDescriptor"><span class="type">GstMpegtsDescriptor</span></a></p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>private_data_specifier</p></td>
-<td class="parameter_description"><p> the private data specifier id
-registered by http://www.dvbservices.com/. </p></td>
-<td class="parameter_annotations"><span class="annotation">[<acronym title="Parameter for returning results. Default is transfer full."><span class="acronym">out</span></acronym>]</span></td>
-</tr>
-<tr>
-<td class="parameter_name"><p>private_data</p></td>
-<td class="parameter_description"><p> additional data or NULL. </p></td>
-<td class="parameter_annotations"><span class="annotation">[<acronym title="Parameter for returning results. Default is transfer full."><span class="acronym">out</span></acronym>][<acronym title="Free data after the code is done."><span class="acronym">transfer full</span></acronym>][<acronym title="NULL is OK, both for passing and for returning."><span class="acronym">allow-none</span></acronym>]</span></td>
-</tr>
-<tr>
-<td class="parameter_name"><p>length</p></td>
-<td class="parameter_description"><p> length of <code class="literal">private_data</code>. </p></td>
-<td class="parameter_annotations"><span class="annotation">[<acronym title="Parameter for returning results. Default is transfer full."><span class="acronym">out</span></acronym>][<acronym title="NULL is OK, both for passing and for returning."><span class="acronym">allow-none</span></acronym>]</span></td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<div class="refsect3">
-<a name="gst-mpegts-descriptor-parse-dvb-private-data-specifier.returns"></a><h4>Returns</h4>
-<p> <a href="/usr/share/gtk-doc/html/glibglib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if the parsing happened correctly, else <a href="/usr/share/gtk-doc/html/glibglib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a>.</p>
-</div>
-</div>
-<hr>
-<div class="refsect2">
-<a name="gst-mpegts-descriptor-parse-dvb-frequency-list"></a><h3>gst_mpegts_descriptor_parse_dvb_frequency_list ()</h3>
-<pre class="programlisting"><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
-gst_mpegts_descriptor_parse_dvb_frequency_list
- (<em class="parameter"><code>const <a class="link" href="gst-plugins-bad-libs-Base-MPEG-TS-descriptors.html#GstMpegtsDescriptor"><span class="type">GstMpegtsDescriptor</span></a> *descriptor</code></em>,
- <em class="parameter"><code><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a> *offset</code></em>,
- <em class="parameter"><code><a href="/usr/share/gtk-doc/html/glibglib-Arrays.html#GArray"><span class="type">GArray</span></a> **list</code></em>);</pre>
-<p>Parses out a list of frequencies from the <em class="parameter"><code>descriptor</code></em>
-.</p>
-<div class="refsect3">
-<a name="gst-mpegts-descriptor-parse-dvb-frequency-list.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="parameter_name"><p>descriptor</p></td>
-<td class="parameter_description"><p>a <a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GST-MTS-DESC-DVB-FREQUENCY-LIST:CAPS"><code class="literal">GST_MTS_DESC_DVB_FREQUENCY_LIST</code></a> <a class="link" href="gst-plugins-bad-libs-Base-MPEG-TS-descriptors.html#GstMpegtsDescriptor"><span class="type">GstMpegtsDescriptor</span></a></p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>offset</p></td>
-<td class="parameter_description"><p> <a href="/usr/share/gtk-doc/html/glibglib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a> in Hz, <a href="/usr/share/gtk-doc/html/glibglib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> in kHz. </p></td>
-<td class="parameter_annotations"><span class="annotation">[<acronym title="Parameter for returning results. Default is transfer full."><span class="acronym">out</span></acronym>]</span></td>
-</tr>
-<tr>
-<td class="parameter_name"><p>list</p></td>
-<td class="parameter_description"><p> a list of all frequencies in Hz/kHz
-depending on <code class="literal">offset</code>. </p></td>
-<td class="parameter_annotations"><span class="annotation">[<acronym title="Parameter for returning results. Default is transfer full."><span class="acronym">out</span></acronym>][<acronym title="Free data after the code is done."><span class="acronym">transfer full</span></acronym>][<acronym title="Generics and defining elements of containers and arrays."><span class="acronym">element-type</span></acronym> guint32]</span></td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<div class="refsect3">
-<a name="gst-mpegts-descriptor-parse-dvb-frequency-list.returns"></a><h4>Returns</h4>
-<p> <a href="/usr/share/gtk-doc/html/glibglib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if the parsing happened correctly, else <a href="/usr/share/gtk-doc/html/glibglib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a>.</p>
-</div>
-</div>
-<hr>
-<div class="refsect2">
-<a name="gst-mpegts-dvb-data-broadcast-descriptor-free"></a><h3>gst_mpegts_dvb_data_broadcast_descriptor_free ()</h3>
-<pre class="programlisting"><span class="returnvalue">void</span>
-gst_mpegts_dvb_data_broadcast_descriptor_free
- (<em class="parameter"><code><a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GstMpegtsDataBroadcastDescriptor" title="struct GstMpegtsDataBroadcastDescriptor"><span class="type">GstMpegtsDataBroadcastDescriptor</span></a> *source</code></em>);</pre>
-</div>
-<hr>
-<div class="refsect2">
-<a name="gst-mpegts-descriptor-parse-dvb-data-broadcast"></a><h3>gst_mpegts_descriptor_parse_dvb_data_broadcast ()</h3>
-<pre class="programlisting"><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
-gst_mpegts_descriptor_parse_dvb_data_broadcast
- (<em class="parameter"><code>const <a class="link" href="gst-plugins-bad-libs-Base-MPEG-TS-descriptors.html#GstMpegtsDescriptor"><span class="type">GstMpegtsDescriptor</span></a> *descriptor</code></em>,
- <em class="parameter"><code><a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GstMpegtsDataBroadcastDescriptor" title="struct GstMpegtsDataBroadcastDescriptor"><span class="type">GstMpegtsDataBroadcastDescriptor</span></a> **res</code></em>);</pre>
-<p>Parses out the data broadcast from the <em class="parameter"><code>descriptor</code></em>
-.</p>
-<div class="refsect3">
-<a name="gst-mpegts-descriptor-parse-dvb-data-broadcast.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="parameter_name"><p>descriptor</p></td>
-<td class="parameter_description"><p>a <a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GST-MTS-DESC-DVB-DATA-BROADCAST:CAPS"><code class="literal">GST_MTS_DESC_DVB_DATA_BROADCAST</code></a> <a class="link" href="gst-plugins-bad-libs-Base-MPEG-TS-descriptors.html#GstMpegtsDescriptor"><span class="type">GstMpegtsDescriptor</span></a></p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>res</p></td>
-<td class="parameter_description"><p> <a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GstMpegtsDataBroadcastDescriptor" title="struct GstMpegtsDataBroadcastDescriptor"><span class="type">GstMpegtsDataBroadcastDescriptor</span></a>. </p></td>
-<td class="parameter_annotations"><span class="annotation">[<acronym title="Parameter for returning results. Default is transfer full."><span class="acronym">out</span></acronym>][<acronym title="Free data after the code is done."><span class="acronym">transfer full</span></acronym>]</span></td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<div class="refsect3">
-<a name="gst-mpegts-descriptor-parse-dvb-data-broadcast.returns"></a><h4>Returns</h4>
-<p> <a href="/usr/share/gtk-doc/html/glibglib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if the parsing happened correctly, else <a href="/usr/share/gtk-doc/html/glibglib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a>.</p>
-</div>
-</div>
-<hr>
-<div class="refsect2">
-<a name="gst-mpegts-descriptor-parse-dvb-scrambling"></a><h3>gst_mpegts_descriptor_parse_dvb_scrambling ()</h3>
-<pre class="programlisting"><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
-gst_mpegts_descriptor_parse_dvb_scrambling
- (<em class="parameter"><code>const <a class="link" href="gst-plugins-bad-libs-Base-MPEG-TS-descriptors.html#GstMpegtsDescriptor"><span class="type">GstMpegtsDescriptor</span></a> *descriptor</code></em>,
- <em class="parameter"><code><a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GstMpegtsDVBScramblingModeType" title="enum GstMpegtsDVBScramblingModeType"><span class="type">GstMpegtsDVBScramblingModeType</span></a> *scrambling_mode</code></em>);</pre>
-<p>Parses out the scrambling mode from the <em class="parameter"><code>descriptor</code></em>
-.</p>
-<div class="refsect3">
-<a name="gst-mpegts-descriptor-parse-dvb-scrambling.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="parameter_name"><p>descriptor</p></td>
-<td class="parameter_description"><p>a <a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GST-MTS-DESC-DVB-SCRAMBLING:CAPS"><code class="literal">GST_MTS_DESC_DVB_SCRAMBLING</code></a> <a class="link" href="gst-plugins-bad-libs-Base-MPEG-TS-descriptors.html#GstMpegtsDescriptor"><span class="type">GstMpegtsDescriptor</span></a></p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>scrambling_mode</p></td>
-<td class="parameter_description"><p> This 8-bit field identifies the selected
-mode of the scrambling algorithm (<a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GstMpegtsDVBScramblingModeType" title="enum GstMpegtsDVBScramblingModeType"><span class="type">GstMpegtsDVBScramblingModeType</span></a>).
-The technical details of the scrambling algorithm are available only
-to bona-fide users upon signature of a Non Disclosure Agreement (NDA)
-administered by the DVB Common Scrambling Algorithm Custodian. </p></td>
-<td class="parameter_annotations"><span class="annotation">[<acronym title="Parameter for returning results. Default is transfer full."><span class="acronym">out</span></acronym>]</span></td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<div class="refsect3">
-<a name="gst-mpegts-descriptor-parse-dvb-scrambling.returns"></a><h4>Returns</h4>
-<p> <a href="/usr/share/gtk-doc/html/glibglib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if the parsing happened correctly, else <a href="/usr/share/gtk-doc/html/glibglib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a>.</p>
-</div>
-</div>
-<hr>
-<div class="refsect2">
-<a name="gst-mpegts-descriptor-parse-dvb-data-broadcast-id"></a><h3>gst_mpegts_descriptor_parse_dvb_data_broadcast_id ()</h3>
-<pre class="programlisting"><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
-gst_mpegts_descriptor_parse_dvb_data_broadcast_id
- (<em class="parameter"><code>const <a class="link" href="gst-plugins-bad-libs-Base-MPEG-TS-descriptors.html#GstMpegtsDescriptor"><span class="type">GstMpegtsDescriptor</span></a> *descriptor</code></em>,
- <em class="parameter"><code><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint16"><span class="type">guint16</span></a> *data_broadcast_id</code></em>,
- <em class="parameter"><code><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint8"><span class="type">guint8</span></a> **id_selector_bytes</code></em>,
- <em class="parameter"><code><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint8"><span class="type">guint8</span></a> *len</code></em>);</pre>
-<p>Parses out the data broadcast id from the <em class="parameter"><code>descriptor</code></em>
-.</p>
-<div class="refsect3">
-<a name="gst-mpegts-descriptor-parse-dvb-data-broadcast-id.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="parameter_name"><p>descriptor</p></td>
-<td class="parameter_description"><p>a <a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GST-MTS-DESC-DVB-DATA-BROADCAST-ID:CAPS"><code class="literal">GST_MTS_DESC_DVB_DATA_BROADCAST_ID</code></a> <a class="link" href="gst-plugins-bad-libs-Base-MPEG-TS-descriptors.html#GstMpegtsDescriptor"><span class="type">GstMpegtsDescriptor</span></a></p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>data_broadcast_id</p></td>
-<td class="parameter_description"><p> the data broadcast id. </p></td>
-<td class="parameter_annotations"><span class="annotation">[<acronym title="Parameter for returning results. Default is transfer full."><span class="acronym">out</span></acronym>]</span></td>
-</tr>
-<tr>
-<td class="parameter_name"><p>id_selector_bytes</p></td>
-<td class="parameter_description"><p> the selector bytes, if present. </p></td>
-<td class="parameter_annotations"><span class="annotation">[<acronym title="Parameter for returning results. Default is transfer full."><span class="acronym">out</span></acronym>][<acronym title="Free data after the code is done."><span class="acronym">transfer full</span></acronym>]</span></td>
-</tr>
-<tr>
-<td class="parameter_name"><p>len</p></td>
-<td class="parameter_description"><p> the length of <span class="type">id_selector_bytes</span>. </p></td>
-<td class="parameter_annotations"><span class="annotation">[<acronym title="Parameter for returning results. Default is transfer full."><span class="acronym">out</span></acronym>]</span></td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<div class="refsect3">
-<a name="gst-mpegts-descriptor-parse-dvb-data-broadcast-id.returns"></a><h4>Returns</h4>
-<p> <a href="/usr/share/gtk-doc/html/glibglib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if the parsing happened correctly, else <a href="/usr/share/gtk-doc/html/glibglib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a>.</p>
-</div>
-</div>
-<hr>
-<div class="refsect2">
-<a name="gst-mpegts-descriptor-parse-dvb-parental-rating"></a><h3>gst_mpegts_descriptor_parse_dvb_parental_rating ()</h3>
-<pre class="programlisting"><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
-gst_mpegts_descriptor_parse_dvb_parental_rating
- (<em class="parameter"><code>const <a class="link" href="gst-plugins-bad-libs-Base-MPEG-TS-descriptors.html#GstMpegtsDescriptor"><span class="type">GstMpegtsDescriptor</span></a> *descriptor</code></em>,
- <em class="parameter"><code><a href="/usr/share/gtk-doc/html/glibglib-Pointer-Arrays.html#GPtrArray"><span class="type">GPtrArray</span></a> **rating</code></em>);</pre>
-<p>Extracts the DVB parental rating information from <em class="parameter"><code>descriptor</code></em>
-.</p>
-<div class="refsect3">
-<a name="gst-mpegts-descriptor-parse-dvb-parental-rating.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="parameter_name"><p>descriptor</p></td>
-<td class="parameter_description"><p>a <a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GST-MTS-DESC-DVB-PARENTAL-RATING:CAPS"><code class="literal">GST_MTS_DESC_DVB_PARENTAL_RATING</code></a> <a class="link" href="gst-plugins-bad-libs-Base-MPEG-TS-descriptors.html#GstMpegtsDescriptor"><span class="type">GstMpegtsDescriptor</span></a></p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>rating</p></td>
-<td class="parameter_description"><p><a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GstMpegtsDVBParentalRatingItem" title="struct GstMpegtsDVBParentalRatingItem"><span class="type">GstMpegtsDVBParentalRatingItem</span></a>. </p></td>
-<td class="parameter_annotations"><span class="annotation">[<acronym title="Parameter for returning results. Default is transfer full."><span class="acronym">out</span></acronym>][<acronym title="Free data after the code is done."><span class="acronym">transfer full</span></acronym>][<acronym title="Generics and defining elements of containers and arrays."><span class="acronym">element-type</span></acronym> GstMpegtsDVBParentalRatingItem]</span></td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<div class="refsect3">
-<a name="gst-mpegts-descriptor-parse-dvb-parental-rating.returns"></a><h4>Returns</h4>
-<p> <a href="/usr/share/gtk-doc/html/glibglib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if the parsing happened correctly, else <a href="/usr/share/gtk-doc/html/glibglib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a>.</p>
-</div>
-</div>
-<hr>
-<div class="refsect2">
-<a name="gst-mpegts-descriptor-parse-dvb-stream-identifier"></a><h3>gst_mpegts_descriptor_parse_dvb_stream_identifier ()</h3>
-<pre class="programlisting"><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
-gst_mpegts_descriptor_parse_dvb_stream_identifier
- (<em class="parameter"><code>const <a class="link" href="gst-plugins-bad-libs-Base-MPEG-TS-descriptors.html#GstMpegtsDescriptor"><span class="type">GstMpegtsDescriptor</span></a> *descriptor</code></em>,
- <em class="parameter"><code><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint8"><span class="type">guint8</span></a> *component_tag</code></em>);</pre>
-<p>Extracts the component tag from <em class="parameter"><code>descriptor</code></em>
-.</p>
-<div class="refsect3">
-<a name="gst-mpegts-descriptor-parse-dvb-stream-identifier.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="parameter_name"><p>descriptor</p></td>
-<td class="parameter_description"><p>a <a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GST-MTS-DESC-DVB-CONTENT:CAPS"><code class="literal">GST_MTS_DESC_DVB_CONTENT</code></a> <a class="link" href="gst-plugins-bad-libs-Base-MPEG-TS-descriptors.html#GstMpegtsDescriptor"><span class="type">GstMpegtsDescriptor</span></a></p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>component_tag</p></td>
-<td class="parameter_description"><p> the component tag. </p></td>
-<td class="parameter_annotations"><span class="annotation">[<acronym title="Parameter for returning results. Default is transfer full."><span class="acronym">out</span></acronym>][<acronym title="Don't free data after the code is done."><span class="acronym">transfer none</span></acronym>]</span></td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<div class="refsect3">
-<a name="gst-mpegts-descriptor-parse-dvb-stream-identifier.returns"></a><h4>Returns</h4>
-<p> <a href="/usr/share/gtk-doc/html/glibglib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if the parsing happended correctly, else <a href="/usr/share/gtk-doc/html/glibglib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a>.</p>
-</div>
-</div>
-<hr>
-<div class="refsect2">
-<a name="gst-mpegts-descriptor-parse-dvb-ca-identifier"></a><h3>gst_mpegts_descriptor_parse_dvb_ca_identifier ()</h3>
-<pre class="programlisting"><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
-gst_mpegts_descriptor_parse_dvb_ca_identifier
- (<em class="parameter"><code>const <a class="link" href="gst-plugins-bad-libs-Base-MPEG-TS-descriptors.html#GstMpegtsDescriptor"><span class="type">GstMpegtsDescriptor</span></a> *descriptor</code></em>,
- <em class="parameter"><code><a href="/usr/share/gtk-doc/html/glibglib-Arrays.html#GArray"><span class="type">GArray</span></a> **list</code></em>);</pre>
-<p>Extracts ca id's from <em class="parameter"><code>descriptor</code></em>
-.</p>
-<div class="refsect3">
-<a name="gst-mpegts-descriptor-parse-dvb-ca-identifier.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="parameter_name"><p>descriptor</p></td>
-<td class="parameter_description"><p>a <a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GST-MTS-DESC-DVB-CA-IDENTIFIER:CAPS"><code class="literal">GST_MTS_DESC_DVB_CA_IDENTIFIER</code></a> <a class="link" href="gst-plugins-bad-libs-Base-MPEG-TS-descriptors.html#GstMpegtsDescriptor"><span class="type">GstMpegtsDescriptor</span></a></p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>list</p></td>
-<td class="parameter_description"><p> a list of ca identifier.
-Edge entry identifies the CA system. Allocations of the value of this field
-are found in http://www.dvbservices.com. </p></td>
-<td class="parameter_annotations"><span class="annotation">[<acronym title="Parameter for returning results. Default is transfer full."><span class="acronym">out</span></acronym>][<acronym title="Free data after the code is done."><span class="acronym">transfer full</span></acronym>][<acronym title="Generics and defining elements of containers and arrays."><span class="acronym">element-type</span></acronym> guint16]</span></td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<div class="refsect3">
-<a name="gst-mpegts-descriptor-parse-dvb-ca-identifier.returns"></a><h4>Returns</h4>
-<p> <a href="/usr/share/gtk-doc/html/glibglib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if the parsing happened correctly, else <a href="/usr/share/gtk-doc/html/glibglib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a>.</p>
-</div>
-</div>
-<hr>
-<div class="refsect2">
-<a name="gst-mpegts-descriptor-parse-dvb-service-list"></a><h3>gst_mpegts_descriptor_parse_dvb_service_list ()</h3>
-<pre class="programlisting"><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
-gst_mpegts_descriptor_parse_dvb_service_list
- (<em class="parameter"><code>const <a class="link" href="gst-plugins-bad-libs-Base-MPEG-TS-descriptors.html#GstMpegtsDescriptor"><span class="type">GstMpegtsDescriptor</span></a> *descriptor</code></em>,
- <em class="parameter"><code><a href="/usr/share/gtk-doc/html/glibglib-Pointer-Arrays.html#GPtrArray"><span class="type">GPtrArray</span></a> **list</code></em>);</pre>
-<p>Parses out a list of services from the <em class="parameter"><code>descriptor</code></em>
-:</p>
-<div class="refsect3">
-<a name="gst-mpegts-descriptor-parse-dvb-service-list.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="parameter_name"><p>descriptor</p></td>
-<td class="parameter_description"><p>a <a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GST-MTS-DESC-DVB-SERVICE-LIST:CAPS"><code class="literal">GST_MTS_DESC_DVB_SERVICE_LIST</code></a> <a class="link" href="gst-plugins-bad-libs-Base-MPEG-TS-descriptors.html#GstMpegtsDescriptor"><span class="type">GstMpegtsDescriptor</span></a></p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>list</p></td>
-<td class="parameter_description"><p>the list of services. </p></td>
-<td class="parameter_annotations"><span class="annotation">[<acronym title="Parameter for returning results. Default is transfer full."><span class="acronym">out</span></acronym>][<acronym title="Free data after the code is done."><span class="acronym">transfer full</span></acronym>][<acronym title="Generics and defining elements of containers and arrays."><span class="acronym">element-type</span></acronym> GstMpegtsDVBServiceListItem]</span></td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<div class="refsect3">
-<a name="gst-mpegts-descriptor-parse-dvb-service-list.returns"></a><h4>Returns</h4>
-<p> <a href="/usr/share/gtk-doc/html/glibglib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if the parsing happened correctly, else <a href="/usr/share/gtk-doc/html/glibglib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a>.</p>
-</div>
-</div>
-<hr>
-<div class="refsect2">
-<a name="gst-mpegts-descriptor-parse-dvb-stuffing"></a><h3>gst_mpegts_descriptor_parse_dvb_stuffing ()</h3>
-<pre class="programlisting"><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
-gst_mpegts_descriptor_parse_dvb_stuffing
- (<em class="parameter"><code>const <a class="link" href="gst-plugins-bad-libs-Base-MPEG-TS-descriptors.html#GstMpegtsDescriptor"><span class="type">GstMpegtsDescriptor</span></a> *descriptor</code></em>,
- <em class="parameter"><code><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint8"><span class="type">guint8</span></a> **stuffing_bytes</code></em>);</pre>
-<p>Parses out the stuffing bytes from the <em class="parameter"><code>descriptor</code></em>
-.</p>
-<div class="refsect3">
-<a name="gst-mpegts-descriptor-parse-dvb-stuffing.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="parameter_name"><p>descriptor</p></td>
-<td class="parameter_description"><p>a <a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GST-MTS-DESC-DVB-STUFFING:CAPS"><code class="literal">GST_MTS_DESC_DVB_STUFFING</code></a> <a class="link" href="gst-plugins-bad-libs-Base-MPEG-TS-descriptors.html#GstMpegtsDescriptor"><span class="type">GstMpegtsDescriptor</span></a></p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>stuffing_bytes</p></td>
-<td class="parameter_description"><p> the stuffing bytes. </p></td>
-<td class="parameter_annotations"><span class="annotation">[<acronym title="Parameter for returning results. Default is transfer full."><span class="acronym">out</span></acronym>][<acronym title="Free data after the code is done."><span class="acronym">transfer full</span></acronym>]</span></td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<div class="refsect3">
-<a name="gst-mpegts-descriptor-parse-dvb-stuffing.returns"></a><h4>Returns</h4>
-<p> <a href="/usr/share/gtk-doc/html/glibglib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if the parsing happened correctly, else <a href="/usr/share/gtk-doc/html/glibglib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a>.</p>
-</div>
-</div>
-<hr>
-<div class="refsect2">
-<a name="gst-mpegts-descriptor-parse-dvb-bouquet-name"></a><h3>gst_mpegts_descriptor_parse_dvb_bouquet_name ()</h3>
-<pre class="programlisting"><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
-gst_mpegts_descriptor_parse_dvb_bouquet_name
- (<em class="parameter"><code>const <a class="link" href="gst-plugins-bad-libs-Base-MPEG-TS-descriptors.html#GstMpegtsDescriptor"><span class="type">GstMpegtsDescriptor</span></a> *descriptor</code></em>,
- <em class="parameter"><code><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gchar"><span class="type">gchar</span></a> **bouquet_name</code></em>);</pre>
-<p>Extracts the bouquet name from <em class="parameter"><code>descriptor</code></em>
-.</p>
-<div class="refsect3">
-<a name="gst-mpegts-descriptor-parse-dvb-bouquet-name.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody><tr>
-<td class="parameter_name"><p>bouquet_name</p></td>
-<td class="parameter_description"><p> the bouquet name. </p></td>
-<td class="parameter_annotations"><span class="annotation">[<acronym title="Parameter for returning results. Default is transfer full."><span class="acronym">out</span></acronym>][<acronym title="Free data after the code is done."><span class="acronym">transfer full</span></acronym>][<acronym title="NULL is OK, both for passing and for returning."><span class="acronym">allow-none</span></acronym>]</span></td>
-</tr></tbody>
-</table></div>
-</div>
-<div class="refsect3">
-<a name="gst-mpegts-descriptor-parse-dvb-bouquet-name.returns"></a><h4>Returns</h4>
-<p> <a href="/usr/share/gtk-doc/html/glibglib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if parsing succeeded, else <a href="/usr/share/gtk-doc/html/glibglib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a>.</p>
-</div>
-</div>
-<hr>
-<div class="refsect2">
-<a name="gst-mpegts-descriptor-parse-dvb-multilingual-network-name"></a><h3>gst_mpegts_descriptor_parse_dvb_multilingual_network_name ()</h3>
-<pre class="programlisting"><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
-gst_mpegts_descriptor_parse_dvb_multilingual_network_name
- (<em class="parameter"><code>const <a class="link" href="gst-plugins-bad-libs-Base-MPEG-TS-descriptors.html#GstMpegtsDescriptor"><span class="type">GstMpegtsDescriptor</span></a> *descriptor</code></em>,
- <em class="parameter"><code><a href="/usr/share/gtk-doc/html/glibglib-Pointer-Arrays.html#GPtrArray"><span class="type">GPtrArray</span></a> **network_name_items</code></em>);</pre>
-<p>Parses out the multilingual network name from the <em class="parameter"><code>descriptor</code></em>
-.</p>
-<div class="refsect3">
-<a name="gst-mpegts-descriptor-parse-dvb-multilingual-network-name.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="parameter_name"><p>descriptor</p></td>
-<td class="parameter_description"><p>a <a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GST-MTS-DESC-DVB-MULTILINGUAL-NETWORK-NAME:CAPS"><code class="literal">GST_MTS_DESC_DVB_MULTILINGUAL_NETWORK_NAME</code></a>
-<a class="link" href="gst-plugins-bad-libs-Base-MPEG-TS-descriptors.html#GstMpegtsDescriptor"><span class="type">GstMpegtsDescriptor</span></a></p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>network_name_items</p></td>
-<td class="parameter_description"><p>a <a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GstMpegtsDvbMultilingualNetworkNameItem" title="struct GstMpegtsDvbMultilingualNetworkNameItem"><span class="type">GstMpegtsDvbMultilingualNetworkNameItem</span></a>. </p></td>
-<td class="parameter_annotations"><span class="annotation">[<acronym title="Parameter for returning results. Default is transfer full."><span class="acronym">out</span></acronym>][<acronym title="Free data after the code is done."><span class="acronym">transfer full</span></acronym>][<acronym title="Generics and defining elements of containers and arrays."><span class="acronym">element-type</span></acronym> GstMpegtsDvbMultilingualNetworkNameItem]</span></td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<div class="refsect3">
-<a name="gst-mpegts-descriptor-parse-dvb-multilingual-network-name.returns"></a><h4>Returns</h4>
-<p> <a href="/usr/share/gtk-doc/html/glibglib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if the parsing happened correctly, else <a href="/usr/share/gtk-doc/html/glibglib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a>.</p>
-</div>
-</div>
-<hr>
-<div class="refsect2">
-<a name="gst-mpegts-descriptor-parse-dvb-multilingual-bouquet-name"></a><h3>gst_mpegts_descriptor_parse_dvb_multilingual_bouquet_name ()</h3>
-<pre class="programlisting"><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
-gst_mpegts_descriptor_parse_dvb_multilingual_bouquet_name
- (<em class="parameter"><code>const <a class="link" href="gst-plugins-bad-libs-Base-MPEG-TS-descriptors.html#GstMpegtsDescriptor"><span class="type">GstMpegtsDescriptor</span></a> *descriptor</code></em>,
- <em class="parameter"><code><a href="/usr/share/gtk-doc/html/glibglib-Pointer-Arrays.html#GPtrArray"><span class="type">GPtrArray</span></a> **bouquet_name_items</code></em>);</pre>
-<p>Parses out the multilingual bouquet name from the <em class="parameter"><code>descriptor</code></em>
-.</p>
-<div class="refsect3">
-<a name="gst-mpegts-descriptor-parse-dvb-multilingual-bouquet-name.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="parameter_name"><p>descriptor</p></td>
-<td class="parameter_description"><p>a <a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GST-MTS-DESC-DVB-MULTILINGUAL-BOUQUET-NAME:CAPS"><code class="literal">GST_MTS_DESC_DVB_MULTILINGUAL_BOUQUET_NAME</code></a>
-<a class="link" href="gst-plugins-bad-libs-Base-MPEG-TS-descriptors.html#GstMpegtsDescriptor"><span class="type">GstMpegtsDescriptor</span></a></p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>bouquet_name_items</p></td>
-<td class="parameter_description"><p>a <a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GstMpegtsDvbMultilingualBouquetNameItem" title="struct GstMpegtsDvbMultilingualBouquetNameItem"><span class="type">GstMpegtsDvbMultilingualBouquetNameItem</span></a>. </p></td>
-<td class="parameter_annotations"><span class="annotation">[<acronym title="Parameter for returning results. Default is transfer full."><span class="acronym">out</span></acronym>][<acronym title="Free data after the code is done."><span class="acronym">transfer full</span></acronym>][<acronym title="Generics and defining elements of containers and arrays."><span class="acronym">element-type</span></acronym> GstMpegtsDvbMultilingualBouquetNameItem]</span></td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<div class="refsect3">
-<a name="gst-mpegts-descriptor-parse-dvb-multilingual-bouquet-name.returns"></a><h4>Returns</h4>
-<p> <a href="/usr/share/gtk-doc/html/glibglib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if the parsing happened correctly, else <a href="/usr/share/gtk-doc/html/glibglib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a>.</p>
-</div>
-</div>
-<hr>
-<div class="refsect2">
-<a name="gst-mpegts-descriptor-parse-dvb-multilingual-service-name"></a><h3>gst_mpegts_descriptor_parse_dvb_multilingual_service_name ()</h3>
-<pre class="programlisting"><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
-gst_mpegts_descriptor_parse_dvb_multilingual_service_name
- (<em class="parameter"><code>const <a class="link" href="gst-plugins-bad-libs-Base-MPEG-TS-descriptors.html#GstMpegtsDescriptor"><span class="type">GstMpegtsDescriptor</span></a> *descriptor</code></em>,
- <em class="parameter"><code><a href="/usr/share/gtk-doc/html/glibglib-Pointer-Arrays.html#GPtrArray"><span class="type">GPtrArray</span></a> **service_name_items</code></em>);</pre>
-<p>Parses out the multilingual service name from the <em class="parameter"><code>descriptor</code></em>
-.</p>
-<div class="refsect3">
-<a name="gst-mpegts-descriptor-parse-dvb-multilingual-service-name.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="parameter_name"><p>descriptor</p></td>
-<td class="parameter_description"><p>a <a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GST-MTS-DESC-DVB-MULTILINGUAL-SERVICE-NAME:CAPS"><code class="literal">GST_MTS_DESC_DVB_MULTILINGUAL_SERVICE_NAME</code></a>
-<a class="link" href="gst-plugins-bad-libs-Base-MPEG-TS-descriptors.html#GstMpegtsDescriptor"><span class="type">GstMpegtsDescriptor</span></a></p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>service_name_items</p></td>
-<td class="parameter_description"><p>a <a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GstMpegtsDvbMultilingualServiceNameItem" title="struct GstMpegtsDvbMultilingualServiceNameItem"><span class="type">GstMpegtsDvbMultilingualServiceNameItem</span></a>. </p></td>
-<td class="parameter_annotations"><span class="annotation">[<acronym title="Parameter for returning results. Default is transfer full."><span class="acronym">out</span></acronym>][<acronym title="Free data after the code is done."><span class="acronym">transfer full</span></acronym>][<acronym title="Generics and defining elements of containers and arrays."><span class="acronym">element-type</span></acronym> GstMpegtsDvbMultilingualServiceNameItem]</span></td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<div class="refsect3">
-<a name="gst-mpegts-descriptor-parse-dvb-multilingual-service-name.returns"></a><h4>Returns</h4>
-<p> <a href="/usr/share/gtk-doc/html/glibglib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if the parsing happened correctly, else <a href="/usr/share/gtk-doc/html/glibglib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a>.</p>
-</div>
-</div>
-<hr>
-<div class="refsect2">
-<a name="gst-mpegts-descriptor-parse-dvb-multilingual-component"></a><h3>gst_mpegts_descriptor_parse_dvb_multilingual_component ()</h3>
-<pre class="programlisting"><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
-gst_mpegts_descriptor_parse_dvb_multilingual_component
- (<em class="parameter"><code>const <a class="link" href="gst-plugins-bad-libs-Base-MPEG-TS-descriptors.html#GstMpegtsDescriptor"><span class="type">GstMpegtsDescriptor</span></a> *descriptor</code></em>,
- <em class="parameter"><code><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint8"><span class="type">guint8</span></a> *component_tag</code></em>,
- <em class="parameter"><code><a href="/usr/share/gtk-doc/html/glibglib-Pointer-Arrays.html#GPtrArray"><span class="type">GPtrArray</span></a> **component_description_items</code></em>);</pre>
-<p>Parses out the multilingual component from the <em class="parameter"><code>descriptor</code></em>
-.</p>
-<div class="refsect3">
-<a name="gst-mpegts-descriptor-parse-dvb-multilingual-component.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="parameter_name"><p>descriptor</p></td>
-<td class="parameter_description"><p>a <a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GST-MTS-DESC-DVB-MULTILINGUAL-COMPONENT:CAPS"><code class="literal">GST_MTS_DESC_DVB_MULTILINGUAL_COMPONENT</code></a>
-<a class="link" href="gst-plugins-bad-libs-Base-MPEG-TS-descriptors.html#GstMpegtsDescriptor"><span class="type">GstMpegtsDescriptor</span></a></p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>component_tag</p></td>
-<td class="parameter_description"><p>the component tag</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>component_description_items</p></td>
-<td class="parameter_description"><p>a <a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GstMpegtsDvbMultilingualComponentItem" title="struct GstMpegtsDvbMultilingualComponentItem"><span class="type">GstMpegtsDvbMultilingualComponentItem</span></a>. </p></td>
-<td class="parameter_annotations"><span class="annotation">[<acronym title="Parameter for returning results. Default is transfer full."><span class="acronym">out</span></acronym>][<acronym title="Free data after the code is done."><span class="acronym">transfer full</span></acronym>][<acronym title="Generics and defining elements of containers and arrays."><span class="acronym">element-type</span></acronym> GstMpegtsDvbMultilingualComponentItem]</span></td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<div class="refsect3">
-<a name="gst-mpegts-descriptor-parse-dvb-multilingual-component.returns"></a><h4>Returns</h4>
-<p> <a href="/usr/share/gtk-doc/html/glibglib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if the parsing happened correctly, else <a href="/usr/share/gtk-doc/html/glibglib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a>.</p>
-</div>
-</div>
-</div>
-<div class="refsect1">
-<a name="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.other_details"></a><h2>Types and Values</h2>
-<div class="refsect2">
-<a name="GstMpegtsDVBDescriptorType"></a><h3>enum GstMpegtsDVBDescriptorType</h3>
-<p>The type of <a class="link" href="gst-plugins-bad-libs-Base-MPEG-TS-descriptors.html#GstMpegtsDescriptor"><span class="type">GstMpegtsDescriptor</span></a></p>
-<p>These values correspond to the registered descriptor type from
-the various DVB specifications.</p>
-<p>Consult the relevant specifications for more details.</p>
-<div class="refsect3">
-<a name="GstMpegtsDVBDescriptorType.members"></a><h4>Members</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="300px" class="enum_members_name">
-<col class="enum_members_description">
-<col width="200px" class="enum_members_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="enum_member_name"><p><a name="GST-MTS-DESC-DVB-NETWORK-NAME:CAPS"></a>GST_MTS_DESC_DVB_NETWORK_NAME</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="enum_member_name"><p><a name="GST-MTS-DESC-DVB-SERVICE-LIST:CAPS"></a>GST_MTS_DESC_DVB_SERVICE_LIST</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="enum_member_name"><p><a name="GST-MTS-DESC-DVB-STUFFING:CAPS"></a>GST_MTS_DESC_DVB_STUFFING</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="enum_member_name"><p><a name="GST-MTS-DESC-DVB-SATELLITE-DELIVERY-SYSTEM:CAPS"></a>GST_MTS_DESC_DVB_SATELLITE_DELIVERY_SYSTEM</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="enum_member_name"><p><a name="GST-MTS-DESC-DVB-CABLE-DELIVERY-SYSTEM:CAPS"></a>GST_MTS_DESC_DVB_CABLE_DELIVERY_SYSTEM</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="enum_member_name"><p><a name="GST-MTS-DESC-DVB-VBI-DATA:CAPS"></a>GST_MTS_DESC_DVB_VBI_DATA</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="enum_member_name"><p><a name="GST-MTS-DESC-DVB-VBI-TELETEXT:CAPS"></a>GST_MTS_DESC_DVB_VBI_TELETEXT</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="enum_member_name"><p><a name="GST-MTS-DESC-DVB-BOUQUET-NAME:CAPS"></a>GST_MTS_DESC_DVB_BOUQUET_NAME</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="enum_member_name"><p><a name="GST-MTS-DESC-DVB-SERVICE:CAPS"></a>GST_MTS_DESC_DVB_SERVICE</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="enum_member_name"><p><a name="GST-MTS-DESC-DVB-COUNTRY-AVAILABILITY:CAPS"></a>GST_MTS_DESC_DVB_COUNTRY_AVAILABILITY</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="enum_member_name"><p><a name="GST-MTS-DESC-DVB-LINKAGE:CAPS"></a>GST_MTS_DESC_DVB_LINKAGE</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="enum_member_name"><p><a name="GST-MTS-DESC-DVB-NVOD-REFERENCE:CAPS"></a>GST_MTS_DESC_DVB_NVOD_REFERENCE</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="enum_member_name"><p><a name="GST-MTS-DESC-DVB-TIME-SHIFTED-SERVICE:CAPS"></a>GST_MTS_DESC_DVB_TIME_SHIFTED_SERVICE</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="enum_member_name"><p><a name="GST-MTS-DESC-DVB-SHORT-EVENT:CAPS"></a>GST_MTS_DESC_DVB_SHORT_EVENT</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="enum_member_name"><p><a name="GST-MTS-DESC-DVB-EXTENDED-EVENT:CAPS"></a>GST_MTS_DESC_DVB_EXTENDED_EVENT</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="enum_member_name"><p><a name="GST-MTS-DESC-DVB-TIME-SHIFTED-EVENT:CAPS"></a>GST_MTS_DESC_DVB_TIME_SHIFTED_EVENT</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="enum_member_name"><p><a name="GST-MTS-DESC-DVB-COMPONENT:CAPS"></a>GST_MTS_DESC_DVB_COMPONENT</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="enum_member_name"><p><a name="GST-MTS-DESC-DVB-MOSAIC:CAPS"></a>GST_MTS_DESC_DVB_MOSAIC</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="enum_member_name"><p><a name="GST-MTS-DESC-DVB-STREAM-IDENTIFIER:CAPS"></a>GST_MTS_DESC_DVB_STREAM_IDENTIFIER</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="enum_member_name"><p><a name="GST-MTS-DESC-DVB-CA-IDENTIFIER:CAPS"></a>GST_MTS_DESC_DVB_CA_IDENTIFIER</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="enum_member_name"><p><a name="GST-MTS-DESC-DVB-CONTENT:CAPS"></a>GST_MTS_DESC_DVB_CONTENT</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="enum_member_name"><p><a name="GST-MTS-DESC-DVB-PARENTAL-RATING:CAPS"></a>GST_MTS_DESC_DVB_PARENTAL_RATING</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="enum_member_name"><p><a name="GST-MTS-DESC-DVB-TELETEXT:CAPS"></a>GST_MTS_DESC_DVB_TELETEXT</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="enum_member_name"><p><a name="GST-MTS-DESC-DVB-TELEPHONE:CAPS"></a>GST_MTS_DESC_DVB_TELEPHONE</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="enum_member_name"><p><a name="GST-MTS-DESC-DVB-LOCAL-TIME-OFFSET:CAPS"></a>GST_MTS_DESC_DVB_LOCAL_TIME_OFFSET</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="enum_member_name"><p><a name="GST-MTS-DESC-DVB-SUBTITLING:CAPS"></a>GST_MTS_DESC_DVB_SUBTITLING</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="enum_member_name"><p><a name="GST-MTS-DESC-DVB-TERRESTRIAL-DELIVERY-SYSTEM:CAPS"></a>GST_MTS_DESC_DVB_TERRESTRIAL_DELIVERY_SYSTEM</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="enum_member_name"><p><a name="GST-MTS-DESC-DVB-MULTILINGUAL-NETWORK-NAME:CAPS"></a>GST_MTS_DESC_DVB_MULTILINGUAL_NETWORK_NAME</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="enum_member_name"><p><a name="GST-MTS-DESC-DVB-MULTILINGUAL-BOUQUET-NAME:CAPS"></a>GST_MTS_DESC_DVB_MULTILINGUAL_BOUQUET_NAME</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="enum_member_name"><p><a name="GST-MTS-DESC-DVB-MULTILINGUAL-SERVICE-NAME:CAPS"></a>GST_MTS_DESC_DVB_MULTILINGUAL_SERVICE_NAME</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="enum_member_name"><p><a name="GST-MTS-DESC-DVB-MULTILINGUAL-COMPONENT:CAPS"></a>GST_MTS_DESC_DVB_MULTILINGUAL_COMPONENT</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="enum_member_name"><p><a name="GST-MTS-DESC-DVB-PRIVATE-DATA-SPECIFIER:CAPS"></a>GST_MTS_DESC_DVB_PRIVATE_DATA_SPECIFIER</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="enum_member_name"><p><a name="GST-MTS-DESC-DVB-SERVICE-MOVE:CAPS"></a>GST_MTS_DESC_DVB_SERVICE_MOVE</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="enum_member_name"><p><a name="GST-MTS-DESC-DVB-SHORT-SMOOTHING-BUFFER:CAPS"></a>GST_MTS_DESC_DVB_SHORT_SMOOTHING_BUFFER</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="enum_member_name"><p><a name="GST-MTS-DESC-DVB-FREQUENCY-LIST:CAPS"></a>GST_MTS_DESC_DVB_FREQUENCY_LIST</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="enum_member_name"><p><a name="GST-MTS-DESC-DVB-PARTIAL-TRANSPORT-STREAM:CAPS"></a>GST_MTS_DESC_DVB_PARTIAL_TRANSPORT_STREAM</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="enum_member_name"><p><a name="GST-MTS-DESC-DVB-DATA-BROADCAST:CAPS"></a>GST_MTS_DESC_DVB_DATA_BROADCAST</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="enum_member_name"><p><a name="GST-MTS-DESC-DVB-SCRAMBLING:CAPS"></a>GST_MTS_DESC_DVB_SCRAMBLING</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="enum_member_name"><p><a name="GST-MTS-DESC-DVB-DATA-BROADCAST-ID:CAPS"></a>GST_MTS_DESC_DVB_DATA_BROADCAST_ID</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="enum_member_name"><p><a name="GST-MTS-DESC-DVB-TRANSPORT-STREAM:CAPS"></a>GST_MTS_DESC_DVB_TRANSPORT_STREAM</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="enum_member_name"><p><a name="GST-MTS-DESC-DVB-DSNG:CAPS"></a>GST_MTS_DESC_DVB_DSNG</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="enum_member_name"><p><a name="GST-MTS-DESC-DVB-PDC:CAPS"></a>GST_MTS_DESC_DVB_PDC</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="enum_member_name"><p><a name="GST-MTS-DESC-DVB-AC3:CAPS"></a>GST_MTS_DESC_DVB_AC3</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="enum_member_name"><p><a name="GST-MTS-DESC-DVB-ANCILLARY-DATA:CAPS"></a>GST_MTS_DESC_DVB_ANCILLARY_DATA</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="enum_member_name"><p><a name="GST-MTS-DESC-DVB-CELL-LIST:CAPS"></a>GST_MTS_DESC_DVB_CELL_LIST</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="enum_member_name"><p><a name="GST-MTS-DESC-DVB-CELL-FREQUENCY-LINK:CAPS"></a>GST_MTS_DESC_DVB_CELL_FREQUENCY_LINK</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="enum_member_name"><p><a name="GST-MTS-DESC-DVB-ANNOUNCEMENT-SUPPORT:CAPS"></a>GST_MTS_DESC_DVB_ANNOUNCEMENT_SUPPORT</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="enum_member_name"><p><a name="GST-MTS-DESC-DVB-APPLICATION-SIGNALLING:CAPS"></a>GST_MTS_DESC_DVB_APPLICATION_SIGNALLING</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="enum_member_name"><p><a name="GST-MTS-DESC-DVB-ADAPTATION-FIELD-DATA:CAPS"></a>GST_MTS_DESC_DVB_ADAPTATION_FIELD_DATA</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="enum_member_name"><p><a name="GST-MTS-DESC-DVB-SERVICE-IDENTIFIER:CAPS"></a>GST_MTS_DESC_DVB_SERVICE_IDENTIFIER</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="enum_member_name"><p><a name="GST-MTS-DESC-DVB-SERVICE-AVAILABILITY:CAPS"></a>GST_MTS_DESC_DVB_SERVICE_AVAILABILITY</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="enum_member_name"><p><a name="GST-MTS-DESC-DVB-DEFAULT-AUTHORITY:CAPS"></a>GST_MTS_DESC_DVB_DEFAULT_AUTHORITY</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="enum_member_name"><p><a name="GST-MTS-DESC-DVB-RELATED-CONTENT:CAPS"></a>GST_MTS_DESC_DVB_RELATED_CONTENT</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="enum_member_name"><p><a name="GST-MTS-DESC-DVB-TVA-ID:CAPS"></a>GST_MTS_DESC_DVB_TVA_ID</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="enum_member_name"><p><a name="GST-MTS-DESC-DVB-CONTENT-IDENTIFIER:CAPS"></a>GST_MTS_DESC_DVB_CONTENT_IDENTIFIER</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="enum_member_name"><p><a name="GST-MTS-DESC-DVB-TIMESLICE-FEC-IDENTIFIER:CAPS"></a>GST_MTS_DESC_DVB_TIMESLICE_FEC_IDENTIFIER</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="enum_member_name"><p><a name="GST-MTS-DESC-DVB-ECM-REPETITION-RATE:CAPS"></a>GST_MTS_DESC_DVB_ECM_REPETITION_RATE</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="enum_member_name"><p><a name="GST-MTS-DESC-DVB-S2-SATELLITE-DELIVERY-SYSTEM:CAPS"></a>GST_MTS_DESC_DVB_S2_SATELLITE_DELIVERY_SYSTEM</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="enum_member_name"><p><a name="GST-MTS-DESC-DVB-ENHANCED-AC3:CAPS"></a>GST_MTS_DESC_DVB_ENHANCED_AC3</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="enum_member_name"><p><a name="GST-MTS-DESC-DVB-DTS:CAPS"></a>GST_MTS_DESC_DVB_DTS</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="enum_member_name"><p><a name="GST-MTS-DESC-DVB-AAC:CAPS"></a>GST_MTS_DESC_DVB_AAC</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="enum_member_name"><p><a name="GST-MTS-DESC-DVB-XAIT-LOCATION:CAPS"></a>GST_MTS_DESC_DVB_XAIT_LOCATION</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="enum_member_name"><p><a name="GST-MTS-DESC-DVB-FTA-CONTENT-MANAGEMENT:CAPS"></a>GST_MTS_DESC_DVB_FTA_CONTENT_MANAGEMENT</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="enum_member_name"><p><a name="GST-MTS-DESC-DVB-EXTENSION:CAPS"></a>GST_MTS_DESC_DVB_EXTENSION</p></td>
-<td> </td>
-<td> </td>
-</tr>
-</tbody>
-</table></div>
-</div>
-</div>
-<hr>
-<div class="refsect2">
-<a name="GstMpegtsDVBExtendedDescriptorType"></a><h3>enum GstMpegtsDVBExtendedDescriptorType</h3>
-<p>The type of <a class="link" href="gst-plugins-bad-libs-Base-MPEG-TS-descriptors.html#GstMpegtsDescriptor"><span class="type">GstMpegtsDescriptor</span></a></p>
-<p>These values correspond to the registered extended descriptor
-type from the various DVB specifications.</p>
-<p>Consult the relevant specifications for more details.</p>
-<div class="refsect3">
-<a name="GstMpegtsDVBExtendedDescriptorType.members"></a><h4>Members</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="300px" class="enum_members_name">
-<col class="enum_members_description">
-<col width="200px" class="enum_members_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="enum_member_name"><p><a name="GST-MTS-DESC-EXT-DVB-IMAGE-ICON:CAPS"></a>GST_MTS_DESC_EXT_DVB_IMAGE_ICON</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="enum_member_name"><p><a name="GST-MTS-DESC-EXT-DVB-CPCM-DELIVERY-SIGNALLING:CAPS"></a>GST_MTS_DESC_EXT_DVB_CPCM_DELIVERY_SIGNALLING</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="enum_member_name"><p><a name="GST-MTS-DESC-EXT-DVB-CP:CAPS"></a>GST_MTS_DESC_EXT_DVB_CP</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="enum_member_name"><p><a name="GST-MTS-DESC-EXT-DVB-CP-IDENTIFIER:CAPS"></a>GST_MTS_DESC_EXT_DVB_CP_IDENTIFIER</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="enum_member_name"><p><a name="GST-MTS-DESC-EXT-DVB-T2-DELIVERY-SYSTEM:CAPS"></a>GST_MTS_DESC_EXT_DVB_T2_DELIVERY_SYSTEM</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="enum_member_name"><p><a name="GST-MTS-DESC-EXT-DVB-SH-DELIVERY-SYSTEM:CAPS"></a>GST_MTS_DESC_EXT_DVB_SH_DELIVERY_SYSTEM</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="enum_member_name"><p><a name="GST-MTS-DESC-EXT-DVB-SUPPLEMENTARY-AUDIO:CAPS"></a>GST_MTS_DESC_EXT_DVB_SUPPLEMENTARY_AUDIO</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="enum_member_name"><p><a name="GST-MTS-DESC-EXT-DVB-NETWORK-CHANGE-NOTIFY:CAPS"></a>GST_MTS_DESC_EXT_DVB_NETWORK_CHANGE_NOTIFY</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="enum_member_name"><p><a name="GST-MTS-DESC-EXT-DVB-MESSAGE:CAPS"></a>GST_MTS_DESC_EXT_DVB_MESSAGE</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="enum_member_name"><p><a name="GST-MTS-DESC-EXT-DVB-TARGET-REGION:CAPS"></a>GST_MTS_DESC_EXT_DVB_TARGET_REGION</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="enum_member_name"><p><a name="GST-MTS-DESC-EXT-DVB-TARGET-REGION-NAME:CAPS"></a>GST_MTS_DESC_EXT_DVB_TARGET_REGION_NAME</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="enum_member_name"><p><a name="GST-MTS-DESC-EXT-DVB-SERVICE-RELOCATED:CAPS"></a>GST_MTS_DESC_EXT_DVB_SERVICE_RELOCATED</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="enum_member_name"><p><a name="GST-MTS-DESC-EXT-DVB-XAIT-PID:CAPS"></a>GST_MTS_DESC_EXT_DVB_XAIT_PID</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="enum_member_name"><p><a name="GST-MTS-DESC-EXT-DVB-C2-DELIVERY-SYSTEM:CAPS"></a>GST_MTS_DESC_EXT_DVB_C2_DELIVERY_SYSTEM</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="enum_member_name"><p><a name="GST-MTS-DESC-EXT-DVB-DTS-HD-AUDIO-STREAM:CAPS"></a>GST_MTS_DESC_EXT_DVB_DTS_HD_AUDIO_STREAM</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="enum_member_name"><p><a name="GST-MTS-DESC-EXT-DVB-DTS-NEUTRAL:CAPS"></a>GST_MTS_DESC_EXT_DVB_DTS_NEUTRAL</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="enum_member_name"><p><a name="GST-MTS-DESC-EXT-DVB-VIDEO-DEPTH-RANGE:CAPS"></a>GST_MTS_DESC_EXT_DVB_VIDEO_DEPTH_RANGE</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="enum_member_name"><p><a name="GST-MTS-DESC-EXT-DVB-T2MI:CAPS"></a>GST_MTS_DESC_EXT_DVB_T2MI</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="enum_member_name"><p><a name="GST-MTS-DESC-EXT-DVB-URI-LINKAGE:CAPS"></a>GST_MTS_DESC_EXT_DVB_URI_LINKAGE</p></td>
-<td> </td>
-<td> </td>
-</tr>
-</tbody>
-</table></div>
-</div>
-</div>
-<hr>
-<div class="refsect2">
-<a name="GstMpegtsContent"></a><h3>struct GstMpegtsContent</h3>
-<pre class="programlisting">struct GstMpegtsContent {
- GstMpegtsContentNibbleHi content_nibble_1;
- guint8 content_nibble_2;
- guint8 user_byte;
-};
-</pre>
-</div>
-<hr>
-<div class="refsect2">
-<a name="GstMpegtsComponentDescriptor"></a><h3>struct GstMpegtsComponentDescriptor</h3>
-<pre class="programlisting">struct GstMpegtsComponentDescriptor {
- guint8 stream_content;
- guint8 component_type;
- guint8 component_tag;
- gchar *language_code;
- gchar *text;
-};
-</pre>
-</div>
-<hr>
-<div class="refsect2">
-<a name="GstMpegtsExtendedEventItem"></a><h3>struct GstMpegtsExtendedEventItem</h3>
-<pre class="programlisting">struct GstMpegtsExtendedEventItem {
- gchar *item_description;
- gchar *item;
-};
-</pre>
-</div>
-<hr>
-<div class="refsect2">
-<a name="GstMpegtsExtendedEventDescriptor"></a><h3>struct GstMpegtsExtendedEventDescriptor</h3>
-<pre class="programlisting">struct GstMpegtsExtendedEventDescriptor {
- guint8 descriptor_number;
- guint8 last_descriptor_number;
- gchar *language_code;
- GPtrArray *items;
- gchar *text;
-};
-</pre>
-<p>Extended Event Descriptor (EN 300 468 v.1.13.1)</p>
-<div class="refsect3">
-<a name="GstMpegtsExtendedEventDescriptor.members"></a><h4>Members</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="300px" class="struct_members_name">
-<col class="struct_members_description">
-<col width="200px" class="struct_members_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint8"><span class="type">guint8</span></a> <em class="structfield"><code><a name="GstMpegtsExtendedEventDescriptor.descriptor-number"></a>descriptor_number</code></em>;</p></td>
-<td class="struct_member_description"> </td>
-<td class="struct_member_annotations"> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint8"><span class="type">guint8</span></a> <em class="structfield"><code><a name="GstMpegtsExtendedEventDescriptor.last-descriptor-number"></a>last_descriptor_number</code></em>;</p></td>
-<td class="struct_member_description"> </td>
-<td class="struct_member_annotations"> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *<em class="structfield"><code><a name="GstMpegtsExtendedEventDescriptor.language-code"></a>language_code</code></em>;</p></td>
-<td class="struct_member_description"><p>NULL terminated language code.</p></td>
-<td class="struct_member_annotations"> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Pointer-Arrays.html#GPtrArray"><span class="type">GPtrArray</span></a> *<em class="structfield"><code><a name="GstMpegtsExtendedEventDescriptor.items"></a>items</code></em>;</p></td>
-<td class="struct_member_description"><p> the <a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GstMpegtsExtendedEventItem" title="struct GstMpegtsExtendedEventItem"><span class="type">GstMpegtsExtendedEventItem</span></a>. </p></td>
-<td class="struct_member_annotations"><span class="annotation">[<acronym title="Generics and defining elements of containers and arrays."><span class="acronym">element-type</span></acronym> GstMpegtsExtendedEventItem]</span></td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *<em class="structfield"><code><a name="GstMpegtsExtendedEventDescriptor.text"></a>text</code></em>;</p></td>
-<td class="struct_member_description"> </td>
-<td class="struct_member_annotations"> </td>
-</tr>
-</tbody>
-</table></div>
-</div>
-</div>
-<hr>
-<div class="refsect2">
-<a name="GstMpegtsSatelliteDeliverySystemDescriptor"></a><h3>struct GstMpegtsSatelliteDeliverySystemDescriptor</h3>
-<pre class="programlisting">struct GstMpegtsSatelliteDeliverySystemDescriptor {
- guint32 frequency;
- gfloat orbital_position;
- gboolean west_east;
- GstMpegtsSatellitePolarizationType polarization;
-
- GstMpegtsSatelliteRolloff roll_off;
- gboolean modulation_system;
- GstMpegtsModulationType modulation_type;
-
- guint32 symbol_rate;
- GstMpegtsDVBCodeRate fec_inner;
-};
-</pre>
-<p>Satellite Delivery System Descriptor (EN 300 468 v.1.13.1)</p>
-<div class="refsect3">
-<a name="GstMpegtsSatelliteDeliverySystemDescriptor.members"></a><h4>Members</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="300px" class="struct_members_name">
-<col class="struct_members_description">
-<col width="200px" class="struct_members_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint32"><span class="type">guint32</span></a> <em class="structfield"><code><a name="GstMpegtsSatelliteDeliverySystemDescriptor.frequency"></a>frequency</code></em>;</p></td>
-<td class="struct_member_description"><p>the frequency in kHz (kiloHertz)</p></td>
-<td class="struct_member_annotations"> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gfloat"><span class="type">gfloat</span></a> <em class="structfield"><code><a name="GstMpegtsSatelliteDeliverySystemDescriptor.orbital-position"></a>orbital_position</code></em>;</p></td>
-<td class="struct_member_description"><p>the orbital position in degrees</p></td>
-<td class="struct_member_annotations"> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a> <em class="structfield"><code><a name="GstMpegtsSatelliteDeliverySystemDescriptor.west-east"></a>west_east</code></em>;</p></td>
-<td class="struct_member_description"><p>If <a href="/usr/share/gtk-doc/html/glibglib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a>, the satellite is in the eastern part of the orbit,
-else in the western part.</p></td>
-<td class="struct_member_annotations"> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GstMpegtsSatellitePolarizationType" title="enum GstMpegtsSatellitePolarizationType"><span class="type">GstMpegtsSatellitePolarizationType</span></a> <em class="structfield"><code><a name="GstMpegtsSatelliteDeliverySystemDescriptor.polarization"></a>polarization</code></em>;</p></td>
-<td class="struct_member_description"><p>The polarization of the transmitted signal</p></td>
-<td class="struct_member_annotations"> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GstMpegtsSatelliteRolloff" title="enum GstMpegtsSatelliteRolloff"><span class="type">GstMpegtsSatelliteRolloff</span></a> <em class="structfield"><code><a name="GstMpegtsSatelliteDeliverySystemDescriptor.roll-off"></a>roll_off</code></em>;</p></td>
-<td class="struct_member_description"><p>Roll-off factor used in DVB-S2</p></td>
-<td class="struct_member_annotations"> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a> <em class="structfield"><code><a name="GstMpegtsSatelliteDeliverySystemDescriptor.modulation-system"></a>modulation_system</code></em>;</p></td>
-<td class="struct_member_description"><p>modulation system, <a href="/usr/share/gtk-doc/html/glibglib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if DVB-S2, else DVB-S</p></td>
-<td class="struct_member_annotations"> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GstMpegtsModulationType" title="enum GstMpegtsModulationType"><span class="type">GstMpegtsModulationType</span></a> <em class="structfield"><code><a name="GstMpegtsSatelliteDeliverySystemDescriptor.modulation-type"></a>modulation_type</code></em>;</p></td>
-<td class="struct_member_description"><p>Modulation scheme used</p></td>
-<td class="struct_member_annotations"> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint32"><span class="type">guint32</span></a> <em class="structfield"><code><a name="GstMpegtsSatelliteDeliverySystemDescriptor.symbol-rate"></a>symbol_rate</code></em>;</p></td>
-<td class="struct_member_description"><p>Symbol rate (in symbols per second)</p></td>
-<td class="struct_member_annotations"> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GstMpegtsDVBCodeRate" title="enum GstMpegtsDVBCodeRate"><span class="type">GstMpegtsDVBCodeRate</span></a> <em class="structfield"><code><a name="GstMpegtsSatelliteDeliverySystemDescriptor.fec-inner"></a>fec_inner</code></em>;</p></td>
-<td class="struct_member_description"><p>inner FEC scheme used</p></td>
-<td class="struct_member_annotations"> </td>
-</tr>
-</tbody>
-</table></div>
-</div>
-</div>
-<hr>
-<div class="refsect2">
-<a name="GstMpegtsDVBCodeRate"></a><h3>enum GstMpegtsDVBCodeRate</h3>
-<div class="refsect3">
-<a name="GstMpegtsDVBCodeRate.members"></a><h4>Members</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="300px" class="enum_members_name">
-<col class="enum_members_description">
-<col width="200px" class="enum_members_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="enum_member_name"><p><a name="GST-MPEGTS-FEC-NONE:CAPS"></a>GST_MPEGTS_FEC_NONE</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="enum_member_name"><p><a name="GST-MPEGTS-FEC-1-2:CAPS"></a>GST_MPEGTS_FEC_1_2</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="enum_member_name"><p><a name="GST-MPEGTS-FEC-2-3:CAPS"></a>GST_MPEGTS_FEC_2_3</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="enum_member_name"><p><a name="GST-MPEGTS-FEC-3-4:CAPS"></a>GST_MPEGTS_FEC_3_4</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="enum_member_name"><p><a name="GST-MPEGTS-FEC-4-5:CAPS"></a>GST_MPEGTS_FEC_4_5</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="enum_member_name"><p><a name="GST-MPEGTS-FEC-5-6:CAPS"></a>GST_MPEGTS_FEC_5_6</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="enum_member_name"><p><a name="GST-MPEGTS-FEC-6-7:CAPS"></a>GST_MPEGTS_FEC_6_7</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="enum_member_name"><p><a name="GST-MPEGTS-FEC-7-8:CAPS"></a>GST_MPEGTS_FEC_7_8</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="enum_member_name"><p><a name="GST-MPEGTS-FEC-8-9:CAPS"></a>GST_MPEGTS_FEC_8_9</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="enum_member_name"><p><a name="GST-MPEGTS-FEC-AUTO:CAPS"></a>GST_MPEGTS_FEC_AUTO</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="enum_member_name"><p><a name="GST-MPEGTS-FEC-3-5:CAPS"></a>GST_MPEGTS_FEC_3_5</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="enum_member_name"><p><a name="GST-MPEGTS-FEC-9-10:CAPS"></a>GST_MPEGTS_FEC_9_10</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="enum_member_name"><p><a name="GST-MPEGTS-FEC-2-5:CAPS"></a>GST_MPEGTS_FEC_2_5</p></td>
-<td> </td>
-<td> </td>
-</tr>
-</tbody>
-</table></div>
-</div>
-</div>
-<hr>
-<div class="refsect2">
-<a name="GstMpegtsModulationType"></a><h3>enum GstMpegtsModulationType</h3>
-<div class="refsect3">
-<a name="GstMpegtsModulationType.members"></a><h4>Members</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="300px" class="enum_members_name">
-<col class="enum_members_description">
-<col width="200px" class="enum_members_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="enum_member_name"><p><a name="GST-MPEGTS-MODULATION-QPSK:CAPS"></a>GST_MPEGTS_MODULATION_QPSK</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="enum_member_name"><p><a name="GST-MPEGTS-MODULATION-QAM-16:CAPS"></a>GST_MPEGTS_MODULATION_QAM_16</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="enum_member_name"><p><a name="GST-MPEGTS-MODULATION-QAM-32:CAPS"></a>GST_MPEGTS_MODULATION_QAM_32</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="enum_member_name"><p><a name="GST-MPEGTS-MODULATION-QAM-64:CAPS"></a>GST_MPEGTS_MODULATION_QAM_64</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="enum_member_name"><p><a name="GST-MPEGTS-MODULATION-QAM-128:CAPS"></a>GST_MPEGTS_MODULATION_QAM_128</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="enum_member_name"><p><a name="GST-MPEGTS-MODULATION-QAM-256:CAPS"></a>GST_MPEGTS_MODULATION_QAM_256</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="enum_member_name"><p><a name="GST-MPEGTS-MODULATION-QAM-AUTO:CAPS"></a>GST_MPEGTS_MODULATION_QAM_AUTO</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="enum_member_name"><p><a name="GST-MPEGTS-MODULATION-VSB-8:CAPS"></a>GST_MPEGTS_MODULATION_VSB_8</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="enum_member_name"><p><a name="GST-MPEGTS-MODULATION-VSB-16:CAPS"></a>GST_MPEGTS_MODULATION_VSB_16</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="enum_member_name"><p><a name="GST-MPEGTS-MODULATION-PSK-8:CAPS"></a>GST_MPEGTS_MODULATION_PSK_8</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="enum_member_name"><p><a name="GST-MPEGTS-MODULATION-APSK-16:CAPS"></a>GST_MPEGTS_MODULATION_APSK_16</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="enum_member_name"><p><a name="GST-MPEGTS-MODULATION-APSK-32:CAPS"></a>GST_MPEGTS_MODULATION_APSK_32</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="enum_member_name"><p><a name="GST-MPEGTS-MODULATION-DQPSK:CAPS"></a>GST_MPEGTS_MODULATION_DQPSK</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="enum_member_name"><p><a name="GST-MPEGTS-MODULATION-QAM-4-NR-:CAPS"></a>GST_MPEGTS_MODULATION_QAM_4_NR_</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="enum_member_name"><p><a name="GST-MPEGTS-MODULATION-NONE:CAPS"></a>GST_MPEGTS_MODULATION_NONE</p></td>
-<td> </td>
-<td> </td>
-</tr>
-</tbody>
-</table></div>
-</div>
-</div>
-<hr>
-<div class="refsect2">
-<a name="GstMpegtsSatellitePolarizationType"></a><h3>enum GstMpegtsSatellitePolarizationType</h3>
-<div class="refsect3">
-<a name="GstMpegtsSatellitePolarizationType.members"></a><h4>Members</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="300px" class="enum_members_name">
-<col class="enum_members_description">
-<col width="200px" class="enum_members_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="enum_member_name"><p><a name="GST-MPEGTS-POLARIZATION-LINEAR-HORIZONTAL:CAPS"></a>GST_MPEGTS_POLARIZATION_LINEAR_HORIZONTAL</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="enum_member_name"><p><a name="GST-MPEGTS-POLARIZATION-LINEAR-VERTICAL:CAPS"></a>GST_MPEGTS_POLARIZATION_LINEAR_VERTICAL</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="enum_member_name"><p><a name="GST-MPEGTS-POLARIZATION-CIRCULAR-LEFT:CAPS"></a>GST_MPEGTS_POLARIZATION_CIRCULAR_LEFT</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="enum_member_name"><p><a name="GST-MPEGTS-POLARIZATION-CIRCULAR-RIGHT:CAPS"></a>GST_MPEGTS_POLARIZATION_CIRCULAR_RIGHT</p></td>
-<td> </td>
-<td> </td>
-</tr>
-</tbody>
-</table></div>
-</div>
-</div>
-<hr>
-<div class="refsect2">
-<a name="GstMpegtsSatelliteRolloff"></a><h3>enum GstMpegtsSatelliteRolloff</h3>
-<div class="refsect3">
-<a name="GstMpegtsSatelliteRolloff.members"></a><h4>Members</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="300px" class="enum_members_name">
-<col class="enum_members_description">
-<col width="200px" class="enum_members_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="enum_member_name"><p><a name="GST-MPEGTS-ROLLOFF-35:CAPS"></a>GST_MPEGTS_ROLLOFF_35</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="enum_member_name"><p><a name="GST-MPEGTS-ROLLOFF-20:CAPS"></a>GST_MPEGTS_ROLLOFF_20</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="enum_member_name"><p><a name="GST-MPEGTS-ROLLOFF-25:CAPS"></a>GST_MPEGTS_ROLLOFF_25</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="enum_member_name"><p><a name="GST-MPEGTS-ROLLOFF-RESERVED:CAPS"></a>GST_MPEGTS_ROLLOFF_RESERVED</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="enum_member_name"><p><a name="GST-MPEGTS-ROLLOFF-AUTO:CAPS"></a>GST_MPEGTS_ROLLOFF_AUTO</p></td>
-<td> </td>
-<td> </td>
-</tr>
-</tbody>
-</table></div>
-</div>
-</div>
-<hr>
-<div class="refsect2">
-<a name="GstMpegtsCableDeliverySystemDescriptor"></a><h3>struct GstMpegtsCableDeliverySystemDescriptor</h3>
-<pre class="programlisting">struct GstMpegtsCableDeliverySystemDescriptor {
- guint32 frequency;
- GstMpegtsCableOuterFECScheme outer_fec;
- GstMpegtsModulationType modulation;
-
- guint32 symbol_rate;
- GstMpegtsDVBCodeRate fec_inner;
-};
-</pre>
-<p>Cable Delivery System Descriptor (EN 300 468 v.1.13.1)</p>
-<div class="refsect3">
-<a name="GstMpegtsCableDeliverySystemDescriptor.members"></a><h4>Members</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="300px" class="struct_members_name">
-<col class="struct_members_description">
-<col width="200px" class="struct_members_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint32"><span class="type">guint32</span></a> <em class="structfield"><code><a name="GstMpegtsCableDeliverySystemDescriptor.frequency"></a>frequency</code></em>;</p></td>
-<td class="struct_member_description"><p>the frequency in Hz (Hertz)</p></td>
-<td class="struct_member_annotations"> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GstMpegtsCableOuterFECScheme" title="enum GstMpegtsCableOuterFECScheme"><span class="type">GstMpegtsCableOuterFECScheme</span></a> <em class="structfield"><code><a name="GstMpegtsCableDeliverySystemDescriptor.outer-fec"></a>outer_fec</code></em>;</p></td>
-<td class="struct_member_description"><p>the outer FEC scheme used</p></td>
-<td class="struct_member_annotations"> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GstMpegtsModulationType" title="enum GstMpegtsModulationType"><span class="type">GstMpegtsModulationType</span></a> <em class="structfield"><code><a name="GstMpegtsCableDeliverySystemDescriptor.modulation"></a>modulation</code></em>;</p></td>
-<td class="struct_member_description"><p>Modulation scheme used</p></td>
-<td class="struct_member_annotations"> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint32"><span class="type">guint32</span></a> <em class="structfield"><code><a name="GstMpegtsCableDeliverySystemDescriptor.symbol-rate"></a>symbol_rate</code></em>;</p></td>
-<td class="struct_member_description"><p>Symbol rate (in symbols per second)</p></td>
-<td class="struct_member_annotations"> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GstMpegtsDVBCodeRate" title="enum GstMpegtsDVBCodeRate"><span class="type">GstMpegtsDVBCodeRate</span></a> <em class="structfield"><code><a name="GstMpegtsCableDeliverySystemDescriptor.fec-inner"></a>fec_inner</code></em>;</p></td>
-<td class="struct_member_description"><p>inner FEC scheme used</p></td>
-<td class="struct_member_annotations"> </td>
-</tr>
-</tbody>
-</table></div>
-</div>
-</div>
-<hr>
-<div class="refsect2">
-<a name="GstMpegtsCableOuterFECScheme"></a><h3>enum GstMpegtsCableOuterFECScheme</h3>
-<div class="refsect3">
-<a name="GstMpegtsCableOuterFECScheme.members"></a><h4>Members</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="300px" class="enum_members_name">
-<col class="enum_members_description">
-<col width="200px" class="enum_members_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="enum_member_name"><p><a name="GST-MPEGTS-CABLE-OUTER-FEC-UNDEFINED:CAPS"></a>GST_MPEGTS_CABLE_OUTER_FEC_UNDEFINED</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="enum_member_name"><p><a name="GST-MPEGTS-CABLE-OUTER-FEC-NONE:CAPS"></a>GST_MPEGTS_CABLE_OUTER_FEC_NONE</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="enum_member_name"><p><a name="GST-MPEGTS-CABLE-OUTER-FEC-RS-204-188:CAPS"></a>GST_MPEGTS_CABLE_OUTER_FEC_RS_204_188</p></td>
-<td> </td>
-<td> </td>
-</tr>
-</tbody>
-</table></div>
-</div>
-</div>
-<hr>
-<div class="refsect2">
-<a name="GstMpegtsTerrestrialDeliverySystemDescriptor"></a><h3>struct GstMpegtsTerrestrialDeliverySystemDescriptor</h3>
-<pre class="programlisting">struct GstMpegtsTerrestrialDeliverySystemDescriptor {
- guint32 frequency;
- guint32 bandwidth;
- gboolean priority;
- gboolean time_slicing;
- gboolean mpe_fec;
- GstMpegtsModulationType constellation;
- GstMpegtsTerrestrialHierarchy hierarchy;
- GstMpegtsDVBCodeRate code_rate_hp;
- GstMpegtsDVBCodeRate code_rate_lp;
- GstMpegtsTerrestrialGuardInterval guard_interval;
- GstMpegtsTerrestrialTransmissionMode transmission_mode;
- gboolean other_frequency;
-};
-</pre>
-<p>Terrestrial Delivery System Descriptor (EN 300 468 v.1.13.1)</p>
-<div class="refsect3">
-<a name="GstMpegtsTerrestrialDeliverySystemDescriptor.members"></a><h4>Members</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="300px" class="struct_members_name">
-<col class="struct_members_description">
-<col width="200px" class="struct_members_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint32"><span class="type">guint32</span></a> <em class="structfield"><code><a name="GstMpegtsTerrestrialDeliverySystemDescriptor.frequency"></a>frequency</code></em>;</p></td>
-<td class="struct_member_description"><p>the frequency in Hz (Hertz)</p></td>
-<td class="struct_member_annotations"> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint32"><span class="type">guint32</span></a> <em class="structfield"><code><a name="GstMpegtsTerrestrialDeliverySystemDescriptor.bandwidth"></a>bandwidth</code></em>;</p></td>
-<td class="struct_member_description"><p>the bandwidth in Hz (Hertz)</p></td>
-<td class="struct_member_annotations"> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a> <em class="structfield"><code><a name="GstMpegtsTerrestrialDeliverySystemDescriptor.priority"></a>priority</code></em>;</p></td>
-<td class="struct_member_description"><p><a href="/usr/share/gtk-doc/html/glibglib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> High Priority <a href="/usr/share/gtk-doc/html/glibglib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a> Low Priority</p></td>
-<td class="struct_member_annotations"> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a> <em class="structfield"><code><a name="GstMpegtsTerrestrialDeliverySystemDescriptor.time-slicing"></a>time_slicing</code></em>;</p></td>
-<td class="struct_member_description"><p><a href="/usr/share/gtk-doc/html/glibglib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> no time slicing <a href="/usr/share/gtk-doc/html/glibglib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a> time slicing</p></td>
-<td class="struct_member_annotations"> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a> <em class="structfield"><code><a name="GstMpegtsTerrestrialDeliverySystemDescriptor.mpe-fec"></a>mpe_fec</code></em>;</p></td>
-<td class="struct_member_description"><p><a href="/usr/share/gtk-doc/html/glibglib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> no mpe-fec is used <a href="/usr/share/gtk-doc/html/glibglib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a> mpe-fec is use</p></td>
-<td class="struct_member_annotations"> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GstMpegtsModulationType" title="enum GstMpegtsModulationType"><span class="type">GstMpegtsModulationType</span></a> <em class="structfield"><code><a name="GstMpegtsTerrestrialDeliverySystemDescriptor.constellation"></a>constellation</code></em>;</p></td>
-<td class="struct_member_description"><p>the constallation</p></td>
-<td class="struct_member_annotations"> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GstMpegtsTerrestrialHierarchy" title="enum GstMpegtsTerrestrialHierarchy"><span class="type">GstMpegtsTerrestrialHierarchy</span></a> <em class="structfield"><code><a name="GstMpegtsTerrestrialDeliverySystemDescriptor.hierarchy"></a>hierarchy</code></em>;</p></td>
-<td class="struct_member_description"><p>the hierarchy</p></td>
-<td class="struct_member_annotations"> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GstMpegtsDVBCodeRate" title="enum GstMpegtsDVBCodeRate"><span class="type">GstMpegtsDVBCodeRate</span></a> <em class="structfield"><code><a name="GstMpegtsTerrestrialDeliverySystemDescriptor.code-rate-hp"></a>code_rate_hp</code></em>;</p></td>
-<td class="struct_member_description"> </td>
-<td class="struct_member_annotations"> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GstMpegtsDVBCodeRate" title="enum GstMpegtsDVBCodeRate"><span class="type">GstMpegtsDVBCodeRate</span></a> <em class="structfield"><code><a name="GstMpegtsTerrestrialDeliverySystemDescriptor.code-rate-lp"></a>code_rate_lp</code></em>;</p></td>
-<td class="struct_member_description"> </td>
-<td class="struct_member_annotations"> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GstMpegtsTerrestrialGuardInterval" title="enum GstMpegtsTerrestrialGuardInterval"><span class="type">GstMpegtsTerrestrialGuardInterval</span></a> <em class="structfield"><code><a name="GstMpegtsTerrestrialDeliverySystemDescriptor.guard-interval"></a>guard_interval</code></em>;</p></td>
-<td class="struct_member_description"> </td>
-<td class="struct_member_annotations"> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GstMpegtsTerrestrialTransmissionMode" title="enum GstMpegtsTerrestrialTransmissionMode"><span class="type">GstMpegtsTerrestrialTransmissionMode</span></a> <em class="structfield"><code><a name="GstMpegtsTerrestrialDeliverySystemDescriptor.transmission-mode"></a>transmission_mode</code></em>;</p></td>
-<td class="struct_member_description"> </td>
-<td class="struct_member_annotations"> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a> <em class="structfield"><code><a name="GstMpegtsTerrestrialDeliverySystemDescriptor.other-frequency"></a>other_frequency</code></em>;</p></td>
-<td class="struct_member_description"><p><a href="/usr/share/gtk-doc/html/glibglib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> more frequency are use, else not</p></td>
-<td class="struct_member_annotations"> </td>
-</tr>
-</tbody>
-</table></div>
-</div>
-</div>
-<hr>
-<div class="refsect2">
-<a name="GstMpegtsTerrestrialTransmissionMode"></a><h3>enum GstMpegtsTerrestrialTransmissionMode</h3>
-<div class="refsect3">
-<a name="GstMpegtsTerrestrialTransmissionMode.members"></a><h4>Members</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="300px" class="enum_members_name">
-<col class="enum_members_description">
-<col width="200px" class="enum_members_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="enum_member_name"><p><a name="GST-MPEGTS-TRANSMISSION-MODE-2K:CAPS"></a>GST_MPEGTS_TRANSMISSION_MODE_2K</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="enum_member_name"><p><a name="GST-MPEGTS-TRANSMISSION-MODE-8K:CAPS"></a>GST_MPEGTS_TRANSMISSION_MODE_8K</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="enum_member_name"><p><a name="GST-MPEGTS-TRANSMISSION-MODE-AUTO:CAPS"></a>GST_MPEGTS_TRANSMISSION_MODE_AUTO</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="enum_member_name"><p><a name="GST-MPEGTS-TRANSMISSION-MODE-4K:CAPS"></a>GST_MPEGTS_TRANSMISSION_MODE_4K</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="enum_member_name"><p><a name="GST-MPEGTS-TRANSMISSION-MODE-1K:CAPS"></a>GST_MPEGTS_TRANSMISSION_MODE_1K</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="enum_member_name"><p><a name="GST-MPEGTS-TRANSMISSION-MODE-16K:CAPS"></a>GST_MPEGTS_TRANSMISSION_MODE_16K</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="enum_member_name"><p><a name="GST-MPEGTS-TRANSMISSION-MODE-32K:CAPS"></a>GST_MPEGTS_TRANSMISSION_MODE_32K</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="enum_member_name"><p><a name="GST-MPEGTS-TRANSMISSION-MODE-C1:CAPS"></a>GST_MPEGTS_TRANSMISSION_MODE_C1</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="enum_member_name"><p><a name="GST-MPEGTS-TRANSMISSION-MODE-C3780:CAPS"></a>GST_MPEGTS_TRANSMISSION_MODE_C3780</p></td>
-<td> </td>
-<td> </td>
-</tr>
-</tbody>
-</table></div>
-</div>
-</div>
-<hr>
-<div class="refsect2">
-<a name="GstMpegtsTerrestrialGuardInterval"></a><h3>enum GstMpegtsTerrestrialGuardInterval</h3>
-<div class="refsect3">
-<a name="GstMpegtsTerrestrialGuardInterval.members"></a><h4>Members</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="300px" class="enum_members_name">
-<col class="enum_members_description">
-<col width="200px" class="enum_members_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="enum_member_name"><p><a name="GST-MPEGTS-GUARD-INTERVAL-1-32:CAPS"></a>GST_MPEGTS_GUARD_INTERVAL_1_32</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="enum_member_name"><p><a name="GST-MPEGTS-GUARD-INTERVAL-1-16:CAPS"></a>GST_MPEGTS_GUARD_INTERVAL_1_16</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="enum_member_name"><p><a name="GST-MPEGTS-GUARD-INTERVAL-1-8:CAPS"></a>GST_MPEGTS_GUARD_INTERVAL_1_8</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="enum_member_name"><p><a name="GST-MPEGTS-GUARD-INTERVAL-1-4:CAPS"></a>GST_MPEGTS_GUARD_INTERVAL_1_4</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="enum_member_name"><p><a name="GST-MPEGTS-GUARD-INTERVAL-AUTO:CAPS"></a>GST_MPEGTS_GUARD_INTERVAL_AUTO</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="enum_member_name"><p><a name="GST-MPEGTS-GUARD-INTERVAL-1-128:CAPS"></a>GST_MPEGTS_GUARD_INTERVAL_1_128</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="enum_member_name"><p><a name="GST-MPEGTS-GUARD-INTERVAL-19-128:CAPS"></a>GST_MPEGTS_GUARD_INTERVAL_19_128</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="enum_member_name"><p><a name="GST-MPEGTS-GUARD-INTERVAL-19-256:CAPS"></a>GST_MPEGTS_GUARD_INTERVAL_19_256</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="enum_member_name"><p><a name="GST-MPEGTS-GUARD-INTERVAL-PN420:CAPS"></a>GST_MPEGTS_GUARD_INTERVAL_PN420</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="enum_member_name"><p><a name="GST-MPEGTS-GUARD-INTERVAL-PN595:CAPS"></a>GST_MPEGTS_GUARD_INTERVAL_PN595</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="enum_member_name"><p><a name="GST-MPEGTS-GUARD-INTERVAL-PN945:CAPS"></a>GST_MPEGTS_GUARD_INTERVAL_PN945</p></td>
-<td> </td>
-<td> </td>
-</tr>
-</tbody>
-</table></div>
-</div>
-</div>
-<hr>
-<div class="refsect2">
-<a name="GstMpegtsTerrestrialHierarchy"></a><h3>enum GstMpegtsTerrestrialHierarchy</h3>
-<div class="refsect3">
-<a name="GstMpegtsTerrestrialHierarchy.members"></a><h4>Members</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="300px" class="enum_members_name">
-<col class="enum_members_description">
-<col width="200px" class="enum_members_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="enum_member_name"><p><a name="GST-MPEGTS-HIERARCHY-NONE:CAPS"></a>GST_MPEGTS_HIERARCHY_NONE</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="enum_member_name"><p><a name="GST-MPEGTS-HIERARCHY-1:CAPS"></a>GST_MPEGTS_HIERARCHY_1</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="enum_member_name"><p><a name="GST-MPEGTS-HIERARCHY-2:CAPS"></a>GST_MPEGTS_HIERARCHY_2</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="enum_member_name"><p><a name="GST-MPEGTS-HIERARCHY-4:CAPS"></a>GST_MPEGTS_HIERARCHY_4</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="enum_member_name"><p><a name="GST-MPEGTS-HIERARCHY-AUTO:CAPS"></a>GST_MPEGTS_HIERARCHY_AUTO</p></td>
-<td> </td>
-<td> </td>
-</tr>
-</tbody>
-</table></div>
-</div>
-</div>
-<hr>
-<div class="refsect2">
-<a name="GstMpegtsT2DeliverySystemCellExtension"></a><h3>struct GstMpegtsT2DeliverySystemCellExtension</h3>
-<pre class="programlisting">struct GstMpegtsT2DeliverySystemCellExtension {
- guint8 cell_id_extension;
- guint32 transposer_frequency;
-};
-</pre>
-<div class="refsect3">
-<a name="GstMpegtsT2DeliverySystemCellExtension.members"></a><h4>Members</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="300px" class="struct_members_name">
-<col class="struct_members_description">
-<col width="200px" class="struct_members_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint8"><span class="type">guint8</span></a> <em class="structfield"><code><a name="GstMpegtsT2DeliverySystemCellExtension.cell-id-extension"></a>cell_id_extension</code></em>;</p></td>
-<td class="struct_member_description"><p>id of the sub cell</p></td>
-<td class="struct_member_annotations"> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint32"><span class="type">guint32</span></a> <em class="structfield"><code><a name="GstMpegtsT2DeliverySystemCellExtension.transposer-frequency"></a>transposer_frequency</code></em>;</p></td>
-<td class="struct_member_description"><p>centre frequency of the sub cell in Hz</p></td>
-<td class="struct_member_annotations"> </td>
-</tr>
-</tbody>
-</table></div>
-</div>
-</div>
-<hr>
-<div class="refsect2">
-<a name="GstMpegtsT2DeliverySystemCell"></a><h3>struct GstMpegtsT2DeliverySystemCell</h3>
-<pre class="programlisting">struct GstMpegtsT2DeliverySystemCell {
- guint16 cell_id;
- GArray *centre_frequencies;
- GPtrArray *sub_cells;
-};
-</pre>
-<div class="refsect3">
-<a name="GstMpegtsT2DeliverySystemCell.members"></a><h4>Members</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="300px" class="struct_members_name">
-<col class="struct_members_description">
-<col width="200px" class="struct_members_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint16"><span class="type">guint16</span></a> <em class="structfield"><code><a name="GstMpegtsT2DeliverySystemCell.cell-id"></a>cell_id</code></em>;</p></td>
-<td class="struct_member_description"><p>id of the cell</p></td>
-<td class="struct_member_annotations"> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Arrays.html#GArray"><span class="type">GArray</span></a> *<em class="structfield"><code><a name="GstMpegtsT2DeliverySystemCell.centre-frequencies"></a>centre_frequencies</code></em>;</p></td>
-<td class="struct_member_description"><p> centre frequencies in Hz. </p></td>
-<td class="struct_member_annotations"><span class="annotation">[<acronym title="Generics and defining elements of containers and arrays."><span class="acronym">element-type</span></acronym> guint32]</span></td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Pointer-Arrays.html#GPtrArray"><span class="type">GPtrArray</span></a> *<em class="structfield"><code><a name="GstMpegtsT2DeliverySystemCell.sub-cells"></a>sub_cells</code></em>;</p></td>
-<td class="struct_member_description"><p>. </p></td>
-<td class="struct_member_annotations"><span class="annotation">[<acronym title="Generics and defining elements of containers and arrays."><span class="acronym">element-type</span></acronym> GstMpegtsT2DeliverySystemCellExtension]</span></td>
-</tr>
-</tbody>
-</table></div>
-</div>
-</div>
-<hr>
-<div class="refsect2">
-<a name="GstMpegtsT2DeliverySystemDescriptor"></a><h3>struct GstMpegtsT2DeliverySystemDescriptor</h3>
-<pre class="programlisting">struct GstMpegtsT2DeliverySystemDescriptor {
- guint8 plp_id;
- guint16 t2_system_id;
- /* FIXME: */
- guint8 siso_miso;
- guint32 bandwidth;
- GstMpegtsTerrestrialGuardInterval guard_interval;
- GstMpegtsTerrestrialTransmissionMode transmission_mode;
- gboolean other_frequency;
- gboolean tfs;
- GPtrArray *cells;
-};
-</pre>
-<p>describe DVB-T2 transmissions according to EN 302 755</p>
-<div class="refsect3">
-<a name="GstMpegtsT2DeliverySystemDescriptor.members"></a><h4>Members</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="300px" class="struct_members_name">
-<col class="struct_members_description">
-<col width="200px" class="struct_members_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint8"><span class="type">guint8</span></a> <em class="structfield"><code><a name="GstMpegtsT2DeliverySystemDescriptor.plp-id"></a>plp_id</code></em>;</p></td>
-<td class="struct_member_description"> </td>
-<td class="struct_member_annotations"> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint16"><span class="type">guint16</span></a> <em class="structfield"><code><a name="GstMpegtsT2DeliverySystemDescriptor.t2-system-id"></a>t2_system_id</code></em>;</p></td>
-<td class="struct_member_description"> </td>
-<td class="struct_member_annotations"> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint8"><span class="type">guint8</span></a> <em class="structfield"><code><a name="GstMpegtsT2DeliverySystemDescriptor.siso-miso"></a>siso_miso</code></em>;</p></td>
-<td class="struct_member_description"> </td>
-<td class="struct_member_annotations"> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint32"><span class="type">guint32</span></a> <em class="structfield"><code><a name="GstMpegtsT2DeliverySystemDescriptor.bandwidth"></a>bandwidth</code></em>;</p></td>
-<td class="struct_member_description"> </td>
-<td class="struct_member_annotations"> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GstMpegtsTerrestrialGuardInterval" title="enum GstMpegtsTerrestrialGuardInterval"><span class="type">GstMpegtsTerrestrialGuardInterval</span></a> <em class="structfield"><code><a name="GstMpegtsT2DeliverySystemDescriptor.guard-interval"></a>guard_interval</code></em>;</p></td>
-<td class="struct_member_description"> </td>
-<td class="struct_member_annotations"> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GstMpegtsTerrestrialTransmissionMode" title="enum GstMpegtsTerrestrialTransmissionMode"><span class="type">GstMpegtsTerrestrialTransmissionMode</span></a> <em class="structfield"><code><a name="GstMpegtsT2DeliverySystemDescriptor.transmission-mode"></a>transmission_mode</code></em>;</p></td>
-<td class="struct_member_description"> </td>
-<td class="struct_member_annotations"> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a> <em class="structfield"><code><a name="GstMpegtsT2DeliverySystemDescriptor.other-frequency"></a>other_frequency</code></em>;</p></td>
-<td class="struct_member_description"> </td>
-<td class="struct_member_annotations"> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a> <em class="structfield"><code><a name="GstMpegtsT2DeliverySystemDescriptor.tfs"></a>tfs</code></em>;</p></td>
-<td class="struct_member_description"> </td>
-<td class="struct_member_annotations"> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Pointer-Arrays.html#GPtrArray"><span class="type">GPtrArray</span></a> *<em class="structfield"><code><a name="GstMpegtsT2DeliverySystemDescriptor.cells"></a>cells</code></em>;</p></td>
-<td class="struct_member_description"><p>. </p></td>
-<td class="struct_member_annotations"><span class="annotation">[<acronym title="Generics and defining elements of containers and arrays."><span class="acronym">element-type</span></acronym> GstMpegtsT2DeliverySystemCell]</span></td>
-</tr>
-</tbody>
-</table></div>
-</div>
-</div>
-<hr>
-<div class="refsect2">
-<a name="GstMpegtsDVBServiceType"></a><h3>enum GstMpegtsDVBServiceType</h3>
-<p>The type of service of a channel.</p>
-<p>As specified in Table 87 of ETSI EN 300 468 v1.13.1</p>
-<div class="refsect3">
-<a name="GstMpegtsDVBServiceType.members"></a><h4>Members</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="300px" class="enum_members_name">
-<col class="enum_members_description">
-<col width="200px" class="enum_members_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="enum_member_name"><p><a name="GST-DVB-SERVICE-RESERVED-00:CAPS"></a>GST_DVB_SERVICE_RESERVED_00</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="enum_member_name"><p><a name="GST-DVB-SERVICE-DIGITAL-TELEVISION:CAPS"></a>GST_DVB_SERVICE_DIGITAL_TELEVISION</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="enum_member_name"><p><a name="GST-DVB-SERVICE-DIGITAL-RADIO-SOUND:CAPS"></a>GST_DVB_SERVICE_DIGITAL_RADIO_SOUND</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="enum_member_name"><p><a name="GST-DVB-SERVICE-TELETEXT:CAPS"></a>GST_DVB_SERVICE_TELETEXT</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="enum_member_name"><p><a name="GST-DVB-SERVICE-NVOD-REFERENCE:CAPS"></a>GST_DVB_SERVICE_NVOD_REFERENCE</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="enum_member_name"><p><a name="GST-DVB-SERVICE-NVOD-TIME-SHIFTED:CAPS"></a>GST_DVB_SERVICE_NVOD_TIME_SHIFTED</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="enum_member_name"><p><a name="GST-DVB-SERVICE-MOSAIC:CAPS"></a>GST_DVB_SERVICE_MOSAIC</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="enum_member_name"><p><a name="GST-DVB-SERVICE-FM-RADIO:CAPS"></a>GST_DVB_SERVICE_FM_RADIO</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="enum_member_name"><p><a name="GST-DVB-SERVICE-DVB-SRM:CAPS"></a>GST_DVB_SERVICE_DVB_SRM</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="enum_member_name"><p><a name="GST-DVB-SERVICE-RESERVED-09:CAPS"></a>GST_DVB_SERVICE_RESERVED_09</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="enum_member_name"><p><a name="GST-DVB-SERVICE-ADVANCED-CODEC-DIGITAL-RADIO-SOUND:CAPS"></a>GST_DVB_SERVICE_ADVANCED_CODEC_DIGITAL_RADIO_SOUND</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="enum_member_name"><p><a name="GST-DVB-SERVICE-ADVANCED-CODEC-MOSAIC:CAPS"></a>GST_DVB_SERVICE_ADVANCED_CODEC_MOSAIC</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="enum_member_name"><p><a name="GST-DVB-SERVICE-DATA-BROADCAST:CAPS"></a>GST_DVB_SERVICE_DATA_BROADCAST</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="enum_member_name"><p><a name="GST-DVB-SERVICE-RESERVED-0D-COMMON-INTERFACE:CAPS"></a>GST_DVB_SERVICE_RESERVED_0D_COMMON_INTERFACE</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="enum_member_name"><p><a name="GST-DVB-SERVICE-RCS-MAP:CAPS"></a>GST_DVB_SERVICE_RCS_MAP</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="enum_member_name"><p><a name="GST-DVB-SERVICE-RCS-FLS:CAPS"></a>GST_DVB_SERVICE_RCS_FLS</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="enum_member_name"><p><a name="GST-DVB-SERVICE-DVB-MHP:CAPS"></a>GST_DVB_SERVICE_DVB_MHP</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="enum_member_name"><p><a name="GST-DVB-SERVICE-MPEG2-HD-DIGITAL-TELEVISION:CAPS"></a>GST_DVB_SERVICE_MPEG2_HD_DIGITAL_TELEVISION</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="enum_member_name"><p><a name="GST-DVB-SERVICE-ADVANCED-CODEC-SD-DIGITAL-TELEVISION:CAPS"></a>GST_DVB_SERVICE_ADVANCED_CODEC_SD_DIGITAL_TELEVISION</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="enum_member_name"><p><a name="GST-DVB-SERVICE-ADVANCED-CODEC-SD-NVOD-TIME-SHIFTED:CAPS"></a>GST_DVB_SERVICE_ADVANCED_CODEC_SD_NVOD_TIME_SHIFTED</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="enum_member_name"><p><a name="GST-DVB-SERVICE-ADVANCED-CODEC-SD-NVOD-REFERENCE:CAPS"></a>GST_DVB_SERVICE_ADVANCED_CODEC_SD_NVOD_REFERENCE</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="enum_member_name"><p><a name="GST-DVB-SERVICE-ADVANCED-CODEC-HD-DIGITAL-TELEVISION:CAPS"></a>GST_DVB_SERVICE_ADVANCED_CODEC_HD_DIGITAL_TELEVISION</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="enum_member_name"><p><a name="GST-DVB-SERVICE-ADVANCED-CODEC-HD-NVOD-TIME-SHIFTED:CAPS"></a>GST_DVB_SERVICE_ADVANCED_CODEC_HD_NVOD_TIME_SHIFTED</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="enum_member_name"><p><a name="GST-DVB-SERVICE-ADVANCED-CODEC-HD-NVOD-REFERENCE:CAPS"></a>GST_DVB_SERVICE_ADVANCED_CODEC_HD_NVOD_REFERENCE</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="enum_member_name"><p><a name="GST-DVB-SERVICE-ADVANCED-CODEC-STEREO-HD-DIGITAL-TELEVISION:CAPS"></a>GST_DVB_SERVICE_ADVANCED_CODEC_STEREO_HD_DIGITAL_TELEVISION</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="enum_member_name"><p><a name="GST-DVB-SERVICE-ADVANCED-CODEC-STEREO-HD-NVOD-TIME-SHIFTED:CAPS"></a>GST_DVB_SERVICE_ADVANCED_CODEC_STEREO_HD_NVOD_TIME_SHIFTED</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="enum_member_name"><p><a name="GST-DVB-SERVICE-ADVANCED-CODEC-STEREO-HD-NVOD-REFERENCE:CAPS"></a>GST_DVB_SERVICE_ADVANCED_CODEC_STEREO_HD_NVOD_REFERENCE</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="enum_member_name"><p><a name="GST-DVB-SERVICE-RESERVED-FF:CAPS"></a>GST_DVB_SERVICE_RESERVED_FF</p></td>
-<td> </td>
-<td> </td>
-</tr>
-</tbody>
-</table></div>
-</div>
-</div>
-<hr>
-<div class="refsect2">
-<a name="GstMpegtsDVBTeletextType"></a><h3>enum GstMpegtsDVBTeletextType</h3>
-<p>The type of teletext page.</p>
-<p>As specified in Table 100 of ETSI EN 300 468 v1.13.1</p>
-<div class="refsect3">
-<a name="GstMpegtsDVBTeletextType.members"></a><h4>Members</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="300px" class="enum_members_name">
-<col class="enum_members_description">
-<col width="200px" class="enum_members_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="enum_member_name"><p><a name="INITIAL-PAGE:CAPS"></a>INITIAL_PAGE</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="enum_member_name"><p><a name="SUBTITLE-PAGE:CAPS"></a>SUBTITLE_PAGE</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="enum_member_name"><p><a name="ADDITIONAL-INFO-PAGE:CAPS"></a>ADDITIONAL_INFO_PAGE</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="enum_member_name"><p><a name="PROGRAMME-SCHEDULE-PAGE:CAPS"></a>PROGRAMME_SCHEDULE_PAGE</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="enum_member_name"><p><a name="HEARING-IMPAIRED-PAGE:CAPS"></a>HEARING_IMPAIRED_PAGE</p></td>
-<td> </td>
-<td> </td>
-</tr>
-</tbody>
-</table></div>
-</div>
-</div>
-<hr>
-<div class="refsect2">
-<a name="GstMpegtsDVBLinkageType"></a><h3>enum GstMpegtsDVBLinkageType</h3>
-<p>Linkage Type (EN 300 468 v.1.13.1)</p>
-<div class="refsect3">
-<a name="GstMpegtsDVBLinkageType.members"></a><h4>Members</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="300px" class="enum_members_name">
-<col class="enum_members_description">
-<col width="200px" class="enum_members_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="enum_member_name"><p><a name="GST-MPEGTS-DVB-LINKAGE-RESERVED-00:CAPS"></a>GST_MPEGTS_DVB_LINKAGE_RESERVED_00</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="enum_member_name"><p><a name="GST-MPEGTS-DVB-LINKAGE-INFORMATION:CAPS"></a>GST_MPEGTS_DVB_LINKAGE_INFORMATION</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="enum_member_name"><p><a name="GST-MPEGTS-DVB-LINKAGE-EPG:CAPS"></a>GST_MPEGTS_DVB_LINKAGE_EPG</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="enum_member_name"><p><a name="GST-MPEGTS-DVB-LINKAGE-CA-REPLACEMENT:CAPS"></a>GST_MPEGTS_DVB_LINKAGE_CA_REPLACEMENT</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="enum_member_name"><p><a name="GST-MPEGTS-DVB-LINKAGE-TS-CONTAINING-COMPLETE-SI:CAPS"></a>GST_MPEGTS_DVB_LINKAGE_TS_CONTAINING_COMPLETE_SI</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="enum_member_name"><p><a name="GST-MPEGTS-DVB-LINKAGE-SERVICE-REPLACEMENT:CAPS"></a>GST_MPEGTS_DVB_LINKAGE_SERVICE_REPLACEMENT</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="enum_member_name"><p><a name="GST-MPEGTS-DVB-LINKAGE-DATA-BROADCAST:CAPS"></a>GST_MPEGTS_DVB_LINKAGE_DATA_BROADCAST</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="enum_member_name"><p><a name="GST-MPEGTS-DVB-LINKAGE-RCS-MAP:CAPS"></a>GST_MPEGTS_DVB_LINKAGE_RCS_MAP</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="enum_member_name"><p><a name="GST-MPEGTS-DVB-LINKAGE-MOBILE-HAND-OVER:CAPS"></a>GST_MPEGTS_DVB_LINKAGE_MOBILE_HAND_OVER</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="enum_member_name"><p><a name="GST-MPEGTS-DVB-LINKAGE-SYSTEM-SOFTWARE-UPDATE:CAPS"></a>GST_MPEGTS_DVB_LINKAGE_SYSTEM_SOFTWARE_UPDATE</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="enum_member_name"><p><a name="GST-MPEGTS-DVB-LINKAGE-TS-CONTAINING-SSU:CAPS"></a>GST_MPEGTS_DVB_LINKAGE_TS_CONTAINING_SSU</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="enum_member_name"><p><a name="GST-MPEGTS-DVB-LINKAGE-IP-MAC-NOTIFICATION:CAPS"></a>GST_MPEGTS_DVB_LINKAGE_IP_MAC_NOTIFICATION</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="enum_member_name"><p><a name="GST-MPEGTS-DVB-LINKAGE-TS-CONTAINING-INT:CAPS"></a>GST_MPEGTS_DVB_LINKAGE_TS_CONTAINING_INT</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="enum_member_name"><p><a name="GST-MPEGTS-DVB-LINKAGE-EVENT:CAPS"></a>GST_MPEGTS_DVB_LINKAGE_EVENT</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="enum_member_name"><p><a name="GST-MPEGTS-DVB-LINKAGE-EXTENDED-EVENT:CAPS"></a>GST_MPEGTS_DVB_LINKAGE_EXTENDED_EVENT</p></td>
-<td> </td>
-<td> </td>
-</tr>
-</tbody>
-</table></div>
-</div>
-</div>
-<hr>
-<div class="refsect2">
-<a name="GstMpegtsDVBLinkageHandOverType"></a><h3>enum GstMpegtsDVBLinkageHandOverType</h3>
-<div class="refsect3">
-<a name="GstMpegtsDVBLinkageHandOverType.members"></a><h4>Members</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="300px" class="enum_members_name">
-<col class="enum_members_description">
-<col width="200px" class="enum_members_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="enum_member_name"><p><a name="GST-MPEGTS-DVB-LINKAGE-HAND-OVER-RESERVED:CAPS"></a>GST_MPEGTS_DVB_LINKAGE_HAND_OVER_RESERVED</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="enum_member_name"><p><a name="GST-MPEGTS-DVB-LINKAGE-HAND-OVER-IDENTICAL:CAPS"></a>GST_MPEGTS_DVB_LINKAGE_HAND_OVER_IDENTICAL</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="enum_member_name"><p><a name="GST-MPEGTS-DVB-LINKAGE-HAND-OVER-LOCAL-VARIATION:CAPS"></a>GST_MPEGTS_DVB_LINKAGE_HAND_OVER_LOCAL_VARIATION</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="enum_member_name"><p><a name="GST-MPEGTS-DVB-LINKAGE-HAND-OVER-ASSOCIATED:CAPS"></a>GST_MPEGTS_DVB_LINKAGE_HAND_OVER_ASSOCIATED</p></td>
-<td> </td>
-<td> </td>
-</tr>
-</tbody>
-</table></div>
-</div>
-</div>
-<hr>
-<div class="refsect2">
-<a name="GstMpegtsDVBLinkageMobileHandOver"></a><h3>struct GstMpegtsDVBLinkageMobileHandOver</h3>
-<pre class="programlisting">struct GstMpegtsDVBLinkageMobileHandOver {
- GstMpegtsDVBLinkageHandOverType hand_over_type;
- /* 0 = NIT, 1 = SDT */
- gboolean origin_type;
- guint16 network_id;
- guint16 initial_service_id;
-};
-</pre>
-</div>
-<hr>
-<div class="refsect2">
-<a name="GstMpegtsDVBLinkageEvent"></a><h3>struct GstMpegtsDVBLinkageEvent</h3>
-<pre class="programlisting">struct GstMpegtsDVBLinkageEvent {
- guint16 target_event_id;
- gboolean target_listed;
- gboolean event_simulcast;
-};
-</pre>
-</div>
-<hr>
-<div class="refsect2">
-<a name="GstMpegtsDVBLinkageExtendedEvent"></a><h3>struct GstMpegtsDVBLinkageExtendedEvent</h3>
-<pre class="programlisting">struct GstMpegtsDVBLinkageExtendedEvent {
- guint16 target_event_id;
- gboolean target_listed;
- gboolean event_simulcast;
- /* FIXME: */
- guint8 link_type;
- /* FIXME: */
- guint8 target_id_type;
- gboolean original_network_id_flag;
- gboolean service_id_flag;
- /* if (target_id_type == 3) */
- guint16 user_defined_id;
- /* else */
- guint16 target_transport_stream_id;
- guint16 target_original_network_id;
- guint16 target_service_id;
-};
-</pre>
-</div>
-<hr>
-<div class="refsect2">
-<a name="GstMpegtsDVBLinkageDescriptor"></a><h3>struct GstMpegtsDVBLinkageDescriptor</h3>
-<pre class="programlisting">struct GstMpegtsDVBLinkageDescriptor {
- guint16 transport_stream_id;
- guint16 original_network_id;
- guint16 service_id;
- GstMpegtsDVBLinkageType linkage_type;
- guint8 private_data_length;
- guint8 *private_data_bytes;
-};
-</pre>
-<div class="refsect3">
-<a name="GstMpegtsDVBLinkageDescriptor.members"></a><h4>Members</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="300px" class="struct_members_name">
-<col class="struct_members_description">
-<col width="200px" class="struct_members_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint16"><span class="type">guint16</span></a> <em class="structfield"><code><a name="GstMpegtsDVBLinkageDescriptor.transport-stream-id"></a>transport_stream_id</code></em>;</p></td>
-<td class="struct_member_description"><p>the transport id</p></td>
-<td class="struct_member_annotations"> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint16"><span class="type">guint16</span></a> <em class="structfield"><code><a name="GstMpegtsDVBLinkageDescriptor.original-network-id"></a>original_network_id</code></em>;</p></td>
-<td class="struct_member_description"><p>the original network id</p></td>
-<td class="struct_member_annotations"> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint16"><span class="type">guint16</span></a> <em class="structfield"><code><a name="GstMpegtsDVBLinkageDescriptor.service-id"></a>service_id</code></em>;</p></td>
-<td class="struct_member_description"><p>the service id</p></td>
-<td class="struct_member_annotations"> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GstMpegtsDVBLinkageType" title="enum GstMpegtsDVBLinkageType"><span class="type">GstMpegtsDVBLinkageType</span></a> <em class="structfield"><code><a name="GstMpegtsDVBLinkageDescriptor.linkage-type"></a>linkage_type</code></em>;</p></td>
-<td class="struct_member_description"><p>the type which <code class="literal">linkage_data</code> has</p></td>
-<td class="struct_member_annotations"> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint8"><span class="type">guint8</span></a> <em class="structfield"><code><a name="GstMpegtsDVBLinkageDescriptor.private-data-length"></a>private_data_length</code></em>;</p></td>
-<td class="struct_member_description"><p>the length for <code class="literal">private_data_bytes</code></p></td>
-<td class="struct_member_annotations"> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint8"><span class="type">guint8</span></a> *<em class="structfield"><code><a name="GstMpegtsDVBLinkageDescriptor.private-data-bytes"></a>private_data_bytes</code></em>;</p></td>
-<td class="struct_member_description"><p>additional data bytes</p></td>
-<td class="struct_member_annotations"> </td>
-</tr>
-</tbody>
-</table></div>
-</div>
-</div>
-<hr>
-<div class="refsect2">
-<a name="GstMpegtsDataBroadcastDescriptor"></a><h3>struct GstMpegtsDataBroadcastDescriptor</h3>
-<pre class="programlisting">struct GstMpegtsDataBroadcastDescriptor {
- guint16 data_broadcast_id;
- guint8 component_tag;
- guint8 length;
- guint8 *selector_bytes;
- gchar *language_code;
- gchar *text;
-};
-</pre>
-<div class="refsect3">
-<a name="GstMpegtsDataBroadcastDescriptor.members"></a><h4>Members</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="300px" class="struct_members_name">
-<col class="struct_members_description">
-<col width="200px" class="struct_members_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint16"><span class="type">guint16</span></a> <em class="structfield"><code><a name="GstMpegtsDataBroadcastDescriptor.data-broadcast-id"></a>data_broadcast_id</code></em>;</p></td>
-<td class="struct_member_description"><p>the data broadcast id</p></td>
-<td class="struct_member_annotations"> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint8"><span class="type">guint8</span></a> <em class="structfield"><code><a name="GstMpegtsDataBroadcastDescriptor.component-tag"></a>component_tag</code></em>;</p></td>
-<td class="struct_member_description"><p>the component tag</p></td>
-<td class="struct_member_annotations"> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint8"><span class="type">guint8</span></a> <em class="structfield"><code><a name="GstMpegtsDataBroadcastDescriptor.length"></a>length</code></em>;</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint8"><span class="type">guint8</span></a> *<em class="structfield"><code><a name="GstMpegtsDataBroadcastDescriptor.selector-bytes"></a>selector_bytes</code></em>;</p></td>
-<td class="struct_member_description"><p>the selector byte field</p></td>
-<td class="struct_member_annotations"> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *<em class="structfield"><code><a name="GstMpegtsDataBroadcastDescriptor.language-code"></a>language_code</code></em>;</p></td>
-<td class="struct_member_description"><p>language of <em class="parameter"><code>text</code></em>
-</p></td>
-<td class="struct_member_annotations"> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *<em class="structfield"><code><a name="GstMpegtsDataBroadcastDescriptor.text"></a>text</code></em>;</p></td>
-<td class="struct_member_description"><p>description of data broadcast</p></td>
-<td class="struct_member_annotations"> </td>
-</tr>
-</tbody>
-</table></div>
-</div>
-</div>
-<hr>
-<div class="refsect2">
-<a name="GstMpegtsDVBScramblingModeType"></a><h3>enum GstMpegtsDVBScramblingModeType</h3>
-<div class="refsect3">
-<a name="GstMpegtsDVBScramblingModeType.members"></a><h4>Members</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="300px" class="enum_members_name">
-<col class="enum_members_description">
-<col width="200px" class="enum_members_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="enum_member_name"><p><a name="GST-MPEGTS-DVB-SCRAMBLING-MODE-RESERVED:CAPS"></a>GST_MPEGTS_DVB_SCRAMBLING_MODE_RESERVED</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="enum_member_name"><p><a name="GST-MPEGTS-DVB-SCRAMBLING-MODE-CSA1:CAPS"></a>GST_MPEGTS_DVB_SCRAMBLING_MODE_CSA1</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="enum_member_name"><p><a name="GST-MPEGTS-DVB-SCRAMBLING-MODE-CSA2:CAPS"></a>GST_MPEGTS_DVB_SCRAMBLING_MODE_CSA2</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="enum_member_name"><p><a name="GST-MPEGTS-DVB-SCRAMBLING-MODE-CSA3-STANDARD:CAPS"></a>GST_MPEGTS_DVB_SCRAMBLING_MODE_CSA3_STANDARD</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="enum_member_name"><p><a name="GST-MPEGTS-DVB-SCRAMBLING-MODE-CSA3-MINIMAL-ENHANCED:CAPS"></a>GST_MPEGTS_DVB_SCRAMBLING_MODE_CSA3_MINIMAL_ENHANCED</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="enum_member_name"><p><a name="GST-MPEGTS-DVB-SCRAMBLING-MODE-CSA3-FULL-ENHANCED:CAPS"></a>GST_MPEGTS_DVB_SCRAMBLING_MODE_CSA3_FULL_ENHANCED</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="enum_member_name"><p><a name="GST-MPEGTS-DVB-SCRAMBLING-MODE-CISSA:CAPS"></a>GST_MPEGTS_DVB_SCRAMBLING_MODE_CISSA</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="enum_member_name"><p><a name="GST-MPEGTS-DVB-SCRAMBLING-MODE-ATIS-0:CAPS"></a>GST_MPEGTS_DVB_SCRAMBLING_MODE_ATIS_0</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="enum_member_name"><p><a name="GST-MPEGTS-DVB-SCRAMBLING-MODE-ATIS-F:CAPS"></a>GST_MPEGTS_DVB_SCRAMBLING_MODE_ATIS_F</p></td>
-<td> </td>
-<td> </td>
-</tr>
-</tbody>
-</table></div>
-</div>
-</div>
-<hr>
-<div class="refsect2">
-<a name="GstMpegtsDVBParentalRatingItem"></a><h3>struct GstMpegtsDVBParentalRatingItem</h3>
-<pre class="programlisting">struct GstMpegtsDVBParentalRatingItem {
- gchar *country_code;
- guint8 rating;
-};
-</pre>
-</div>
-<hr>
-<div class="refsect2">
-<a name="GstMpegtsDVBServiceListItem"></a><h3>struct GstMpegtsDVBServiceListItem</h3>
-<pre class="programlisting">struct GstMpegtsDVBServiceListItem {
- guint16 service_id;
- GstMpegtsDVBServiceType type;
-};
-</pre>
-<div class="refsect3">
-<a name="GstMpegtsDVBServiceListItem.members"></a><h4>Members</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="300px" class="struct_members_name">
-<col class="struct_members_description">
-<col width="200px" class="struct_members_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint16"><span class="type">guint16</span></a> <em class="structfield"><code><a name="GstMpegtsDVBServiceListItem.service-id"></a>service_id</code></em>;</p></td>
-<td class="struct_member_description"><p>the id of a service</p></td>
-<td class="struct_member_annotations"> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GstMpegtsDVBServiceType" title="enum GstMpegtsDVBServiceType"><span class="type">GstMpegtsDVBServiceType</span></a> <em class="structfield"><code><a name="GstMpegtsDVBServiceListItem.type"></a>type</code></em>;</p></td>
-<td class="struct_member_description"><p>the type of a service</p></td>
-<td class="struct_member_annotations"> </td>
-</tr>
-</tbody>
-</table></div>
-</div>
-</div>
-<hr>
-<div class="refsect2">
-<a name="GstMpegtsDvbMultilingualNetworkNameItem"></a><h3>struct GstMpegtsDvbMultilingualNetworkNameItem</h3>
-<pre class="programlisting">struct GstMpegtsDvbMultilingualNetworkNameItem {
- gchar *language_code;
- gchar *network_name;
-};
-</pre>
-<p>a multilingual network name entry</p>
-<div class="refsect3">
-<a name="GstMpegtsDvbMultilingualNetworkNameItem.members"></a><h4>Members</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="300px" class="struct_members_name">
-<col class="struct_members_description">
-<col width="200px" class="struct_members_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *<em class="structfield"><code><a name="GstMpegtsDvbMultilingualNetworkNameItem.language-code"></a>language_code</code></em>;</p></td>
-<td class="struct_member_description"><p>the ISO 639 language code</p></td>
-<td class="struct_member_annotations"> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *<em class="structfield"><code><a name="GstMpegtsDvbMultilingualNetworkNameItem.network-name"></a>network_name</code></em>;</p></td>
-<td class="struct_member_description"><p>the network name</p></td>
-<td class="struct_member_annotations"> </td>
-</tr>
-</tbody>
-</table></div>
-</div>
-</div>
-<hr>
-<div class="refsect2">
-<a name="GstMpegtsDvbMultilingualBouquetNameItem"></a><h3>struct GstMpegtsDvbMultilingualBouquetNameItem</h3>
-<pre class="programlisting">struct GstMpegtsDvbMultilingualBouquetNameItem {
- gchar *language_code;
- gchar *bouquet_name;
-};
-</pre>
-<p>a multilingual bouquet name entry</p>
-<div class="refsect3">
-<a name="GstMpegtsDvbMultilingualBouquetNameItem.members"></a><h4>Members</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="300px" class="struct_members_name">
-<col class="struct_members_description">
-<col width="200px" class="struct_members_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *<em class="structfield"><code><a name="GstMpegtsDvbMultilingualBouquetNameItem.language-code"></a>language_code</code></em>;</p></td>
-<td class="struct_member_description"><p>the ISO 639 language code</p></td>
-<td class="struct_member_annotations"> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *<em class="structfield"><code><a name="GstMpegtsDvbMultilingualBouquetNameItem.bouquet-name"></a>bouquet_name</code></em>;</p></td>
-<td class="struct_member_description"><p>the bouquet name</p></td>
-<td class="struct_member_annotations"> </td>
-</tr>
-</tbody>
-</table></div>
-</div>
-</div>
-<hr>
-<div class="refsect2">
-<a name="GstMpegtsDvbMultilingualServiceNameItem"></a><h3>struct GstMpegtsDvbMultilingualServiceNameItem</h3>
-<pre class="programlisting">struct GstMpegtsDvbMultilingualServiceNameItem {
- gchar *language_code;
- gchar *provider_name;
- gchar *service_name;
-};
-</pre>
-<p>a multilingual service name entry</p>
-<div class="refsect3">
-<a name="GstMpegtsDvbMultilingualServiceNameItem.members"></a><h4>Members</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="300px" class="struct_members_name">
-<col class="struct_members_description">
-<col width="200px" class="struct_members_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *<em class="structfield"><code><a name="GstMpegtsDvbMultilingualServiceNameItem.language-code"></a>language_code</code></em>;</p></td>
-<td class="struct_member_description"><p>the ISO 639 language code</p></td>
-<td class="struct_member_annotations"> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *<em class="structfield"><code><a name="GstMpegtsDvbMultilingualServiceNameItem.provider-name"></a>provider_name</code></em>;</p></td>
-<td class="struct_member_description"><p>the provider name</p></td>
-<td class="struct_member_annotations"> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *<em class="structfield"><code><a name="GstMpegtsDvbMultilingualServiceNameItem.service-name"></a>service_name</code></em>;</p></td>
-<td class="struct_member_description"><p>the service name</p></td>
-<td class="struct_member_annotations"> </td>
-</tr>
-</tbody>
-</table></div>
-</div>
-</div>
-<hr>
-<div class="refsect2">
-<a name="GstMpegtsDvbMultilingualComponentItem"></a><h3>struct GstMpegtsDvbMultilingualComponentItem</h3>
-<pre class="programlisting">struct GstMpegtsDvbMultilingualComponentItem {
- gchar *language_code;
- gchar *description;
-};
-</pre>
-<div class="refsect3">
-<a name="GstMpegtsDvbMultilingualComponentItem.members"></a><h4>Members</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="300px" class="struct_members_name">
-<col class="struct_members_description">
-<col width="200px" class="struct_members_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *<em class="structfield"><code><a name="GstMpegtsDvbMultilingualComponentItem.language-code"></a>language_code</code></em>;</p></td>
-<td class="struct_member_description"><p>the ISO 639 language code</p></td>
-<td class="struct_member_annotations"> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *<em class="structfield"><code><a name="GstMpegtsDvbMultilingualComponentItem.description"></a>description</code></em>;</p></td>
-<td class="struct_member_description"><p>the component description</p></td>
-<td class="struct_member_annotations"> </td>
-</tr>
-</tbody>
-</table></div>
-</div>
-</div>
-</div>
-</div>
-<div class="footer">
-<hr>Generated by GTK-Doc V1.25</div>
-</body>
-</html>
\ No newline at end of file
diff --git a/docs/libs/html/gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-sections.html b/docs/libs/html/gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-sections.html
deleted file mode 100644
index 10563a6..0000000
--- a/docs/libs/html/gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-sections.html
+++ /dev/null
@@ -1,1131 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>DVB variants of MPEG-TS sections: GStreamer Bad Plugins 1.0 Library Reference Manual</title>
-<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
-<link rel="home" href="index.html" title="GStreamer Bad Plugins 1.0 Library Reference Manual">
-<link rel="up" href="mpegts.html" title="Mpeg TS helper library">
-<link rel="prev" href="gst-plugins-bad-libs-ATSC-variants-of-MPEG-TS-sections.html" title="ATSC variants of MPEG-TS sections">
-<link rel="next" href="gst-plugins-bad-libs-ATSC-variants-of-MPEG-TS-descriptors.html" title="ATSC variants of MPEG-TS descriptors">
-<meta name="generator" content="GTK-Doc V1.25 (XML mode)">
-<link rel="stylesheet" href="style.css" type="text/css">
-</head>
-<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
-<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="5"><tr valign="middle">
-<td width="100%" align="left" class="shortcuts">
-<a href="#" class="shortcut">Top</a><span id="nav_description"> <span class="dim">|</span>
- <a href="#gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-sections.description" class="shortcut">Description</a></span><span id="nav_hierarchy"> <span class="dim">|</span>
- <a href="#gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-sections.object-hierarchy" class="shortcut">Object Hierarchy</a></span>
-</td>
-<td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
-<td><a accesskey="u" href="mpegts.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
-<td><a accesskey="p" href="gst-plugins-bad-libs-ATSC-variants-of-MPEG-TS-sections.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
-<td><a accesskey="n" href="gst-plugins-bad-libs-ATSC-variants-of-MPEG-TS-descriptors.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
-</tr></table>
-<div class="refentry">
-<a name="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-sections"></a><div class="titlepage"></div>
-<div class="refnamediv"><table width="100%"><tr>
-<td valign="top">
-<h2><span class="refentrytitle"><a name="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-sections.top_of_page"></a>DVB variants of MPEG-TS sections</span></h2>
-<p>DVB variants of MPEG-TS sections — Sections for the various DVB specifications</p>
-</td>
-<td class="gallery_image" valign="top" align="right"></td>
-</tr></table></div>
-<div class="refsect1">
-<a name="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-sections.functions"></a><h2>Functions</h2>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="functions_return">
-<col class="functions_name">
-</colgroup>
-<tbody>
-<tr>
-<td class="function_type">const <a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-sections.html#GstMpegtsNIT" title="struct GstMpegtsNIT"><span class="returnvalue">GstMpegtsNIT</span></a> *
-</td>
-<td class="function_name">
-<a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-sections.html#gst-mpegts-section-get-nit" title="gst_mpegts_section_get_nit ()">gst_mpegts_section_get_nit</a> <span class="c_punctuation">()</span>
-</td>
-</tr>
-<tr>
-<td class="function_type">
-<a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-sections.html#GstMpegtsNIT" title="struct GstMpegtsNIT"><span class="returnvalue">GstMpegtsNIT</span></a> *
-</td>
-<td class="function_name">
-<a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-sections.html#gst-mpegts-nit-new" title="gst_mpegts_nit_new ()">gst_mpegts_nit_new</a> <span class="c_punctuation">()</span>
-</td>
-</tr>
-<tr>
-<td class="function_type">
-<a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-sections.html#GstMpegtsNITStream" title="struct GstMpegtsNITStream"><span class="returnvalue">GstMpegtsNITStream</span></a> *
-</td>
-<td class="function_name">
-<a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-sections.html#gst-mpegts-nit-stream-new" title="gst_mpegts_nit_stream_new ()">gst_mpegts_nit_stream_new</a> <span class="c_punctuation">()</span>
-</td>
-</tr>
-<tr>
-<td class="function_type">
-<a class="link" href="gst-plugins-bad-libs-Base-MPEG-TS-sections.html#GstMpegtsSection"><span class="returnvalue">GstMpegtsSection</span></a> *
-</td>
-<td class="function_name">
-<a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-sections.html#gst-mpegts-section-from-nit" title="gst_mpegts_section_from_nit ()">gst_mpegts_section_from_nit</a> <span class="c_punctuation">()</span>
-</td>
-</tr>
-<tr>
-<td class="function_type">const <a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-sections.html#GstMpegtsBAT" title="struct GstMpegtsBAT"><span class="returnvalue">GstMpegtsBAT</span></a> *
-</td>
-<td class="function_name">
-<a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-sections.html#gst-mpegts-section-get-bat" title="gst_mpegts_section_get_bat ()">gst_mpegts_section_get_bat</a> <span class="c_punctuation">()</span>
-</td>
-</tr>
-<tr>
-<td class="function_type">const <a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-sections.html#GstMpegtsSDT" title="struct GstMpegtsSDT"><span class="returnvalue">GstMpegtsSDT</span></a> *
-</td>
-<td class="function_name">
-<a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-sections.html#gst-mpegts-section-get-sdt" title="gst_mpegts_section_get_sdt ()">gst_mpegts_section_get_sdt</a> <span class="c_punctuation">()</span>
-</td>
-</tr>
-<tr>
-<td class="function_type">
-<a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-sections.html#GstMpegtsSDT" title="struct GstMpegtsSDT"><span class="returnvalue">GstMpegtsSDT</span></a> *
-</td>
-<td class="function_name">
-<a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-sections.html#gst-mpegts-sdt-new" title="gst_mpegts_sdt_new ()">gst_mpegts_sdt_new</a> <span class="c_punctuation">()</span>
-</td>
-</tr>
-<tr>
-<td class="function_type">
-<a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-sections.html#GstMpegtsSDTService" title="struct GstMpegtsSDTService"><span class="returnvalue">GstMpegtsSDTService</span></a> *
-</td>
-<td class="function_name">
-<a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-sections.html#gst-mpegts-sdt-service-new" title="gst_mpegts_sdt_service_new ()">gst_mpegts_sdt_service_new</a> <span class="c_punctuation">()</span>
-</td>
-</tr>
-<tr>
-<td class="function_type">
-<a class="link" href="gst-plugins-bad-libs-Base-MPEG-TS-sections.html#GstMpegtsSection"><span class="returnvalue">GstMpegtsSection</span></a> *
-</td>
-<td class="function_name">
-<a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-sections.html#gst-mpegts-section-from-sdt" title="gst_mpegts_section_from_sdt ()">gst_mpegts_section_from_sdt</a> <span class="c_punctuation">()</span>
-</td>
-</tr>
-<tr>
-<td class="function_type">const <a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-sections.html#GstMpegtsEIT" title="struct GstMpegtsEIT"><span class="returnvalue">GstMpegtsEIT</span></a> *
-</td>
-<td class="function_name">
-<a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-sections.html#gst-mpegts-section-get-eit" title="gst_mpegts_section_get_eit ()">gst_mpegts_section_get_eit</a> <span class="c_punctuation">()</span>
-</td>
-</tr>
-<tr>
-<td class="function_type">
-<a href="/usr/share/gtk-doc/html/gstreamer-1.0GstDateTime.html#GstDateTime-struct"><span class="returnvalue">GstDateTime</span></a> *
-</td>
-<td class="function_name">
-<a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-sections.html#gst-mpegts-section-get-tdt" title="gst_mpegts_section_get_tdt ()">gst_mpegts_section_get_tdt</a> <span class="c_punctuation">()</span>
-</td>
-</tr>
-<tr>
-<td class="function_type">const <a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-sections.html#GstMpegtsTOT" title="struct GstMpegtsTOT"><span class="returnvalue">GstMpegtsTOT</span></a> *
-</td>
-<td class="function_name">
-<a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-sections.html#gst-mpegts-section-get-tot" title="gst_mpegts_section_get_tot ()">gst_mpegts_section_get_tot</a> <span class="c_punctuation">()</span>
-</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<div class="refsect1">
-<a name="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-sections.other"></a><h2>Types and Values</h2>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="name">
-<col class="description">
-</colgroup>
-<tbody>
-<tr>
-<td class="datatype_keyword">enum</td>
-<td class="function_name"><a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-sections.html#GstMpegtsSectionDVBTableID" title="enum GstMpegtsSectionDVBTableID">GstMpegtsSectionDVBTableID</a></td>
-</tr>
-<tr>
-<td class="datatype_keyword">struct</td>
-<td class="function_name"><a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-sections.html#GstMpegtsNIT" title="struct GstMpegtsNIT">GstMpegtsNIT</a></td>
-</tr>
-<tr>
-<td class="datatype_keyword">struct</td>
-<td class="function_name"><a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-sections.html#GstMpegtsNITStream" title="struct GstMpegtsNITStream">GstMpegtsNITStream</a></td>
-</tr>
-<tr>
-<td class="datatype_keyword">struct</td>
-<td class="function_name"><a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-sections.html#GstMpegtsBAT" title="struct GstMpegtsBAT">GstMpegtsBAT</a></td>
-</tr>
-<tr>
-<td class="datatype_keyword">struct</td>
-<td class="function_name"><a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-sections.html#GstMpegtsBATStream" title="struct GstMpegtsBATStream">GstMpegtsBATStream</a></td>
-</tr>
-<tr>
-<td class="datatype_keyword">struct</td>
-<td class="function_name"><a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-sections.html#GstMpegtsSDT" title="struct GstMpegtsSDT">GstMpegtsSDT</a></td>
-</tr>
-<tr>
-<td class="datatype_keyword">struct</td>
-<td class="function_name"><a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-sections.html#GstMpegtsSDTService" title="struct GstMpegtsSDTService">GstMpegtsSDTService</a></td>
-</tr>
-<tr>
-<td class="datatype_keyword">struct</td>
-<td class="function_name"><a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-sections.html#GstMpegtsEIT" title="struct GstMpegtsEIT">GstMpegtsEIT</a></td>
-</tr>
-<tr>
-<td class="datatype_keyword">struct</td>
-<td class="function_name"><a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-sections.html#GstMpegtsEITEvent" title="struct GstMpegtsEITEvent">GstMpegtsEITEvent</a></td>
-</tr>
-<tr>
-<td class="datatype_keyword">enum</td>
-<td class="function_name"><a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-sections.html#GstMpegtsRunningStatus" title="enum GstMpegtsRunningStatus">GstMpegtsRunningStatus</a></td>
-</tr>
-<tr>
-<td class="datatype_keyword">struct</td>
-<td class="function_name"><a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-sections.html#GstMpegtsTOT" title="struct GstMpegtsTOT">GstMpegtsTOT</a></td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<div class="refsect1">
-<a name="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-sections.object-hierarchy"></a><h2>Object Hierarchy</h2>
-<pre class="screen"> <a href="https://developer.gnome.org/gobject/unstable/gobject-Enumeration-and-Flag-Types.html">GEnum</a>
- <span class="lineart">╰──</span> GstMpegtsRunningStatus
-</pre>
-</div>
-<div class="refsect1">
-<a name="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-sections.includes"></a><h2>Includes</h2>
-<pre class="synopsis">#include <gst/mpegts/mpegts.h>
-</pre>
-</div>
-<div class="refsect1">
-<a name="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-sections.description"></a><h2>Description</h2>
-</div>
-<div class="refsect1">
-<a name="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-sections.functions_details"></a><h2>Functions</h2>
-<div class="refsect2">
-<a name="gst-mpegts-section-get-nit"></a><h3>gst_mpegts_section_get_nit ()</h3>
-<pre class="programlisting">const <a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-sections.html#GstMpegtsNIT" title="struct GstMpegtsNIT"><span class="returnvalue">GstMpegtsNIT</span></a> *
-gst_mpegts_section_get_nit (<em class="parameter"><code><a class="link" href="gst-plugins-bad-libs-Base-MPEG-TS-sections.html#GstMpegtsSection"><span class="type">GstMpegtsSection</span></a> *section</code></em>);</pre>
-<p>Returns the <a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-sections.html#GstMpegtsNIT" title="struct GstMpegtsNIT"><span class="type">GstMpegtsNIT</span></a> contained in the <em class="parameter"><code>section</code></em>
-.</p>
-<div class="refsect3">
-<a name="gst-mpegts-section-get-nit.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody><tr>
-<td class="parameter_name"><p>section</p></td>
-<td class="parameter_description"><p>a <a class="link" href="gst-plugins-bad-libs-Base-MPEG-TS-sections.html#GstMpegtsSection"><span class="type">GstMpegtsSection</span></a> of type <a class="link" href="gst-plugins-bad-libs-Base-MPEG-TS-sections.html#GST-MPEGTS-SECTION-NIT:CAPS"><code class="literal">GST_MPEGTS_SECTION_NIT</code></a></p></td>
-<td class="parameter_annotations"> </td>
-</tr></tbody>
-</table></div>
-</div>
-<div class="refsect3">
-<a name="gst-mpegts-section-get-nit.returns"></a><h4>Returns</h4>
-<p> The <a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-sections.html#GstMpegtsNIT" title="struct GstMpegtsNIT"><span class="type">GstMpegtsNIT</span></a> contained in the section, or <a href="/usr/share/gtk-doc/html/glibglib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a> if an error
-happened.</p>
-</div>
-</div>
-<hr>
-<div class="refsect2">
-<a name="gst-mpegts-nit-new"></a><h3>gst_mpegts_nit_new ()</h3>
-<pre class="programlisting"><a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-sections.html#GstMpegtsNIT" title="struct GstMpegtsNIT"><span class="returnvalue">GstMpegtsNIT</span></a> *
-gst_mpegts_nit_new (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
-<p>Allocates and initializes a <a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-sections.html#GstMpegtsNIT" title="struct GstMpegtsNIT"><span class="type">GstMpegtsNIT</span></a>.</p>
-<div class="refsect3">
-<a name="gst-mpegts-nit-new.returns"></a><h4>Returns</h4>
-<p> A newly allocated <a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-sections.html#GstMpegtsNIT" title="struct GstMpegtsNIT"><span class="type">GstMpegtsNIT</span></a>. </p>
-<p><span class="annotation">[<acronym title="Free data after the code is done."><span class="acronym">transfer full</span></acronym>]</span></p>
-</div>
-</div>
-<hr>
-<div class="refsect2">
-<a name="gst-mpegts-nit-stream-new"></a><h3>gst_mpegts_nit_stream_new ()</h3>
-<pre class="programlisting"><a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-sections.html#GstMpegtsNITStream" title="struct GstMpegtsNITStream"><span class="returnvalue">GstMpegtsNITStream</span></a> *
-gst_mpegts_nit_stream_new (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
-<p>Allocates and initializes a <a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-sections.html#GstMpegtsNITStream" title="struct GstMpegtsNITStream"><span class="type">GstMpegtsNITStream</span></a></p>
-<div class="refsect3">
-<a name="gst-mpegts-nit-stream-new.returns"></a><h4>Returns</h4>
-<p> A newly allocated <a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-sections.html#GstMpegtsNITStream" title="struct GstMpegtsNITStream"><span class="type">GstMpegtsNITStream</span></a>. </p>
-<p><span class="annotation">[<acronym title="Free data after the code is done."><span class="acronym">transfer full</span></acronym>]</span></p>
-</div>
-</div>
-<hr>
-<div class="refsect2">
-<a name="gst-mpegts-section-from-nit"></a><h3>gst_mpegts_section_from_nit ()</h3>
-<pre class="programlisting"><a class="link" href="gst-plugins-bad-libs-Base-MPEG-TS-sections.html#GstMpegtsSection"><span class="returnvalue">GstMpegtsSection</span></a> *
-gst_mpegts_section_from_nit (<em class="parameter"><code><a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-sections.html#GstMpegtsNIT" title="struct GstMpegtsNIT"><span class="type">GstMpegtsNIT</span></a> *nit</code></em>);</pre>
-<p>Ownership of <em class="parameter"><code>nit</code></em>
- is taken. The data in <em class="parameter"><code>nit</code></em>
- is managed by the <a class="link" href="gst-plugins-bad-libs-Base-MPEG-TS-sections.html#GstMpegtsSection"><span class="type">GstMpegtsSection</span></a></p>
-<div class="refsect3">
-<a name="gst-mpegts-section-from-nit.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody><tr>
-<td class="parameter_name"><p>nit</p></td>
-<td class="parameter_description"><p> a <a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-sections.html#GstMpegtsNIT" title="struct GstMpegtsNIT"><span class="type">GstMpegtsNIT</span></a> to create the <a class="link" href="gst-plugins-bad-libs-Base-MPEG-TS-sections.html#GstMpegtsSection"><span class="type">GstMpegtsSection</span></a> from. </p></td>
-<td class="parameter_annotations"><span class="annotation">[<acronym title="Free data after the code is done."><span class="acronym">transfer full</span></acronym>]</span></td>
-</tr></tbody>
-</table></div>
-</div>
-<div class="refsect3">
-<a name="gst-mpegts-section-from-nit.returns"></a><h4>Returns</h4>
-<p> the <a class="link" href="gst-plugins-bad-libs-Base-MPEG-TS-sections.html#GstMpegtsSection"><span class="type">GstMpegtsSection</span></a>. </p>
-<p><span class="annotation">[<acronym title="Free data after the code is done."><span class="acronym">transfer full</span></acronym>]</span></p>
-</div>
-</div>
-<hr>
-<div class="refsect2">
-<a name="gst-mpegts-section-get-bat"></a><h3>gst_mpegts_section_get_bat ()</h3>
-<pre class="programlisting">const <a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-sections.html#GstMpegtsBAT" title="struct GstMpegtsBAT"><span class="returnvalue">GstMpegtsBAT</span></a> *
-gst_mpegts_section_get_bat (<em class="parameter"><code><a class="link" href="gst-plugins-bad-libs-Base-MPEG-TS-sections.html#GstMpegtsSection"><span class="type">GstMpegtsSection</span></a> *section</code></em>);</pre>
-<p>Returns the <a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-sections.html#GstMpegtsBAT" title="struct GstMpegtsBAT"><span class="type">GstMpegtsBAT</span></a> contained in the <em class="parameter"><code>section</code></em>
-.</p>
-<div class="refsect3">
-<a name="gst-mpegts-section-get-bat.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody><tr>
-<td class="parameter_name"><p>section</p></td>
-<td class="parameter_description"><p>a <a class="link" href="gst-plugins-bad-libs-Base-MPEG-TS-sections.html#GstMpegtsSection"><span class="type">GstMpegtsSection</span></a> of type <a class="link" href="gst-plugins-bad-libs-Base-MPEG-TS-sections.html#GST-MPEGTS-SECTION-BAT:CAPS"><code class="literal">GST_MPEGTS_SECTION_BAT</code></a></p></td>
-<td class="parameter_annotations"> </td>
-</tr></tbody>
-</table></div>
-</div>
-<div class="refsect3">
-<a name="gst-mpegts-section-get-bat.returns"></a><h4>Returns</h4>
-<p> The <a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-sections.html#GstMpegtsBAT" title="struct GstMpegtsBAT"><span class="type">GstMpegtsBAT</span></a> contained in the section, or <a href="/usr/share/gtk-doc/html/glibglib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a> if an error
-happened.</p>
-</div>
-</div>
-<hr>
-<div class="refsect2">
-<a name="gst-mpegts-section-get-sdt"></a><h3>gst_mpegts_section_get_sdt ()</h3>
-<pre class="programlisting">const <a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-sections.html#GstMpegtsSDT" title="struct GstMpegtsSDT"><span class="returnvalue">GstMpegtsSDT</span></a> *
-gst_mpegts_section_get_sdt (<em class="parameter"><code><a class="link" href="gst-plugins-bad-libs-Base-MPEG-TS-sections.html#GstMpegtsSection"><span class="type">GstMpegtsSection</span></a> *section</code></em>);</pre>
-<p>Returns the <a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-sections.html#GstMpegtsSDT" title="struct GstMpegtsSDT"><span class="type">GstMpegtsSDT</span></a> contained in the <em class="parameter"><code>section</code></em>
-.</p>
-<div class="refsect3">
-<a name="gst-mpegts-section-get-sdt.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody><tr>
-<td class="parameter_name"><p>section</p></td>
-<td class="parameter_description"><p>a <a class="link" href="gst-plugins-bad-libs-Base-MPEG-TS-sections.html#GstMpegtsSection"><span class="type">GstMpegtsSection</span></a> of type <a class="link" href="gst-plugins-bad-libs-Base-MPEG-TS-sections.html#GST-MPEGTS-SECTION-SDT:CAPS"><code class="literal">GST_MPEGTS_SECTION_SDT</code></a></p></td>
-<td class="parameter_annotations"> </td>
-</tr></tbody>
-</table></div>
-</div>
-<div class="refsect3">
-<a name="gst-mpegts-section-get-sdt.returns"></a><h4>Returns</h4>
-<p> The <a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-sections.html#GstMpegtsSDT" title="struct GstMpegtsSDT"><span class="type">GstMpegtsSDT</span></a> contained in the section, or <a href="/usr/share/gtk-doc/html/glibglib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a> if an error
-happened.</p>
-</div>
-</div>
-<hr>
-<div class="refsect2">
-<a name="gst-mpegts-sdt-new"></a><h3>gst_mpegts_sdt_new ()</h3>
-<pre class="programlisting"><a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-sections.html#GstMpegtsSDT" title="struct GstMpegtsSDT"><span class="returnvalue">GstMpegtsSDT</span></a> *
-gst_mpegts_sdt_new (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
-<p>Allocates and initializes a <a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-sections.html#GstMpegtsSDT" title="struct GstMpegtsSDT"><span class="type">GstMpegtsSDT</span></a>.</p>
-<div class="refsect3">
-<a name="gst-mpegts-sdt-new.returns"></a><h4>Returns</h4>
-<p> A newly allocated <a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-sections.html#GstMpegtsSDT" title="struct GstMpegtsSDT"><span class="type">GstMpegtsSDT</span></a>. </p>
-<p><span class="annotation">[<acronym title="Free data after the code is done."><span class="acronym">transfer full</span></acronym>]</span></p>
-</div>
-</div>
-<hr>
-<div class="refsect2">
-<a name="gst-mpegts-sdt-service-new"></a><h3>gst_mpegts_sdt_service_new ()</h3>
-<pre class="programlisting"><a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-sections.html#GstMpegtsSDTService" title="struct GstMpegtsSDTService"><span class="returnvalue">GstMpegtsSDTService</span></a> *
-gst_mpegts_sdt_service_new (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
-<p>Allocates and initializes a <a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-sections.html#GstMpegtsSDTService" title="struct GstMpegtsSDTService"><span class="type">GstMpegtsSDTService</span></a>.</p>
-<div class="refsect3">
-<a name="gst-mpegts-sdt-service-new.returns"></a><h4>Returns</h4>
-<p> A newly allocated <a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-sections.html#GstMpegtsSDTService" title="struct GstMpegtsSDTService"><span class="type">GstMpegtsSDTService</span></a>. </p>
-<p><span class="annotation">[<acronym title="Free data after the code is done."><span class="acronym">transfer full</span></acronym>]</span></p>
-</div>
-</div>
-<hr>
-<div class="refsect2">
-<a name="gst-mpegts-section-from-sdt"></a><h3>gst_mpegts_section_from_sdt ()</h3>
-<pre class="programlisting"><a class="link" href="gst-plugins-bad-libs-Base-MPEG-TS-sections.html#GstMpegtsSection"><span class="returnvalue">GstMpegtsSection</span></a> *
-gst_mpegts_section_from_sdt (<em class="parameter"><code><a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-sections.html#GstMpegtsSDT" title="struct GstMpegtsSDT"><span class="type">GstMpegtsSDT</span></a> *sdt</code></em>);</pre>
-<p>Ownership of <em class="parameter"><code>sdt</code></em>
- is taken. The data in <em class="parameter"><code>sdt</code></em>
- is managed by the <a class="link" href="gst-plugins-bad-libs-Base-MPEG-TS-sections.html#GstMpegtsSection"><span class="type">GstMpegtsSection</span></a></p>
-<div class="refsect3">
-<a name="gst-mpegts-section-from-sdt.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody><tr>
-<td class="parameter_name"><p>sdt</p></td>
-<td class="parameter_description"><p> a <a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-sections.html#GstMpegtsSDT" title="struct GstMpegtsSDT"><span class="type">GstMpegtsSDT</span></a> to create the <a class="link" href="gst-plugins-bad-libs-Base-MPEG-TS-sections.html#GstMpegtsSection"><span class="type">GstMpegtsSection</span></a> from. </p></td>
-<td class="parameter_annotations"><span class="annotation">[<acronym title="Free data after the code is done."><span class="acronym">transfer full</span></acronym>]</span></td>
-</tr></tbody>
-</table></div>
-</div>
-<div class="refsect3">
-<a name="gst-mpegts-section-from-sdt.returns"></a><h4>Returns</h4>
-<p> the <a class="link" href="gst-plugins-bad-libs-Base-MPEG-TS-sections.html#GstMpegtsSection"><span class="type">GstMpegtsSection</span></a>. </p>
-<p><span class="annotation">[<acronym title="Free data after the code is done."><span class="acronym">transfer full</span></acronym>]</span></p>
-</div>
-</div>
-<hr>
-<div class="refsect2">
-<a name="gst-mpegts-section-get-eit"></a><h3>gst_mpegts_section_get_eit ()</h3>
-<pre class="programlisting">const <a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-sections.html#GstMpegtsEIT" title="struct GstMpegtsEIT"><span class="returnvalue">GstMpegtsEIT</span></a> *
-gst_mpegts_section_get_eit (<em class="parameter"><code><a class="link" href="gst-plugins-bad-libs-Base-MPEG-TS-sections.html#GstMpegtsSection"><span class="type">GstMpegtsSection</span></a> *section</code></em>);</pre>
-<p>Returns the <a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-sections.html#GstMpegtsEIT" title="struct GstMpegtsEIT"><span class="type">GstMpegtsEIT</span></a> contained in the <em class="parameter"><code>section</code></em>
-.</p>
-<div class="refsect3">
-<a name="gst-mpegts-section-get-eit.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody><tr>
-<td class="parameter_name"><p>section</p></td>
-<td class="parameter_description"><p>a <a class="link" href="gst-plugins-bad-libs-Base-MPEG-TS-sections.html#GstMpegtsSection"><span class="type">GstMpegtsSection</span></a> of type <a class="link" href="gst-plugins-bad-libs-Base-MPEG-TS-sections.html#GST-MPEGTS-SECTION-EIT:CAPS"><code class="literal">GST_MPEGTS_SECTION_EIT</code></a></p></td>
-<td class="parameter_annotations"> </td>
-</tr></tbody>
-</table></div>
-</div>
-<div class="refsect3">
-<a name="gst-mpegts-section-get-eit.returns"></a><h4>Returns</h4>
-<p> The <a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-sections.html#GstMpegtsEIT" title="struct GstMpegtsEIT"><span class="type">GstMpegtsEIT</span></a> contained in the section, or <a href="/usr/share/gtk-doc/html/glibglib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a> if an error
-happened.</p>
-</div>
-</div>
-<hr>
-<div class="refsect2">
-<a name="gst-mpegts-section-get-tdt"></a><h3>gst_mpegts_section_get_tdt ()</h3>
-<pre class="programlisting"><a href="/usr/share/gtk-doc/html/gstreamer-1.0GstDateTime.html#GstDateTime-struct"><span class="returnvalue">GstDateTime</span></a> *
-gst_mpegts_section_get_tdt (<em class="parameter"><code><a class="link" href="gst-plugins-bad-libs-Base-MPEG-TS-sections.html#GstMpegtsSection"><span class="type">GstMpegtsSection</span></a> *section</code></em>);</pre>
-<p>Returns the <a href="/usr/share/gtk-doc/html/gstreamer-1.0GstDateTime.html#GstDateTime-struct"><span class="type">GstDateTime</span></a> of the TDT</p>
-<div class="refsect3">
-<a name="gst-mpegts-section-get-tdt.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody><tr>
-<td class="parameter_name"><p>section</p></td>
-<td class="parameter_description"><p>a <a class="link" href="gst-plugins-bad-libs-Base-MPEG-TS-sections.html#GstMpegtsSection"><span class="type">GstMpegtsSection</span></a> of type <a class="link" href="gst-plugins-bad-libs-Base-MPEG-TS-sections.html#GST-MPEGTS-SECTION-TDT:CAPS"><code class="literal">GST_MPEGTS_SECTION_TDT</code></a></p></td>
-<td class="parameter_annotations"> </td>
-</tr></tbody>
-</table></div>
-</div>
-<div class="refsect3">
-<a name="gst-mpegts-section-get-tdt.returns"></a><h4>Returns</h4>
-<p> The <a href="/usr/share/gtk-doc/html/gstreamer-1.0GstDateTime.html#GstDateTime-struct"><span class="type">GstDateTime</span></a> contained in the section, or <a href="/usr/share/gtk-doc/html/glibglib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a>
-if an error happened. Release with <a href="/usr/share/gtk-doc/html/gstreamer-1.0GstDateTime.html#gst-date-time-unref"><span class="type">gst_date_time_unref</span></a> when done.</p>
-</div>
-</div>
-<hr>
-<div class="refsect2">
-<a name="gst-mpegts-section-get-tot"></a><h3>gst_mpegts_section_get_tot ()</h3>
-<pre class="programlisting">const <a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-sections.html#GstMpegtsTOT" title="struct GstMpegtsTOT"><span class="returnvalue">GstMpegtsTOT</span></a> *
-gst_mpegts_section_get_tot (<em class="parameter"><code><a class="link" href="gst-plugins-bad-libs-Base-MPEG-TS-sections.html#GstMpegtsSection"><span class="type">GstMpegtsSection</span></a> *section</code></em>);</pre>
-<p>Returns the <a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-sections.html#GstMpegtsTOT" title="struct GstMpegtsTOT"><span class="type">GstMpegtsTOT</span></a> contained in the <em class="parameter"><code>section</code></em>
-.</p>
-<div class="refsect3">
-<a name="gst-mpegts-section-get-tot.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody><tr>
-<td class="parameter_name"><p>section</p></td>
-<td class="parameter_description"><p>a <a class="link" href="gst-plugins-bad-libs-Base-MPEG-TS-sections.html#GstMpegtsSection"><span class="type">GstMpegtsSection</span></a> of type <a class="link" href="gst-plugins-bad-libs-Base-MPEG-TS-sections.html#GST-MPEGTS-SECTION-TOT:CAPS"><code class="literal">GST_MPEGTS_SECTION_TOT</code></a></p></td>
-<td class="parameter_annotations"> </td>
-</tr></tbody>
-</table></div>
-</div>
-<div class="refsect3">
-<a name="gst-mpegts-section-get-tot.returns"></a><h4>Returns</h4>
-<p> The <a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-sections.html#GstMpegtsTOT" title="struct GstMpegtsTOT"><span class="type">GstMpegtsTOT</span></a> contained in the section, or <a href="/usr/share/gtk-doc/html/glibglib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a> if an error
-happened.</p>
-</div>
-</div>
-</div>
-<div class="refsect1">
-<a name="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-sections.other_details"></a><h2>Types and Values</h2>
-<div class="refsect2">
-<a name="GstMpegtsSectionDVBTableID"></a><h3>enum GstMpegtsSectionDVBTableID</h3>
-<p>Values for a <a class="link" href="gst-plugins-bad-libs-Base-MPEG-TS-sections.html#GstMpegtsSection"><span class="type">GstMpegtsSection</span></a> table_id.</p>
-<p>These are the registered DVB table_id variants.</p>
-<p>see also: <a class="link" href="gst-plugins-bad-libs-Base-MPEG-TS-sections.html#GstMpegtsSectionTableID" title="enum GstMpegtsSectionTableID"><span class="type">GstMpegtsSectionTableID</span></a></p>
-<div class="refsect3">
-<a name="GstMpegtsSectionDVBTableID.members"></a><h4>Members</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="300px" class="enum_members_name">
-<col class="enum_members_description">
-<col width="200px" class="enum_members_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="enum_member_name"><p><a name="GST-MTS-TABLE-ID-NETWORK-INFORMATION-ACTUAL-NETWORK:CAPS"></a>GST_MTS_TABLE_ID_NETWORK_INFORMATION_ACTUAL_NETWORK</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="enum_member_name"><p><a name="GST-MTS-TABLE-ID-NETWORK-INFORMATION-OTHER-NETWORK:CAPS"></a>GST_MTS_TABLE_ID_NETWORK_INFORMATION_OTHER_NETWORK</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="enum_member_name"><p><a name="GST-MTS-TABLE-ID-SERVICE-DESCRIPTION-ACTUAL-TS:CAPS"></a>GST_MTS_TABLE_ID_SERVICE_DESCRIPTION_ACTUAL_TS</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="enum_member_name"><p><a name="GST-MTS-TABLE-ID-SERVICE-DESCRIPTION-OTHER-TS:CAPS"></a>GST_MTS_TABLE_ID_SERVICE_DESCRIPTION_OTHER_TS</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="enum_member_name"><p><a name="GST-MTS-TABLE-ID-BOUQUET-ASSOCIATION:CAPS"></a>GST_MTS_TABLE_ID_BOUQUET_ASSOCIATION</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="enum_member_name"><p><a name="GST-MTS-TABLE-ID-EVENT-INFORMATION-ACTUAL-TS-PRESENT:CAPS"></a>GST_MTS_TABLE_ID_EVENT_INFORMATION_ACTUAL_TS_PRESENT</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="enum_member_name"><p><a name="GST-MTS-TABLE-ID-EVENT-INFORMATION-OTHER-TS-PRESENT:CAPS"></a>GST_MTS_TABLE_ID_EVENT_INFORMATION_OTHER_TS_PRESENT</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="enum_member_name"><p><a name="GST-MTS-TABLE-ID-EVENT-INFORMATION-ACTUAL-TS-SCHEDULE-1:CAPS"></a>GST_MTS_TABLE_ID_EVENT_INFORMATION_ACTUAL_TS_SCHEDULE_1</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="enum_member_name"><p><a name="GST-MTS-TABLE-ID-EVENT-INFORMATION-ACTUAL-TS-SCHEDULE-N:CAPS"></a>GST_MTS_TABLE_ID_EVENT_INFORMATION_ACTUAL_TS_SCHEDULE_N</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="enum_member_name"><p><a name="GST-MTS-TABLE-ID-EVENT-INFORMATION-OTHER-TS-SCHEDULE-1:CAPS"></a>GST_MTS_TABLE_ID_EVENT_INFORMATION_OTHER_TS_SCHEDULE_1</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="enum_member_name"><p><a name="GST-MTS-TABLE-ID-EVENT-INFORMATION-OTHER-TS-SCHEDULE-N:CAPS"></a>GST_MTS_TABLE_ID_EVENT_INFORMATION_OTHER_TS_SCHEDULE_N</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="enum_member_name"><p><a name="GST-MTS-TABLE-ID-TIME-DATE:CAPS"></a>GST_MTS_TABLE_ID_TIME_DATE</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="enum_member_name"><p><a name="GST-MTS-TABLE-ID-RUNNING-STATUS:CAPS"></a>GST_MTS_TABLE_ID_RUNNING_STATUS</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="enum_member_name"><p><a name="GST-MTS-TABLE-ID-STUFFING:CAPS"></a>GST_MTS_TABLE_ID_STUFFING</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="enum_member_name"><p><a name="GST-MTS-TABLE-ID-TIME-OFFSET:CAPS"></a>GST_MTS_TABLE_ID_TIME_OFFSET</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="enum_member_name"><p><a name="GST-MTS-TABLE-ID-APPLICATION-INFORMATION-TABLE:CAPS"></a>GST_MTS_TABLE_ID_APPLICATION_INFORMATION_TABLE</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="enum_member_name"><p><a name="GST-MTS-TABLE-ID-CONTAINER:CAPS"></a>GST_MTS_TABLE_ID_CONTAINER</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="enum_member_name"><p><a name="GST-MTS-TABLE-ID-RELATED-CONTENT:CAPS"></a>GST_MTS_TABLE_ID_RELATED_CONTENT</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="enum_member_name"><p><a name="GST-MTS-TABLE-ID-CONTENT-IDENTIFIER:CAPS"></a>GST_MTS_TABLE_ID_CONTENT_IDENTIFIER</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="enum_member_name"><p><a name="GST-MTS-TABLE-ID-MPE-FEC:CAPS"></a>GST_MTS_TABLE_ID_MPE_FEC</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="enum_member_name"><p><a name="GST-MTS-TABLE-ID-RESOLUTION-NOTIFICATION:CAPS"></a>GST_MTS_TABLE_ID_RESOLUTION_NOTIFICATION</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="enum_member_name"><p><a name="GST-MTS-TABLE-ID-MPE-IFEC:CAPS"></a>GST_MTS_TABLE_ID_MPE_IFEC</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="enum_member_name"><p><a name="GST-MTS-TABLE-ID-DISCONTINUITY-INFORMATION:CAPS"></a>GST_MTS_TABLE_ID_DISCONTINUITY_INFORMATION</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="enum_member_name"><p><a name="GST-MTS-TABLE-ID-SELECTION-INFORMATION:CAPS"></a>GST_MTS_TABLE_ID_SELECTION_INFORMATION</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="enum_member_name"><p><a name="GST-MTS-TABLE-ID-CA-MESSAGE-ECM-0:CAPS"></a>GST_MTS_TABLE_ID_CA_MESSAGE_ECM_0</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="enum_member_name"><p><a name="GST-MTS-TABLE-ID-CA-MESSAGE-ECM-1:CAPS"></a>GST_MTS_TABLE_ID_CA_MESSAGE_ECM_1</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="enum_member_name"><p><a name="GST-MTS-TABLE-ID-CA-MESSAGE-SYSTEM-PRIVATE-1:CAPS"></a>GST_MTS_TABLE_ID_CA_MESSAGE_SYSTEM_PRIVATE_1</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="enum_member_name"><p><a name="GST-MTS-TABLE-ID-CA-MESSAGE-SYSTEM-PRIVATE-N:CAPS"></a>GST_MTS_TABLE_ID_CA_MESSAGE_SYSTEM_PRIVATE_N</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="enum_member_name"><p><a name="GST-MTS-TABLE-ID-SCT:CAPS"></a>GST_MTS_TABLE_ID_SCT</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="enum_member_name"><p><a name="GST-MTS-TABLE-ID-FCT:CAPS"></a>GST_MTS_TABLE_ID_FCT</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="enum_member_name"><p><a name="GST-MTS-TABLE-ID-TCT:CAPS"></a>GST_MTS_TABLE_ID_TCT</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="enum_member_name"><p><a name="GST-MTS-TABLE-ID-SPT:CAPS"></a>GST_MTS_TABLE_ID_SPT</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="enum_member_name"><p><a name="GST-MTS-TABLE-ID-CMT:CAPS"></a>GST_MTS_TABLE_ID_CMT</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="enum_member_name"><p><a name="GST-MTS-TABLE-ID-TBTP:CAPS"></a>GST_MTS_TABLE_ID_TBTP</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="enum_member_name"><p><a name="GST-MTS-TABLE-ID-PCR-PACKET-PAYLOAD:CAPS"></a>GST_MTS_TABLE_ID_PCR_PACKET_PAYLOAD</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="enum_member_name"><p><a name="GST-MTS-TABLE-ID-TRANSMISSION-MODE-SUPPORT-PAYLOAD:CAPS"></a>GST_MTS_TABLE_ID_TRANSMISSION_MODE_SUPPORT_PAYLOAD</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="enum_member_name"><p><a name="GST-MTS-TABLE-ID-TIM:CAPS"></a>GST_MTS_TABLE_ID_TIM</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="enum_member_name"><p><a name="GST-MTS-TABLE-ID-LL-FEC-PARITY-DATA-TABLE:CAPS"></a>GST_MTS_TABLE_ID_LL_FEC_PARITY_DATA_TABLE</p></td>
-<td> </td>
-<td> </td>
-</tr>
-</tbody>
-</table></div>
-</div>
-</div>
-<hr>
-<div class="refsect2">
-<a name="GstMpegtsNIT"></a><h3>struct GstMpegtsNIT</h3>
-<pre class="programlisting">struct GstMpegtsNIT {
- gboolean actual_network;
- guint16 network_id;
-
- GPtrArray *descriptors;
-
- GPtrArray *streams;
-};
-</pre>
-<p>Network Information Table (ISO/IEC 13818-1 / EN 300 468)</p>
-<div class="refsect3">
-<a name="GstMpegtsNIT.members"></a><h4>Members</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="300px" class="struct_members_name">
-<col class="struct_members_description">
-<col width="200px" class="struct_members_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a> <em class="structfield"><code><a name="GstMpegtsNIT.actual-network"></a>actual_network</code></em>;</p></td>
-<td class="struct_member_description"><p>Whether this NIT corresponds to the actual stream</p></td>
-<td class="struct_member_annotations"> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint16"><span class="type">guint16</span></a> <em class="structfield"><code><a name="GstMpegtsNIT.network-id"></a>network_id</code></em>;</p></td>
-<td class="struct_member_description"><p>ID of the network that this NIT describes</p></td>
-<td class="struct_member_annotations"> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Pointer-Arrays.html#GPtrArray"><span class="type">GPtrArray</span></a> *<em class="structfield"><code><a name="GstMpegtsNIT.descriptors"></a>descriptors</code></em>;</p></td>
-<td class="struct_member_description"><p> the global descriptors. </p></td>
-<td class="struct_member_annotations"><span class="annotation">[<acronym title="Generics and defining elements of containers and arrays."><span class="acronym">element-type</span></acronym> GstMpegtsDescriptor]</span></td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Pointer-Arrays.html#GPtrArray"><span class="type">GPtrArray</span></a> *<em class="structfield"><code><a name="GstMpegtsNIT.streams"></a>streams</code></em>;</p></td>
-<td class="struct_member_description"><p> the streams. </p></td>
-<td class="struct_member_annotations"><span class="annotation">[<acronym title="Generics and defining elements of containers and arrays."><span class="acronym">element-type</span></acronym> GstMpegtsNITStream]</span></td>
-</tr>
-</tbody>
-</table></div>
-</div>
-</div>
-<hr>
-<div class="refsect2">
-<a name="GstMpegtsNITStream"></a><h3>struct GstMpegtsNITStream</h3>
-<pre class="programlisting">struct GstMpegtsNITStream {
- guint16 transport_stream_id;
- guint16 original_network_id;
-
- GPtrArray *descriptors;
-};
-</pre>
-<div class="refsect3">
-<a name="GstMpegtsNITStream.members"></a><h4>Members</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="300px" class="struct_members_name">
-<col class="struct_members_description">
-<col width="200px" class="struct_members_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint16"><span class="type">guint16</span></a> <em class="structfield"><code><a name="GstMpegtsNITStream.transport-stream-id"></a>transport_stream_id</code></em>;</p></td>
-<td class="struct_member_description"> </td>
-<td class="struct_member_annotations"> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint16"><span class="type">guint16</span></a> <em class="structfield"><code><a name="GstMpegtsNITStream.original-network-id"></a>original_network_id</code></em>;</p></td>
-<td class="struct_member_description"> </td>
-<td class="struct_member_annotations"> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Pointer-Arrays.html#GPtrArray"><span class="type">GPtrArray</span></a> *<em class="structfield"><code><a name="GstMpegtsNITStream.descriptors"></a>descriptors</code></em>;</p></td>
-<td class="struct_member_description"><p>. </p></td>
-<td class="struct_member_annotations"><span class="annotation">[<acronym title="Generics and defining elements of containers and arrays."><span class="acronym">element-type</span></acronym> GstMpegtsDescriptor]</span></td>
-</tr>
-</tbody>
-</table></div>
-</div>
-</div>
-<hr>
-<div class="refsect2">
-<a name="GstMpegtsBAT"></a><h3>struct GstMpegtsBAT</h3>
-<pre class="programlisting">struct GstMpegtsBAT {
- GPtrArray *descriptors;
-
- GPtrArray *streams;
-};
-</pre>
-<p>DVB Bouquet Association Table (EN 300 468)</p>
-<div class="refsect3">
-<a name="GstMpegtsBAT.members"></a><h4>Members</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="300px" class="struct_members_name">
-<col class="struct_members_description">
-<col width="200px" class="struct_members_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Pointer-Arrays.html#GPtrArray"><span class="type">GPtrArray</span></a> *<em class="structfield"><code><a name="GstMpegtsBAT.descriptors"></a>descriptors</code></em>;</p></td>
-<td class="struct_member_description"><p>. </p></td>
-<td class="struct_member_annotations"><span class="annotation">[<acronym title="Generics and defining elements of containers and arrays."><span class="acronym">element-type</span></acronym> GstMpegtsDescriptor]</span></td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Pointer-Arrays.html#GPtrArray"><span class="type">GPtrArray</span></a> *<em class="structfield"><code><a name="GstMpegtsBAT.streams"></a>streams</code></em>;</p></td>
-<td class="struct_member_description"><p>. </p></td>
-<td class="struct_member_annotations"><span class="annotation">[<acronym title="Generics and defining elements of containers and arrays."><span class="acronym">element-type</span></acronym> GstMpegtsBATStream]</span></td>
-</tr>
-</tbody>
-</table></div>
-</div>
-</div>
-<hr>
-<div class="refsect2">
-<a name="GstMpegtsBATStream"></a><h3>struct GstMpegtsBATStream</h3>
-<pre class="programlisting">struct GstMpegtsBATStream {
- guint16 transport_stream_id;
- guint16 original_network_id;
-
- GPtrArray *descriptors;
-};
-</pre>
-</div>
-<hr>
-<div class="refsect2">
-<a name="GstMpegtsSDT"></a><h3>struct GstMpegtsSDT</h3>
-<pre class="programlisting">struct GstMpegtsSDT {
- guint16 original_network_id;
- gboolean actual_ts;
- guint16 transport_stream_id;
-
- GPtrArray *services;
-};
-</pre>
-<p>Service Description Table (EN 300 468)</p>
-<div class="refsect3">
-<a name="GstMpegtsSDT.members"></a><h4>Members</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="300px" class="struct_members_name">
-<col class="struct_members_description">
-<col width="200px" class="struct_members_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint16"><span class="type">guint16</span></a> <em class="structfield"><code><a name="GstMpegtsSDT.original-network-id"></a>original_network_id</code></em>;</p></td>
-<td class="struct_member_description"><p>Network ID of the originating delivery system</p></td>
-<td class="struct_member_annotations"> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a> <em class="structfield"><code><a name="GstMpegtsSDT.actual-ts"></a>actual_ts</code></em>;</p></td>
-<td class="struct_member_description"><p>True if the table describes this transport stream</p></td>
-<td class="struct_member_annotations"> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint16"><span class="type">guint16</span></a> <em class="structfield"><code><a name="GstMpegtsSDT.transport-stream-id"></a>transport_stream_id</code></em>;</p></td>
-<td class="struct_member_description"><p>ID of this transport stream</p></td>
-<td class="struct_member_annotations"> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Pointer-Arrays.html#GPtrArray"><span class="type">GPtrArray</span></a> *<em class="structfield"><code><a name="GstMpegtsSDT.services"></a>services</code></em>;</p></td>
-<td class="struct_member_description"><p> List of services. </p></td>
-<td class="struct_member_annotations"><span class="annotation">[<acronym title="Generics and defining elements of containers and arrays."><span class="acronym">element-type</span></acronym> GstMpegtsSDTService]</span></td>
-</tr>
-</tbody>
-</table></div>
-</div>
-</div>
-<hr>
-<div class="refsect2">
-<a name="GstMpegtsSDTService"></a><h3>struct GstMpegtsSDTService</h3>
-<pre class="programlisting">struct GstMpegtsSDTService {
- guint16 service_id;
-
- gboolean EIT_schedule_flag;
- gboolean EIT_present_following_flag;
- GstMpegtsRunningStatus running_status;
- gboolean free_CA_mode;
-
- GPtrArray *descriptors;
-};
-</pre>
-<div class="refsect3">
-<a name="GstMpegtsSDTService.members"></a><h4>Members</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="300px" class="struct_members_name">
-<col class="struct_members_description">
-<col width="200px" class="struct_members_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint16"><span class="type">guint16</span></a> <em class="structfield"><code><a name="GstMpegtsSDTService.service-id"></a>service_id</code></em>;</p></td>
-<td class="struct_member_description"><p>The program number this table belongs to</p></td>
-<td class="struct_member_annotations"> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a> <em class="structfield"><code><a name="GstMpegtsSDTService.EIT-schedule-flag"></a>EIT_schedule_flag</code></em>;</p></td>
-<td class="struct_member_description"><p>EIT schedule information is present in this transport stream</p></td>
-<td class="struct_member_annotations"> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a> <em class="structfield"><code><a name="GstMpegtsSDTService.EIT-present-following-flag"></a>EIT_present_following_flag</code></em>;</p></td>
-<td class="struct_member_description"><p>EIT present/following information is present in this transport stream</p></td>
-<td class="struct_member_annotations"> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-sections.html#GstMpegtsRunningStatus" title="enum GstMpegtsRunningStatus"><span class="type">GstMpegtsRunningStatus</span></a> <em class="structfield"><code><a name="GstMpegtsSDTService.running-status"></a>running_status</code></em>;</p></td>
-<td class="struct_member_description"><p>Status of this service</p></td>
-<td class="struct_member_annotations"> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a> <em class="structfield"><code><a name="GstMpegtsSDTService.free-CA-mode"></a>free_CA_mode</code></em>;</p></td>
-<td class="struct_member_description"><p>True if one or more streams is controlled by a CA system</p></td>
-<td class="struct_member_annotations"> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Pointer-Arrays.html#GPtrArray"><span class="type">GPtrArray</span></a> *<em class="structfield"><code><a name="GstMpegtsSDTService.descriptors"></a>descriptors</code></em>;</p></td>
-<td class="struct_member_description"><p> List of descriptors. </p></td>
-<td class="struct_member_annotations"><span class="annotation">[<acronym title="Generics and defining elements of containers and arrays."><span class="acronym">element-type</span></acronym> GstMpegtsDescriptor]</span></td>
-</tr>
-</tbody>
-</table></div>
-</div>
-</div>
-<hr>
-<div class="refsect2">
-<a name="GstMpegtsEIT"></a><h3>struct GstMpegtsEIT</h3>
-<pre class="programlisting">struct GstMpegtsEIT {
- guint16 transport_stream_id;
- guint16 original_network_id;
- guint8 segment_last_section_number;
- guint8 last_table_id;
-
- gboolean actual_stream;
- gboolean present_following;
-
- GPtrArray *events;
-};
-</pre>
-<p>Event Information Table (EN 300 468)</p>
-<div class="refsect3">
-<a name="GstMpegtsEIT.members"></a><h4>Members</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="300px" class="struct_members_name">
-<col class="struct_members_description">
-<col width="200px" class="struct_members_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint16"><span class="type">guint16</span></a> <em class="structfield"><code><a name="GstMpegtsEIT.transport-stream-id"></a>transport_stream_id</code></em>;</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint16"><span class="type">guint16</span></a> <em class="structfield"><code><a name="GstMpegtsEIT.original-network-id"></a>original_network_id</code></em>;</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint8"><span class="type">guint8</span></a> <em class="structfield"><code><a name="GstMpegtsEIT.segment-last-section-number"></a>segment_last_section_number</code></em>;</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint8"><span class="type">guint8</span></a> <em class="structfield"><code><a name="GstMpegtsEIT.last-table-id"></a>last_table_id</code></em>;</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a> <em class="structfield"><code><a name="GstMpegtsEIT.actual-stream"></a>actual_stream</code></em>;</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a> <em class="structfield"><code><a name="GstMpegtsEIT.present-following"></a>present_following</code></em>;</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Pointer-Arrays.html#GPtrArray"><span class="type">GPtrArray</span></a> *<em class="structfield"><code><a name="GstMpegtsEIT.events"></a>events</code></em>;</p></td>
-<td class="struct_member_description"><p> List of events. </p></td>
-<td class="struct_member_annotations"><span class="annotation">[<acronym title="Generics and defining elements of containers and arrays."><span class="acronym">element-type</span></acronym> GstMpegtsEITEvent]</span></td>
-</tr>
-</tbody>
-</table></div>
-</div>
-</div>
-<hr>
-<div class="refsect2">
-<a name="GstMpegtsEITEvent"></a><h3>struct GstMpegtsEITEvent</h3>
-<pre class="programlisting">struct GstMpegtsEITEvent {
- guint16 event_id;
-
- GstDateTime *start_time;
- guint32 duration;
-
- GstMpegtsRunningStatus running_status;
- gboolean free_CA_mode;
-
- GPtrArray *descriptors;
-};
-</pre>
-<p>Event from a <em class="parameter"><code>GstMpegtsEIT</code></em>
-</p>
-<div class="refsect3">
-<a name="GstMpegtsEITEvent.members"></a><h4>Members</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="300px" class="struct_members_name">
-<col class="struct_members_description">
-<col width="200px" class="struct_members_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint16"><span class="type">guint16</span></a> <em class="structfield"><code><a name="GstMpegtsEITEvent.event-id"></a>event_id</code></em>;</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/gstreamer-1.0GstDateTime.html#GstDateTime-struct"><span class="type">GstDateTime</span></a> *<em class="structfield"><code><a name="GstMpegtsEITEvent.start-time"></a>start_time</code></em>;</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint32"><span class="type">guint32</span></a> <em class="structfield"><code><a name="GstMpegtsEITEvent.duration"></a>duration</code></em>;</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-sections.html#GstMpegtsRunningStatus" title="enum GstMpegtsRunningStatus"><span class="type">GstMpegtsRunningStatus</span></a> <em class="structfield"><code><a name="GstMpegtsEITEvent.running-status"></a>running_status</code></em>;</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a> <em class="structfield"><code><a name="GstMpegtsEITEvent.free-CA-mode"></a>free_CA_mode</code></em>;</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Pointer-Arrays.html#GPtrArray"><span class="type">GPtrArray</span></a> *<em class="structfield"><code><a name="GstMpegtsEITEvent.descriptors"></a>descriptors</code></em>;</p></td>
-<td class="struct_member_description"><p> List of descriptors. </p></td>
-<td class="struct_member_annotations"><span class="annotation">[<acronym title="Generics and defining elements of containers and arrays."><span class="acronym">element-type</span></acronym> GstMpegtsDescriptor]</span></td>
-</tr>
-</tbody>
-</table></div>
-</div>
-</div>
-<hr>
-<div class="refsect2">
-<a name="GstMpegtsRunningStatus"></a><h3>enum GstMpegtsRunningStatus</h3>
-<p>Running status of a service.</p>
-<p>Corresponds to table 6 of ETSI EN 300 468 (v1.13.0)</p>
-<div class="refsect3">
-<a name="GstMpegtsRunningStatus.members"></a><h4>Members</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="300px" class="enum_members_name">
-<col class="enum_members_description">
-<col width="200px" class="enum_members_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="enum_member_name"><p><a name="GST-MPEGTS-RUNNING-STATUS-UNDEFINED:CAPS"></a>GST_MPEGTS_RUNNING_STATUS_UNDEFINED</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="enum_member_name"><p><a name="GST-MPEGTS-RUNNING-STATUS-NOT-RUNNING:CAPS"></a>GST_MPEGTS_RUNNING_STATUS_NOT_RUNNING</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="enum_member_name"><p><a name="GST-MPEGTS-RUNNING-STATUS-STARTS-IN-FEW-SECONDS:CAPS"></a>GST_MPEGTS_RUNNING_STATUS_STARTS_IN_FEW_SECONDS</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="enum_member_name"><p><a name="GST-MPEGTS-RUNNING-STATUS-PAUSING:CAPS"></a>GST_MPEGTS_RUNNING_STATUS_PAUSING</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="enum_member_name"><p><a name="GST-MPEGTS-RUNNING-STATUS-RUNNING:CAPS"></a>GST_MPEGTS_RUNNING_STATUS_RUNNING</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="enum_member_name"><p><a name="GST-MPEGTS-RUNNING-STATUS-OFF-AIR:CAPS"></a>GST_MPEGTS_RUNNING_STATUS_OFF_AIR</p></td>
-<td> </td>
-<td> </td>
-</tr>
-</tbody>
-</table></div>
-</div>
-</div>
-<hr>
-<div class="refsect2">
-<a name="GstMpegtsTOT"></a><h3>struct GstMpegtsTOT</h3>
-<pre class="programlisting">struct GstMpegtsTOT {
- GstDateTime *utc_time;
-
- GPtrArray *descriptors;
-};
-</pre>
-<p>Time Offset Table (EN 300 468)</p>
-<div class="refsect3">
-<a name="GstMpegtsTOT.members"></a><h4>Members</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="300px" class="struct_members_name">
-<col class="struct_members_description">
-<col width="200px" class="struct_members_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/gstreamer-1.0GstDateTime.html#GstDateTime-struct"><span class="type">GstDateTime</span></a> *<em class="structfield"><code><a name="GstMpegtsTOT.utc-time"></a>utc_time</code></em>;</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Pointer-Arrays.html#GPtrArray"><span class="type">GPtrArray</span></a> *<em class="structfield"><code><a name="GstMpegtsTOT.descriptors"></a>descriptors</code></em>;</p></td>
-<td class="struct_member_description"><p> List of descriptors. </p></td>
-<td class="struct_member_annotations"><span class="annotation">[<acronym title="Generics and defining elements of containers and arrays."><span class="acronym">element-type</span></acronym> GstMpegtsDescriptor]</span></td>
-</tr>
-</tbody>
-</table></div>
-</div>
-</div>
-</div>
-</div>
-<div class="footer">
-<hr>Generated by GTK-Doc V1.25</div>
-</body>
-</html>
\ No newline at end of file
diff --git a/docs/libs/html/gst-plugins-bad-libs-GstAggregator.html b/docs/libs/html/gst-plugins-bad-libs-GstAggregator.html
index ca5e940..594b1b0 100644
--- a/docs/libs/html/gst-plugins-bad-libs-GstAggregator.html
+++ b/docs/libs/html/gst-plugins-bad-libs-GstAggregator.html
@@ -27,8 +27,7 @@
<div class="refnamediv"><table width="100%"><tr>
<td valign="top">
<h2><span class="refentrytitle"><a name="gst-plugins-bad-libs-GstAggregator.top_of_page"></a>GstAggregator</span></h2>
-<p>GstAggregator — manages a set of pads with the purpose of
-aggregating their buffers.</p>
+<p>GstAggregator</p>
</td>
<td class="gallery_image" valign="top" align="right"></td>
</tr></table></div>
@@ -96,42 +95,6 @@
</div>
<div class="refsect1">
<a name="gst-plugins-bad-libs-GstAggregator.description"></a><h2>Description</h2>
-<p>Manages a set of pads with the purpose of aggregating their buffers.
-Control is given to the subclass when all pads have data.</p>
-<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
-<li class="listitem"><p>
- Base class for mixers and muxers. Subclasses should at least implement
- the <a class="link" href="gst-plugins-bad-libs-GstAggregator.html#GstAggregatorClass.aggregate"><code class="function">GstAggregatorClass.aggregate()</code></a> virtual method.
- </p></li>
-<li class="listitem"><p>
- When data is queued on all pads, tha aggregate vmethod is called.
- </p></li>
-<li class="listitem"><p>
- One can peek at the data on any given GstAggregatorPad with the
- <a class="link" href="gst-plugins-bad-libs-GstAggregatorPad.html#gst-aggregator-pad-get-buffer" title="gst_aggregator_pad_get_buffer ()"><code class="function">gst_aggregator_pad_get_buffer()</code></a> method, and take ownership of it
- with the <a class="link" href="gst-plugins-bad-libs-GstAggregatorPad.html#gst-aggregator-pad-steal-buffer" title="gst_aggregator_pad_steal_buffer ()"><code class="function">gst_aggregator_pad_steal_buffer()</code></a> method. When a buffer
- has been taken with <code class="function">steal_buffer()</code>, a new buffer can be queued
- on that pad.
- </p></li>
-<li class="listitem"><p>
- If the subclass wishes to push a buffer downstream in its aggregate
- implementation, it should do so through the
- <a class="link" href="gst-plugins-bad-libs-GstAggregator.html#gst-aggregator-finish-buffer" title="gst_aggregator_finish_buffer ()"><code class="function">gst_aggregator_finish_buffer()</code></a> method. This method will take care
- of sending and ordering mandatory events such as stream start, caps
- and segment.
- </p></li>
-<li class="listitem"><p>
- Same goes for EOS events, which should not be pushed directly by the
- subclass, it should instead return GST_FLOW_EOS in its aggregate
- implementation.
- </p></li>
-<li class="listitem"><p>
- Note that the aggregator logic regarding gap event handling is to turn
- these into gap buffers with matching PTS and duration. It will also
- flag these buffers with GST_BUFFER_FLAG_GAP and GST_BUFFER_FLAG_DROPPABLE
- to ease their identification and subsequent processing.
- </p></li>
-</ul></div>
</div>
<div class="refsect1">
<a name="gst-plugins-bad-libs-GstAggregator.functions_details"></a><h2>Functions</h2>
@@ -140,31 +103,6 @@
<pre class="programlisting"><a href="/usr/share/gtk-doc/html/gstreamer-1.0GstPad.html#GstFlowReturn"><span class="returnvalue">GstFlowReturn</span></a>
gst_aggregator_finish_buffer (<em class="parameter"><code><a class="link" href="gst-plugins-bad-libs-GstAggregator.html#GstAggregator" title="struct GstAggregator"><span class="type">GstAggregator</span></a> *agg</code></em>,
<em class="parameter"><code><a href="/usr/share/gtk-doc/html/gstreamer-1.0GstBuffer.html#GstBuffer-struct"><span class="type">GstBuffer</span></a> *buffer</code></em>);</pre>
-<p>This method will push the provided output buffer downstream. If needed,
-mandatory events such as stream-start, caps, and segment events will be
-sent before pushing the buffer.</p>
-<div class="refsect3">
-<a name="gst-aggregator-finish-buffer.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="parameter_name"><p>self</p></td>
-<td class="parameter_description"><p>The <a class="link" href="gst-plugins-bad-libs-GstAggregator.html#GstAggregator" title="struct GstAggregator"><span class="type">GstAggregator</span></a></p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>buffer</p></td>
-<td class="parameter_description"><p> the <a href="/usr/share/gtk-doc/html/gstreamer-1.0GstBuffer.html#GstBuffer-struct"><span class="type">GstBuffer</span></a> to push. </p></td>
-<td class="parameter_annotations"><span class="annotation">[<acronym title="Free data after the code is done."><span class="acronym">transfer full</span></acronym>]</span></td>
-</tr>
-</tbody>
-</table></div>
-</div>
</div>
<hr>
<div class="refsect2">
@@ -172,29 +110,6 @@
<pre class="programlisting"><span class="returnvalue">void</span>
gst_aggregator_set_src_caps (<em class="parameter"><code><a class="link" href="gst-plugins-bad-libs-GstAggregator.html#GstAggregator" title="struct GstAggregator"><span class="type">GstAggregator</span></a> *agg</code></em>,
<em class="parameter"><code><a href="/usr/share/gtk-doc/html/gstreamer-1.0GstCaps.html#GstCaps-struct"><span class="type">GstCaps</span></a> *caps</code></em>);</pre>
-<p>Sets the caps to be used on the src pad.</p>
-<div class="refsect3">
-<a name="gst-aggregator-set-src-caps.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="parameter_name"><p>self</p></td>
-<td class="parameter_description"><p>The <a class="link" href="gst-plugins-bad-libs-GstAggregator.html#GstAggregator" title="struct GstAggregator"><span class="type">GstAggregator</span></a></p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>caps</p></td>
-<td class="parameter_description"><p>The <a href="/usr/share/gtk-doc/html/gstreamer-1.0GstCaps.html#GstCaps-struct"><span class="type">GstCaps</span></a> to set on the src pad.</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-</tbody>
-</table></div>
-</div>
</div>
<hr>
<div class="refsect2">
@@ -203,68 +118,12 @@
gst_aggregator_iterate_sinkpads (<em class="parameter"><code><a class="link" href="gst-plugins-bad-libs-GstAggregator.html#GstAggregator" title="struct GstAggregator"><span class="type">GstAggregator</span></a> *self</code></em>,
<em class="parameter"><code><span class="type">GstAggregatorPadForeachFunc</span> func</code></em>,
<em class="parameter"><code><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a> user_data</code></em>);</pre>
-<p>Iterate the sinkpads of aggregator to call a function on them.</p>
-<p>This method guarantees that <em class="parameter"><code>func</code></em>
- will be called only once for each
-sink pad.</p>
-<div class="refsect3">
-<a name="gst-aggregator-iterate-sinkpads.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="parameter_name"><p>self</p></td>
-<td class="parameter_description"><p>The <a class="link" href="gst-plugins-bad-libs-GstAggregator.html#GstAggregator" title="struct GstAggregator"><span class="type">GstAggregator</span></a></p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>func</p></td>
-<td class="parameter_description"><p> The function to call. </p></td>
-<td class="parameter_annotations"><span class="annotation">[<acronym title="The callback is valid only during the call to the method."><span class="acronym">scope call</span></acronym>]</span></td>
-</tr>
-<tr>
-<td class="parameter_name"><p>user_data</p></td>
-<td class="parameter_description"><p> The data to pass to <em class="parameter"><code>func</code></em>
-. </p></td>
-<td class="parameter_annotations"><span class="annotation">[<acronym title="This parameter is a 'user_data', for callbacks; many bindings can pass NULL here."><span class="acronym">closure</span></acronym>]</span></td>
-</tr>
-</tbody>
-</table></div>
-</div>
</div>
<hr>
<div class="refsect2">
<a name="gst-aggregator-get-latency"></a><h3>gst_aggregator_get_latency ()</h3>
<pre class="programlisting"><a href="/usr/share/gtk-doc/html/gstreamer-1.0GstClock.html#GstClockTime"><span class="returnvalue">GstClockTime</span></a>
gst_aggregator_get_latency (<em class="parameter"><code><a class="link" href="gst-plugins-bad-libs-GstAggregator.html#GstAggregator" title="struct GstAggregator"><span class="type">GstAggregator</span></a> *self</code></em>);</pre>
-<p>Retrieves the latency values reported by <em class="parameter"><code>self</code></em>
- in response to the latency
-query, or <a href="/usr/share/gtk-doc/html/gstreamer-1.0GstClock.html#GST-CLOCK-TIME-NONE:CAPS"><code class="literal">GST_CLOCK_TIME_NONE</code></a> if there is not live source connected and the element
-will not wait for the clock.</p>
-<p>Typically only called by subclasses.</p>
-<div class="refsect3">
-<a name="gst-aggregator-get-latency.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody><tr>
-<td class="parameter_name"><p>self</p></td>
-<td class="parameter_description"><p>a <a class="link" href="gst-plugins-bad-libs-GstAggregator.html#GstAggregator" title="struct GstAggregator"><span class="type">GstAggregator</span></a></p></td>
-<td class="parameter_annotations"> </td>
-</tr></tbody>
-</table></div>
-</div>
-<div class="refsect3">
-<a name="gst-aggregator-get-latency.returns"></a><h4>Returns</h4>
-<p> The latency or <a href="/usr/share/gtk-doc/html/gstreamer-1.0GstClock.html#GST-CLOCK-TIME-NONE:CAPS"><code class="literal">GST_CLOCK_TIME_NONE</code></a> if the element does not sync</p>
-</div>
</div>
</div>
<div class="refsect1">
@@ -280,34 +139,6 @@
GstSegment segment;
};
</pre>
-<p>Aggregator base class object structure.</p>
-<div class="refsect3">
-<a name="GstAggregator.members"></a><h4>Members</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="300px" class="struct_members_name">
-<col class="struct_members_description">
-<col width="200px" class="struct_members_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/gstreamer-1.0GstElement.html#GstElement-struct"><span class="type">GstElement</span></a> <em class="structfield"><code><a name="GstAggregator.parent"></a>parent</code></em>;</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/gstreamer-1.0GstPad.html#GstPad-struct"><span class="type">GstPad</span></a> *<em class="structfield"><code><a name="GstAggregator.srcpad"></a>srcpad</code></em>;</p></td>
-<td class="struct_member_description"><p>the aggregator's source pad</p></td>
-<td class="struct_member_annotations"> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/gstreamer-1.0GstSegment.html#GstSegment-struct"><span class="type">GstSegment</span></a> <em class="structfield"><code><a name="GstAggregator.segment"></a>segment</code></em>;</p></td>
-<td class="struct_member_description"><p>the output segment</p></td>
-<td class="struct_member_annotations"> </td>
-</tr>
-</tbody>
-</table></div>
-</div>
</div>
<hr>
<div class="refsect2">
@@ -359,132 +190,9 @@
const GstCaps * caps);
};
</pre>
-<p>The aggregator base class will handle in a thread-safe way all manners of
-concurrent flushes, seeks, pad additions and removals, leaving to the
-subclass the responsibility of clipping buffers, and aggregating buffers in
-the way the implementor sees fit.</p>
-<p>It will also take care of event ordering (stream-start, segment, eos).</p>
-<p>Basically, a basic implementation will override <em class="parameter"><code>aggregate</code></em>
-, and call
-_finish_buffer from inside that function.</p>
-<div class="refsect3">
-<a name="GstAggregatorClass.members"></a><h4>Members</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="300px" class="struct_members_name">
-<col class="struct_members_description">
-<col width="200px" class="struct_members_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/gobjectgobject-Type-Information.html#GType"><span class="type">GType</span></a> <em class="structfield"><code><a name="GstAggregatorClass.sinkpads-type"></a>sinkpads_type</code></em>;</p></td>
-<td class="struct_member_description"><p>Optional.
-The type of the pads that should be created when
-GstElement.request_new_pad is called.</p></td>
-<td class="struct_member_annotations"> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><em class="structfield"><code><a name="GstAggregatorClass.flush"></a>flush</code></em> ()</p></td>
-<td class="struct_member_description"><p>Optional.
-Called after a succesful flushing seek, once all the flush
-stops have been received. Flush pad-specific data in
-<a class="link" href="gst-plugins-bad-libs-GstAggregatorPad.html#GstAggregatorPad" title="struct GstAggregatorPad"><span class="type">GstAggregatorPad</span></a>->flush.</p></td>
-<td class="struct_member_annotations"> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><em class="structfield"><code><a name="GstAggregatorClass.clip"></a>clip</code></em> ()</p></td>
-<td class="struct_member_description"><p>Optional.
-Called when a buffer is received on a sink pad, the task
-of clipping it and translating it to the current segment
-falls on the subclass.</p></td>
-<td class="struct_member_annotations"> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><em class="structfield"><code><a name="GstAggregatorClass.sink-event"></a>sink_event</code></em> ()</p></td>
-<td class="struct_member_description"><p>Optional.
-Called when an event is received on a sink pad, the subclass
-should always chain up.</p></td>
-<td class="struct_member_annotations"> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><em class="structfield"><code><a name="GstAggregatorClass.sink-query"></a>sink_query</code></em> ()</p></td>
-<td class="struct_member_description"><p>Optional.
-Called when a query is received on a sink pad, the subclass
-should always chain up.</p></td>
-<td class="struct_member_annotations"> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><em class="structfield"><code><a name="GstAggregatorClass.src-event"></a>src_event</code></em> ()</p></td>
-<td class="struct_member_description"><p>Optional.
-Called when an event is received on the src pad, the subclass
-should always chain up.</p></td>
-<td class="struct_member_annotations"> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><em class="structfield"><code><a name="GstAggregatorClass.src-query"></a>src_query</code></em> ()</p></td>
-<td class="struct_member_description"><p>Optional.
-Called when a query is received on the src pad, the subclass
-should always chain up.</p></td>
-<td class="struct_member_annotations"> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><em class="structfield"><code><a name="GstAggregatorClass.src-activate"></a>src_activate</code></em> ()</p></td>
-<td class="struct_member_description"><p>Optional.
-Called when the src pad is activated, it will start/stop its
-pad task right after that call.</p></td>
-<td class="struct_member_annotations"> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><em class="structfield"><code><a name="GstAggregatorClass.aggregate"></a>aggregate</code></em> ()</p></td>
-<td class="struct_member_description"><p>Mandatory.
-Called when buffers are queued on all sinkpads. Classes
-should iterate the GstElement->sinkpads and peek or steal
-buffers from the <a href="gst-plugins-bad-libs-GstAggregatorPad.html#GstAggregatorPad"><span class="type">GstAggregatorPads</span></a>. If the subclass returns
-GST_FLOW_EOS, sending of the eos event will be taken care
-of. Once / if a buffer has been constructed from the
-aggregated buffers, the subclass should call _finish_buffer.</p></td>
-<td class="struct_member_annotations"> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><em class="structfield"><code><a name="GstAggregatorClass.stop"></a>stop</code></em> ()</p></td>
-<td class="struct_member_description"><p>Optional.
-Called when the element goes from PAUSED to READY.
-The subclass should free all resources and reset its state.</p></td>
-<td class="struct_member_annotations"> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><em class="structfield"><code><a name="GstAggregatorClass.start"></a>start</code></em> ()</p></td>
-<td class="struct_member_description"><p>Optional.
-Called when the element goes from READY to PAUSED.
-The subclass should get ready to process
-aggregated buffers.</p></td>
-<td class="struct_member_annotations"> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><em class="structfield"><code><a name="GstAggregatorClass.get-next-time"></a>get_next_time</code></em> ()</p></td>
-<td class="struct_member_description"><p>Optional.
-Called when the element needs to know the running time of the next
-rendered buffer for live pipelines. This causes deadline
-based aggregation to occur. Defaults to returning
-GST_CLOCK_TIME_NONE causing the element to wait for buffers
-on all sink pads before aggregating.</p></td>
-<td class="struct_member_annotations"> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><em class="structfield"><code><a name="GstAggregatorClass.create-new-pad"></a>create_new_pad</code></em> ()</p></td>
-<td> </td>
-<td> </td>
-</tr>
-</tbody>
-</table></div>
</div>
</div>
</div>
-<div class="refsect1">
-<a name="gst-plugins-bad-libs-GstAggregator.see-also"></a><h2>See Also</h2>
-<p>gstcollectpads for historical reasons.</p>
-</div>
-</div>
<div class="footer">
<hr>Generated by GTK-Doc V1.25</div>
</body>
diff --git a/docs/libs/html/gst-plugins-bad-libs-GstAggregatorPad.html b/docs/libs/html/gst-plugins-bad-libs-GstAggregatorPad.html
index e3564ee..8b474f87 100644
--- a/docs/libs/html/gst-plugins-bad-libs-GstAggregatorPad.html
+++ b/docs/libs/html/gst-plugins-bad-libs-GstAggregatorPad.html
@@ -102,87 +102,18 @@
<a name="gst-aggregator-pad-steal-buffer"></a><h3>gst_aggregator_pad_steal_buffer ()</h3>
<pre class="programlisting"><a href="/usr/share/gtk-doc/html/gstreamer-1.0GstBuffer.html#GstBuffer-struct"><span class="returnvalue">GstBuffer</span></a> *
gst_aggregator_pad_steal_buffer (<em class="parameter"><code><a class="link" href="gst-plugins-bad-libs-GstAggregatorPad.html#GstAggregatorPad" title="struct GstAggregatorPad"><span class="type">GstAggregatorPad</span></a> *pad</code></em>);</pre>
-<p>Steal the ref to the buffer currently queued in <em class="parameter"><code>pad</code></em>
-.</p>
-<div class="refsect3">
-<a name="gst-aggregator-pad-steal-buffer.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody><tr>
-<td class="parameter_name"><p>pad</p></td>
-<td class="parameter_description"><p>the pad to get buffer from</p></td>
-<td class="parameter_annotations"> </td>
-</tr></tbody>
-</table></div>
-</div>
-<div class="refsect3">
-<a name="gst-aggregator-pad-steal-buffer.returns"></a><h4>Returns</h4>
-<p> The buffer in <em class="parameter"><code>pad</code></em>
-or NULL if no buffer was
-queued. You should unref the buffer after usage. </p>
-<p><span class="annotation">[<acronym title="Free data after the code is done."><span class="acronym">transfer full</span></acronym>]</span></p>
-</div>
</div>
<hr>
<div class="refsect2">
<a name="gst-aggregator-pad-get-buffer"></a><h3>gst_aggregator_pad_get_buffer ()</h3>
<pre class="programlisting"><a href="/usr/share/gtk-doc/html/gstreamer-1.0GstBuffer.html#GstBuffer-struct"><span class="returnvalue">GstBuffer</span></a> *
gst_aggregator_pad_get_buffer (<em class="parameter"><code><a class="link" href="gst-plugins-bad-libs-GstAggregatorPad.html#GstAggregatorPad" title="struct GstAggregatorPad"><span class="type">GstAggregatorPad</span></a> *pad</code></em>);</pre>
-<div class="refsect3">
-<a name="gst-aggregator-pad-get-buffer.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody><tr>
-<td class="parameter_name"><p>pad</p></td>
-<td class="parameter_description"><p>the pad to get buffer from</p></td>
-<td class="parameter_annotations"> </td>
-</tr></tbody>
-</table></div>
-</div>
-<div class="refsect3">
-<a name="gst-aggregator-pad-get-buffer.returns"></a><h4>Returns</h4>
-<p> A reference to the buffer in <em class="parameter"><code>pad</code></em>
-or
-NULL if no buffer was queued. You should unref the buffer after
-usage. </p>
-<p><span class="annotation">[<acronym title="Free data after the code is done."><span class="acronym">transfer full</span></acronym>]</span></p>
-</div>
</div>
<hr>
<div class="refsect2">
<a name="gst-aggregator-pad-drop-buffer"></a><h3>gst_aggregator_pad_drop_buffer ()</h3>
<pre class="programlisting"><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
gst_aggregator_pad_drop_buffer (<em class="parameter"><code><a class="link" href="gst-plugins-bad-libs-GstAggregatorPad.html#GstAggregatorPad" title="struct GstAggregatorPad"><span class="type">GstAggregatorPad</span></a> *pad</code></em>);</pre>
-<p>Drop the buffer currently queued in <em class="parameter"><code>pad</code></em>
-.</p>
-<div class="refsect3">
-<a name="gst-aggregator-pad-drop-buffer.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody><tr>
-<td class="parameter_name"><p>pad</p></td>
-<td class="parameter_description"><p>the pad where to drop any pending buffer</p></td>
-<td class="parameter_annotations"> </td>
-</tr></tbody>
-</table></div>
-</div>
-<div class="refsect3">
-<a name="gst-aggregator-pad-drop-buffer.returns"></a><h4>Returns</h4>
-<p> TRUE if there was a buffer queued in <em class="parameter"><code>pad</code></em>
-, or FALSE if not.</p>
-</div>
</div>
<hr>
<div class="refsect2">
@@ -209,44 +140,6 @@
gpointer _gst_reserved[GST_PADDING];
};
</pre>
-<p>The implementation the GstPad to use with <a class="link" href="gst-plugins-bad-libs-GstAggregator.html#GstAggregator" title="struct GstAggregator"><span class="type">GstAggregator</span></a></p>
-<div class="refsect3">
-<a name="GstAggregatorPad.members"></a><h4>Members</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="300px" class="struct_members_name">
-<col class="struct_members_description">
-<col width="200px" class="struct_members_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/gstreamer-1.0GstPad.html#GstPad-struct"><span class="type">GstPad</span></a> <em class="structfield"><code><a name="GstAggregatorPad.parent"></a>parent</code></em>;</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/gstreamer-1.0GstSegment.html#GstSegment-struct"><span class="type">GstSegment</span></a> <em class="structfield"><code><a name="GstAggregatorPad.segment"></a>segment</code></em>;</p></td>
-<td class="struct_member_description"><p>last segment received.</p></td>
-<td class="struct_member_annotations"> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/gstreamer-1.0GstSegment.html#GstSegment-struct"><span class="type">GstSegment</span></a> <em class="structfield"><code><a name="GstAggregatorPad.clip-segment"></a>clip_segment</code></em>;</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><span class="type">GstAggregatorPadPrivate</span> *<em class="structfield"><code><a name="GstAggregatorPad.priv"></a>priv</code></em>;</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a> <em class="structfield"><code><a name="GstAggregatorPad.-gst-reserved"></a>_gst_reserved</code></em>[GST_PADDING];</p></td>
-<td> </td>
-<td> </td>
-</tr>
-</tbody>
-</table></div>
-</div>
</div>
<hr>
<div class="refsect2">
@@ -257,24 +150,6 @@
GstFlowReturn (*flush) (GstAggregatorPad * aggpad, GstAggregator * aggregator);
};
</pre>
-<div class="refsect3">
-<a name="GstAggregatorPadClass.members"></a><h4>Members</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="300px" class="struct_members_name">
-<col class="struct_members_description">
-<col width="200px" class="struct_members_annotations">
-</colgroup>
-<tbody><tr>
-<td class="struct_member_name"><p><em class="structfield"><code><a name="GstAggregatorPadClass.flush"></a>flush</code></em> ()</p></td>
-<td class="struct_member_description"><p>Optional
-Called when the pad has received a flush stop, this is the place
-to flush any information specific to the pad, it allows for individual
-pads to be flushed while others might not be.</p></td>
-<td class="struct_member_annotations"> </td>
-</tr></tbody>
-</table></div>
-</div>
</div>
</div>
</div>
diff --git a/docs/libs/html/gst-plugins-bad-libs-GstEGLImageMemory.html b/docs/libs/html/gst-plugins-bad-libs-GstEGLImageMemory.html
index 8143490..166bb00 100644
--- a/docs/libs/html/gst-plugins-bad-libs-GstEGLImageMemory.html
+++ b/docs/libs/html/gst-plugins-bad-libs-GstEGLImageMemory.html
@@ -32,154 +32,14 @@
<td class="gallery_image" valign="top" align="right"></td>
</tr></table></div>
<div class="refsect1">
-<a name="gst-plugins-bad-libs-GstEGLImageMemory.functions"></a><h2>Functions</h2>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="functions_return">
-<col class="functions_name">
-</colgroup>
-<tbody>
-<tr>
-<td class="function_type">
-<span class="returnvalue">void</span>
-</td>
-<td class="function_name">
-<a class="link" href="gst-plugins-bad-libs-GstEGLImageMemory.html#gst-egl-image-memory-init" title="gst_egl_image_memory_init ()">gst_egl_image_memory_init</a> <span class="c_punctuation">()</span>
-</td>
-</tr>
-<tr>
-<td class="function_type">
-<span class="returnvalue">EGLDisplay</span>
-</td>
-<td class="function_name">
-<a class="link" href="gst-plugins-bad-libs-GstEGLImageMemory.html#gst-egl-image-memory-get-display" title="gst_egl_image_memory_get_display ()">gst_egl_image_memory_get_display</a> <span class="c_punctuation">()</span>
-</td>
-</tr>
-<tr>
-<td class="function_type">
-<span class="returnvalue">EGLImageKHR</span>
-</td>
-<td class="function_name">
-<a class="link" href="gst-plugins-bad-libs-GstEGLImageMemory.html#gst-egl-image-memory-get-image" title="gst_egl_image_memory_get_image ()">gst_egl_image_memory_get_image</a> <span class="c_punctuation">()</span>
-</td>
-</tr>
-<tr>
-<td class="function_type">
-<span class="returnvalue">GstVideoGLTextureOrientation</span>
-</td>
-<td class="function_name">
-<a class="link" href="gst-plugins-bad-libs-GstEGLImageMemory.html#gst-egl-image-memory-get-orientation" title="gst_egl_image_memory_get_orientation ()">gst_egl_image_memory_get_orientation</a> <span class="c_punctuation">()</span>
-</td>
-</tr>
-<tr>
-<td class="function_type">
-<span class="returnvalue">void</span>
-</td>
-<td class="function_name">
-<a class="link" href="gst-plugins-bad-libs-GstEGLImageMemory.html#gst-egl-image-memory-set-orientation" title="gst_egl_image_memory_set_orientation ()">gst_egl_image_memory_set_orientation</a> <span class="c_punctuation">()</span>
-</td>
-</tr>
-<tr>
-<td class="function_type">
-<a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
-</td>
-<td class="function_name">
-<a class="link" href="gst-plugins-bad-libs-GstEGLImageMemory.html#gst-egl-image-memory-setup-buffer" title="gst_egl_image_memory_setup_buffer ()">gst_egl_image_memory_setup_buffer</a> <span class="c_punctuation">()</span>
-</td>
-</tr>
-<tr>
-<td class="function_type">
-<a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
-</td>
-<td class="function_name">
-<a class="link" href="gst-plugins-bad-libs-GstEGLImageMemory.html#gst-is-egl-image-memory" title="gst_is_egl_image_memory ()">gst_is_egl_image_memory</a> <span class="c_punctuation">()</span>
-</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<div class="refsect1">
-<a name="gst-plugins-bad-libs-GstEGLImageMemory.other"></a><h2>Types and Values</h2>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="name">
-<col class="description">
-</colgroup>
-<tbody>
-<tr>
-<td class="define_keyword">#define</td>
-<td class="function_name"><a class="link" href="gst-plugins-bad-libs-GstEGLImageMemory.html#GST-EGL-IMAGE-MEMORY-TYPE:CAPS" title="GST_EGL_IMAGE_MEMORY_TYPE">GST_EGL_IMAGE_MEMORY_TYPE</a></td>
-</tr>
-<tr>
-<td class="define_keyword">#define</td>
-<td class="function_name"><a class="link" href="gst-plugins-bad-libs-GstEGLImageMemory.html#GST-CAPS-FEATURE-MEMORY-EGL-IMAGE:CAPS" title="GST_CAPS_FEATURE_MEMORY_EGL_IMAGE">GST_CAPS_FEATURE_MEMORY_EGL_IMAGE</a></td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<div class="refsect1">
<a name="gst-plugins-bad-libs-GstEGLImageMemory.description"></a><h2>Description</h2>
</div>
<div class="refsect1">
<a name="gst-plugins-bad-libs-GstEGLImageMemory.functions_details"></a><h2>Functions</h2>
-<div class="refsect2">
-<a name="gst-egl-image-memory-init"></a><h3>gst_egl_image_memory_init ()</h3>
-<pre class="programlisting"><span class="returnvalue">void</span>
-gst_egl_image_memory_init (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
-</div>
-<hr>
-<div class="refsect2">
-<a name="gst-egl-image-memory-get-display"></a><h3>gst_egl_image_memory_get_display ()</h3>
-<pre class="programlisting"><span class="returnvalue">EGLDisplay</span>
-gst_egl_image_memory_get_display (<em class="parameter"><code><a href="/usr/share/gtk-doc/html/gstreamer-1.0GstMemory.html#GstMemory-struct"><span class="type">GstMemory</span></a> *mem</code></em>);</pre>
-</div>
-<hr>
-<div class="refsect2">
-<a name="gst-egl-image-memory-get-image"></a><h3>gst_egl_image_memory_get_image ()</h3>
-<pre class="programlisting"><span class="returnvalue">EGLImageKHR</span>
-gst_egl_image_memory_get_image (<em class="parameter"><code><a href="/usr/share/gtk-doc/html/gstreamer-1.0GstMemory.html#GstMemory-struct"><span class="type">GstMemory</span></a> *mem</code></em>);</pre>
-</div>
-<hr>
-<div class="refsect2">
-<a name="gst-egl-image-memory-get-orientation"></a><h3>gst_egl_image_memory_get_orientation ()</h3>
-<pre class="programlisting"><span class="returnvalue">GstVideoGLTextureOrientation</span>
-gst_egl_image_memory_get_orientation (<em class="parameter"><code><a href="/usr/share/gtk-doc/html/gstreamer-1.0GstMemory.html#GstMemory-struct"><span class="type">GstMemory</span></a> *mem</code></em>);</pre>
-</div>
-<hr>
-<div class="refsect2">
-<a name="gst-egl-image-memory-set-orientation"></a><h3>gst_egl_image_memory_set_orientation ()</h3>
-<pre class="programlisting"><span class="returnvalue">void</span>
-gst_egl_image_memory_set_orientation (<em class="parameter"><code><a href="/usr/share/gtk-doc/html/gstreamer-1.0GstMemory.html#GstMemory-struct"><span class="type">GstMemory</span></a> *mem</code></em>,
- <em class="parameter"><code><span class="type">GstVideoGLTextureOrientation</span> orientation</code></em>);</pre>
-</div>
-<hr>
-<div class="refsect2">
-<a name="gst-egl-image-memory-setup-buffer"></a><h3>gst_egl_image_memory_setup_buffer ()</h3>
-<pre class="programlisting"><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
-gst_egl_image_memory_setup_buffer (<em class="parameter"><code><a class="link" href="GstGLContext.html" title="GstGLContext"><span class="type">GstGLContext</span></a> *context</code></em>,
- <em class="parameter"><code><a href="/usr/share/gtk-doc/html/gst-plugins-base-libs-1.0gst-plugins-base-libs-gstvideo.html#GstVideoInfo"><span class="type">GstVideoInfo</span></a> *info</code></em>,
- <em class="parameter"><code><a href="/usr/share/gtk-doc/html/gstreamer-1.0GstBuffer.html#GstBuffer-struct"><span class="type">GstBuffer</span></a> *buffer</code></em>);</pre>
-</div>
-<hr>
-<div class="refsect2">
-<a name="gst-is-egl-image-memory"></a><h3>gst_is_egl_image_memory ()</h3>
-<pre class="programlisting"><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
-gst_is_egl_image_memory (<em class="parameter"><code><a href="/usr/share/gtk-doc/html/gstreamer-1.0GstMemory.html#GstMemory-struct"><span class="type">GstMemory</span></a> *mem</code></em>);</pre>
-</div>
+<p></p>
</div>
<div class="refsect1">
<a name="gst-plugins-bad-libs-GstEGLImageMemory.other_details"></a><h2>Types and Values</h2>
-<div class="refsect2">
-<a name="GST-EGL-IMAGE-MEMORY-TYPE:CAPS"></a><h3>GST_EGL_IMAGE_MEMORY_TYPE</h3>
-<pre class="programlisting">#define GST_EGL_IMAGE_MEMORY_TYPE "EGLImage"
-</pre>
-</div>
-<hr>
-<div class="refsect2">
-<a name="GST-CAPS-FEATURE-MEMORY-EGL-IMAGE:CAPS"></a><h3>GST_CAPS_FEATURE_MEMORY_EGL_IMAGE</h3>
-<pre class="programlisting">#define GST_CAPS_FEATURE_MEMORY_EGL_IMAGE "memory:EGLImage"
-</pre>
-</div>
</div>
</div>
<div class="footer">
diff --git a/docs/libs/html/gst-plugins-bad-libs-GstGLAPI.html b/docs/libs/html/gst-plugins-bad-libs-GstGLAPI.html
index d83958b..cb4eca1 100644
--- a/docs/libs/html/gst-plugins-bad-libs-GstGLAPI.html
+++ b/docs/libs/html/gst-plugins-bad-libs-GstGLAPI.html
@@ -118,104 +118,24 @@
<a name="gst-gl-api-to-string"></a><h3>gst_gl_api_to_string ()</h3>
<pre class="programlisting"><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gchar"><span class="returnvalue">gchar</span></a> *
gst_gl_api_to_string (<em class="parameter"><code><a class="link" href="gst-plugins-bad-libs-GstGLAPI.html#GstGLAPI" title="enum GstGLAPI"><span class="type">GstGLAPI</span></a> api</code></em>);</pre>
-<div class="refsect3">
-<a name="gst-gl-api-to-string.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody><tr>
-<td class="parameter_name"><p>api</p></td>
-<td class="parameter_description"><p>a <a class="link" href="gst-plugins-bad-libs-GstGLAPI.html#GstGLAPI" title="enum GstGLAPI"><span class="type">GstGLAPI</span></a> to stringify</p></td>
-<td class="parameter_annotations"> </td>
-</tr></tbody>
-</table></div>
-</div>
-<div class="refsect3">
-<a name="gst-gl-api-to-string.returns"></a><h4>Returns</h4>
-<p> A space seperated string of the OpenGL api's enabled in <em class="parameter"><code>api</code></em>
-</p>
-</div>
</div>
<hr>
<div class="refsect2">
<a name="gst-gl-api-from-string"></a><h3>gst_gl_api_from_string ()</h3>
<pre class="programlisting"><a class="link" href="gst-plugins-bad-libs-GstGLAPI.html#GstGLAPI" title="enum GstGLAPI"><span class="returnvalue">GstGLAPI</span></a>
gst_gl_api_from_string (<em class="parameter"><code>const <a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *api_s</code></em>);</pre>
-<div class="refsect3">
-<a name="gst-gl-api-from-string.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody><tr>
-<td class="parameter_name"><p>api_s</p></td>
-<td class="parameter_description"><p>a space seperated string of OpenGL apis</p></td>
-<td class="parameter_annotations"> </td>
-</tr></tbody>
-</table></div>
-</div>
-<div class="refsect3">
-<a name="gst-gl-api-from-string.returns"></a><h4>Returns</h4>
-<p> The <a class="link" href="gst-plugins-bad-libs-GstGLAPI.html#GstGLAPI" title="enum GstGLAPI"><span class="type">GstGLAPI</span></a> represented by <em class="parameter"><code>api_s</code></em>
-</p>
-</div>
</div>
<hr>
<div class="refsect2">
<a name="gst-gl-platform-to-string"></a><h3>gst_gl_platform_to_string ()</h3>
<pre class="programlisting"><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gchar"><span class="returnvalue">gchar</span></a> *
gst_gl_platform_to_string (<em class="parameter"><code><a class="link" href="gst-plugins-bad-libs-GstGLAPI.html#GstGLPlatform" title="enum GstGLPlatform"><span class="type">GstGLPlatform</span></a> platform</code></em>);</pre>
-<div class="refsect3">
-<a name="gst-gl-platform-to-string.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody><tr>
-<td class="parameter_name"><p>platform</p></td>
-<td class="parameter_description"><p>a <a class="link" href="gst-plugins-bad-libs-GstGLAPI.html#GstGLPlatform" title="enum GstGLPlatform"><span class="type">GstGLPlatform</span></a> to stringify</p></td>
-<td class="parameter_annotations"> </td>
-</tr></tbody>
-</table></div>
-</div>
-<div class="refsect3">
-<a name="gst-gl-platform-to-string.returns"></a><h4>Returns</h4>
-<p> A space seperated string of the OpenGL platforms enabled in <em class="parameter"><code>platform</code></em>
-</p>
-</div>
</div>
<hr>
<div class="refsect2">
<a name="gst-gl-platform-from-string"></a><h3>gst_gl_platform_from_string ()</h3>
<pre class="programlisting"><a class="link" href="gst-plugins-bad-libs-GstGLAPI.html#GstGLPlatform" title="enum GstGLPlatform"><span class="returnvalue">GstGLPlatform</span></a>
gst_gl_platform_from_string (<em class="parameter"><code>const <a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *platform_s</code></em>);</pre>
-<div class="refsect3">
-<a name="gst-gl-platform-from-string.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody><tr>
-<td class="parameter_name"><p>platform_s</p></td>
-<td class="parameter_description"><p>a space seperated string of OpenGL platformss</p></td>
-<td class="parameter_annotations"> </td>
-</tr></tbody>
-</table></div>
-</div>
-<div class="refsect3">
-<a name="gst-gl-platform-from-string.returns"></a><h4>Returns</h4>
-<p> The <a class="link" href="gst-plugins-bad-libs-GstGLAPI.html#GstGLPlatform" title="enum GstGLPlatform"><span class="type">GstGLPlatform</span></a> represented by <em class="parameter"><code>platform_s</code></em>
-</p>
-</div>
</div>
</div>
<div class="refsect1">
@@ -233,46 +153,33 @@
<tbody>
<tr>
<td class="enum_member_name"><p><a name="GST-GL-API-NONE:CAPS"></a>GST_GL_API_NONE</p></td>
-<td class="enum_member_description">
-<p>no API</p>
-</td>
-<td class="enum_member_annotations"> </td>
+<td> </td>
+<td> </td>
</tr>
<tr>
<td class="enum_member_name"><p><a name="GST-GL-API-OPENGL:CAPS"></a>GST_GL_API_OPENGL</p></td>
-<td class="enum_member_description">
-<p>Desktop OpenGL up to and including 3.1. The
- compatibility profile when the OpenGL version is >= 3.2</p>
-</td>
-<td class="enum_member_annotations"> </td>
+<td> </td>
+<td> </td>
</tr>
<tr>
<td class="enum_member_name"><p><a name="GST-GL-API-OPENGL3:CAPS"></a>GST_GL_API_OPENGL3</p></td>
-<td class="enum_member_description">
-<p>Desktop OpenGL >= 3.2 core profile</p>
-</td>
-<td class="enum_member_annotations"> </td>
+<td> </td>
+<td> </td>
</tr>
<tr>
<td class="enum_member_name"><p><a name="GST-GL-API-GLES1:CAPS"></a>GST_GL_API_GLES1</p></td>
-<td class="enum_member_description">
-<p>OpenGL ES 1.x</p>
-</td>
-<td class="enum_member_annotations"> </td>
+<td> </td>
+<td> </td>
</tr>
<tr>
<td class="enum_member_name"><p><a name="GST-GL-API-GLES2:CAPS"></a>GST_GL_API_GLES2</p></td>
-<td class="enum_member_description">
-<p>OpenGL ES 2.x and 3.x</p>
-</td>
-<td class="enum_member_annotations"> </td>
+<td> </td>
+<td> </td>
</tr>
<tr>
<td class="enum_member_name"><p><a name="GST-GL-API-ANY:CAPS"></a>GST_GL_API_ANY</p></td>
-<td class="enum_member_description">
-<p>Any OpenGL API</p>
-</td>
-<td class="enum_member_annotations"> </td>
+<td> </td>
+<td> </td>
</tr>
</tbody>
</table></div>
@@ -292,53 +199,38 @@
<tbody>
<tr>
<td class="enum_member_name"><p><a name="GST-GL-PLATFORM-NONE:CAPS"></a>GST_GL_PLATFORM_NONE</p></td>
-<td class="enum_member_description">
-<p>no platform</p>
-</td>
-<td class="enum_member_annotations"> </td>
+<td> </td>
+<td> </td>
</tr>
<tr>
<td class="enum_member_name"><p><a name="GST-GL-PLATFORM-EGL:CAPS"></a>GST_GL_PLATFORM_EGL</p></td>
-<td class="enum_member_description">
-<p>the EGL platform used primarily with the X11, wayland
- and android window systems as well as on embedded Linux</p>
-</td>
-<td class="enum_member_annotations"> </td>
+<td> </td>
+<td> </td>
</tr>
<tr>
<td class="enum_member_name"><p><a name="GST-GL-PLATFORM-GLX:CAPS"></a>GST_GL_PLATFORM_GLX</p></td>
-<td class="enum_member_description">
-<p>the GLX platform used primarily with the X11 window system</p>
-</td>
-<td class="enum_member_annotations"> </td>
+<td> </td>
+<td> </td>
</tr>
<tr>
<td class="enum_member_name"><p><a name="GST-GL-PLATFORM-WGL:CAPS"></a>GST_GL_PLATFORM_WGL</p></td>
-<td class="enum_member_description">
-<p>the WGL platform used primarily on Windows</p>
-</td>
-<td class="enum_member_annotations"> </td>
+<td> </td>
+<td> </td>
</tr>
<tr>
<td class="enum_member_name"><p><a name="GST-GL-PLATFORM-CGL:CAPS"></a>GST_GL_PLATFORM_CGL</p></td>
-<td class="enum_member_description">
-<p>the CGL platform used primarily on OS X</p>
-</td>
-<td class="enum_member_annotations"> </td>
+<td> </td>
+<td> </td>
</tr>
<tr>
<td class="enum_member_name"><p><a name="GST-GL-PLATFORM-EAGL:CAPS"></a>GST_GL_PLATFORM_EAGL</p></td>
-<td class="enum_member_description">
-<p>the EAGL platform used primarily on iOS</p>
-</td>
-<td class="enum_member_annotations"> </td>
+<td> </td>
+<td> </td>
</tr>
<tr>
<td class="enum_member_name"><p><a name="GST-GL-PLATFORM-ANY:CAPS"></a>GST_GL_PLATFORM_ANY</p></td>
-<td class="enum_member_description">
-<p>any OpenGL platform</p>
-</td>
-<td class="enum_member_annotations"> </td>
+<td> </td>
+<td> </td>
</tr>
</tbody>
</table></div>
@@ -349,28 +241,24 @@
<a name="GST-GL-API-GLES1-NAME:CAPS"></a><h3>GST_GL_API_GLES1_NAME</h3>
<pre class="programlisting">#define GST_GL_API_GLES1_NAME "gles1"
</pre>
-<p>The name for <a class="link" href="gst-plugins-bad-libs-GstGLAPI.html#GST-GL-API-GLES1:CAPS"><code class="literal">GST_GL_API_GLES1</code></a> used in various places</p>
</div>
<hr>
<div class="refsect2">
<a name="GST-GL-API-GLES2-NAME:CAPS"></a><h3>GST_GL_API_GLES2_NAME</h3>
<pre class="programlisting">#define GST_GL_API_GLES2_NAME "gles2"
</pre>
-<p>The name for <a class="link" href="gst-plugins-bad-libs-GstGLAPI.html#GST-GL-API-GLES2:CAPS"><code class="literal">GST_GL_API_GLES2</code></a> used in various places</p>
</div>
<hr>
<div class="refsect2">
<a name="GST-GL-API-OPENGL3-NAME:CAPS"></a><h3>GST_GL_API_OPENGL3_NAME</h3>
<pre class="programlisting">#define GST_GL_API_OPENGL3_NAME "opengl3"
</pre>
-<p>The name for <a class="link" href="gst-plugins-bad-libs-GstGLAPI.html#GST-GL-API-OPENGL3:CAPS"><code class="literal">GST_GL_API_OPENGL3</code></a> used in various places</p>
</div>
<hr>
<div class="refsect2">
<a name="GST-GL-API-OPENGL-NAME:CAPS"></a><h3>GST_GL_API_OPENGL_NAME</h3>
<pre class="programlisting">#define GST_GL_API_OPENGL_NAME "opengl"
</pre>
-<p>The name for <a class="link" href="gst-plugins-bad-libs-GstGLAPI.html#GST-GL-API-OPENGL:CAPS"><code class="literal">GST_GL_API_OPENGL</code></a> used in various places</p>
</div>
</div>
</div>
diff --git a/docs/libs/html/gst-plugins-bad-libs-GstGLBuffer.html b/docs/libs/html/gst-plugins-bad-libs-GstGLBuffer.html
index 7ef9099..9ef90bd 100644
--- a/docs/libs/html/gst-plugins-bad-libs-GstGLBuffer.html
+++ b/docs/libs/html/gst-plugins-bad-libs-GstGLBuffer.html
@@ -28,7 +28,7 @@
<div class="refnamediv"><table width="100%"><tr>
<td valign="top">
<h2><span class="refentrytitle"><a name="gst-plugins-bad-libs-GstGLBuffer.top_of_page"></a>GstGLBuffer</span></h2>
-<p>GstGLBuffer — memory subclass for GL buffers</p>
+<p>GstGLBuffer</p>
</td>
<td class="gallery_image" valign="top" align="right"></td>
</tr></table></div>
@@ -126,9 +126,6 @@
</div>
<div class="refsect1">
<a name="gst-plugins-bad-libs-GstGLBuffer.description"></a><h2>Description</h2>
-<p>GstGLBuffer is a <a href="/usr/share/gtk-doc/html/gstreamer-1.0GstMemory.html#GstMemory-struct"><span class="type">GstMemory</span></a> subclass providing support for the mapping of
-GL buffers. </p>
-<p>Data is uploaded or downloaded from the GPU as is necessary.</p>
</div>
<div class="refsect1">
<a name="gst-plugins-bad-libs-GstGLBuffer.functions_details"></a><h2>Functions</h2>
@@ -136,36 +133,12 @@
<a name="gst-gl-buffer-init-once"></a><h3>gst_gl_buffer_init_once ()</h3>
<pre class="programlisting"><span class="returnvalue">void</span>
gst_gl_buffer_init_once (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
-<p>Initializes the GL Buffer allocator. It is safe to call this function
-multiple times. This must be called before any other <a class="link" href="gst-plugins-bad-libs-GstGLBuffer.html#GstGLBuffer" title="GstGLBuffer"><span class="type">GstGLBuffer</span></a> operation.</p>
-<p class="since">Since: 1.8</p>
</div>
<hr>
<div class="refsect2">
<a name="gst-is-gl-buffer"></a><h3>gst_is_gl_buffer ()</h3>
<pre class="programlisting"><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
gst_is_gl_buffer (<em class="parameter"><code><a href="/usr/share/gtk-doc/html/gstreamer-1.0GstMemory.html#GstMemory-struct"><span class="type">GstMemory</span></a> *mem</code></em>);</pre>
-<div class="refsect3">
-<a name="gst-is-gl-buffer.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody><tr>
-<td class="parameter_name"><p>mem</p></td>
-<td class="parameter_description"><p>a <a href="/usr/share/gtk-doc/html/gstreamer-1.0GstMemory.html#GstMemory-struct"><span class="type">GstMemory</span></a></p></td>
-<td class="parameter_annotations"> </td>
-</tr></tbody>
-</table></div>
-</div>
-<div class="refsect3">
-<a name="gst-is-gl-buffer.returns"></a><h4>Returns</h4>
-<p> whether the memory at <em class="parameter"><code>mem</code></em>
-is a <a class="link" href="gst-plugins-bad-libs-GstGLBuffer.html#GstGLBuffer" title="GstGLBuffer"><span class="type">GstGLBuffer</span></a></p>
-</div>
-<p class="since">Since: 1.8</p>
</div>
<hr>
<div class="refsect2">
@@ -186,50 +159,6 @@
<em class="parameter"><code><a href="/usr/share/gtk-doc/html/gstreamer-1.0GstAllocator.html#GstAllocationParams-struct"><span class="type">GstAllocationParams</span></a> *alloc_params</code></em>,
<em class="parameter"><code><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint"><span class="type">guint</span></a> gl_target</code></em>,
<em class="parameter"><code><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint"><span class="type">guint</span></a> gl_usage</code></em>);</pre>
-<div class="refsect3">
-<a name="gst-gl-buffer-allocation-params-new.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="parameter_name"><p>context</p></td>
-<td class="parameter_description"><p>a <a class="link" href="GstGLContext.html" title="GstGLContext"><span class="type">GstGLContext</span></a></p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>alloc_size</p></td>
-<td class="parameter_description"><p>the size in bytes to allocate</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>alloc_params</p></td>
-<td class="parameter_description"><p> the <a href="/usr/share/gtk-doc/html/gstreamer-1.0GstAllocator.html#GstAllocationParams-struct"><span class="type">GstAllocationParams</span></a> for <em class="parameter"><code>tex_id</code></em>
-. </p></td>
-<td class="parameter_annotations"><span class="annotation">[<acronym title="NULL is OK, both for passing and for returning."><span class="acronym">allow-none</span></acronym>]</span></td>
-</tr>
-<tr>
-<td class="parameter_name"><p>gl_target</p></td>
-<td class="parameter_description"><p>the OpenGL target to allocate</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>gl_usage</p></td>
-<td class="parameter_description"><p>the OpenGL usage hint to allocate with</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<div class="refsect3">
-<a name="gst-gl-buffer-allocation-params-new.returns"></a><h4>Returns</h4>
-<p> a new <a class="link" href="gst-plugins-bad-libs-GstGLBuffer.html#GstGLBufferAllocationParams" title="struct GstGLBufferAllocationParams"><span class="type">GstGLBufferAllocationParams</span></a> for allocating OpenGL buffer
-objects</p>
-</div>
-<p class="since">Since: 1.8</p>
</div>
</div>
<div class="refsect1">
@@ -244,39 +173,6 @@
guint usage_hints; /* XXX: put this in the allocator? */
} GstGLBuffer;
</pre>
-<p>Represents information about a GL buffer</p>
-<div class="refsect3">
-<a name="GstGLBuffer.members"></a><h4>Members</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="300px" class="struct_members_name">
-<col class="struct_members_description">
-<col width="200px" class="struct_members_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="struct_member_name"><p><a class="link" href="gst-plugins-bad-libs-gstglbasememory.html#GstGLBaseMemory" title="GstGLBaseMemory"><span class="type">GstGLBaseMemory</span></a> <em class="structfield"><code><a name="GstGLBuffer.mem"></a>mem</code></em>;</p></td>
-<td class="struct_member_description"><p>the parent object</p></td>
-<td class="struct_member_annotations"> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint"><span class="type">guint</span></a> <em class="structfield"><code><a name="GstGLBuffer.id"></a>id</code></em>;</p></td>
-<td class="struct_member_description"><p>the buffer id for this memory</p></td>
-<td class="struct_member_annotations"> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint"><span class="type">guint</span></a> <em class="structfield"><code><a name="GstGLBuffer.target"></a>target</code></em>;</p></td>
-<td class="struct_member_description"><p>the OpenGL target of this texture for binding purposes</p></td>
-<td class="struct_member_annotations"> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint"><span class="type">guint</span></a> <em class="structfield"><code><a name="GstGLBuffer.usage-hints"></a>usage_hints</code></em>;</p></td>
-<td class="struct_member_description"><p>the OpenGL usage hints this buffer was created with</p></td>
-<td class="struct_member_annotations"> </td>
-</tr>
-</tbody>
-</table></div>
-</div>
</div>
<hr>
<div class="refsect2">
@@ -288,33 +184,6 @@
guint gl_usage;
};
</pre>
-<div class="refsect3">
-<a name="GstGLBufferAllocationParams.members"></a><h4>Members</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="300px" class="struct_members_name">
-<col class="struct_members_description">
-<col width="200px" class="struct_members_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="struct_member_name"><p><a class="link" href="gst-plugins-bad-libs-gstglbasememory.html#GstGLAllocationParams" title="struct GstGLAllocationParams"><span class="type">GstGLAllocationParams</span></a> <em class="structfield"><code><a name="GstGLBufferAllocationParams.parent"></a>parent</code></em>;</p></td>
-<td class="struct_member_description"><p>parent object</p></td>
-<td class="struct_member_annotations"> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint"><span class="type">guint</span></a> <em class="structfield"><code><a name="GstGLBufferAllocationParams.gl-target"></a>gl_target</code></em>;</p></td>
-<td class="struct_member_description"><p>the OpenGL target to bind the buffer to</p></td>
-<td class="struct_member_annotations"> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint"><span class="type">guint</span></a> <em class="structfield"><code><a name="GstGLBufferAllocationParams.gl-usage"></a>gl_usage</code></em>;</p></td>
-<td class="struct_member_description"><p>the OpenGL usage hint to create the buffer with</p></td>
-<td class="struct_member_annotations"> </td>
-</tr>
-</tbody>
-</table></div>
-</div>
</div>
<hr>
<div class="refsect2">
@@ -326,7 +195,6 @@
<div class="refsect2">
<a name="GstGLBufferAllocator-struct"></a><h3>GstGLBufferAllocator</h3>
<pre class="programlisting">typedef struct _GstGLBufferAllocator GstGLBufferAllocator;</pre>
-<p>Opaque <span class="type">GstGLAllocator</span> struct</p>
</div>
<hr>
<div class="refsect2">
@@ -335,14 +203,12 @@
GstGLBaseMemoryAllocatorClass parent_class;
} GstGLBufferAllocatorClass;
</pre>
-<p>The <a class="link" href="gst-plugins-bad-libs-GstGLBuffer.html#GstGLBufferAllocatorClass" title="GstGLBufferAllocatorClass"><span class="type">GstGLBufferAllocatorClass</span></a> only contains private data</p>
</div>
<hr>
<div class="refsect2">
<a name="GST-GL-BUFFER-ALLOCATOR-NAME:CAPS"></a><h3>GST_GL_BUFFER_ALLOCATOR_NAME</h3>
<pre class="programlisting">#define GST_GL_BUFFER_ALLOCATOR_NAME "GLBuffer"
</pre>
-<p>The name of the GL buffer allocator</p>
</div>
<hr>
<div class="refsect2">
@@ -351,10 +217,6 @@
</pre>
</div>
</div>
-<div class="refsect1">
-<a name="gst-plugins-bad-libs-GstGLBuffer.see-also"></a><h2>See Also</h2>
-<p><a href="/usr/share/gtk-doc/html/gstreamer-1.0GstMemory.html#GstMemory-struct"><span class="type">GstMemory</span></a>, <a href="/usr/share/gtk-doc/html/gstreamer-1.0GstAllocator.html#GstAllocator-struct"><span class="type">GstAllocator</span></a></p>
-</div>
</div>
<div class="footer">
<hr>Generated by GTK-Doc V1.25</div>
diff --git a/docs/libs/html/gst-plugins-bad-libs-GstGLMemory.html b/docs/libs/html/gst-plugins-bad-libs-GstGLMemory.html
index 633f69e..2368c1e 100644
--- a/docs/libs/html/gst-plugins-bad-libs-GstGLMemory.html
+++ b/docs/libs/html/gst-plugins-bad-libs-GstGLMemory.html
@@ -28,7 +28,7 @@
<div class="refnamediv"><table width="100%"><tr>
<td valign="top">
<h2><span class="refentrytitle"><a name="gst-plugins-bad-libs-GstGLMemory.top_of_page"></a>GstGLMemory</span></h2>
-<p>GstGLMemory — memory subclass for GL textures</p>
+<p>GstGLMemory</p>
</td>
<td class="gallery_image" valign="top" align="right"></td>
</tr></table></div>
@@ -85,6 +85,14 @@
<a class="link" href="gst-plugins-bad-libs-GstGLMemory.html#GstGLVideoAllocationParams" title="struct GstGLVideoAllocationParams"><span class="returnvalue">GstGLVideoAllocationParams</span></a> *
</td>
<td class="function_name">
+<a class="link" href="gst-plugins-bad-libs-GstGLMemory.html#gst-gl-video-allocation-params-new-wrapped-gl-handle" title="gst_gl_video_allocation_params_new_wrapped_gl_handle ()">gst_gl_video_allocation_params_new_wrapped_gl_handle</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<a class="link" href="gst-plugins-bad-libs-GstGLMemory.html#GstGLVideoAllocationParams" title="struct GstGLVideoAllocationParams"><span class="returnvalue">GstGLVideoAllocationParams</span></a> *
+</td>
+<td class="function_name">
<a class="link" href="gst-plugins-bad-libs-GstGLMemory.html#gst-gl-video-allocation-params-new-wrapped-texture" title="gst_gl_video_allocation_params_new_wrapped_texture ()">gst_gl_video_allocation_params_new_wrapped_texture</a> <span class="c_punctuation">()</span>
</td>
</tr>
@@ -255,11 +263,6 @@
</div>
<div class="refsect1">
<a name="gst-plugins-bad-libs-GstGLMemory.description"></a><h2>Description</h2>
-<p>GstGLMemory is a <a class="link" href="gst-plugins-bad-libs-gstglbasememory.html#GstGLBaseMemory" title="GstGLBaseMemory"><span class="type">GstGLBaseMemory</span></a> subclass providing support for the mapping of
-OpenGL textures. </p>
-<p><a class="link" href="gst-plugins-bad-libs-GstGLMemory.html#GstGLMemory" title="GstGLMemory"><span class="type">GstGLMemory</span></a> is created or wrapped through <a class="link" href="gst-plugins-bad-libs-gstglbasememory.html#gst-gl-base-memory-alloc" title="gst_gl_base_memory_alloc ()"><code class="function">gst_gl_base_memory_alloc()</code></a>
-with <a class="link" href="gst-plugins-bad-libs-GstGLMemory.html#GstGLVideoAllocationParams" title="struct GstGLVideoAllocationParams"><span class="type">GstGLVideoAllocationParams</span></a>.</p>
-<p>Data is uploaded or downloaded from the GPU as is necessary.</p>
</div>
<div class="refsect1">
<a name="gst-plugins-bad-libs-GstGLMemory.functions_details"></a><h2>Functions</h2>
@@ -269,32 +272,6 @@
gst_gl_video_allocation_params_copy_data
(<em class="parameter"><code><a class="link" href="gst-plugins-bad-libs-GstGLMemory.html#GstGLVideoAllocationParams" title="struct GstGLVideoAllocationParams"><span class="type">GstGLVideoAllocationParams</span></a> *src_vid</code></em>,
<em class="parameter"><code><a class="link" href="gst-plugins-bad-libs-GstGLMemory.html#GstGLVideoAllocationParams" title="struct GstGLVideoAllocationParams"><span class="type">GstGLVideoAllocationParams</span></a> *dest_vid</code></em>);</pre>
-<p>Copy and set any dynamically allocated resources in <em class="parameter"><code>dest_vid</code></em>
-. Intended
-for subclass usage only to chain up at the end of a subclass copy function.</p>
-<div class="refsect3">
-<a name="gst-gl-video-allocation-params-copy-data.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="parameter_name"><p>src_vid</p></td>
-<td class="parameter_description"><p>source <a class="link" href="gst-plugins-bad-libs-GstGLMemory.html#GstGLVideoAllocationParams" title="struct GstGLVideoAllocationParams"><span class="type">GstGLVideoAllocationParams</span></a> to copy from</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>dest_vid</p></td>
-<td class="parameter_description"><p>destination <a class="link" href="gst-plugins-bad-libs-GstGLMemory.html#GstGLVideoAllocationParams" title="struct GstGLVideoAllocationParams"><span class="type">GstGLVideoAllocationParams</span></a> to copy into</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<p class="since">Since: 1.8</p>
</div>
<hr>
<div class="refsect2">
@@ -302,24 +279,6 @@
<pre class="programlisting"><span class="returnvalue">void</span>
gst_gl_video_allocation_params_free_data
(<em class="parameter"><code><a class="link" href="gst-plugins-bad-libs-GstGLMemory.html#GstGLVideoAllocationParams" title="struct GstGLVideoAllocationParams"><span class="type">GstGLVideoAllocationParams</span></a> *params</code></em>);</pre>
-<p>Unset and free any dynamically allocated resources. Intended for subclass
-usage only to chain up at the end of a subclass free function.</p>
-<div class="refsect3">
-<a name="gst-gl-video-allocation-params-free-data.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody><tr>
-<td class="parameter_name"><p>params</p></td>
-<td class="parameter_description"><p>a <a class="link" href="gst-plugins-bad-libs-GstGLMemory.html#GstGLVideoAllocationParams" title="struct GstGLVideoAllocationParams"><span class="type">GstGLVideoAllocationParams</span></a></p></td>
-<td class="parameter_annotations"> </td>
-</tr></tbody>
-</table></div>
-</div>
-<p class="since">Since: 1.8</p>
</div>
<hr>
<div class="refsect2">
@@ -337,110 +296,11 @@
<em class="parameter"><code><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint"><span class="type">guint</span></a> plane</code></em>,
<em class="parameter"><code><a href="/usr/share/gtk-doc/html/gst-plugins-base-libs-1.0gst-plugins-base-libs-gstvideo.html#GstVideoAlignment"><span class="type">GstVideoAlignment</span></a> *valign</code></em>,
<em class="parameter"><code><a class="link" href="gst-plugins-bad-libs-OpenGL-Formats.html#GstGLTextureTarget" title="enum GstGLTextureTarget"><span class="type">GstGLTextureTarget</span></a> target</code></em>,
+ <em class="parameter"><code><span class="type">GstVideoGLTextureType</span> tex_type</code></em>,
<em class="parameter"><code><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a> wrapped_data</code></em>,
- <em class="parameter"><code><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint"><span class="type">guint</span></a> gl_handle</code></em>,
+ <em class="parameter"><code><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a> gl_handle</code></em>,
<em class="parameter"><code><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a> user_data</code></em>,
<em class="parameter"><code><a href="/usr/share/gtk-doc/html/glibglib-Datasets.html#GDestroyNotify"><span class="type">GDestroyNotify</span></a> notify</code></em>);</pre>
-<p>Intended for subclass usage</p>
-<div class="refsect3">
-<a name="gst-gl-video-allocation-params-init-full.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="parameter_name"><p>params</p></td>
-<td class="parameter_description"><p>a <a class="link" href="gst-plugins-bad-libs-GstGLMemory.html#GstGLVideoAllocationParams" title="struct GstGLVideoAllocationParams"><span class="type">GstGLVideoAllocationParams</span></a> to initialize</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>struct_size</p></td>
-<td class="parameter_description"><p>the size of the struct in <em class="parameter"><code>params</code></em>
-</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>alloc_flags</p></td>
-<td class="parameter_description"><p>some allocation flags</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>copy</p></td>
-<td class="parameter_description"><p>a copy function</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>free</p></td>
-<td class="parameter_description"><p>a free function</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>context</p></td>
-<td class="parameter_description"><p>a <a class="link" href="GstGLContext.html" title="GstGLContext"><span class="type">GstGLContext</span></a></p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>alloc_params</p></td>
-<td class="parameter_description"><p> the <a href="/usr/share/gtk-doc/html/gstreamer-1.0GstAllocator.html#GstAllocationParams-struct"><span class="type">GstAllocationParams</span></a> for <em class="parameter"><code>wrapped_data</code></em>
-. </p></td>
-<td class="parameter_annotations"><span class="annotation">[<acronym title="NULL is OK, both for passing and for returning."><span class="acronym">allow-none</span></acronym>]</span></td>
-</tr>
-<tr>
-<td class="parameter_name"><p>v_info</p></td>
-<td class="parameter_description"><p>the <a href="/usr/share/gtk-doc/html/gst-plugins-base-libs-1.0gst-plugins-base-libs-gstvideo.html#GstVideoInfo"><span class="type">GstVideoInfo</span></a> for <em class="parameter"><code>wrapped_data</code></em>
-</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>plane</p></td>
-<td class="parameter_description"><p>the video plane <em class="parameter"><code>wrapped_data</code></em>
-represents</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>valign</p></td>
-<td class="parameter_description"><p> any <a href="/usr/share/gtk-doc/html/gst-plugins-base-libs-1.0gst-plugins-base-libs-gstvideo.html#GstVideoAlignment"><span class="type">GstVideoAlignment</span></a> applied to symem mappings of <em class="parameter"><code>wrapped_data</code></em>
-. </p></td>
-<td class="parameter_annotations"><span class="annotation">[<acronym title="NULL is OK, both for passing and for returning."><span class="acronym">allow-none</span></acronym>]</span></td>
-</tr>
-<tr>
-<td class="parameter_name"><p>target</p></td>
-<td class="parameter_description"><p>the <a class="link" href="gst-plugins-bad-libs-OpenGL-Formats.html#GstGLTextureTarget" title="enum GstGLTextureTarget"><span class="type">GstGLTextureTarget</span></a></p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>wrapped_data</p></td>
-<td class="parameter_description"><p> the optional data pointer to wrap. </p></td>
-<td class="parameter_annotations"><span class="annotation">[<acronym title="NULL is OK, both for passing and for returning."><span class="acronym">allow-none</span></acronym>]</span></td>
-</tr>
-<tr>
-<td class="parameter_name"><p>gl_handle</p></td>
-<td class="parameter_description"><p>the optional OpenGL handle to wrap or 0</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>user_data</p></td>
-<td class="parameter_description"><p> user data to call <em class="parameter"><code>notify</code></em>
-with. </p></td>
-<td class="parameter_annotations"><span class="annotation">[<acronym title="NULL is OK, both for passing and for returning."><span class="acronym">allow-none</span></acronym>]</span></td>
-</tr>
-<tr>
-<td class="parameter_name"><p>notify</p></td>
-<td class="parameter_description"><p> a <a href="/usr/share/gtk-doc/html/glibglib-Datasets.html#GDestroyNotify"><span class="type">GDestroyNotify</span></a>. </p></td>
-<td class="parameter_annotations"><span class="annotation">[<acronym title="NULL is OK, both for passing and for returning."><span class="acronym">allow-none</span></acronym>]</span></td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<div class="refsect3">
-<a name="gst-gl-video-allocation-params-init-full.returns"></a><h4>Returns</h4>
-<p> initializes <em class="parameter"><code>params</code></em>
-with the parameters specified</p>
-</div>
-<p class="since">Since: 1.8</p>
</div>
<hr>
<div class="refsect2">
@@ -451,59 +311,8 @@
<em class="parameter"><code><a href="/usr/share/gtk-doc/html/gst-plugins-base-libs-1.0gst-plugins-base-libs-gstvideo.html#GstVideoInfo"><span class="type">GstVideoInfo</span></a> *v_info</code></em>,
<em class="parameter"><code><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint"><span class="type">guint</span></a> plane</code></em>,
<em class="parameter"><code><a href="/usr/share/gtk-doc/html/gst-plugins-base-libs-1.0gst-plugins-base-libs-gstvideo.html#GstVideoAlignment"><span class="type">GstVideoAlignment</span></a> *valign</code></em>,
- <em class="parameter"><code><a class="link" href="gst-plugins-bad-libs-OpenGL-Formats.html#GstGLTextureTarget" title="enum GstGLTextureTarget"><span class="type">GstGLTextureTarget</span></a> target</code></em>);</pre>
-<div class="refsect3">
-<a name="gst-gl-video-allocation-params-new.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="parameter_name"><p>context</p></td>
-<td class="parameter_description"><p>a <a class="link" href="GstGLContext.html" title="GstGLContext"><span class="type">GstGLContext</span></a></p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>alloc_params</p></td>
-<td class="parameter_description"><p> the <a href="/usr/share/gtk-doc/html/gstreamer-1.0GstAllocator.html#GstAllocationParams-struct"><span class="type">GstAllocationParams</span></a> for <em class="parameter"><code>wrapped_data</code></em>
-. </p></td>
-<td class="parameter_annotations"><span class="annotation">[<acronym title="NULL is OK, both for passing and for returning."><span class="acronym">allow-none</span></acronym>]</span></td>
-</tr>
-<tr>
-<td class="parameter_name"><p>v_info</p></td>
-<td class="parameter_description"><p>the <a href="/usr/share/gtk-doc/html/gst-plugins-base-libs-1.0gst-plugins-base-libs-gstvideo.html#GstVideoInfo"><span class="type">GstVideoInfo</span></a> for <em class="parameter"><code>wrapped_data</code></em>
-</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>plane</p></td>
-<td class="parameter_description"><p>the video plane <em class="parameter"><code>wrapped_data</code></em>
-represents</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>valign</p></td>
-<td class="parameter_description"><p> any <a href="/usr/share/gtk-doc/html/gst-plugins-base-libs-1.0gst-plugins-base-libs-gstvideo.html#GstVideoAlignment"><span class="type">GstVideoAlignment</span></a> applied to symem mappings of <em class="parameter"><code>wrapped_data</code></em>
-. </p></td>
-<td class="parameter_annotations"><span class="annotation">[<acronym title="NULL is OK, both for passing and for returning."><span class="acronym">allow-none</span></acronym>]</span></td>
-</tr>
-<tr>
-<td class="parameter_name"><p>target</p></td>
-<td class="parameter_description"><p>the <a class="link" href="gst-plugins-bad-libs-OpenGL-Formats.html#GstGLTextureTarget" title="enum GstGLTextureTarget"><span class="type">GstGLTextureTarget</span></a> for <em class="parameter"><code>wrapped_data</code></em>
-</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<div class="refsect3">
-<a name="gst-gl-video-allocation-params-new.returns"></a><h4>Returns</h4>
-<p> a new <a class="link" href="gst-plugins-bad-libs-GstGLMemory.html#GstGLVideoAllocationParams" title="struct GstGLVideoAllocationParams"><span class="type">GstGLVideoAllocationParams</span></a> for allocating <a class="link" href="gst-plugins-bad-libs-GstGLMemory.html#GstGLMemory" title="GstGLMemory"><span class="type">GstGLMemory</span></a>'s</p>
-</div>
-<p class="since">Since: 1.8</p>
+ <em class="parameter"><code><a class="link" href="gst-plugins-bad-libs-OpenGL-Formats.html#GstGLTextureTarget" title="enum GstGLTextureTarget"><span class="type">GstGLTextureTarget</span></a> target</code></em>,
+ <em class="parameter"><code><span class="type">GstVideoGLTextureType</span> tex_type</code></em>);</pre>
</div>
<hr>
<div class="refsect2">
@@ -516,78 +325,26 @@
<em class="parameter"><code><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint"><span class="type">guint</span></a> plane</code></em>,
<em class="parameter"><code><a href="/usr/share/gtk-doc/html/gst-plugins-base-libs-1.0gst-plugins-base-libs-gstvideo.html#GstVideoAlignment"><span class="type">GstVideoAlignment</span></a> *valign</code></em>,
<em class="parameter"><code><a class="link" href="gst-plugins-bad-libs-OpenGL-Formats.html#GstGLTextureTarget" title="enum GstGLTextureTarget"><span class="type">GstGLTextureTarget</span></a> target</code></em>,
+ <em class="parameter"><code><span class="type">GstVideoGLTextureType</span> tex_type</code></em>,
<em class="parameter"><code><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a> wrapped_data</code></em>,
<em class="parameter"><code><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a> user_data</code></em>,
<em class="parameter"><code><a href="/usr/share/gtk-doc/html/glibglib-Datasets.html#GDestroyNotify"><span class="type">GDestroyNotify</span></a> notify</code></em>);</pre>
-<div class="refsect3">
-<a name="gst-gl-video-allocation-params-new-wrapped-data.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="parameter_name"><p>context</p></td>
-<td class="parameter_description"><p>a <a class="link" href="GstGLContext.html" title="GstGLContext"><span class="type">GstGLContext</span></a></p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>alloc_params</p></td>
-<td class="parameter_description"><p> the <a href="/usr/share/gtk-doc/html/gstreamer-1.0GstAllocator.html#GstAllocationParams-struct"><span class="type">GstAllocationParams</span></a> for <em class="parameter"><code>wrapped_data</code></em>
-. </p></td>
-<td class="parameter_annotations"><span class="annotation">[<acronym title="NULL is OK, both for passing and for returning."><span class="acronym">allow-none</span></acronym>]</span></td>
-</tr>
-<tr>
-<td class="parameter_name"><p>v_info</p></td>
-<td class="parameter_description"><p>the <a href="/usr/share/gtk-doc/html/gst-plugins-base-libs-1.0gst-plugins-base-libs-gstvideo.html#GstVideoInfo"><span class="type">GstVideoInfo</span></a> for <em class="parameter"><code>wrapped_data</code></em>
-</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>plane</p></td>
-<td class="parameter_description"><p>the video plane <em class="parameter"><code>wrapped_data</code></em>
-represents</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>valign</p></td>
-<td class="parameter_description"><p> any <a href="/usr/share/gtk-doc/html/gst-plugins-base-libs-1.0gst-plugins-base-libs-gstvideo.html#GstVideoAlignment"><span class="type">GstVideoAlignment</span></a> applied to symem mappings of <em class="parameter"><code>wrapped_data</code></em>
-. </p></td>
-<td class="parameter_annotations"><span class="annotation">[<acronym title="NULL is OK, both for passing and for returning."><span class="acronym">allow-none</span></acronym>]</span></td>
-</tr>
-<tr>
-<td class="parameter_name"><p>target</p></td>
-<td class="parameter_description"><p>the <a class="link" href="gst-plugins-bad-libs-OpenGL-Formats.html#GstGLTextureTarget" title="enum GstGLTextureTarget"><span class="type">GstGLTextureTarget</span></a> for <em class="parameter"><code>wrapped_data</code></em>
-</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>wrapped_data</p></td>
-<td class="parameter_description"><p>the data pointer to wrap</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>user_data</p></td>
-<td class="parameter_description"><p> user data to call <em class="parameter"><code>notify</code></em>
-with. </p></td>
-<td class="parameter_annotations"><span class="annotation">[<acronym title="NULL is OK, both for passing and for returning."><span class="acronym">allow-none</span></acronym>]</span></td>
-</tr>
-<tr>
-<td class="parameter_name"><p>notify</p></td>
-<td class="parameter_description"><p> a <a href="/usr/share/gtk-doc/html/glibglib-Datasets.html#GDestroyNotify"><span class="type">GDestroyNotify</span></a>. </p></td>
-<td class="parameter_annotations"><span class="annotation">[<acronym title="NULL is OK, both for passing and for returning."><span class="acronym">allow-none</span></acronym>]</span></td>
-</tr>
-</tbody>
-</table></div>
</div>
-<div class="refsect3">
-<a name="gst-gl-video-allocation-params-new-wrapped-data.returns"></a><h4>Returns</h4>
-<p> a new <a class="link" href="gst-plugins-bad-libs-GstGLMemory.html#GstGLVideoAllocationParams" title="struct GstGLVideoAllocationParams"><span class="type">GstGLVideoAllocationParams</span></a> for wrapping <em class="parameter"><code>wrapped_data</code></em>
-</p>
-</div>
-<p class="since">Since: 1.8</p>
+<hr>
+<div class="refsect2">
+<a name="gst-gl-video-allocation-params-new-wrapped-gl-handle"></a><h3>gst_gl_video_allocation_params_new_wrapped_gl_handle ()</h3>
+<pre class="programlisting"><a class="link" href="gst-plugins-bad-libs-GstGLMemory.html#GstGLVideoAllocationParams" title="struct GstGLVideoAllocationParams"><span class="returnvalue">GstGLVideoAllocationParams</span></a> *
+gst_gl_video_allocation_params_new_wrapped_gl_handle
+ (<em class="parameter"><code><a class="link" href="GstGLContext.html" title="GstGLContext"><span class="type">GstGLContext</span></a> *context</code></em>,
+ <em class="parameter"><code><a href="/usr/share/gtk-doc/html/gstreamer-1.0GstAllocator.html#GstAllocationParams-struct"><span class="type">GstAllocationParams</span></a> *alloc_params</code></em>,
+ <em class="parameter"><code><a href="/usr/share/gtk-doc/html/gst-plugins-base-libs-1.0gst-plugins-base-libs-gstvideo.html#GstVideoInfo"><span class="type">GstVideoInfo</span></a> *v_info</code></em>,
+ <em class="parameter"><code><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint"><span class="type">guint</span></a> plane</code></em>,
+ <em class="parameter"><code><a href="/usr/share/gtk-doc/html/gst-plugins-base-libs-1.0gst-plugins-base-libs-gstvideo.html#GstVideoAlignment"><span class="type">GstVideoAlignment</span></a> *valign</code></em>,
+ <em class="parameter"><code><a class="link" href="gst-plugins-bad-libs-OpenGL-Formats.html#GstGLTextureTarget" title="enum GstGLTextureTarget"><span class="type">GstGLTextureTarget</span></a> target</code></em>,
+ <em class="parameter"><code><span class="type">GstVideoGLTextureType</span> tex_type</code></em>,
+ <em class="parameter"><code><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a> gl_handle</code></em>,
+ <em class="parameter"><code><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a> user_data</code></em>,
+ <em class="parameter"><code><a href="/usr/share/gtk-doc/html/glibglib-Datasets.html#GDestroyNotify"><span class="type">GDestroyNotify</span></a> notify</code></em>);</pre>
</div>
<hr>
<div class="refsect2">
@@ -600,114 +357,22 @@
<em class="parameter"><code><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint"><span class="type">guint</span></a> plane</code></em>,
<em class="parameter"><code><a href="/usr/share/gtk-doc/html/gst-plugins-base-libs-1.0gst-plugins-base-libs-gstvideo.html#GstVideoAlignment"><span class="type">GstVideoAlignment</span></a> *valign</code></em>,
<em class="parameter"><code><a class="link" href="gst-plugins-bad-libs-OpenGL-Formats.html#GstGLTextureTarget" title="enum GstGLTextureTarget"><span class="type">GstGLTextureTarget</span></a> target</code></em>,
+ <em class="parameter"><code><span class="type">GstVideoGLTextureType</span> tex_type</code></em>,
<em class="parameter"><code><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint"><span class="type">guint</span></a> tex_id</code></em>,
<em class="parameter"><code><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a> user_data</code></em>,
<em class="parameter"><code><a href="/usr/share/gtk-doc/html/glibglib-Datasets.html#GDestroyNotify"><span class="type">GDestroyNotify</span></a> notify</code></em>);</pre>
-<div class="refsect3">
-<a name="gst-gl-video-allocation-params-new-wrapped-texture.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="parameter_name"><p>context</p></td>
-<td class="parameter_description"><p>a <a class="link" href="GstGLContext.html" title="GstGLContext"><span class="type">GstGLContext</span></a></p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>alloc_params</p></td>
-<td class="parameter_description"><p> the <a href="/usr/share/gtk-doc/html/gstreamer-1.0GstAllocator.html#GstAllocationParams-struct"><span class="type">GstAllocationParams</span></a> for <em class="parameter"><code>tex_id</code></em>
-. </p></td>
-<td class="parameter_annotations"><span class="annotation">[<acronym title="NULL is OK, both for passing and for returning."><span class="acronym">allow-none</span></acronym>]</span></td>
-</tr>
-<tr>
-<td class="parameter_name"><p>v_info</p></td>
-<td class="parameter_description"><p>the <a href="/usr/share/gtk-doc/html/gst-plugins-base-libs-1.0gst-plugins-base-libs-gstvideo.html#GstVideoInfo"><span class="type">GstVideoInfo</span></a> for <em class="parameter"><code>tex_id</code></em>
-</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>plane</p></td>
-<td class="parameter_description"><p>the video plane <em class="parameter"><code>tex_id</code></em>
-represents</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>valign</p></td>
-<td class="parameter_description"><p> any <a href="/usr/share/gtk-doc/html/gst-plugins-base-libs-1.0gst-plugins-base-libs-gstvideo.html#GstVideoAlignment"><span class="type">GstVideoAlignment</span></a> applied to symem mappings of <em class="parameter"><code>tex_id</code></em>
-. </p></td>
-<td class="parameter_annotations"><span class="annotation">[<acronym title="NULL is OK, both for passing and for returning."><span class="acronym">allow-none</span></acronym>]</span></td>
-</tr>
-<tr>
-<td class="parameter_name"><p>target</p></td>
-<td class="parameter_description"><p>the <a class="link" href="gst-plugins-bad-libs-OpenGL-Formats.html#GstGLTextureTarget" title="enum GstGLTextureTarget"><span class="type">GstGLTextureTarget</span></a> for <em class="parameter"><code>tex_id</code></em>
-</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>tex_id</p></td>
-<td class="parameter_description"><p>the GL texture to wrap</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>user_data</p></td>
-<td class="parameter_description"><p> user data to call <em class="parameter"><code>notify</code></em>
-with. </p></td>
-<td class="parameter_annotations"><span class="annotation">[<acronym title="NULL is OK, both for passing and for returning."><span class="acronym">allow-none</span></acronym>]</span></td>
-</tr>
-<tr>
-<td class="parameter_name"><p>notify</p></td>
-<td class="parameter_description"><p> a <a href="/usr/share/gtk-doc/html/glibglib-Datasets.html#GDestroyNotify"><span class="type">GDestroyNotify</span></a>. </p></td>
-<td class="parameter_annotations"><span class="annotation">[<acronym title="NULL is OK, both for passing and for returning."><span class="acronym">allow-none</span></acronym>]</span></td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<div class="refsect3">
-<a name="gst-gl-video-allocation-params-new-wrapped-texture.returns"></a><h4>Returns</h4>
-<p> a new <a class="link" href="gst-plugins-bad-libs-GstGLMemory.html#GstGLVideoAllocationParams" title="struct GstGLVideoAllocationParams"><span class="type">GstGLVideoAllocationParams</span></a> for wrapping <em class="parameter"><code>tex_id</code></em>
-</p>
-</div>
-<p class="since">Since: 1.8</p>
</div>
<hr>
<div class="refsect2">
<a name="gst-gl-memory-allocator-get-default"></a><h3>gst_gl_memory_allocator_get_default ()</h3>
<pre class="programlisting"><a class="link" href="gst-plugins-bad-libs-GstGLMemory.html#GstGLMemoryAllocator"><span class="returnvalue">GstGLMemoryAllocator</span></a> *
gst_gl_memory_allocator_get_default (<em class="parameter"><code><a class="link" href="GstGLContext.html" title="GstGLContext"><span class="type">GstGLContext</span></a> *context</code></em>);</pre>
-<div class="refsect3">
-<a name="gst-gl-memory-allocator-get-default.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody><tr>
-<td class="parameter_name"><p>context</p></td>
-<td class="parameter_description"><p>a <a class="link" href="GstGLContext.html" title="GstGLContext"><span class="type">GstGLContext</span></a></p></td>
-<td class="parameter_annotations"> </td>
-</tr></tbody>
-</table></div>
-</div>
-<div class="refsect3">
-<a name="gst-gl-memory-allocator-get-default.returns"></a><h4>Returns</h4>
-<p> the default <a class="link" href="gst-plugins-bad-libs-GstGLMemory.html#GstGLMemoryAllocator"><span class="type">GstGLMemoryAllocator</span></a> supported by <em class="parameter"><code>context</code></em>
-</p>
-</div>
-<p class="since">Since: 1.8</p>
</div>
<hr>
<div class="refsect2">
<a name="gst-gl-memory-init-once"></a><h3>gst_gl_memory_init_once ()</h3>
<pre class="programlisting"><span class="returnvalue">void</span>
gst_gl_memory_init_once (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
-<p>Initializes the GL Base Texture allocator. It is safe to call this function
-multiple times. This must be called before any other GstGLMemory operation.</p>
-<p class="since">Since: 1.4</p>
</div>
<hr>
<div class="refsect2">
@@ -718,113 +383,19 @@
<em class="parameter"><code><a href="/usr/share/gtk-doc/html/gstreamer-1.0GstMemory.html#GstMemory-struct"><span class="type">GstMemory</span></a> *parent</code></em>,
<em class="parameter"><code><a class="link" href="GstGLContext.html" title="GstGLContext"><span class="type">GstGLContext</span></a> *context</code></em>,
<em class="parameter"><code><a class="link" href="gst-plugins-bad-libs-OpenGL-Formats.html#GstGLTextureTarget" title="enum GstGLTextureTarget"><span class="type">GstGLTextureTarget</span></a> target</code></em>,
+ <em class="parameter"><code><span class="type">GstVideoGLTextureType</span> tex_type</code></em>,
<em class="parameter"><code><a href="/usr/share/gtk-doc/html/gstreamer-1.0GstAllocator.html#GstAllocationParams-struct"><span class="type">GstAllocationParams</span></a> *params</code></em>,
<em class="parameter"><code><a href="/usr/share/gtk-doc/html/gst-plugins-base-libs-1.0gst-plugins-base-libs-gstvideo.html#GstVideoInfo"><span class="type">GstVideoInfo</span></a> *info</code></em>,
<em class="parameter"><code><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint"><span class="type">guint</span></a> plane</code></em>,
<em class="parameter"><code><a href="/usr/share/gtk-doc/html/gst-plugins-base-libs-1.0gst-plugins-base-libs-gstvideo.html#GstVideoAlignment"><span class="type">GstVideoAlignment</span></a> *valign</code></em>,
<em class="parameter"><code><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a> user_data</code></em>,
<em class="parameter"><code><a href="/usr/share/gtk-doc/html/glibglib-Datasets.html#GDestroyNotify"><span class="type">GDestroyNotify</span></a> notify</code></em>);</pre>
-<p>Initializes <em class="parameter"><code>mem</code></em>
- with the required parameters. <em class="parameter"><code>info</code></em>
- is assumed to have
-already have been modified with <a href="/usr/share/gtk-doc/html/gst-plugins-base-libs-1.0gst-plugins-base-libs-gstvideo.html#gst-video-info-align"><code class="function">gst_video_info_align()</code></a>.</p>
-<div class="refsect3">
-<a name="gst-gl-memory-init.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="parameter_name"><p>mem</p></td>
-<td class="parameter_description"><p>the <a class="link" href="gst-plugins-bad-libs-gstglbasememory.html#GstGLBaseMemory" title="GstGLBaseMemory"><span class="type">GstGLBaseMemory</span></a> to initialize</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>allocator</p></td>
-<td class="parameter_description"><p>the <a href="/usr/share/gtk-doc/html/gstreamer-1.0GstAllocator.html#GstAllocator-struct"><span class="type">GstAllocator</span></a> to initialize with</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>parent</p></td>
-<td class="parameter_description"><p> the parent <a href="/usr/share/gtk-doc/html/gstreamer-1.0GstMemory.html#GstMemory-struct"><span class="type">GstMemory</span></a> to initialize with. </p></td>
-<td class="parameter_annotations"><span class="annotation">[<acronym title="NULL is OK, both for passing and for returning."><span class="acronym">allow-none</span></acronym>]</span></td>
-</tr>
-<tr>
-<td class="parameter_name"><p>context</p></td>
-<td class="parameter_description"><p>the <a class="link" href="GstGLContext.html" title="GstGLContext"><span class="type">GstGLContext</span></a> to initialize with</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>target</p></td>
-<td class="parameter_description"><p>the <a class="link" href="gst-plugins-bad-libs-OpenGL-Formats.html#GstGLTextureTarget" title="enum GstGLTextureTarget"><span class="type">GstGLTextureTarget</span></a> for this <a class="link" href="gst-plugins-bad-libs-GstGLMemory.html#GstGLMemory" title="GstGLMemory"><span class="type">GstGLMemory</span></a></p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>params</p></td>
-<td class="parameter_description"><p> the <em class="parameter"><code>GstAllocationParams</code></em>
-to initialize with. </p></td>
-<td class="parameter_annotations"><span class="annotation">[<acronym title="NULL is OK, both for passing and for returning."><span class="acronym">allow-none</span></acronym>]</span></td>
-</tr>
-<tr>
-<td class="parameter_name"><p>info</p></td>
-<td class="parameter_description"><p>the <a href="/usr/share/gtk-doc/html/gst-plugins-base-libs-1.0gst-plugins-base-libs-gstvideo.html#GstVideoInfo"><span class="type">GstVideoInfo</span></a> for this <a class="link" href="gst-plugins-bad-libs-GstGLMemory.html#GstGLMemory" title="GstGLMemory"><span class="type">GstGLMemory</span></a></p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>plane</p></td>
-<td class="parameter_description"><p>the plane number (starting from 0) for this <a class="link" href="gst-plugins-bad-libs-GstGLMemory.html#GstGLMemory" title="GstGLMemory"><span class="type">GstGLMemory</span></a></p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>valign</p></td>
-<td class="parameter_description"><p> optional <a href="/usr/share/gtk-doc/html/gst-plugins-base-libs-1.0gst-plugins-base-libs-gstvideo.html#GstVideoAlignment"><span class="type">GstVideoAlignment</span></a> parameters. </p></td>
-<td class="parameter_annotations"><span class="annotation">[<acronym title="NULL is OK, both for passing and for returning."><span class="acronym">allow-none</span></acronym>]</span></td>
-</tr>
-<tr>
-<td class="parameter_name"><p>notify</p></td>
-<td class="parameter_description"><p> a <a href="/usr/share/gtk-doc/html/glibglib-Datasets.html#GDestroyNotify"><span class="type">GDestroyNotify</span></a>. </p></td>
-<td class="parameter_annotations"><span class="annotation">[<acronym title="NULL is OK, both for passing and for returning."><span class="acronym">allow-none</span></acronym>]</span></td>
-</tr>
-<tr>
-<td class="parameter_name"><p>user_data</p></td>
-<td class="parameter_description"><p> user data to call <em class="parameter"><code>notify</code></em>
-with. </p></td>
-<td class="parameter_annotations"><span class="annotation">[<acronym title="NULL is OK, both for passing and for returning."><span class="acronym">allow-none</span></acronym>]</span></td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<p class="since">Since: 1.8</p>
</div>
<hr>
<div class="refsect2">
<a name="gst-is-gl-memory"></a><h3>gst_is_gl_memory ()</h3>
<pre class="programlisting"><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
gst_is_gl_memory (<em class="parameter"><code><a href="/usr/share/gtk-doc/html/gstreamer-1.0GstMemory.html#GstMemory-struct"><span class="type">GstMemory</span></a> *mem</code></em>);</pre>
-<div class="refsect3">
-<a name="gst-is-gl-memory.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody><tr>
-<td class="parameter_name"><p>mem</p></td>
-<td class="parameter_description"><p>a <a href="/usr/share/gtk-doc/html/gstreamer-1.0GstMemory.html#GstMemory-struct"><span class="type">GstMemory</span></a></p></td>
-<td class="parameter_annotations"> </td>
-</tr></tbody>
-</table></div>
-</div>
-<div class="refsect3">
-<a name="gst-is-gl-memory.returns"></a><h4>Returns</h4>
-<p> whether the memory at <em class="parameter"><code>mem</code></em>
-is a <a class="link" href="gst-plugins-bad-libs-GstGLMemory.html#GstGLMemory" title="GstGLMemory"><span class="type">GstGLMemory</span></a></p>
-</div>
-<p class="since">Since: 1.4</p>
</div>
<hr>
<div class="refsect2">
@@ -836,63 +407,6 @@
<em class="parameter"><code><span class="type">GstVideoGLTextureType</span> tex_type</code></em>,
<em class="parameter"><code><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gint"><span class="type">gint</span></a> width</code></em>,
<em class="parameter"><code><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gint"><span class="type">gint</span></a> height</code></em>);</pre>
-<p>Copies <em class="parameter"><code>gl_mem</code></em>
- into the texture specfified by <em class="parameter"><code>tex_id</code></em>
-. The format of <em class="parameter"><code>tex_id</code></em>
-
-is specified by <em class="parameter"><code>tex_type</code></em>
-, <em class="parameter"><code>width</code></em>
- and <em class="parameter"><code>height</code></em>
-.</p>
-<div class="refsect3">
-<a name="gst-gl-memory-copy-into.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="parameter_name"><p>gl_mem</p></td>
-<td class="parameter_description"><p>a <a class="link" href="gst-plugins-bad-libs-GstGLMemory.html#GstGLMemory" title="GstGLMemory"><span class="type">GstGLMemory</span></a></p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>tex_id</p></td>
-<td class="parameter_description"><p>OpenGL texture id</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>target</p></td>
-<td class="parameter_description"><p>the <a class="link" href="gst-plugins-bad-libs-OpenGL-Formats.html#GstGLTextureTarget" title="enum GstGLTextureTarget"><span class="type">GstGLTextureTarget</span></a></p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>tex_type</p></td>
-<td class="parameter_description"><p>the <span class="type">GstVideoGLTextureType</span></p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>width</p></td>
-<td class="parameter_description"><p>width of <em class="parameter"><code>tex_id</code></em>
-</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>height</p></td>
-<td class="parameter_description"><p>height of <em class="parameter"><code>tex_id</code></em>
-</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<div class="refsect3">
-<a name="gst-gl-memory-copy-into.returns"></a><h4>Returns</h4>
-<p> Whether the copy suceeded</p>
-</div>
-<p class="since">Since: 1.8</p>
</div>
<hr>
<div class="refsect2">
@@ -911,40 +425,6 @@
<pre class="programlisting"><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
gst_gl_memory_read_pixels (<em class="parameter"><code><a class="link" href="gst-plugins-bad-libs-GstGLMemory.html#GstGLMemory" title="GstGLMemory"><span class="type">GstGLMemory</span></a> *gl_mem</code></em>,
<em class="parameter"><code><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a> read_pointer</code></em>);</pre>
-<p>Reads the texture in <a class="link" href="gst-plugins-bad-libs-GstGLMemory.html#GstGLMemory" title="GstGLMemory"><span class="type">GstGLMemory</span></a> into <em class="parameter"><code>read_pointer</code></em>
- if no buffer is bound
-to <code class="literal">GL_PIXEL_PACK_BUFFER</code>. Otherwise <em class="parameter"><code>read_pointer</code></em>
- is the byte offset into
-the currently bound <code class="literal">GL_PIXEL_PACK_BUFFER</code> buffer to store the result of
-glReadPixels. See the OpenGL specification for glReadPixels for more
-details.</p>
-<div class="refsect3">
-<a name="gst-gl-memory-read-pixels.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="parameter_name"><p>gl_mem</p></td>
-<td class="parameter_description"><p>a <a class="link" href="gst-plugins-bad-libs-GstGLMemory.html#GstGLMemory" title="GstGLMemory"><span class="type">GstGLMemory</span></a></p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>read_pointer</p></td>
-<td class="parameter_description"><p>the data pointer to pass to glReadPixels</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<div class="refsect3">
-<a name="gst-gl-memory-read-pixels.returns"></a><h4>Returns</h4>
-<p> whether theread operation succeeded</p>
-</div>
-<p class="since">Since: 1.8</p>
</div>
<hr>
<div class="refsect2">
@@ -952,166 +432,36 @@
<pre class="programlisting"><span class="returnvalue">void</span>
gst_gl_memory_texsubimage (<em class="parameter"><code><a class="link" href="gst-plugins-bad-libs-GstGLMemory.html#GstGLMemory" title="GstGLMemory"><span class="type">GstGLMemory</span></a> *gl_mem</code></em>,
<em class="parameter"><code><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a> read_pointer</code></em>);</pre>
-<p>See <a class="link" href="gst-plugins-bad-libs-GstGLMemory.html#gst-gl-memory-read-pixels" title="gst_gl_memory_read_pixels ()"><code class="function">gst_gl_memory_read_pixels()</code></a> for what <em class="parameter"><code>read_pointer</code></em>
- signifies.</p>
-<div class="refsect3">
-<a name="gst-gl-memory-texsubimage.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="parameter_name"><p>gl_mem</p></td>
-<td class="parameter_description"><p>a <a class="link" href="gst-plugins-bad-libs-GstGLMemory.html#GstGLMemory" title="GstGLMemory"><span class="type">GstGLMemory</span></a></p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>read_pointer</p></td>
-<td class="parameter_description"><p>the data pointer to pass to glTexSubImage</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<p class="since">Since: 1.8</p>
</div>
<hr>
<div class="refsect2">
<a name="gst-gl-memory-get-texture-height"></a><h3>gst_gl_memory_get_texture_height ()</h3>
<pre class="programlisting"><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gint"><span class="returnvalue">gint</span></a>
gst_gl_memory_get_texture_height (<em class="parameter"><code><a class="link" href="gst-plugins-bad-libs-GstGLMemory.html#GstGLMemory" title="GstGLMemory"><span class="type">GstGLMemory</span></a> *gl_mem</code></em>);</pre>
-<div class="refsect3">
-<a name="gst-gl-memory-get-texture-height.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody><tr>
-<td class="parameter_name"><p>gl_mem</p></td>
-<td class="parameter_description"><p>a <a class="link" href="gst-plugins-bad-libs-GstGLMemory.html#GstGLMemory" title="GstGLMemory"><span class="type">GstGLMemory</span></a></p></td>
-<td class="parameter_annotations"> </td>
-</tr></tbody>
-</table></div>
-</div>
-<div class="refsect3">
-<a name="gst-gl-memory-get-texture-height.returns"></a><h4>Returns</h4>
-<p> the texture height of <em class="parameter"><code>gl_mem</code></em>
-</p>
-</div>
-<p class="since">Since: 1.8</p>
</div>
<hr>
<div class="refsect2">
<a name="gst-gl-memory-get-texture-id"></a><h3>gst_gl_memory_get_texture_id ()</h3>
<pre class="programlisting"><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint"><span class="returnvalue">guint</span></a>
gst_gl_memory_get_texture_id (<em class="parameter"><code><a class="link" href="gst-plugins-bad-libs-GstGLMemory.html#GstGLMemory" title="GstGLMemory"><span class="type">GstGLMemory</span></a> *gl_mem</code></em>);</pre>
-<div class="refsect3">
-<a name="gst-gl-memory-get-texture-id.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody><tr>
-<td class="parameter_name"><p>gl_mem</p></td>
-<td class="parameter_description"><p>a <a class="link" href="gst-plugins-bad-libs-GstGLMemory.html#GstGLMemory" title="GstGLMemory"><span class="type">GstGLMemory</span></a></p></td>
-<td class="parameter_annotations"> </td>
-</tr></tbody>
-</table></div>
-</div>
-<div class="refsect3">
-<a name="gst-gl-memory-get-texture-id.returns"></a><h4>Returns</h4>
-<p> the OpenGL texture handle of <em class="parameter"><code>gl_mem</code></em>
-</p>
-</div>
-<p class="since">Since: 1.8</p>
</div>
<hr>
<div class="refsect2">
<a name="gst-gl-memory-get-texture-target"></a><h3>gst_gl_memory_get_texture_target ()</h3>
<pre class="programlisting"><a class="link" href="gst-plugins-bad-libs-OpenGL-Formats.html#GstGLTextureTarget" title="enum GstGLTextureTarget"><span class="returnvalue">GstGLTextureTarget</span></a>
gst_gl_memory_get_texture_target (<em class="parameter"><code><a class="link" href="gst-plugins-bad-libs-GstGLMemory.html#GstGLMemory" title="GstGLMemory"><span class="type">GstGLMemory</span></a> *gl_mem</code></em>);</pre>
-<div class="refsect3">
-<a name="gst-gl-memory-get-texture-target.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody><tr>
-<td class="parameter_name"><p>gl_mem</p></td>
-<td class="parameter_description"><p>a <a class="link" href="gst-plugins-bad-libs-GstGLMemory.html#GstGLMemory" title="GstGLMemory"><span class="type">GstGLMemory</span></a></p></td>
-<td class="parameter_annotations"> </td>
-</tr></tbody>
-</table></div>
-</div>
-<div class="refsect3">
-<a name="gst-gl-memory-get-texture-target.returns"></a><h4>Returns</h4>
-<p> the <a class="link" href="gst-plugins-bad-libs-OpenGL-Formats.html#GstGLTextureTarget" title="enum GstGLTextureTarget"><span class="type">GstGLTextureTarget</span></a> of <em class="parameter"><code>gl_mem</code></em>
-</p>
-</div>
-<p class="since">Since: 1.8</p>
</div>
<hr>
<div class="refsect2">
<a name="gst-gl-memory-get-texture-type"></a><h3>gst_gl_memory_get_texture_type ()</h3>
<pre class="programlisting"><span class="returnvalue">GstVideoGLTextureType</span>
gst_gl_memory_get_texture_type (<em class="parameter"><code><a class="link" href="gst-plugins-bad-libs-GstGLMemory.html#GstGLMemory" title="GstGLMemory"><span class="type">GstGLMemory</span></a> *gl_mem</code></em>);</pre>
-<div class="refsect3">
-<a name="gst-gl-memory-get-texture-type.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody><tr>
-<td class="parameter_name"><p>gl_mem</p></td>
-<td class="parameter_description"><p>a <a class="link" href="gst-plugins-bad-libs-GstGLMemory.html#GstGLMemory" title="GstGLMemory"><span class="type">GstGLMemory</span></a></p></td>
-<td class="parameter_annotations"> </td>
-</tr></tbody>
-</table></div>
-</div>
-<div class="refsect3">
-<a name="gst-gl-memory-get-texture-type.returns"></a><h4>Returns</h4>
-<p> the <span class="type">GstVideoGLTextureType</span> of <em class="parameter"><code>gl_mem</code></em>
-</p>
-</div>
-<p class="since">Since: 1.8</p>
</div>
<hr>
<div class="refsect2">
<a name="gst-gl-memory-get-texture-width"></a><h3>gst_gl_memory_get_texture_width ()</h3>
<pre class="programlisting"><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gint"><span class="returnvalue">gint</span></a>
gst_gl_memory_get_texture_width (<em class="parameter"><code><a class="link" href="gst-plugins-bad-libs-GstGLMemory.html#GstGLMemory" title="GstGLMemory"><span class="type">GstGLMemory</span></a> *gl_mem</code></em>);</pre>
-<div class="refsect3">
-<a name="gst-gl-memory-get-texture-width.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody><tr>
-<td class="parameter_name"><p>gl_mem</p></td>
-<td class="parameter_description"><p>a <a class="link" href="gst-plugins-bad-libs-GstGLMemory.html#GstGLMemory" title="GstGLMemory"><span class="type">GstGLMemory</span></a></p></td>
-<td class="parameter_annotations"> </td>
-</tr></tbody>
-</table></div>
-</div>
-<div class="refsect3">
-<a name="gst-gl-memory-get-texture-width.returns"></a><h4>Returns</h4>
-<p> the texture width of <em class="parameter"><code>gl_mem</code></em>
-</p>
-</div>
-<p class="since">Since: 1.8</p>
</div>
<hr>
<div class="refsect2">
@@ -1119,40 +469,10 @@
<pre class="programlisting"><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
gst_gl_memory_setup_buffer (<em class="parameter"><code><a class="link" href="gst-plugins-bad-libs-GstGLMemory.html#GstGLMemoryAllocator"><span class="type">GstGLMemoryAllocator</span></a> *allocator</code></em>,
<em class="parameter"><code><a href="/usr/share/gtk-doc/html/gstreamer-1.0GstBuffer.html#GstBuffer-struct"><span class="type">GstBuffer</span></a> *buffer</code></em>,
- <em class="parameter"><code><a class="link" href="gst-plugins-bad-libs-GstGLMemory.html#GstGLVideoAllocationParams" title="struct GstGLVideoAllocationParams"><span class="type">GstGLVideoAllocationParams</span></a> *params</code></em>);</pre>
-<div class="refsect3">
-<a name="gst-gl-memory-setup-buffer.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="parameter_name"><p>allocator</p></td>
-<td class="parameter_description"><p>the <em class="parameter"><code>GstGLMemoryAllocator</code></em>
-to allocate from</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>buffer</p></td>
-<td class="parameter_description"><p>a <a href="/usr/share/gtk-doc/html/gstreamer-1.0GstBuffer.html#GstBuffer-struct"><span class="type">GstBuffer</span></a> to setup</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>params</p></td>
-<td class="parameter_description"><p>the <a class="link" href="gst-plugins-bad-libs-GstGLMemory.html#GstGLVideoAllocationParams" title="struct GstGLVideoAllocationParams"><span class="type">GstGLVideoAllocationParams</span></a> to allocate with</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<div class="refsect3">
-<a name="gst-gl-memory-setup-buffer.returns"></a><h4>Returns</h4>
-<p> whether the buffer was correctly setup</p>
-</div>
-<p class="since">Since: 1.8</p>
+ <em class="parameter"><code><a class="link" href="gst-plugins-bad-libs-GstGLMemory.html#GstGLVideoAllocationParams" title="struct GstGLVideoAllocationParams"><span class="type">GstGLVideoAllocationParams</span></a> *params</code></em>,
+ <em class="parameter"><code><span class="type">GstVideoGLTextureType</span> *tex_types</code></em>,
+ <em class="parameter"><code><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a> *wrapped_data</code></em>,
+ <em class="parameter"><code><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gsize"><span class="type">gsize</span></a> n_wrapped_pointers</code></em>);</pre>
</div>
</div>
<div class="refsect1">
@@ -1171,6 +491,7 @@
guint plane;
GstVideoAlignment *valign;
GstGLTextureTarget target;
+ GstVideoGLTextureType tex_type;
};
</pre>
</div>
@@ -1184,7 +505,6 @@
<div class="refsect2">
<a name="GstGLMemoryAllocator-struct"></a><h3>GstGLMemoryAllocator</h3>
<pre class="programlisting">typedef struct _GstGLMemoryAllocator GstGLMemoryAllocator;</pre>
-<p>Opaque <a class="link" href="gst-plugins-bad-libs-GstGLMemory.html#GstGLMemoryAllocator"><span class="type">GstGLMemoryAllocator</span></a> struct</p>
</div>
<hr>
<div class="refsect2">
@@ -1197,7 +517,6 @@
GstGLBaseMemoryAllocatorUnmapFunction unmap;
} GstGLMemoryAllocatorClass;
</pre>
-<p>The <a class="link" href="gst-plugins-bad-libs-GstGLMemory.html#GstGLMemoryAllocatorClass" title="GstGLMemoryAllocatorClass"><span class="type">GstGLMemoryAllocatorClass</span></a> only contains private data</p>
</div>
<hr>
<div class="refsect2">
@@ -1214,74 +533,14 @@
gfloat tex_scaling[2];
} GstGLMemory;
</pre>
-<p>Represents information about a GL texture</p>
-<div class="refsect3">
-<a name="GstGLMemory.members"></a><h4>Members</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="300px" class="struct_members_name">
-<col class="struct_members_description">
-<col width="200px" class="struct_members_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="struct_member_name"><p><a class="link" href="gst-plugins-bad-libs-gstglbasememory.html#GstGLBaseMemory" title="GstGLBaseMemory"><span class="type">GstGLBaseMemory</span></a> <em class="structfield"><code><a name="GstGLMemory.mem"></a>mem</code></em>;</p></td>
-<td class="struct_member_description"><p>the parent object</p></td>
-<td class="struct_member_annotations"> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint"><span class="type">guint</span></a> <em class="structfield"><code><a name="GstGLMemory.tex-id"></a>tex_id</code></em>;</p></td>
-<td class="struct_member_description"><p>the GL texture id for this memory</p></td>
-<td class="struct_member_annotations"> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a class="link" href="gst-plugins-bad-libs-OpenGL-Formats.html#GstGLTextureTarget" title="enum GstGLTextureTarget"><span class="type">GstGLTextureTarget</span></a> <em class="structfield"><code><a name="GstGLMemory.tex-target"></a>tex_target</code></em>;</p></td>
-<td class="struct_member_description"><p>the GL texture target for this memory</p></td>
-<td class="struct_member_annotations"> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><span class="type">GstVideoGLTextureType</span> <em class="structfield"><code><a name="GstGLMemory.tex-type"></a>tex_type</code></em>;</p></td>
-<td class="struct_member_description"><p>the texture type</p></td>
-<td class="struct_member_annotations"> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/gst-plugins-base-libs-1.0gst-plugins-base-libs-gstvideo.html#GstVideoInfo"><span class="type">GstVideoInfo</span></a> <em class="structfield"><code><a name="GstGLMemory.info"></a>info</code></em>;</p></td>
-<td class="struct_member_description"><p>the texture's <a href="/usr/share/gtk-doc/html/gst-plugins-base-libs-1.0gst-plugins-base-libs-gstvideo.html#GstVideoInfo"><span class="type">GstVideoInfo</span></a></p></td>
-<td class="struct_member_annotations"> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/gst-plugins-base-libs-1.0gst-plugins-base-libs-gstvideo.html#GstVideoAlignment"><span class="type">GstVideoAlignment</span></a> <em class="structfield"><code><a name="GstGLMemory.valign"></a>valign</code></em>;</p></td>
-<td class="struct_member_description"><p>data alignment for system memory mapping</p></td>
-<td class="struct_member_annotations"> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint"><span class="type">guint</span></a> <em class="structfield"><code><a name="GstGLMemory.plane"></a>plane</code></em>;</p></td>
-<td class="struct_member_description"><p>data plane in <em class="parameter"><code>info</code></em>
-</p></td>
-<td class="struct_member_annotations"> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gfloat"><span class="type">gfloat</span></a> <em class="structfield"><code><a name="GstGLMemory.tex-scaling"></a>tex_scaling</code></em>[2];</p></td>
-<td class="struct_member_description"><p>GL shader scaling parameters for <em class="parameter"><code>valign</code></em>
-and/or width/height</p></td>
-<td class="struct_member_annotations"> </td>
-</tr>
-</tbody>
-</table></div>
-</div>
</div>
<hr>
<div class="refsect2">
<a name="GST-GL-MEMORY-ALLOCATOR-NAME:CAPS"></a><h3>GST_GL_MEMORY_ALLOCATOR_NAME</h3>
<pre class="programlisting">#define GST_GL_MEMORY_ALLOCATOR_NAME "GLMemory"
</pre>
-<p>The name of the GL memory allocator</p>
</div>
</div>
-<div class="refsect1">
-<a name="gst-plugins-bad-libs-GstGLMemory.see-also"></a><h2>See Also</h2>
-<p><a href="/usr/share/gtk-doc/html/gstreamer-1.0GstMemory.html#GstMemory-struct"><span class="type">GstMemory</span></a>, <a href="/usr/share/gtk-doc/html/gstreamer-1.0GstAllocator.html#GstAllocator-struct"><span class="type">GstAllocator</span></a>, <a class="link" href="GstGLBufferPool.html" title="GstGLBufferPool"><span class="type">GstGLBufferPool</span></a></p>
-</div>
</div>
<div class="footer">
<hr>Generated by GTK-Doc V1.25</div>
diff --git a/docs/libs/html/gst-plugins-bad-libs-GstGLSL.html b/docs/libs/html/gst-plugins-bad-libs-GstGLSL.html
index 7352290..8a05c20 100644
--- a/docs/libs/html/gst-plugins-bad-libs-GstGLSL.html
+++ b/docs/libs/html/gst-plugins-bad-libs-GstGLSL.html
@@ -7,7 +7,7 @@
<link rel="home" href="index.html" title="GStreamer Bad Plugins 1.0 Library Reference Manual">
<link rel="up" href="gl.html" title="OpenGL Helper Library">
<link rel="prev" href="GstGLShader.html" title="GstGLShader">
-<link rel="next" href=".html" title="GstGLSLStage">
+<link rel="next" href=".html" title="">
<meta name="generator" content="GTK-Doc V1.25 (XML mode)">
<link rel="stylesheet" href="style.css" type="text/css">
</head>
@@ -27,7 +27,7 @@
<div class="refnamediv"><table width="100%"><tr>
<td valign="top">
<h2><span class="refentrytitle"><a name="gst-plugins-bad-libs-GstGLSL.top_of_page"></a>GstGLSL</span></h2>
-<p>GstGLSL — helpers for dealing with OpenGL shaders</p>
+<p>GstGLSL</p>
</td>
<td class="gallery_image" valign="top" align="right"></td>
</tr></table></div>
@@ -408,10 +408,6 @@
</div>
</div>
</div>
-<div class="refsect1">
-<a name="gst-plugins-bad-libs-GstGLSL.see-also"></a><h2>See Also</h2>
-<p><a class="link" href=".html#GstGLSLStage"><span class="type">GstGLSLStage</span></a>, <a class="link" href="GstGLShader.html" title="GstGLShader"><span class="type">GstGLShader</span></a></p>
-</div>
</div>
<div class="footer">
<hr>Generated by GTK-Doc V1.25</div>
diff --git a/docs/libs/html/gst-plugins-bad-libs-GstGLSyncMeta.html b/docs/libs/html/gst-plugins-bad-libs-GstGLSyncMeta.html
index 32a5453..665f20c 100644
--- a/docs/libs/html/gst-plugins-bad-libs-GstGLSyncMeta.html
+++ b/docs/libs/html/gst-plugins-bad-libs-GstGLSyncMeta.html
@@ -6,7 +6,7 @@
<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
<link rel="home" href="index.html" title="GStreamer Bad Plugins 1.0 Library Reference Manual">
<link rel="up" href="gl.html" title="OpenGL Helper Library">
-<link rel="prev" href=".html" title="GstGLSLStage">
+<link rel="prev" href=".html" title="">
<link rel="next" href="GstGLUpload.html" title="GstGLUpload">
<meta name="generator" content="GTK-Doc V1.25 (XML mode)">
<link rel="stylesheet" href="style.css" type="text/css">
diff --git a/docs/libs/html/gst-plugins-bad-libs-GstGLWindowX11.html b/docs/libs/html/gst-plugins-bad-libs-GstGLWindowX11.html
index 1aa6750..b60238a 100644
--- a/docs/libs/html/gst-plugins-bad-libs-GstGLWindowX11.html
+++ b/docs/libs/html/gst-plugins-bad-libs-GstGLWindowX11.html
@@ -7,7 +7,7 @@
<link rel="home" href="index.html" title="GStreamer Bad Plugins 1.0 Library Reference Manual">
<link rel="up" href="gl.html" title="OpenGL Helper Library">
<link rel="prev" href="gst-plugins-bad-libs-GstGLWindowWin32.html" title="GstGLWindowWin32">
-<link rel="next" href="gst-plugins-bad-libs-OpenGL-debugging.html" title="OpenGL debugging">
+<link rel="next" href="gst-plugins-bad-libs-gstgldebug.html" title="OpenGL Debugging">
<meta name="generator" content="GTK-Doc V1.25 (XML mode)">
<link rel="stylesheet" href="style.css" type="text/css">
</head>
@@ -20,7 +20,7 @@
<td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
<td><a accesskey="u" href="gl.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
<td><a accesskey="p" href="gst-plugins-bad-libs-GstGLWindowWin32.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
-<td><a accesskey="n" href="gst-plugins-bad-libs-OpenGL-debugging.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
+<td><a accesskey="n" href="gst-plugins-bad-libs-gstgldebug.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
</tr></table>
<div class="refentry">
<a name="gst-plugins-bad-libs-GstGLWindowX11"></a><div class="titlepage"></div>
@@ -114,18 +114,12 @@
<a name="gst-gl-window-x11-trap-x-errors"></a><h3>gst_gl_window_x11_trap_x_errors ()</h3>
<pre class="programlisting"><span class="returnvalue">void</span>
gst_gl_window_x11_trap_x_errors (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
-<p>Traps every X error until <a class="link" href="gst-plugins-bad-libs-GstGLWindowX11.html#gst-gl-window-x11-untrap-x-errors" title="gst_gl_window_x11_untrap_x_errors ()"><code class="function">gst_gl_window_x11_untrap_x_errors()</code></a> is called.</p>
</div>
<hr>
<div class="refsect2">
<a name="gst-gl-window-x11-untrap-x-errors"></a><h3>gst_gl_window_x11_untrap_x_errors ()</h3>
<pre class="programlisting"><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gint"><span class="returnvalue">gint</span></a>
gst_gl_window_x11_untrap_x_errors (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
-<p>Removes the X error trap and returns the current status.</p>
-<div class="refsect3">
-<a name="gst-gl-window-x11-untrap-x-errors.returns"></a><h4>Returns</h4>
-<p> the trapped error code, or 0 for success</p>
-</div>
</div>
</div>
<div class="refsect1">
@@ -135,7 +129,6 @@
<pre class="programlisting">struct GstGLWindowX11 {
};
</pre>
-<p>Opaque <a class="link" href="gst-plugins-bad-libs-GstGLWindowX11.html#GstGLWindowX11" title="struct GstGLWindowX11"><span class="type">GstGLWindowX11</span></a> object</p>
</div>
<hr>
<div class="refsect2">
@@ -143,7 +136,6 @@
<pre class="programlisting">struct GstGLWindowX11Class {
};
</pre>
-<p>Opaque <a class="link" href="gst-plugins-bad-libs-GstGLWindowX11.html#GstGLWindowX11Class" title="struct GstGLWindowX11Class"><span class="type">GstGLWindowX11Class</span></a> object</p>
</div>
</div>
</div>
diff --git a/docs/libs/html/gst-plugins-bad-libs-GstInsertbin.html b/docs/libs/html/gst-plugins-bad-libs-GstInsertbin.html
index 453c1b0..99ca08f 100644
--- a/docs/libs/html/gst-plugins-bad-libs-GstInsertbin.html
+++ b/docs/libs/html/gst-plugins-bad-libs-GstInsertbin.html
@@ -30,7 +30,7 @@
<div class="refnamediv"><table width="100%"><tr>
<td valign="top">
<h2><span class="refentrytitle"><a name="gst-plugins-bad-libs-GstInsertbin.top_of_page"></a>GstInsertbin</span></h2>
-<p>GstInsertbin — A <a href="/usr/share/gtk-doc/html/gstreamer-1.0GstBin.html#GstBin-struct"><span class="type">GstBin</span></a> to insertally link filter-like elements.</p>
+<p>GstInsertbin</p>
</td>
<td class="gallery_image" valign="top" align="right"></td>
</tr></table></div>
@@ -175,16 +175,6 @@
</div>
<div class="refsect1">
<a name="gst-plugins-bad-libs-GstInsertbin.description"></a><h2>Description</h2>
-<p>This element is a <a href="/usr/share/gtk-doc/html/gstreamer-1.0GstBin.html#GstBin-struct"><span class="type">GstBin</span></a> that has a single source and sink pad. It allows
-the user (the application) to easily add and remove filter-like element
-(that has a single source and sink pad), to the pipeline while it is running.
-It features a fully asynchronous API inspired by GLib's GAsyncResult based
-APIs.</p>
-<p>Each operation (addition or removal) can take a callback, this callback
-is guaranteed to be called. Unlike GIO, there is no guarantee about where
-this callback will be called from, it could be called before the action
-returns or it could be called later from another thread. The signature of
-this callback <a class="link" href="gst-plugins-bad-libs-GstInsertbin.html#GstInsertBinCallback" title="GstInsertBinCallback ()"><code class="function">GstInsertBinCallback()</code></a>.</p>
</div>
<div class="refsect1">
<a name="gst-plugins-bad-libs-GstInsertbin.functions_details"></a><h2>Functions</h2>
@@ -195,68 +185,12 @@
<em class="parameter"><code><a href="/usr/share/gtk-doc/html/gstreamer-1.0GstElement.html#GstElement-struct"><span class="type">GstElement</span></a> *element</code></em>,
<em class="parameter"><code><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a> success</code></em>,
<em class="parameter"><code><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a> user_data</code></em>);</pre>
-<p>This is the prototype of callbacks to be called when the operation completes.
-It could be called at any time, including as a re-entrant call while the
-operation is requested.</p>
-<div class="refsect3">
-<a name="GstInsertBinCallback.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="parameter_name"><p>insertbin</p></td>
-<td class="parameter_description"><p>A <a class="link" href="gst-plugins-bad-libs-GstInsertbin.html#GstInsertBin"><span class="type">GstInsertBin</span></a></p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>element</p></td>
-<td class="parameter_description"><p>The <a href="/usr/share/gtk-doc/html/gstreamer-1.0GstElement.html#GstElement-struct"><span class="type">GstElement</span></a> on which the operation was performed</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>success</p></td>
-<td class="parameter_description"><p><a href="/usr/share/gtk-doc/html/glibglib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if the operation was successful</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>user_data</p></td>
-<td class="parameter_description"><p>The user data passed</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-</tbody>
-</table></div>
-</div>
</div>
<hr>
<div class="refsect2">
<a name="gst-insert-bin-new"></a><h3>gst_insert_bin_new ()</h3>
<pre class="programlisting"><a href="/usr/share/gtk-doc/html/gstreamer-1.0GstElement.html#GstElement-struct"><span class="returnvalue">GstElement</span></a> *
gst_insert_bin_new (<em class="parameter"><code>const <a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *name</code></em>);</pre>
-<p>Creates a new <a class="link" href="gst-plugins-bad-libs-GstInsertbin.html#GstInsertBin"><span class="type">GstInsertBin</span></a></p>
-<div class="refsect3">
-<a name="gst-insert-bin-new.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody><tr>
-<td class="parameter_name"><p>name</p></td>
-<td class="parameter_description"><p> The name of the new <a class="link" href="gst-plugins-bad-libs-GstInsertbin.html#GstInsertBin"><span class="type">GstInsertBin</span></a> element (or <a href="/usr/share/gtk-doc/html/glibglib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a>). </p></td>
-<td class="parameter_annotations"><span class="annotation">[<acronym title="NULL is OK, both for passing and for returning."><span class="acronym">allow-none</span></acronym>]</span></td>
-</tr></tbody>
-</table></div>
-</div>
-<div class="refsect3">
-<a name="gst-insert-bin-new.returns"></a><h4>Returns</h4>
-<p> The new <a class="link" href="gst-plugins-bad-libs-GstInsertbin.html#GstInsertBin"><span class="type">GstInsertBin</span></a></p>
-</div>
-<p class="since">Since: 1.2</p>
</div>
<hr>
<div class="refsect2">
@@ -266,38 +200,6 @@
<em class="parameter"><code><a href="/usr/share/gtk-doc/html/gstreamer-1.0GstElement.html#GstElement-struct"><span class="type">GstElement</span></a> *element</code></em>,
<em class="parameter"><code><a class="link" href="gst-plugins-bad-libs-GstInsertbin.html#GstInsertBinCallback" title="GstInsertBinCallback ()"><span class="type">GstInsertBinCallback</span></a> callback</code></em>,
<em class="parameter"><code><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a> user_data</code></em>);</pre>
-<p>This action signal adds the filter like element after any other element
-in the bin.</p>
-<p>Same as the <a class="link" href="gst-plugins-bad-libs-GstInsertbin.html#GstInsertBin-append" title="The “append” signal"><span class="type">“append”</span></a> signal.</p>
-<div class="refsect3">
-<a name="gst-insert-bin-append.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="parameter_name"><p>element</p></td>
-<td class="parameter_description"><p>the <a href="/usr/share/gtk-doc/html/gstreamer-1.0GstElement.html#GstElement-struct"><span class="type">GstElement</span></a> to add</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>callback</p></td>
-<td class="parameter_description"><p> the callback to call when the element has been
-added or not, or <a href="/usr/share/gtk-doc/html/glibglib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a>. </p></td>
-<td class="parameter_annotations"><span class="annotation">[<acronym title="The callback is valid until first called."><span class="acronym">scope async</span></acronym>]</span></td>
-</tr>
-<tr>
-<td class="parameter_name"><p>user_data</p></td>
-<td class="parameter_description"><p>The data to pass to the callback</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<p class="since">Since: 1.2</p>
</div>
<hr>
<div class="refsect2">
@@ -307,38 +209,6 @@
<em class="parameter"><code><a href="/usr/share/gtk-doc/html/gstreamer-1.0GstElement.html#GstElement-struct"><span class="type">GstElement</span></a> *element</code></em>,
<em class="parameter"><code><a class="link" href="gst-plugins-bad-libs-GstInsertbin.html#GstInsertBinCallback" title="GstInsertBinCallback ()"><span class="type">GstInsertBinCallback</span></a> callback</code></em>,
<em class="parameter"><code><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a> user_data</code></em>);</pre>
-<p>This action signal adds the filter like element before any other element
-in the bin.</p>
-<p>Same as the <a class="link" href="gst-plugins-bad-libs-GstInsertbin.html#GstInsertBin-prepend" title="The “prepend” signal"><span class="type">“prepend”</span></a> signal.</p>
-<div class="refsect3">
-<a name="gst-insert-bin-prepend.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="parameter_name"><p>element</p></td>
-<td class="parameter_description"><p>the <a href="/usr/share/gtk-doc/html/gstreamer-1.0GstElement.html#GstElement-struct"><span class="type">GstElement</span></a> to add</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>callback</p></td>
-<td class="parameter_description"><p> the callback to call when the element has been
-added or not, or <a href="/usr/share/gtk-doc/html/glibglib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a>. </p></td>
-<td class="parameter_annotations"><span class="annotation">[<acronym title="The callback is valid until first called."><span class="acronym">scope async</span></acronym>]</span></td>
-</tr>
-<tr>
-<td class="parameter_name"><p>user_data</p></td>
-<td class="parameter_description"><p>The data to pass to the callback</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<p class="since">Since: 1.2</p>
</div>
<hr>
<div class="refsect2">
@@ -349,45 +219,6 @@
<em class="parameter"><code><a href="/usr/share/gtk-doc/html/gstreamer-1.0GstElement.html#GstElement-struct"><span class="type">GstElement</span></a> *sibling</code></em>,
<em class="parameter"><code><a class="link" href="gst-plugins-bad-libs-GstInsertbin.html#GstInsertBinCallback" title="GstInsertBinCallback ()"><span class="type">GstInsertBinCallback</span></a> callback</code></em>,
<em class="parameter"><code><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a> user_data</code></em>);</pre>
-<p>This action signal adds the filter like element after the <em class="parameter"><code>sibling</code></em>
-
-element in the bin.</p>
-<p>Same as the <a class="link" href="gst-plugins-bad-libs-GstInsertbin.html#GstInsertBin-insert-after" title="The “insert-after” signal"><span class="type">“insert-after”</span></a> signal.</p>
-<div class="refsect3">
-<a name="gst-insert-bin-insert-after.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="parameter_name"><p>element</p></td>
-<td class="parameter_description"><p>the <a href="/usr/share/gtk-doc/html/gstreamer-1.0GstElement.html#GstElement-struct"><span class="type">GstElement</span></a> to add</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>sibling</p></td>
-<td class="parameter_description"><p>the <a href="/usr/share/gtk-doc/html/gstreamer-1.0GstElement.html#GstElement-struct"><span class="type">GstElement</span></a> to add <em class="parameter"><code>element</code></em>
-after</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>callback</p></td>
-<td class="parameter_description"><p> the callback to call when the element has been
-added or not, or <a href="/usr/share/gtk-doc/html/glibglib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a>. </p></td>
-<td class="parameter_annotations"><span class="annotation">[<acronym title="The callback is valid until first called."><span class="acronym">scope async</span></acronym>]</span></td>
-</tr>
-<tr>
-<td class="parameter_name"><p>user_data</p></td>
-<td class="parameter_description"><p>The data to pass to the callback</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<p class="since">Since: 1.2</p>
</div>
<hr>
<div class="refsect2">
@@ -398,45 +229,6 @@
<em class="parameter"><code><a href="/usr/share/gtk-doc/html/gstreamer-1.0GstElement.html#GstElement-struct"><span class="type">GstElement</span></a> *sibling</code></em>,
<em class="parameter"><code><a class="link" href="gst-plugins-bad-libs-GstInsertbin.html#GstInsertBinCallback" title="GstInsertBinCallback ()"><span class="type">GstInsertBinCallback</span></a> callback</code></em>,
<em class="parameter"><code><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a> user_data</code></em>);</pre>
-<p>This action signal adds the filter like element before the <em class="parameter"><code>sibling</code></em>
-
-element in the bin.</p>
-<p>Same as the <a class="link" href="gst-plugins-bad-libs-GstInsertbin.html#GstInsertBin-insert-before" title="The “insert-before” signal"><span class="type">“insert-before”</span></a> signal.</p>
-<div class="refsect3">
-<a name="gst-insert-bin-insert-before.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="parameter_name"><p>element</p></td>
-<td class="parameter_description"><p>the <a href="/usr/share/gtk-doc/html/gstreamer-1.0GstElement.html#GstElement-struct"><span class="type">GstElement</span></a> to add</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>sibling</p></td>
-<td class="parameter_description"><p>the <a href="/usr/share/gtk-doc/html/gstreamer-1.0GstElement.html#GstElement-struct"><span class="type">GstElement</span></a> to add <em class="parameter"><code>element</code></em>
-before</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>callback</p></td>
-<td class="parameter_description"><p> the callback to call when the element has been
-added or not, or <a href="/usr/share/gtk-doc/html/glibglib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a>. </p></td>
-<td class="parameter_annotations"><span class="annotation">[<acronym title="The callback is valid until first called."><span class="acronym">scope async</span></acronym>]</span></td>
-</tr>
-<tr>
-<td class="parameter_name"><p>user_data</p></td>
-<td class="parameter_description"><p>The data to pass to the callback</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<p class="since">Since: 1.2</p>
</div>
<hr>
<div class="refsect2">
@@ -446,37 +238,6 @@
<em class="parameter"><code><a href="/usr/share/gtk-doc/html/gstreamer-1.0GstElement.html#GstElement-struct"><span class="type">GstElement</span></a> *element</code></em>,
<em class="parameter"><code><a class="link" href="gst-plugins-bad-libs-GstInsertbin.html#GstInsertBinCallback" title="GstInsertBinCallback ()"><span class="type">GstInsertBinCallback</span></a> callback</code></em>,
<em class="parameter"><code><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a> user_data</code></em>);</pre>
-<p>This action signal removed the filter like element from the bin.</p>
-<p>Same as the <a class="link" href="gst-plugins-bad-libs-GstInsertbin.html#GstInsertBin-remove" title="The “remove” signal"><span class="type">“remove”</span></a> signal.</p>
-<div class="refsect3">
-<a name="gst-insert-bin-remove.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="parameter_name"><p>element</p></td>
-<td class="parameter_description"><p>the <a href="/usr/share/gtk-doc/html/gstreamer-1.0GstElement.html#GstElement-struct"><span class="type">GstElement</span></a> to remove</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>callback</p></td>
-<td class="parameter_description"><p> the callback to call when the element has been
-removed or not, or <a href="/usr/share/gtk-doc/html/glibglib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a>. </p></td>
-<td class="parameter_annotations"><span class="annotation">[<acronym title="The callback is valid until first called."><span class="acronym">scope async</span></acronym>]</span></td>
-</tr>
-<tr>
-<td class="parameter_name"><p>user_data</p></td>
-<td class="parameter_description"><p>The data to pass to the callback</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<p class="since">Since: 1.2</p>
</div>
</div>
<div class="refsect1">
@@ -484,7 +245,6 @@
<div class="refsect2">
<a name="GstInsertBin-struct"></a><h3>struct GstInsertBin</h3>
<pre class="programlisting">struct GstInsertBin;</pre>
-<p>The object structure.</p>
</div>
<hr>
<div class="refsect2">
@@ -493,7 +253,6 @@
GstBinClass parent_class;
};
</pre>
-<p>The object class structure.</p>
</div>
</div>
<div class="refsect1">
@@ -501,276 +260,57 @@
<div class="refsect2">
<a name="GstInsertBin-append"></a><h3>The <code class="literal">“append”</code> signal</h3>
<pre class="programlisting"><span class="returnvalue">void</span>
-user_function (<a class="link" href="gst-plugins-bad-libs-GstInsertbin.html#GstInsertBin"><span class="type">GstInsertBin</span></a> *element,
- <a href="/usr/share/gtk-doc/html/gstreamer-1.0GstElement.html#GstElement-struct"><span class="type">GstElement</span></a> *callback,
- <a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a> user_data,
- <a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a> user_data2,
+user_function (<a class="link" href="gst-plugins-bad-libs-GstInsertbin.html#GstInsertBin"><span class="type">GstInsertBin</span></a> *gstinsertbin,
+ <a href="/usr/share/gtk-doc/html/gstreamer-1.0GstElement.html#GstElement-struct"><span class="type">GstElement</span></a> *arg1,
+ <a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a> arg2,
+ <a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a> arg3,
<a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a> user_data)</pre>
-<p>This action signal adds the filter like element after any other element
-in the bin.</p>
-<p>Same as <a class="link" href="gst-plugins-bad-libs-GstInsertbin.html#gst-insert-bin-append" title="gst_insert_bin_append ()"><code class="function">gst_insert_bin_append()</code></a></p>
-<div class="refsect3">
-<a name="GstInsertBin-append.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="parameter_name"><p>element</p></td>
-<td class="parameter_description"><p>the <a href="/usr/share/gtk-doc/html/gstreamer-1.0GstElement.html#GstElement-struct"><span class="type">GstElement</span></a> to add</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>callback</p></td>
-<td class="parameter_description"><p>the callback to call when the element has been added or not, or
-<a href="/usr/share/gtk-doc/html/glibglib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a></p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>user_data</p></td>
-<td class="parameter_description"><p>The data to pass to the callback</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>user_data2</p></td>
-<td class="parameter_description"><p>The user data of the signal (ignored)</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>user_data</p></td>
-<td class="parameter_description"><p>user data set when the signal handler was connected.</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-</tbody>
-</table></div>
-</div>
<p>Flags: <a href="/usr/share/gtk-doc/html/gobjectgobject-Signals.html#G-SIGNAL-ACTION:CAPS">Action</a></p>
</div>
<hr>
<div class="refsect2">
<a name="GstInsertBin-insert-after"></a><h3>The <code class="literal">“insert-after”</code> signal</h3>
<pre class="programlisting"><span class="returnvalue">void</span>
-user_function (<a class="link" href="gst-plugins-bad-libs-GstInsertbin.html#GstInsertBin"><span class="type">GstInsertBin</span></a> *element,
- <a href="/usr/share/gtk-doc/html/gstreamer-1.0GstElement.html#GstElement-struct"><span class="type">GstElement</span></a> *sibling,
- <a href="/usr/share/gtk-doc/html/gstreamer-1.0GstElement.html#GstElement-struct"><span class="type">GstElement</span></a> *callback,
- <a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a> user_data,
- <a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a> user_data2,
+user_function (<a class="link" href="gst-plugins-bad-libs-GstInsertbin.html#GstInsertBin"><span class="type">GstInsertBin</span></a> *gstinsertbin,
+ <a href="/usr/share/gtk-doc/html/gstreamer-1.0GstElement.html#GstElement-struct"><span class="type">GstElement</span></a> *arg1,
+ <a href="/usr/share/gtk-doc/html/gstreamer-1.0GstElement.html#GstElement-struct"><span class="type">GstElement</span></a> *arg2,
+ <a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a> arg3,
+ <a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a> arg4,
<a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a> user_data)</pre>
-<p>This action signal adds the filter like element after the <em class="parameter"><code>sibling</code></em>
-
-element in the bin.
-element in the bin.</p>
-<p>Same as <a class="link" href="gst-plugins-bad-libs-GstInsertbin.html#gst-insert-bin-insert-after" title="gst_insert_bin_insert_after ()"><code class="function">gst_insert_bin_insert_after()</code></a></p>
-<div class="refsect3">
-<a name="GstInsertBin-insert-after.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="parameter_name"><p>element</p></td>
-<td class="parameter_description"><p>the <a href="/usr/share/gtk-doc/html/gstreamer-1.0GstElement.html#GstElement-struct"><span class="type">GstElement</span></a> to add</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>sibling</p></td>
-<td class="parameter_description"><p>the <a href="/usr/share/gtk-doc/html/gstreamer-1.0GstElement.html#GstElement-struct"><span class="type">GstElement</span></a> to add <em class="parameter"><code>element</code></em>
-after</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>callback</p></td>
-<td class="parameter_description"><p>the callback to call when the element has been added or not, or
-<a href="/usr/share/gtk-doc/html/glibglib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a></p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>user_data</p></td>
-<td class="parameter_description"><p>The data to pass to the callback</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>user_data2</p></td>
-<td class="parameter_description"><p>The user data of the signal (ignored)</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>user_data</p></td>
-<td class="parameter_description"><p>user data set when the signal handler was connected.</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-</tbody>
-</table></div>
-</div>
<p>Flags: <a href="/usr/share/gtk-doc/html/gobjectgobject-Signals.html#G-SIGNAL-ACTION:CAPS">Action</a></p>
</div>
<hr>
<div class="refsect2">
<a name="GstInsertBin-insert-before"></a><h3>The <code class="literal">“insert-before”</code> signal</h3>
<pre class="programlisting"><span class="returnvalue">void</span>
-user_function (<a class="link" href="gst-plugins-bad-libs-GstInsertbin.html#GstInsertBin"><span class="type">GstInsertBin</span></a> *element,
- <a href="/usr/share/gtk-doc/html/gstreamer-1.0GstElement.html#GstElement-struct"><span class="type">GstElement</span></a> *sibling,
- <a href="/usr/share/gtk-doc/html/gstreamer-1.0GstElement.html#GstElement-struct"><span class="type">GstElement</span></a> *callback,
- <a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a> user_data,
- <a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a> user_data2,
+user_function (<a class="link" href="gst-plugins-bad-libs-GstInsertbin.html#GstInsertBin"><span class="type">GstInsertBin</span></a> *gstinsertbin,
+ <a href="/usr/share/gtk-doc/html/gstreamer-1.0GstElement.html#GstElement-struct"><span class="type">GstElement</span></a> *arg1,
+ <a href="/usr/share/gtk-doc/html/gstreamer-1.0GstElement.html#GstElement-struct"><span class="type">GstElement</span></a> *arg2,
+ <a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a> arg3,
+ <a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a> arg4,
<a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a> user_data)</pre>
-<p>This action signal adds the filter like element before the <em class="parameter"><code>sibling</code></em>
-
-element in the bin.</p>
-<p>Same as <a class="link" href="gst-plugins-bad-libs-GstInsertbin.html#gst-insert-bin-insert-before" title="gst_insert_bin_insert_before ()"><code class="function">gst_insert_bin_insert_before()</code></a></p>
-<div class="refsect3">
-<a name="GstInsertBin-insert-before.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="parameter_name"><p>element</p></td>
-<td class="parameter_description"><p>the <a href="/usr/share/gtk-doc/html/gstreamer-1.0GstElement.html#GstElement-struct"><span class="type">GstElement</span></a> to add</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>sibling</p></td>
-<td class="parameter_description"><p>the <a href="/usr/share/gtk-doc/html/gstreamer-1.0GstElement.html#GstElement-struct"><span class="type">GstElement</span></a> to add <em class="parameter"><code>element</code></em>
-before</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>callback</p></td>
-<td class="parameter_description"><p>the callback to call when the element has been added or not, or
-<a href="/usr/share/gtk-doc/html/glibglib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a></p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>user_data</p></td>
-<td class="parameter_description"><p>The data to pass to the callback</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>user_data2</p></td>
-<td class="parameter_description"><p>The user data of the signal (ignored)</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>user_data</p></td>
-<td class="parameter_description"><p>user data set when the signal handler was connected.</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-</tbody>
-</table></div>
-</div>
<p>Flags: <a href="/usr/share/gtk-doc/html/gobjectgobject-Signals.html#G-SIGNAL-ACTION:CAPS">Action</a></p>
</div>
<hr>
<div class="refsect2">
<a name="GstInsertBin-prepend"></a><h3>The <code class="literal">“prepend”</code> signal</h3>
<pre class="programlisting"><span class="returnvalue">void</span>
-user_function (<a class="link" href="gst-plugins-bad-libs-GstInsertbin.html#GstInsertBin"><span class="type">GstInsertBin</span></a> *element,
- <a href="/usr/share/gtk-doc/html/gstreamer-1.0GstElement.html#GstElement-struct"><span class="type">GstElement</span></a> *callback,
- <a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a> user_data,
- <a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a> user_data2,
+user_function (<a class="link" href="gst-plugins-bad-libs-GstInsertbin.html#GstInsertBin"><span class="type">GstInsertBin</span></a> *gstinsertbin,
+ <a href="/usr/share/gtk-doc/html/gstreamer-1.0GstElement.html#GstElement-struct"><span class="type">GstElement</span></a> *arg1,
+ <a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a> arg2,
+ <a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a> arg3,
<a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a> user_data)</pre>
-<p>This action signal adds the filter like element before any other element
-in the bin.</p>
-<p>Same as <a class="link" href="gst-plugins-bad-libs-GstInsertbin.html#gst-insert-bin-prepend" title="gst_insert_bin_prepend ()"><code class="function">gst_insert_bin_prepend()</code></a></p>
-<div class="refsect3">
-<a name="GstInsertBin-prepend.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="parameter_name"><p>element</p></td>
-<td class="parameter_description"><p>the <a href="/usr/share/gtk-doc/html/gstreamer-1.0GstElement.html#GstElement-struct"><span class="type">GstElement</span></a> to add</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>callback</p></td>
-<td class="parameter_description"><p>the callback to call when the element has been added or not, or
-<a href="/usr/share/gtk-doc/html/glibglib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a></p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>user_data</p></td>
-<td class="parameter_description"><p>The data to pass to the callback</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>user_data2</p></td>
-<td class="parameter_description"><p>The user data of the signal (ignored)</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>user_data</p></td>
-<td class="parameter_description"><p>user data set when the signal handler was connected.</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-</tbody>
-</table></div>
-</div>
<p>Flags: <a href="/usr/share/gtk-doc/html/gobjectgobject-Signals.html#G-SIGNAL-ACTION:CAPS">Action</a></p>
</div>
<hr>
<div class="refsect2">
<a name="GstInsertBin-remove"></a><h3>The <code class="literal">“remove”</code> signal</h3>
<pre class="programlisting"><span class="returnvalue">void</span>
-user_function (<a class="link" href="gst-plugins-bad-libs-GstInsertbin.html#GstInsertBin"><span class="type">GstInsertBin</span></a> *element,
- <a href="/usr/share/gtk-doc/html/gstreamer-1.0GstElement.html#GstElement-struct"><span class="type">GstElement</span></a> *callback,
- <a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a> user_data,
- <a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a> user_data2,
+user_function (<a class="link" href="gst-plugins-bad-libs-GstInsertbin.html#GstInsertBin"><span class="type">GstInsertBin</span></a> *gstinsertbin,
+ <a href="/usr/share/gtk-doc/html/gstreamer-1.0GstElement.html#GstElement-struct"><span class="type">GstElement</span></a> *arg1,
+ <a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a> arg2,
+ <a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a> arg3,
<a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a> user_data)</pre>
-<p>This action signal removed the filter like element from the bin.</p>
-<p>Same as <a class="link" href="gst-plugins-bad-libs-GstInsertbin.html#gst-insert-bin-remove" title="gst_insert_bin_remove ()"><code class="function">gst_insert_bin_remove()</code></a></p>
-<div class="refsect3">
-<a name="GstInsertBin-remove.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="parameter_name"><p>element</p></td>
-<td class="parameter_description"><p>the <a href="/usr/share/gtk-doc/html/gstreamer-1.0GstElement.html#GstElement-struct"><span class="type">GstElement</span></a> to remove</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>callback</p></td>
-<td class="parameter_description"><p>the callback to call when the element has been removed or not,
-or <a href="/usr/share/gtk-doc/html/glibglib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a></p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>user_data</p></td>
-<td class="parameter_description"><p>The data to pass to the callback</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>user_data2</p></td>
-<td class="parameter_description"><p>The user data of the signal (ignored)</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>user_data</p></td>
-<td class="parameter_description"><p>user data set when the signal handler was connected.</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-</tbody>
-</table></div>
-</div>
<p>Flags: <a href="/usr/share/gtk-doc/html/gobjectgobject-Signals.html#G-SIGNAL-ACTION:CAPS">Action</a></p>
</div>
</div>
diff --git a/docs/libs/html/gst-plugins-bad-libs-GstPhotography.html b/docs/libs/html/gst-plugins-bad-libs-GstPhotography.html
index 81781f0..9fd47fb 100644
--- a/docs/libs/html/gst-plugins-bad-libs-GstPhotography.html
+++ b/docs/libs/html/gst-plugins-bad-libs-GstPhotography.html
@@ -27,28 +27,11 @@
<div class="refnamediv"><table width="100%"><tr>
<td valign="top">
<h2><span class="refentrytitle"><a name="gst-plugins-bad-libs-GstPhotography.top_of_page"></a>GstPhotography</span></h2>
-<p>GstPhotography — Interface for digital image capture elements</p>
+<p>GstPhotography</p>
</td>
<td class="gallery_image" valign="top" align="right"></td>
</tr></table></div>
<div class="refsect1">
-<a name="gst-plugins-bad-libs-GstPhotography.stability-level"></a><h2>Stability Level</h2>
-<acronym title="Unstable interfaces are experimental or transitional. They are typically used to
-give outside developers early access to new or rapidly changing technology, or
-to provide an interim solution to a problem where a more general solution is
-anticipated. No claims are made about either source or binary compatibility from
-one minor release to the next.
-
-The Unstable interface level is a warning that these interfaces are subject to
-change without warning and should not be used in unbundled products.
-
-Given such caveats, customer impact need not be a factor when considering
-incompatible changes to an Unstable interface in a major or minor release.
-Nonetheless, when such changes are introduced, the changes should still be
-mentioned in the release notes for the affected release.
-"><span class="acronym">Unstable</span></acronym>, unless otherwise indicated
-</div>
-<div class="refsect1">
<a name="gst-plugins-bad-libs-GstPhotography.functions"></a><h2>Functions</h2>
<div class="informaltable"><table class="informaltable" width="100%" border="0">
<colgroup>
@@ -424,11 +407,6 @@
</div>
<div class="refsect1">
<a name="gst-plugins-bad-libs-GstPhotography.description"></a><h2>Description</h2>
-<p>The interface allows access to some common digital image capture parameters.</p>
-<div class="note">
- The GstPhotography interface is unstable API and may change in future.
- One can define GST_USE_UNSTABLE_API to acknowledge and avoid this warning.
-</div>
</div>
<div class="refsect1">
<a name="gst-plugins-bad-libs-GstPhotography.functions_details"></a><h2>Functions</h2>
@@ -437,34 +415,6 @@
<pre class="programlisting"><span class="returnvalue">void</span>
<span class="c_punctuation">(</span>*GstPhotographyCapturePrepared<span class="c_punctuation">)</span> (<em class="parameter"><code><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a> data</code></em>,
<em class="parameter"><code>const <a href="/usr/share/gtk-doc/html/gstreamer-1.0GstCaps.html#GstCaps-struct"><span class="type">GstCaps</span></a> *configured_caps</code></em>);</pre>
-<p>This callback will be called when the element has finished preparations
-and is ready for image capture. The next buffer that element produces
-will be of <em class="parameter"><code>configured_caps</code></em>
- format, so this callback allows the application
-to e.g. reconfigure capsfilters in pipeline if any.</p>
-<div class="refsect3">
-<a name="GstPhotographyCapturePrepared.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="parameter_name"><p>data</p></td>
-<td class="parameter_description"><p>user data that has been given, when registering the callback</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>configured_caps</p></td>
-<td class="parameter_description"><p><a href="/usr/share/gtk-doc/html/gstreamer-1.0GstCaps.html#GstCaps-struct"><span class="type">GstCaps</span></a> defining the configured capture format.
-Ownership of these caps stays in the element.</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-</tbody>
-</table></div>
-</div>
</div>
<hr>
<div class="refsect2">
@@ -472,33 +422,6 @@
<pre class="programlisting"><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
gst_photography_get_ev_compensation (<em class="parameter"><code><a class="link" href="gst-plugins-bad-libs-GstPhotography.html#GstPhotography" title="GstPhotography"><span class="type">GstPhotography</span></a> *photo</code></em>,
<em class="parameter"><code><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gfloat"><span class="type">gfloat</span></a> *ev_comp</code></em>);</pre>
-<p>Get the ev compensation value for the <a href="/usr/share/gtk-doc/html/gstreamer-1.0GstElement.html#GstElement-struct"><span class="type">GstElement</span></a></p>
-<div class="refsect3">
-<a name="gst-photography-get-ev-compensation.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="parameter_name"><p>photo</p></td>
-<td class="parameter_description"><p><a class="link" href="gst-plugins-bad-libs-GstPhotography.html#GstPhotography" title="GstPhotography"><span class="type">GstPhotography</span></a> interface of a <a href="/usr/share/gtk-doc/html/gstreamer-1.0GstElement.html#GstElement-struct"><span class="type">GstElement</span></a></p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>ev_comp</p></td>
-<td class="parameter_description"><p>ev compensation value to get</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<div class="refsect3">
-<a name="gst-photography-get-ev-compensation.returns"></a><h4>Returns</h4>
-<p> <a href="/usr/share/gtk-doc/html/glibglib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if getting the value succeeded, <a href="/usr/share/gtk-doc/html/glibglib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a> otherwise</p>
-</div>
</div>
<hr>
<div class="refsect2">
@@ -506,33 +429,6 @@
<pre class="programlisting"><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
gst_photography_get_iso_speed (<em class="parameter"><code><a class="link" href="gst-plugins-bad-libs-GstPhotography.html#GstPhotography" title="GstPhotography"><span class="type">GstPhotography</span></a> *photo</code></em>,
<em class="parameter"><code><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint"><span class="type">guint</span></a> *iso_speed</code></em>);</pre>
-<p>Get the ISO value (light sensivity) for the <a href="/usr/share/gtk-doc/html/gstreamer-1.0GstElement.html#GstElement-struct"><span class="type">GstElement</span></a></p>
-<div class="refsect3">
-<a name="gst-photography-get-iso-speed.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="parameter_name"><p>photo</p></td>
-<td class="parameter_description"><p><a class="link" href="gst-plugins-bad-libs-GstPhotography.html#GstPhotography" title="GstPhotography"><span class="type">GstPhotography</span></a> interface of a <a href="/usr/share/gtk-doc/html/gstreamer-1.0GstElement.html#GstElement-struct"><span class="type">GstElement</span></a></p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>iso_speed</p></td>
-<td class="parameter_description"><p>ISO speed value to get</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<div class="refsect3">
-<a name="gst-photography-get-iso-speed.returns"></a><h4>Returns</h4>
-<p> <a href="/usr/share/gtk-doc/html/glibglib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if getting the value succeeded, <a href="/usr/share/gtk-doc/html/glibglib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a> otherwise</p>
-</div>
</div>
<hr>
<div class="refsect2">
@@ -540,33 +436,6 @@
<pre class="programlisting"><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
gst_photography_get_aperture (<em class="parameter"><code><a class="link" href="gst-plugins-bad-libs-GstPhotography.html#GstPhotography" title="GstPhotography"><span class="type">GstPhotography</span></a> *photo</code></em>,
<em class="parameter"><code><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint"><span class="type">guint</span></a> *aperture</code></em>);</pre>
-<p>Get the aperture value for the <a href="/usr/share/gtk-doc/html/gstreamer-1.0GstElement.html#GstElement-struct"><span class="type">GstElement</span></a></p>
-<div class="refsect3">
-<a name="gst-photography-get-aperture.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="parameter_name"><p>photo</p></td>
-<td class="parameter_description"><p><a class="link" href="gst-plugins-bad-libs-GstPhotography.html#GstPhotography" title="GstPhotography"><span class="type">GstPhotography</span></a> interface of a <a href="/usr/share/gtk-doc/html/gstreamer-1.0GstElement.html#GstElement-struct"><span class="type">GstElement</span></a></p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>aperture</p></td>
-<td class="parameter_description"><p>aperture value to get</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<div class="refsect3">
-<a name="gst-photography-get-aperture.returns"></a><h4>Returns</h4>
-<p> <a href="/usr/share/gtk-doc/html/glibglib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if getting the value succeeded, <a href="/usr/share/gtk-doc/html/glibglib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a> otherwise</p>
-</div>
</div>
<hr>
<div class="refsect2">
@@ -574,33 +443,6 @@
<pre class="programlisting"><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
gst_photography_get_exposure (<em class="parameter"><code><a class="link" href="gst-plugins-bad-libs-GstPhotography.html#GstPhotography" title="GstPhotography"><span class="type">GstPhotography</span></a> *photo</code></em>,
<em class="parameter"><code><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint32"><span class="type">guint32</span></a> *exposure</code></em>);</pre>
-<p>Get the fixed exposure time (in us) for the <a href="/usr/share/gtk-doc/html/gstreamer-1.0GstElement.html#GstElement-struct"><span class="type">GstElement</span></a></p>
-<div class="refsect3">
-<a name="gst-photography-get-exposure.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="parameter_name"><p>photo</p></td>
-<td class="parameter_description"><p><a class="link" href="gst-plugins-bad-libs-GstPhotography.html#GstPhotography" title="GstPhotography"><span class="type">GstPhotography</span></a> interface of a <a href="/usr/share/gtk-doc/html/gstreamer-1.0GstElement.html#GstElement-struct"><span class="type">GstElement</span></a></p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>exposure</p></td>
-<td class="parameter_description"><p>exposure time to get</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<div class="refsect3">
-<a name="gst-photography-get-exposure.returns"></a><h4>Returns</h4>
-<p> <a href="/usr/share/gtk-doc/html/glibglib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if getting the value succeeded, <a href="/usr/share/gtk-doc/html/glibglib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a> otherwise</p>
-</div>
</div>
<hr>
<div class="refsect2">
@@ -609,33 +451,6 @@
gst_photography_get_white_balance_mode
(<em class="parameter"><code><a class="link" href="gst-plugins-bad-libs-GstPhotography.html#GstPhotography" title="GstPhotography"><span class="type">GstPhotography</span></a> *photo</code></em>,
<em class="parameter"><code><a class="link" href="gst-plugins-bad-libs-GstPhotography.html#GstPhotographyWhiteBalanceMode" title="enum GstPhotographyWhiteBalanceMode"><span class="type">GstPhotographyWhiteBalanceMode</span></a> *wb_mode</code></em>);</pre>
-<p>Get the white balance mode for the <a href="/usr/share/gtk-doc/html/gstreamer-1.0GstElement.html#GstElement-struct"><span class="type">GstElement</span></a></p>
-<div class="refsect3">
-<a name="gst-photography-get-white-balance-mode.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="parameter_name"><p>photo</p></td>
-<td class="parameter_description"><p><a class="link" href="gst-plugins-bad-libs-GstPhotography.html#GstPhotography" title="GstPhotography"><span class="type">GstPhotography</span></a> interface of a <a href="/usr/share/gtk-doc/html/gstreamer-1.0GstElement.html#GstElement-struct"><span class="type">GstElement</span></a></p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>wb_mode</p></td>
-<td class="parameter_description"><p><a class="link" href="gst-plugins-bad-libs-GstPhotography.html#GstPhotographyWhiteBalanceMode" title="enum GstPhotographyWhiteBalanceMode"><span class="type">GstPhotographyWhiteBalanceMode</span></a> to get</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<div class="refsect3">
-<a name="gst-photography-get-white-balance-mode.returns"></a><h4>Returns</h4>
-<p> <a href="/usr/share/gtk-doc/html/glibglib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if getting the value succeeded, <a href="/usr/share/gtk-doc/html/glibglib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a> otherwise</p>
-</div>
</div>
<hr>
<div class="refsect2">
@@ -643,33 +458,6 @@
<pre class="programlisting"><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
gst_photography_get_color_tone_mode (<em class="parameter"><code><a class="link" href="gst-plugins-bad-libs-GstPhotography.html#GstPhotography" title="GstPhotography"><span class="type">GstPhotography</span></a> *photo</code></em>,
<em class="parameter"><code><a class="link" href="gst-plugins-bad-libs-GstPhotography.html#GstPhotographyColorToneMode" title="enum GstPhotographyColorToneMode"><span class="type">GstPhotographyColorToneMode</span></a> *tone_mode</code></em>);</pre>
-<p>Get the color tone mode for the <a href="/usr/share/gtk-doc/html/gstreamer-1.0GstElement.html#GstElement-struct"><span class="type">GstElement</span></a></p>
-<div class="refsect3">
-<a name="gst-photography-get-color-tone-mode.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="parameter_name"><p>photo</p></td>
-<td class="parameter_description"><p><a class="link" href="gst-plugins-bad-libs-GstPhotography.html#GstPhotography" title="GstPhotography"><span class="type">GstPhotography</span></a> interface of a <a href="/usr/share/gtk-doc/html/gstreamer-1.0GstElement.html#GstElement-struct"><span class="type">GstElement</span></a></p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>tone_mode</p></td>
-<td class="parameter_description"><p><a class="link" href="gst-plugins-bad-libs-GstPhotography.html#GstPhotographyColorToneMode" title="enum GstPhotographyColorToneMode"><span class="type">GstPhotographyColorToneMode</span></a> to get</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<div class="refsect3">
-<a name="gst-photography-get-color-tone-mode.returns"></a><h4>Returns</h4>
-<p> <a href="/usr/share/gtk-doc/html/glibglib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if getting the value succeeded, <a href="/usr/share/gtk-doc/html/glibglib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a> otherwise</p>
-</div>
</div>
<hr>
<div class="refsect2">
@@ -677,33 +465,6 @@
<pre class="programlisting"><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
gst_photography_get_scene_mode (<em class="parameter"><code><a class="link" href="gst-plugins-bad-libs-GstPhotography.html#GstPhotography" title="GstPhotography"><span class="type">GstPhotography</span></a> *photo</code></em>,
<em class="parameter"><code><a class="link" href="gst-plugins-bad-libs-GstPhotography.html#GstPhotographySceneMode" title="enum GstPhotographySceneMode"><span class="type">GstPhotographySceneMode</span></a> *scene_mode</code></em>);</pre>
-<p>Get the scene mode for the <a href="/usr/share/gtk-doc/html/gstreamer-1.0GstElement.html#GstElement-struct"><span class="type">GstElement</span></a></p>
-<div class="refsect3">
-<a name="gst-photography-get-scene-mode.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="parameter_name"><p>photo</p></td>
-<td class="parameter_description"><p><a class="link" href="gst-plugins-bad-libs-GstPhotography.html#GstPhotography" title="GstPhotography"><span class="type">GstPhotography</span></a> interface of a <a href="/usr/share/gtk-doc/html/gstreamer-1.0GstElement.html#GstElement-struct"><span class="type">GstElement</span></a></p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>scene_mode</p></td>
-<td class="parameter_description"><p><a class="link" href="gst-plugins-bad-libs-GstPhotography.html#GstPhotographySceneMode" title="enum GstPhotographySceneMode"><span class="type">GstPhotographySceneMode</span></a> to get</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<div class="refsect3">
-<a name="gst-photography-get-scene-mode.returns"></a><h4>Returns</h4>
-<p> <a href="/usr/share/gtk-doc/html/glibglib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if getting the value succeeded, <a href="/usr/share/gtk-doc/html/glibglib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a> otherwise</p>
-</div>
</div>
<hr>
<div class="refsect2">
@@ -711,33 +472,6 @@
<pre class="programlisting"><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
gst_photography_get_flash_mode (<em class="parameter"><code><a class="link" href="gst-plugins-bad-libs-GstPhotography.html#GstPhotography" title="GstPhotography"><span class="type">GstPhotography</span></a> *photo</code></em>,
<em class="parameter"><code><a class="link" href="gst-plugins-bad-libs-GstPhotography.html#GstPhotographyFlashMode" title="enum GstPhotographyFlashMode"><span class="type">GstPhotographyFlashMode</span></a> *flash_mode</code></em>);</pre>
-<p>Get the flash mode for the <a href="/usr/share/gtk-doc/html/gstreamer-1.0GstElement.html#GstElement-struct"><span class="type">GstElement</span></a></p>
-<div class="refsect3">
-<a name="gst-photography-get-flash-mode.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="parameter_name"><p>photo</p></td>
-<td class="parameter_description"><p><a class="link" href="gst-plugins-bad-libs-GstPhotography.html#GstPhotography" title="GstPhotography"><span class="type">GstPhotography</span></a> interface of a <a href="/usr/share/gtk-doc/html/gstreamer-1.0GstElement.html#GstElement-struct"><span class="type">GstElement</span></a></p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>flash_mode</p></td>
-<td class="parameter_description"><p><a class="link" href="gst-plugins-bad-libs-GstPhotography.html#GstPhotographyFlashMode" title="enum GstPhotographyFlashMode"><span class="type">GstPhotographyFlashMode</span></a> to get</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<div class="refsect3">
-<a name="gst-photography-get-flash-mode.returns"></a><h4>Returns</h4>
-<p> <a href="/usr/share/gtk-doc/html/glibglib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if getting the value succeeded, <a href="/usr/share/gtk-doc/html/glibglib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a> otherwise</p>
-</div>
</div>
<hr>
<div class="refsect2">
@@ -745,33 +479,6 @@
<pre class="programlisting"><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
gst_photography_get_flicker_mode (<em class="parameter"><code><a class="link" href="gst-plugins-bad-libs-GstPhotography.html#GstPhotography" title="GstPhotography"><span class="type">GstPhotography</span></a> *photo</code></em>,
<em class="parameter"><code><a class="link" href="gst-plugins-bad-libs-GstPhotography.html#GstPhotographyFlickerReductionMode" title="enum GstPhotographyFlickerReductionMode"><span class="type">GstPhotographyFlickerReductionMode</span></a> *mode</code></em>);</pre>
-<p>Get the flicker mode value for the <a href="/usr/share/gtk-doc/html/gstreamer-1.0GstElement.html#GstElement-struct"><span class="type">GstElement</span></a></p>
-<div class="refsect3">
-<a name="gst-photography-get-flicker-mode.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="parameter_name"><p>photo</p></td>
-<td class="parameter_description"><p><a class="link" href="gst-plugins-bad-libs-GstPhotography.html#GstPhotography" title="GstPhotography"><span class="type">GstPhotography</span></a> interface of a <a href="/usr/share/gtk-doc/html/gstreamer-1.0GstElement.html#GstElement-struct"><span class="type">GstElement</span></a></p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>flicker_mode</p></td>
-<td class="parameter_description"><p>flicker mode value to get</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<div class="refsect3">
-<a name="gst-photography-get-flicker-mode.returns"></a><h4>Returns</h4>
-<p> <a href="/usr/share/gtk-doc/html/glibglib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if getting the value succeeded, <a href="/usr/share/gtk-doc/html/glibglib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a> otherwise</p>
-</div>
</div>
<hr>
<div class="refsect2">
@@ -779,33 +486,6 @@
<pre class="programlisting"><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
gst_photography_get_focus_mode (<em class="parameter"><code><a class="link" href="gst-plugins-bad-libs-GstPhotography.html#GstPhotography" title="GstPhotography"><span class="type">GstPhotography</span></a> *photo</code></em>,
<em class="parameter"><code><a class="link" href="gst-plugins-bad-libs-GstPhotography.html#GstPhotographyFocusMode" title="enum GstPhotographyFocusMode"><span class="type">GstPhotographyFocusMode</span></a> *mode</code></em>);</pre>
-<p>Get the focus mode value for the <a href="/usr/share/gtk-doc/html/gstreamer-1.0GstElement.html#GstElement-struct"><span class="type">GstElement</span></a></p>
-<div class="refsect3">
-<a name="gst-photography-get-focus-mode.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="parameter_name"><p>photo</p></td>
-<td class="parameter_description"><p><a class="link" href="gst-plugins-bad-libs-GstPhotography.html#GstPhotography" title="GstPhotography"><span class="type">GstPhotography</span></a> interface of a <a href="/usr/share/gtk-doc/html/gstreamer-1.0GstElement.html#GstElement-struct"><span class="type">GstElement</span></a></p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>focus_mode</p></td>
-<td class="parameter_description"><p>focus_mode value to get</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<div class="refsect3">
-<a name="gst-photography-get-focus-mode.returns"></a><h4>Returns</h4>
-<p> <a href="/usr/share/gtk-doc/html/glibglib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if getting the value succeeded, <a href="/usr/share/gtk-doc/html/glibglib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a> otherwise</p>
-</div>
</div>
<hr>
<div class="refsect2">
@@ -813,33 +493,6 @@
<pre class="programlisting"><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
gst_photography_get_noise_reduction (<em class="parameter"><code><a class="link" href="gst-plugins-bad-libs-GstPhotography.html#GstPhotography" title="GstPhotography"><span class="type">GstPhotography</span></a> *photo</code></em>,
<em class="parameter"><code><a class="link" href="gst-plugins-bad-libs-GstPhotography.html#GstPhotographyNoiseReduction" title="enum GstPhotographyNoiseReduction"><span class="type">GstPhotographyNoiseReduction</span></a> *noise_reduction</code></em>);</pre>
-<p>Get the noise reduction mode for the <a href="/usr/share/gtk-doc/html/gstreamer-1.0GstElement.html#GstElement-struct"><span class="type">GstElement</span></a></p>
-<div class="refsect3">
-<a name="gst-photography-get-noise-reduction.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="parameter_name"><p>photo</p></td>
-<td class="parameter_description"><p><a class="link" href="gst-plugins-bad-libs-GstPhotography.html#GstPhotography" title="GstPhotography"><span class="type">GstPhotography</span></a> interface of a <a href="/usr/share/gtk-doc/html/gstreamer-1.0GstElement.html#GstElement-struct"><span class="type">GstElement</span></a></p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>noise_reduction</p></td>
-<td class="parameter_description"><p><span class="type">GstPhotographyNoiseReductionMode</span> to get</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<div class="refsect3">
-<a name="gst-photography-get-noise-reduction.returns"></a><h4>Returns</h4>
-<p> <a href="/usr/share/gtk-doc/html/glibglib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if getting the value succeeded, <a href="/usr/share/gtk-doc/html/glibglib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a> otherwise</p>
-</div>
</div>
<hr>
<div class="refsect2">
@@ -847,33 +500,6 @@
<pre class="programlisting"><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
gst_photography_get_zoom (<em class="parameter"><code><a class="link" href="gst-plugins-bad-libs-GstPhotography.html#GstPhotography" title="GstPhotography"><span class="type">GstPhotography</span></a> *photo</code></em>,
<em class="parameter"><code><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gfloat"><span class="type">gfloat</span></a> *zoom</code></em>);</pre>
-<p>Get the zoom value for the <a href="/usr/share/gtk-doc/html/gstreamer-1.0GstElement.html#GstElement-struct"><span class="type">GstElement</span></a></p>
-<div class="refsect3">
-<a name="gst-photography-get-zoom.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="parameter_name"><p>photo</p></td>
-<td class="parameter_description"><p><a class="link" href="gst-plugins-bad-libs-GstPhotography.html#GstPhotography" title="GstPhotography"><span class="type">GstPhotography</span></a> interface of a <a href="/usr/share/gtk-doc/html/gstreamer-1.0GstElement.html#GstElement-struct"><span class="type">GstElement</span></a></p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>zoom</p></td>
-<td class="parameter_description"><p>zoom value to get</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<div class="refsect3">
-<a name="gst-photography-get-zoom.returns"></a><h4>Returns</h4>
-<p> <a href="/usr/share/gtk-doc/html/glibglib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if getting the value succeeded, <a href="/usr/share/gtk-doc/html/glibglib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a> otherwise</p>
-</div>
</div>
<hr>
<div class="refsect2">
@@ -881,33 +507,6 @@
<pre class="programlisting"><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
gst_photography_set_ev_compensation (<em class="parameter"><code><a class="link" href="gst-plugins-bad-libs-GstPhotography.html#GstPhotography" title="GstPhotography"><span class="type">GstPhotography</span></a> *photo</code></em>,
<em class="parameter"><code><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gfloat"><span class="type">gfloat</span></a> ev_comp</code></em>);</pre>
-<p>Set the ev compensation value for the <a href="/usr/share/gtk-doc/html/gstreamer-1.0GstElement.html#GstElement-struct"><span class="type">GstElement</span></a></p>
-<div class="refsect3">
-<a name="gst-photography-set-ev-compensation.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="parameter_name"><p>photo</p></td>
-<td class="parameter_description"><p><a class="link" href="gst-plugins-bad-libs-GstPhotography.html#GstPhotography" title="GstPhotography"><span class="type">GstPhotography</span></a> interface of a <a href="/usr/share/gtk-doc/html/gstreamer-1.0GstElement.html#GstElement-struct"><span class="type">GstElement</span></a></p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>ev_comp</p></td>
-<td class="parameter_description"><p>ev compensation value to set</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<div class="refsect3">
-<a name="gst-photography-set-ev-compensation.returns"></a><h4>Returns</h4>
-<p> <a href="/usr/share/gtk-doc/html/glibglib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if setting the value succeeded, <a href="/usr/share/gtk-doc/html/glibglib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a> otherwise</p>
-</div>
</div>
<hr>
<div class="refsect2">
@@ -915,33 +514,6 @@
<pre class="programlisting"><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
gst_photography_set_iso_speed (<em class="parameter"><code><a class="link" href="gst-plugins-bad-libs-GstPhotography.html#GstPhotography" title="GstPhotography"><span class="type">GstPhotography</span></a> *photo</code></em>,
<em class="parameter"><code><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint"><span class="type">guint</span></a> iso_speed</code></em>);</pre>
-<p>Set the ISO value (light sensivity) for the <a href="/usr/share/gtk-doc/html/gstreamer-1.0GstElement.html#GstElement-struct"><span class="type">GstElement</span></a></p>
-<div class="refsect3">
-<a name="gst-photography-set-iso-speed.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="parameter_name"><p>photo</p></td>
-<td class="parameter_description"><p><a class="link" href="gst-plugins-bad-libs-GstPhotography.html#GstPhotography" title="GstPhotography"><span class="type">GstPhotography</span></a> interface of a <a href="/usr/share/gtk-doc/html/gstreamer-1.0GstElement.html#GstElement-struct"><span class="type">GstElement</span></a></p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>iso_speed</p></td>
-<td class="parameter_description"><p>ISO speed value to set</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<div class="refsect3">
-<a name="gst-photography-set-iso-speed.returns"></a><h4>Returns</h4>
-<p> <a href="/usr/share/gtk-doc/html/glibglib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if setting the value succeeded, <a href="/usr/share/gtk-doc/html/glibglib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a> otherwise</p>
-</div>
</div>
<hr>
<div class="refsect2">
@@ -949,33 +521,6 @@
<pre class="programlisting"><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
gst_photography_set_aperture (<em class="parameter"><code><a class="link" href="gst-plugins-bad-libs-GstPhotography.html#GstPhotography" title="GstPhotography"><span class="type">GstPhotography</span></a> *photo</code></em>,
<em class="parameter"><code><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint"><span class="type">guint</span></a> aperture</code></em>);</pre>
-<p>Set the aperture value for the <a href="/usr/share/gtk-doc/html/gstreamer-1.0GstElement.html#GstElement-struct"><span class="type">GstElement</span></a></p>
-<div class="refsect3">
-<a name="gst-photography-set-aperture.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="parameter_name"><p>photo</p></td>
-<td class="parameter_description"><p><a class="link" href="gst-plugins-bad-libs-GstPhotography.html#GstPhotography" title="GstPhotography"><span class="type">GstPhotography</span></a> interface of a <a href="/usr/share/gtk-doc/html/gstreamer-1.0GstElement.html#GstElement-struct"><span class="type">GstElement</span></a></p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>aperture</p></td>
-<td class="parameter_description"><p>aperture value to set</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<div class="refsect3">
-<a name="gst-photography-set-aperture.returns"></a><h4>Returns</h4>
-<p> <a href="/usr/share/gtk-doc/html/glibglib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if setting the value succeeded, <a href="/usr/share/gtk-doc/html/glibglib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a> otherwise</p>
-</div>
</div>
<hr>
<div class="refsect2">
@@ -983,33 +528,6 @@
<pre class="programlisting"><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
gst_photography_set_exposure (<em class="parameter"><code><a class="link" href="gst-plugins-bad-libs-GstPhotography.html#GstPhotography" title="GstPhotography"><span class="type">GstPhotography</span></a> *photo</code></em>,
<em class="parameter"><code><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint"><span class="type">guint</span></a> exposure</code></em>);</pre>
-<p>Set the fixed exposure time (in us) for the <a href="/usr/share/gtk-doc/html/gstreamer-1.0GstElement.html#GstElement-struct"><span class="type">GstElement</span></a></p>
-<div class="refsect3">
-<a name="gst-photography-set-exposure.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="parameter_name"><p>photo</p></td>
-<td class="parameter_description"><p><a class="link" href="gst-plugins-bad-libs-GstPhotography.html#GstPhotography" title="GstPhotography"><span class="type">GstPhotography</span></a> interface of a <a href="/usr/share/gtk-doc/html/gstreamer-1.0GstElement.html#GstElement-struct"><span class="type">GstElement</span></a></p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>exposure</p></td>
-<td class="parameter_description"><p>exposure time to set</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<div class="refsect3">
-<a name="gst-photography-set-exposure.returns"></a><h4>Returns</h4>
-<p> <a href="/usr/share/gtk-doc/html/glibglib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if setting the value succeeded, <a href="/usr/share/gtk-doc/html/glibglib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a> otherwise</p>
-</div>
</div>
<hr>
<div class="refsect2">
@@ -1018,33 +536,6 @@
gst_photography_set_white_balance_mode
(<em class="parameter"><code><a class="link" href="gst-plugins-bad-libs-GstPhotography.html#GstPhotography" title="GstPhotography"><span class="type">GstPhotography</span></a> *photo</code></em>,
<em class="parameter"><code><a class="link" href="gst-plugins-bad-libs-GstPhotography.html#GstPhotographyWhiteBalanceMode" title="enum GstPhotographyWhiteBalanceMode"><span class="type">GstPhotographyWhiteBalanceMode</span></a> wb_mode</code></em>);</pre>
-<p>Set the white balance mode for the <a href="/usr/share/gtk-doc/html/gstreamer-1.0GstElement.html#GstElement-struct"><span class="type">GstElement</span></a></p>
-<div class="refsect3">
-<a name="gst-photography-set-white-balance-mode.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="parameter_name"><p>photo</p></td>
-<td class="parameter_description"><p><a class="link" href="gst-plugins-bad-libs-GstPhotography.html#GstPhotography" title="GstPhotography"><span class="type">GstPhotography</span></a> interface of a <a href="/usr/share/gtk-doc/html/gstreamer-1.0GstElement.html#GstElement-struct"><span class="type">GstElement</span></a></p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>wb_mode</p></td>
-<td class="parameter_description"><p><a class="link" href="gst-plugins-bad-libs-GstPhotography.html#GstPhotographyWhiteBalanceMode" title="enum GstPhotographyWhiteBalanceMode"><span class="type">GstPhotographyWhiteBalanceMode</span></a> to set</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<div class="refsect3">
-<a name="gst-photography-set-white-balance-mode.returns"></a><h4>Returns</h4>
-<p> <a href="/usr/share/gtk-doc/html/glibglib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if setting the value succeeded, <a href="/usr/share/gtk-doc/html/glibglib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a> otherwise</p>
-</div>
</div>
<hr>
<div class="refsect2">
@@ -1052,33 +543,6 @@
<pre class="programlisting"><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
gst_photography_set_color_tone_mode (<em class="parameter"><code><a class="link" href="gst-plugins-bad-libs-GstPhotography.html#GstPhotography" title="GstPhotography"><span class="type">GstPhotography</span></a> *photo</code></em>,
<em class="parameter"><code><a class="link" href="gst-plugins-bad-libs-GstPhotography.html#GstPhotographyColorToneMode" title="enum GstPhotographyColorToneMode"><span class="type">GstPhotographyColorToneMode</span></a> tone_mode</code></em>);</pre>
-<p>Set the color tone mode for the <a href="/usr/share/gtk-doc/html/gstreamer-1.0GstElement.html#GstElement-struct"><span class="type">GstElement</span></a></p>
-<div class="refsect3">
-<a name="gst-photography-set-color-tone-mode.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="parameter_name"><p>photo</p></td>
-<td class="parameter_description"><p><a class="link" href="gst-plugins-bad-libs-GstPhotography.html#GstPhotography" title="GstPhotography"><span class="type">GstPhotography</span></a> interface of a <a href="/usr/share/gtk-doc/html/gstreamer-1.0GstElement.html#GstElement-struct"><span class="type">GstElement</span></a></p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>tone_mode</p></td>
-<td class="parameter_description"><p><a class="link" href="gst-plugins-bad-libs-GstPhotography.html#GstPhotographyColorToneMode" title="enum GstPhotographyColorToneMode"><span class="type">GstPhotographyColorToneMode</span></a> to set</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<div class="refsect3">
-<a name="gst-photography-set-color-tone-mode.returns"></a><h4>Returns</h4>
-<p> <a href="/usr/share/gtk-doc/html/glibglib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if setting the value succeeded, <a href="/usr/share/gtk-doc/html/glibglib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a> otherwise</p>
-</div>
</div>
<hr>
<div class="refsect2">
@@ -1086,33 +550,6 @@
<pre class="programlisting"><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
gst_photography_set_scene_mode (<em class="parameter"><code><a class="link" href="gst-plugins-bad-libs-GstPhotography.html#GstPhotography" title="GstPhotography"><span class="type">GstPhotography</span></a> *photo</code></em>,
<em class="parameter"><code><a class="link" href="gst-plugins-bad-libs-GstPhotography.html#GstPhotographySceneMode" title="enum GstPhotographySceneMode"><span class="type">GstPhotographySceneMode</span></a> scene_mode</code></em>);</pre>
-<p>Set the scene mode for the <a href="/usr/share/gtk-doc/html/gstreamer-1.0GstElement.html#GstElement-struct"><span class="type">GstElement</span></a></p>
-<div class="refsect3">
-<a name="gst-photography-set-scene-mode.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="parameter_name"><p>photo</p></td>
-<td class="parameter_description"><p><a class="link" href="gst-plugins-bad-libs-GstPhotography.html#GstPhotography" title="GstPhotography"><span class="type">GstPhotography</span></a> interface of a <a href="/usr/share/gtk-doc/html/gstreamer-1.0GstElement.html#GstElement-struct"><span class="type">GstElement</span></a></p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>scene_mode</p></td>
-<td class="parameter_description"><p><a class="link" href="gst-plugins-bad-libs-GstPhotography.html#GstPhotographySceneMode" title="enum GstPhotographySceneMode"><span class="type">GstPhotographySceneMode</span></a> to set</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<div class="refsect3">
-<a name="gst-photography-set-scene-mode.returns"></a><h4>Returns</h4>
-<p> <a href="/usr/share/gtk-doc/html/glibglib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if setting the value succeeded, <a href="/usr/share/gtk-doc/html/glibglib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a> otherwise</p>
-</div>
</div>
<hr>
<div class="refsect2">
@@ -1120,33 +557,6 @@
<pre class="programlisting"><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
gst_photography_set_flash_mode (<em class="parameter"><code><a class="link" href="gst-plugins-bad-libs-GstPhotography.html#GstPhotography" title="GstPhotography"><span class="type">GstPhotography</span></a> *photo</code></em>,
<em class="parameter"><code><a class="link" href="gst-plugins-bad-libs-GstPhotography.html#GstPhotographyFlashMode" title="enum GstPhotographyFlashMode"><span class="type">GstPhotographyFlashMode</span></a> flash_mode</code></em>);</pre>
-<p>Set the flash mode for the <a href="/usr/share/gtk-doc/html/gstreamer-1.0GstElement.html#GstElement-struct"><span class="type">GstElement</span></a></p>
-<div class="refsect3">
-<a name="gst-photography-set-flash-mode.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="parameter_name"><p>photo</p></td>
-<td class="parameter_description"><p><a class="link" href="gst-plugins-bad-libs-GstPhotography.html#GstPhotography" title="GstPhotography"><span class="type">GstPhotography</span></a> interface of a <a href="/usr/share/gtk-doc/html/gstreamer-1.0GstElement.html#GstElement-struct"><span class="type">GstElement</span></a></p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>flash_mode</p></td>
-<td class="parameter_description"><p><a class="link" href="gst-plugins-bad-libs-GstPhotography.html#GstPhotographyFlashMode" title="enum GstPhotographyFlashMode"><span class="type">GstPhotographyFlashMode</span></a> to set</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<div class="refsect3">
-<a name="gst-photography-set-flash-mode.returns"></a><h4>Returns</h4>
-<p> <a href="/usr/share/gtk-doc/html/glibglib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if setting the value succeeded, <a href="/usr/share/gtk-doc/html/glibglib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a> otherwise</p>
-</div>
</div>
<hr>
<div class="refsect2">
@@ -1154,33 +564,6 @@
<pre class="programlisting"><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
gst_photography_set_flicker_mode (<em class="parameter"><code><a class="link" href="gst-plugins-bad-libs-GstPhotography.html#GstPhotography" title="GstPhotography"><span class="type">GstPhotography</span></a> *photo</code></em>,
<em class="parameter"><code><a class="link" href="gst-plugins-bad-libs-GstPhotography.html#GstPhotographyFlickerReductionMode" title="enum GstPhotographyFlickerReductionMode"><span class="type">GstPhotographyFlickerReductionMode</span></a> mode</code></em>);</pre>
-<p>Set the flicker mode value for the <a href="/usr/share/gtk-doc/html/gstreamer-1.0GstElement.html#GstElement-struct"><span class="type">GstElement</span></a>.</p>
-<div class="refsect3">
-<a name="gst-photography-set-flicker-mode.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="parameter_name"><p>photo</p></td>
-<td class="parameter_description"><p><a class="link" href="gst-plugins-bad-libs-GstPhotography.html#GstPhotography" title="GstPhotography"><span class="type">GstPhotography</span></a> interface of a <a href="/usr/share/gtk-doc/html/gstreamer-1.0GstElement.html#GstElement-struct"><span class="type">GstElement</span></a></p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>flicker_mode</p></td>
-<td class="parameter_description"><p>flicker mode value to set</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<div class="refsect3">
-<a name="gst-photography-set-flicker-mode.returns"></a><h4>Returns</h4>
-<p> <a href="/usr/share/gtk-doc/html/glibglib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if setting the value succeeded, <a href="/usr/share/gtk-doc/html/glibglib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a> otherwise</p>
-</div>
</div>
<hr>
<div class="refsect2">
@@ -1188,33 +571,6 @@
<pre class="programlisting"><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
gst_photography_set_focus_mode (<em class="parameter"><code><a class="link" href="gst-plugins-bad-libs-GstPhotography.html#GstPhotography" title="GstPhotography"><span class="type">GstPhotography</span></a> *photo</code></em>,
<em class="parameter"><code><a class="link" href="gst-plugins-bad-libs-GstPhotography.html#GstPhotographyFocusMode" title="enum GstPhotographyFocusMode"><span class="type">GstPhotographyFocusMode</span></a> mode</code></em>);</pre>
-<p>Set the focus mode value for the <a href="/usr/share/gtk-doc/html/gstreamer-1.0GstElement.html#GstElement-struct"><span class="type">GstElement</span></a>.</p>
-<div class="refsect3">
-<a name="gst-photography-set-focus-mode.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="parameter_name"><p>photo</p></td>
-<td class="parameter_description"><p><a class="link" href="gst-plugins-bad-libs-GstPhotography.html#GstPhotography" title="GstPhotography"><span class="type">GstPhotography</span></a> interface of a <a href="/usr/share/gtk-doc/html/gstreamer-1.0GstElement.html#GstElement-struct"><span class="type">GstElement</span></a></p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>focus_mode</p></td>
-<td class="parameter_description"><p>focus mode value to set</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<div class="refsect3">
-<a name="gst-photography-set-focus-mode.returns"></a><h4>Returns</h4>
-<p> <a href="/usr/share/gtk-doc/html/glibglib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if setting the value succeeded, <a href="/usr/share/gtk-doc/html/glibglib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a> otherwise</p>
-</div>
</div>
<hr>
<div class="refsect2">
@@ -1222,33 +578,6 @@
<pre class="programlisting"><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
gst_photography_set_noise_reduction (<em class="parameter"><code><a class="link" href="gst-plugins-bad-libs-GstPhotography.html#GstPhotography" title="GstPhotography"><span class="type">GstPhotography</span></a> *photo</code></em>,
<em class="parameter"><code><a class="link" href="gst-plugins-bad-libs-GstPhotography.html#GstPhotographyNoiseReduction" title="enum GstPhotographyNoiseReduction"><span class="type">GstPhotographyNoiseReduction</span></a> noise_reduction</code></em>);</pre>
-<p>Set the noise reduction mode for the <a href="/usr/share/gtk-doc/html/gstreamer-1.0GstElement.html#GstElement-struct"><span class="type">GstElement</span></a></p>
-<div class="refsect3">
-<a name="gst-photography-set-noise-reduction.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="parameter_name"><p>photo</p></td>
-<td class="parameter_description"><p><a class="link" href="gst-plugins-bad-libs-GstPhotography.html#GstPhotography" title="GstPhotography"><span class="type">GstPhotography</span></a> interface of a <a href="/usr/share/gtk-doc/html/gstreamer-1.0GstElement.html#GstElement-struct"><span class="type">GstElement</span></a></p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>noise_reduction</p></td>
-<td class="parameter_description"><p><span class="type">GstPhotographyNoiseReductionMode</span> to set</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<div class="refsect3">
-<a name="gst-photography-set-noise-reduction.returns"></a><h4>Returns</h4>
-<p> <a href="/usr/share/gtk-doc/html/glibglib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if setting the value succeeded, <a href="/usr/share/gtk-doc/html/glibglib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a> otherwise</p>
-</div>
</div>
<hr>
<div class="refsect2">
@@ -1256,61 +585,12 @@
<pre class="programlisting"><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
gst_photography_set_zoom (<em class="parameter"><code><a class="link" href="gst-plugins-bad-libs-GstPhotography.html#GstPhotography" title="GstPhotography"><span class="type">GstPhotography</span></a> *photo</code></em>,
<em class="parameter"><code><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gfloat"><span class="type">gfloat</span></a> zoom</code></em>);</pre>
-<p>Set the zoom value for the <a href="/usr/share/gtk-doc/html/gstreamer-1.0GstElement.html#GstElement-struct"><span class="type">GstElement</span></a>.
-E.g. 1.0 to get original image and 3.0 for 3x zoom and so on.</p>
-<div class="refsect3">
-<a name="gst-photography-set-zoom.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="parameter_name"><p>photo</p></td>
-<td class="parameter_description"><p><a class="link" href="gst-plugins-bad-libs-GstPhotography.html#GstPhotography" title="GstPhotography"><span class="type">GstPhotography</span></a> interface of a <a href="/usr/share/gtk-doc/html/gstreamer-1.0GstElement.html#GstElement-struct"><span class="type">GstElement</span></a></p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>zoom</p></td>
-<td class="parameter_description"><p>zoom value to set</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<div class="refsect3">
-<a name="gst-photography-set-zoom.returns"></a><h4>Returns</h4>
-<p> <a href="/usr/share/gtk-doc/html/glibglib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if setting the value succeeded, <a href="/usr/share/gtk-doc/html/glibglib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a> otherwise</p>
-</div>
</div>
<hr>
<div class="refsect2">
<a name="gst-photography-get-capabilities"></a><h3>gst_photography_get_capabilities ()</h3>
<pre class="programlisting"><a class="link" href="gst-plugins-bad-libs-GstPhotography.html#GstPhotographyCaps" title="enum GstPhotographyCaps"><span class="returnvalue">GstPhotographyCaps</span></a>
gst_photography_get_capabilities (<em class="parameter"><code><a class="link" href="gst-plugins-bad-libs-GstPhotography.html#GstPhotography" title="GstPhotography"><span class="type">GstPhotography</span></a> *photo</code></em>);</pre>
-<p>Get <a class="link" href="gst-plugins-bad-libs-GstPhotography.html#GstPhotographyCaps" title="enum GstPhotographyCaps"><span class="type">GstPhotographyCaps</span></a> bitmask value that indicates what photography
-interface features the <a href="/usr/share/gtk-doc/html/gstreamer-1.0GstElement.html#GstElement-struct"><span class="type">GstElement</span></a> supports</p>
-<div class="refsect3">
-<a name="gst-photography-get-capabilities.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody><tr>
-<td class="parameter_name"><p>photo</p></td>
-<td class="parameter_description"><p><a class="link" href="gst-plugins-bad-libs-GstPhotography.html#GstPhotography" title="GstPhotography"><span class="type">GstPhotography</span></a> interface of a <a href="/usr/share/gtk-doc/html/gstreamer-1.0GstElement.html#GstElement-struct"><span class="type">GstElement</span></a></p></td>
-<td class="parameter_annotations"> </td>
-</tr></tbody>
-</table></div>
-</div>
-<div class="refsect3">
-<a name="gst-photography-get-capabilities.returns"></a><h4>Returns</h4>
-<p> <a class="link" href="gst-plugins-bad-libs-GstPhotography.html#GstPhotographyCaps" title="enum GstPhotographyCaps"><span class="type">GstPhotographyCaps</span></a> value</p>
-</div>
</div>
<hr>
<div class="refsect2">
@@ -1320,47 +600,6 @@
<em class="parameter"><code><a class="link" href="gst-plugins-bad-libs-GstPhotography.html#GstPhotographyCapturePrepared" title="GstPhotographyCapturePrepared ()"><span class="type">GstPhotographyCapturePrepared</span></a> func</code></em>,
<em class="parameter"><code><a href="/usr/share/gtk-doc/html/gstreamer-1.0GstCaps.html#GstCaps-struct"><span class="type">GstCaps</span></a> *capture_caps</code></em>,
<em class="parameter"><code><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a> user_data</code></em>);</pre>
-<p>Start preparations for capture. Preparations can take indeterminate
-amount of time and <em class="parameter"><code>func</code></em>
- callback is called after preparations are
-done. Image capture will begin after callback returns.</p>
-<div class="refsect3">
-<a name="gst-photography-prepare-for-capture.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="parameter_name"><p>photo</p></td>
-<td class="parameter_description"><p><a class="link" href="gst-plugins-bad-libs-GstPhotography.html#GstPhotography" title="GstPhotography"><span class="type">GstPhotography</span></a> interface of a <a href="/usr/share/gtk-doc/html/gstreamer-1.0GstElement.html#GstElement-struct"><span class="type">GstElement</span></a></p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>func</p></td>
-<td class="parameter_description"><p>callback that is called after capturing has been prepared</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>capture_caps</p></td>
-<td class="parameter_description"><p><a href="/usr/share/gtk-doc/html/gstreamer-1.0GstCaps.html#GstCaps-struct"><span class="type">GstCaps</span></a> defining the desired format of the captured image</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>user_data</p></td>
-<td class="parameter_description"><p>user data that will be passed to the callback <em class="parameter"><code>func</code></em>
-</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<div class="refsect3">
-<a name="gst-photography-prepare-for-capture.returns"></a><h4>Returns</h4>
-<p> <a href="/usr/share/gtk-doc/html/glibglib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if preparations were started (caps were OK), otherwise <a href="/usr/share/gtk-doc/html/glibglib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a>.</p>
-</div>
</div>
<hr>
<div class="refsect2">
@@ -1368,30 +607,6 @@
<pre class="programlisting"><span class="returnvalue">void</span>
gst_photography_set_autofocus (<em class="parameter"><code><a class="link" href="gst-plugins-bad-libs-GstPhotography.html#GstPhotography" title="GstPhotography"><span class="type">GstPhotography</span></a> *photo</code></em>,
<em class="parameter"><code><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a> on</code></em>);</pre>
-<p>Start or stop autofocusing. <a class="link" href="gst-plugins-bad-libs-GstPhotography.html#GST-PHOTOGRAPHY-AUTOFOCUS-DONE:CAPS" title="GST_PHOTOGRAPHY_AUTOFOCUS_DONE"><code class="literal">GST_PHOTOGRAPHY_AUTOFOCUS_DONE</code></a>
-message is posted to bus when autofocusing has finished.</p>
-<div class="refsect3">
-<a name="gst-photography-set-autofocus.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="parameter_name"><p>photo</p></td>
-<td class="parameter_description"><p><a class="link" href="gst-plugins-bad-libs-GstPhotography.html#GstPhotography" title="GstPhotography"><span class="type">GstPhotography</span></a> interface of a <a href="/usr/share/gtk-doc/html/gstreamer-1.0GstElement.html#GstElement-struct"><span class="type">GstElement</span></a></p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>on</p></td>
-<td class="parameter_description"><p><a href="/usr/share/gtk-doc/html/glibglib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> to start autofocusing, <a href="/usr/share/gtk-doc/html/glibglib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a> to stop autofocusing</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-</tbody>
-</table></div>
-</div>
</div>
<hr>
<div class="refsect2">
@@ -1399,33 +614,6 @@
<pre class="programlisting"><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
gst_photography_set_config (<em class="parameter"><code><a class="link" href="gst-plugins-bad-libs-GstPhotography.html#GstPhotography" title="GstPhotography"><span class="type">GstPhotography</span></a> *photo</code></em>,
<em class="parameter"><code><span class="type">GstPhotographySettings</span> *config</code></em>);</pre>
-<p>Set all configuration settings at once.</p>
-<div class="refsect3">
-<a name="gst-photography-set-config.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="parameter_name"><p>photo</p></td>
-<td class="parameter_description"><p><a class="link" href="gst-plugins-bad-libs-GstPhotography.html#GstPhotography" title="GstPhotography"><span class="type">GstPhotography</span></a> interface of a <a href="/usr/share/gtk-doc/html/gstreamer-1.0GstElement.html#GstElement-struct"><span class="type">GstElement</span></a></p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>config</p></td>
-<td class="parameter_description"><p><span class="type">GstPhotographySettings</span> containg the configuration</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<div class="refsect3">
-<a name="gst-photography-set-config.returns"></a><h4>Returns</h4>
-<p> TRUE if configuration was set successfully, otherwise FALSE.</p>
-</div>
</div>
<hr>
<div class="refsect2">
@@ -1433,33 +621,6 @@
<pre class="programlisting"><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
gst_photography_get_config (<em class="parameter"><code><a class="link" href="gst-plugins-bad-libs-GstPhotography.html#GstPhotography" title="GstPhotography"><span class="type">GstPhotography</span></a> *photo</code></em>,
<em class="parameter"><code><span class="type">GstPhotographySettings</span> *config</code></em>);</pre>
-<p>Get all configuration settings at once.</p>
-<div class="refsect3">
-<a name="gst-photography-get-config.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="parameter_name"><p>photo</p></td>
-<td class="parameter_description"><p><a class="link" href="gst-plugins-bad-libs-GstPhotography.html#GstPhotography" title="GstPhotography"><span class="type">GstPhotography</span></a> interface of a <a href="/usr/share/gtk-doc/html/gstreamer-1.0GstElement.html#GstElement-struct"><span class="type">GstElement</span></a></p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>config</p></td>
-<td class="parameter_description"><p><span class="type">GstPhotographySettings</span> containg the configuration</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<div class="refsect3">
-<a name="gst-photography-get-config.returns"></a><h4>Returns</h4>
-<p> TRUE if configuration was got successfully, otherwise FALSE.</p>
-</div>
</div>
</div>
<div class="refsect1">
@@ -1467,12 +628,10 @@
<div class="refsect2">
<a name="GstPhotography"></a><h3>GstPhotography</h3>
<pre class="programlisting">typedef struct _GstPhotography GstPhotography;</pre>
-<p>Opaque <a class="link" href="gst-plugins-bad-libs-GstPhotography.html#GstPhotography" title="GstPhotography"><span class="type">GstPhotography</span></a> data structure.</p>
</div>
<hr>
<div class="refsect2">
<a name="GstPhotographyNoiseReduction"></a><h3>enum GstPhotographyNoiseReduction</h3>
-<p>Noise Reduction features of a photography capture or filter element.</p>
<div class="refsect3">
<a name="GstPhotographyNoiseReduction.members"></a><h4>Members</h4>
<div class="informaltable"><table class="informaltable" width="100%" border="0">
@@ -1484,45 +643,28 @@
<tbody>
<tr>
<td class="enum_member_name"><p><a name="GST-PHOTOGRAPHY-NOISE-REDUCTION-BAYER:CAPS"></a>GST_PHOTOGRAPHY_NOISE_REDUCTION_BAYER</p></td>
-<td class="enum_member_description">
-<p>Adaptive noise reduction on Bayer
-format</p>
-</td>
-<td class="enum_member_annotations"> </td>
+<td> </td>
+<td> </td>
</tr>
<tr>
<td class="enum_member_name"><p><a name="GST-PHOTOGRAPHY-NOISE-REDUCTION-YCC:CAPS"></a>GST_PHOTOGRAPHY_NOISE_REDUCTION_YCC</p></td>
-<td class="enum_member_description">
-<p>reduces the noise on Y and 2-chroma
-images.</p>
-</td>
-<td class="enum_member_annotations"> </td>
+<td> </td>
+<td> </td>
</tr>
<tr>
<td class="enum_member_name"><p><a name="GST-PHOTOGRAPHY-NOISE-REDUCTION-TEMPORAL:CAPS"></a>GST_PHOTOGRAPHY_NOISE_REDUCTION_TEMPORAL</p></td>
-<td class="enum_member_description">
-<p>Multi-frame adaptive NR,
-provided for the video mode</p>
-</td>
-<td class="enum_member_annotations"> </td>
+<td> </td>
+<td> </td>
</tr>
<tr>
<td class="enum_member_name"><p><a name="GST-PHOTOGRAPHY-NOISE-REDUCTION-FIXED:CAPS"></a>GST_PHOTOGRAPHY_NOISE_REDUCTION_FIXED</p></td>
-<td class="enum_member_description">
-<p>Fixed Pattern Noise refers to noise
-that does not change between frames. The noise is removed from the sensor
-image, by subtracting a previously-captured black image in memory.</p>
-</td>
-<td class="enum_member_annotations"> </td>
+<td> </td>
+<td> </td>
</tr>
<tr>
<td class="enum_member_name"><p><a name="GST-PHOTOGRAPHY-NOISE-REDUCTION-EXTRA:CAPS"></a>GST_PHOTOGRAPHY_NOISE_REDUCTION_EXTRA</p></td>
-<td class="enum_member_description">
-<p>Extra Noise Reduction. In the case
-of high-ISO capturing, some noise remains after YCC NR. XNR reduces this
-remaining noise.</p>
-</td>
-<td class="enum_member_annotations"> </td>
+<td> </td>
+<td> </td>
</tr>
</tbody>
</table></div>
@@ -1531,7 +673,6 @@
<hr>
<div class="refsect2">
<a name="GstPhotographyWhiteBalanceMode"></a><h3>enum GstPhotographyWhiteBalanceMode</h3>
-<p>Modes for white balance control.</p>
<div class="refsect3">
<a name="GstPhotographyWhiteBalanceMode.members"></a><h4>Members</h4>
<div class="informaltable"><table class="informaltable" width="100%" border="0">
@@ -1543,67 +684,48 @@
<tbody>
<tr>
<td class="enum_member_name"><p><a name="GST-PHOTOGRAPHY-WB-MODE-AUTO:CAPS"></a>GST_PHOTOGRAPHY_WB_MODE_AUTO</p></td>
-<td class="enum_member_description">
-<p>Choose white balance mode automatically</p>
-</td>
-<td class="enum_member_annotations"> </td>
+<td> </td>
+<td> </td>
</tr>
<tr>
<td class="enum_member_name"><p><a name="GST-PHOTOGRAPHY-WB-MODE-DAYLIGHT:CAPS"></a>GST_PHOTOGRAPHY_WB_MODE_DAYLIGHT</p></td>
-<td class="enum_member_description">
-<p>Mode for daylight conditions</p>
-</td>
-<td class="enum_member_annotations"> </td>
+<td> </td>
+<td> </td>
</tr>
<tr>
<td class="enum_member_name"><p><a name="GST-PHOTOGRAPHY-WB-MODE-CLOUDY:CAPS"></a>GST_PHOTOGRAPHY_WB_MODE_CLOUDY</p></td>
-<td class="enum_member_description">
-<p>Mode for cloudy conditions</p>
-</td>
-<td class="enum_member_annotations"> </td>
+<td> </td>
+<td> </td>
</tr>
<tr>
<td class="enum_member_name"><p><a name="GST-PHOTOGRAPHY-WB-MODE-SUNSET:CAPS"></a>GST_PHOTOGRAPHY_WB_MODE_SUNSET</p></td>
-<td class="enum_member_description">
-<p>Mode for sunset conditions</p>
-</td>
-<td class="enum_member_annotations"> </td>
+<td> </td>
+<td> </td>
</tr>
<tr>
<td class="enum_member_name"><p><a name="GST-PHOTOGRAPHY-WB-MODE-TUNGSTEN:CAPS"></a>GST_PHOTOGRAPHY_WB_MODE_TUNGSTEN</p></td>
-<td class="enum_member_description">
-<p>Mode for tungsten lighting</p>
-</td>
-<td class="enum_member_annotations"> </td>
+<td> </td>
+<td> </td>
</tr>
<tr>
<td class="enum_member_name"><p><a name="GST-PHOTOGRAPHY-WB-MODE-FLUORESCENT:CAPS"></a>GST_PHOTOGRAPHY_WB_MODE_FLUORESCENT</p></td>
-<td class="enum_member_description">
-<p>Mode for fluorescent lighting</p>
-</td>
-<td class="enum_member_annotations"> </td>
+<td> </td>
+<td> </td>
</tr>
<tr>
<td class="enum_member_name"><p><a name="GST-PHOTOGRAPHY-WB-MODE-MANUAL:CAPS"></a>GST_PHOTOGRAPHY_WB_MODE_MANUAL</p></td>
-<td class="enum_member_description">
-<p>Disable automatic white balance adjustment
-and keep current values.</p>
-</td>
-<td class="enum_member_annotations"> </td>
+<td> </td>
+<td> </td>
</tr>
<tr>
<td class="enum_member_name"><p><a name="GST-PHOTOGRAPHY-WB-MODE-WARM-FLUORESCENT:CAPS"></a>GST_PHOTOGRAPHY_WB_MODE_WARM_FLUORESCENT</p></td>
-<td class="enum_member_description">
-<p>Mode for warm fluorescent lighting (Since 1.2)</p>
-</td>
-<td class="enum_member_annotations"> </td>
+<td> </td>
+<td> </td>
</tr>
<tr>
<td class="enum_member_name"><p><a name="GST-PHOTOGRAPHY-WB-MODE-SHADE:CAPS"></a>GST_PHOTOGRAPHY_WB_MODE_SHADE</p></td>
-<td class="enum_member_description">
-<p>Mode for shade lighting (Since 1.2)</p>
-</td>
-<td class="enum_member_annotations"> </td>
+<td> </td>
+<td> </td>
</tr>
</tbody>
</table></div>
@@ -1612,7 +734,6 @@
<hr>
<div class="refsect2">
<a name="GstPhotographyColorToneMode"></a><h3>enum GstPhotographyColorToneMode</h3>
-<p>Modes for special color effects.</p>
<div class="refsect3">
<a name="GstPhotographyColorToneMode.members"></a><h4>Members</h4>
<div class="informaltable"><table class="informaltable" width="100%" border="0">
@@ -1624,115 +745,83 @@
<tbody>
<tr>
<td class="enum_member_name"><p><a name="GST-PHOTOGRAPHY-COLOR-TONE-MODE-NORMAL:CAPS"></a>GST_PHOTOGRAPHY_COLOR_TONE_MODE_NORMAL</p></td>
-<td class="enum_member_description">
-<p>No effects</p>
-</td>
-<td class="enum_member_annotations"> </td>
+<td> </td>
+<td> </td>
</tr>
<tr>
<td class="enum_member_name"><p><a name="GST-PHOTOGRAPHY-COLOR-TONE-MODE-SEPIA:CAPS"></a>GST_PHOTOGRAPHY_COLOR_TONE_MODE_SEPIA</p></td>
-<td class="enum_member_description">
-<p>Sepia</p>
-</td>
-<td class="enum_member_annotations"> </td>
+<td> </td>
+<td> </td>
</tr>
<tr>
<td class="enum_member_name"><p><a name="GST-PHOTOGRAPHY-COLOR-TONE-MODE-NEGATIVE:CAPS"></a>GST_PHOTOGRAPHY_COLOR_TONE_MODE_NEGATIVE</p></td>
-<td class="enum_member_description">
-<p>Negative</p>
-</td>
-<td class="enum_member_annotations"> </td>
+<td> </td>
+<td> </td>
</tr>
<tr>
<td class="enum_member_name"><p><a name="GST-PHOTOGRAPHY-COLOR-TONE-MODE-GRAYSCALE:CAPS"></a>GST_PHOTOGRAPHY_COLOR_TONE_MODE_GRAYSCALE</p></td>
-<td class="enum_member_description">
-<p>Grayscale</p>
-</td>
-<td class="enum_member_annotations"> </td>
+<td> </td>
+<td> </td>
</tr>
<tr>
<td class="enum_member_name"><p><a name="GST-PHOTOGRAPHY-COLOR-TONE-MODE-NATURAL:CAPS"></a>GST_PHOTOGRAPHY_COLOR_TONE_MODE_NATURAL</p></td>
-<td class="enum_member_description">
-<p>Natural</p>
-</td>
-<td class="enum_member_annotations"> </td>
+<td> </td>
+<td> </td>
</tr>
<tr>
<td class="enum_member_name"><p><a name="GST-PHOTOGRAPHY-COLOR-TONE-MODE-VIVID:CAPS"></a>GST_PHOTOGRAPHY_COLOR_TONE_MODE_VIVID</p></td>
-<td class="enum_member_description">
-<p>Vivid</p>
-</td>
-<td class="enum_member_annotations"> </td>
+<td> </td>
+<td> </td>
</tr>
<tr>
<td class="enum_member_name"><p><a name="GST-PHOTOGRAPHY-COLOR-TONE-MODE-COLORSWAP:CAPS"></a>GST_PHOTOGRAPHY_COLOR_TONE_MODE_COLORSWAP</p></td>
-<td class="enum_member_description">
-<p>Colorswap</p>
-</td>
-<td class="enum_member_annotations"> </td>
+<td> </td>
+<td> </td>
</tr>
<tr>
<td class="enum_member_name"><p><a name="GST-PHOTOGRAPHY-COLOR-TONE-MODE-SOLARIZE:CAPS"></a>GST_PHOTOGRAPHY_COLOR_TONE_MODE_SOLARIZE</p></td>
-<td class="enum_member_description">
-<p>Solarize</p>
-</td>
-<td class="enum_member_annotations"> </td>
+<td> </td>
+<td> </td>
</tr>
<tr>
<td class="enum_member_name"><p><a name="GST-PHOTOGRAPHY-COLOR-TONE-MODE-OUT-OF-FOCUS:CAPS"></a>GST_PHOTOGRAPHY_COLOR_TONE_MODE_OUT_OF_FOCUS</p></td>
-<td class="enum_member_description">
-<p>Out of focus</p>
-</td>
-<td class="enum_member_annotations"> </td>
+<td> </td>
+<td> </td>
</tr>
<tr>
<td class="enum_member_name"><p><a name="GST-PHOTOGRAPHY-COLOR-TONE-MODE-SKY-BLUE:CAPS"></a>GST_PHOTOGRAPHY_COLOR_TONE_MODE_SKY_BLUE</p></td>
-<td class="enum_member_description">
-<p>Sky blue</p>
-</td>
-<td class="enum_member_annotations"> </td>
+<td> </td>
+<td> </td>
</tr>
<tr>
<td class="enum_member_name"><p><a name="GST-PHOTOGRAPHY-COLOR-TONE-MODE-GRASS-GREEN:CAPS"></a>GST_PHOTOGRAPHY_COLOR_TONE_MODE_GRASS_GREEN</p></td>
-<td class="enum_member_description">
-<p>Grass green</p>
-</td>
-<td class="enum_member_annotations"> </td>
+<td> </td>
+<td> </td>
</tr>
<tr>
<td class="enum_member_name"><p><a name="GST-PHOTOGRAPHY-COLOR-TONE-MODE-SKIN-WHITEN:CAPS"></a>GST_PHOTOGRAPHY_COLOR_TONE_MODE_SKIN_WHITEN</p></td>
-<td class="enum_member_description">
-<p>Skin whiten</p>
-</td>
-<td class="enum_member_annotations"> </td>
+<td> </td>
+<td> </td>
</tr>
<tr>
<td class="enum_member_name"><p><a name="GST-PHOTOGRAPHY-COLOR-TONE-MODE-POSTERIZE:CAPS"></a>GST_PHOTOGRAPHY_COLOR_TONE_MODE_POSTERIZE</p></td>
-<td class="enum_member_description">
-<p>Posterize (Since 1.2)</p>
-</td>
-<td class="enum_member_annotations"> </td>
+<td> </td>
+<td> </td>
</tr>
<tr>
<td class="enum_member_name"><p><a name="GST-PHOTOGRAPHY-COLOR-TONE-MODE-WHITEBOARD:CAPS"></a>GST_PHOTOGRAPHY_COLOR_TONE_MODE_WHITEBOARD</p></td>
-<td class="enum_member_description">
-<p>Whiteboard (Since 1.2)</p>
-</td>
-<td class="enum_member_annotations"> </td>
+<td> </td>
+<td> </td>
</tr>
<tr>
<td class="enum_member_name"><p><a name="GST-PHOTOGRAPHY-COLOR-TONE-MODE-BLACKBOARD:CAPS"></a>GST_PHOTOGRAPHY_COLOR_TONE_MODE_BLACKBOARD</p></td>
-<td class="enum_member_description">
-<p>Blackboard (Since 1.2)</p>
-</td>
-<td class="enum_member_annotations"> </td>
+<td> </td>
+<td> </td>
</tr>
<tr>
<td class="enum_member_name"><p><a name="GST-PHOTOGRAPHY-COLOR-TONE-MODE-AQUA:CAPS"></a>GST_PHOTOGRAPHY_COLOR_TONE_MODE_AQUA</p></td>
-<td class="enum_member_description">
-<p>Aqua (Since 1.2)</p>
-</td>
-<td class="enum_member_annotations"> </td>
+<td> </td>
+<td> </td>
</tr>
</tbody>
</table></div>
@@ -1741,8 +830,6 @@
<hr>
<div class="refsect2">
<a name="GstPhotographySceneMode"></a><h3>enum GstPhotographySceneMode</h3>
-<p>Each mode contains preset <a class="link" href="gst-plugins-bad-libs-GstPhotography.html#GstPhotography" title="GstPhotography"><span class="type">GstPhotography</span></a> options in order to produce
-good capturing result in certain scene.</p>
<div class="refsect3">
<a name="GstPhotographySceneMode.members"></a><h4>Members</h4>
<div class="informaltable"><table class="informaltable" width="100%" border="0">
@@ -1754,135 +841,93 @@
<tbody>
<tr>
<td class="enum_member_name"><p><a name="GST-PHOTOGRAPHY-SCENE-MODE-MANUAL:CAPS"></a>GST_PHOTOGRAPHY_SCENE_MODE_MANUAL</p></td>
-<td class="enum_member_description">
-<p>Set individual options manually</p>
-</td>
-<td class="enum_member_annotations"> </td>
+<td> </td>
+<td> </td>
</tr>
<tr>
<td class="enum_member_name"><p><a name="GST-PHOTOGRAPHY-SCENE-MODE-CLOSEUP:CAPS"></a>GST_PHOTOGRAPHY_SCENE_MODE_CLOSEUP</p></td>
-<td class="enum_member_description">
-<p>Mode for close objects</p>
-</td>
-<td class="enum_member_annotations"> </td>
+<td> </td>
+<td> </td>
</tr>
<tr>
<td class="enum_member_name"><p><a name="GST-PHOTOGRAPHY-SCENE-MODE-PORTRAIT:CAPS"></a>GST_PHOTOGRAPHY_SCENE_MODE_PORTRAIT</p></td>
-<td class="enum_member_description">
-<p>Mode for portraits</p>
-</td>
-<td class="enum_member_annotations"> </td>
+<td> </td>
+<td> </td>
</tr>
<tr>
<td class="enum_member_name"><p><a name="GST-PHOTOGRAPHY-SCENE-MODE-LANDSCAPE:CAPS"></a>GST_PHOTOGRAPHY_SCENE_MODE_LANDSCAPE</p></td>
-<td class="enum_member_description">
-<p>Mode for landscapes</p>
-</td>
-<td class="enum_member_annotations"> </td>
+<td> </td>
+<td> </td>
</tr>
<tr>
<td class="enum_member_name"><p><a name="GST-PHOTOGRAPHY-SCENE-MODE-SPORT:CAPS"></a>GST_PHOTOGRAPHY_SCENE_MODE_SPORT</p></td>
-<td class="enum_member_description">
-<p>Mode for scene with fast motion</p>
-</td>
-<td class="enum_member_annotations"> </td>
+<td> </td>
+<td> </td>
</tr>
<tr>
<td class="enum_member_name"><p><a name="GST-PHOTOGRAPHY-SCENE-MODE-NIGHT:CAPS"></a>GST_PHOTOGRAPHY_SCENE_MODE_NIGHT</p></td>
-<td class="enum_member_description">
-<p>Mode for night conditions</p>
-</td>
-<td class="enum_member_annotations"> </td>
+<td> </td>
+<td> </td>
</tr>
<tr>
<td class="enum_member_name"><p><a name="GST-PHOTOGRAPHY-SCENE-MODE-AUTO:CAPS"></a>GST_PHOTOGRAPHY_SCENE_MODE_AUTO</p></td>
-<td class="enum_member_description">
-<p>Choose scene mode automatically</p>
-</td>
-<td class="enum_member_annotations"> </td>
+<td> </td>
+<td> </td>
</tr>
<tr>
<td class="enum_member_name"><p><a name="GST-PHOTOGRAPHY-SCENE-MODE-ACTION:CAPS"></a>GST_PHOTOGRAPHY_SCENE_MODE_ACTION</p></td>
-<td class="enum_member_description">
-<p>Take photos of fast moving
- objects (Since 1.2)</p>
-</td>
-<td class="enum_member_annotations"> </td>
+<td> </td>
+<td> </td>
</tr>
<tr>
<td class="enum_member_name"><p><a name="GST-PHOTOGRAPHY-SCENE-MODE-NIGHT-PORTRAIT:CAPS"></a>GST_PHOTOGRAPHY_SCENE_MODE_NIGHT_PORTRAIT</p></td>
-<td class="enum_member_description">
-<p>Take people pictures
- at night (Since 1.2)</p>
-</td>
-<td class="enum_member_annotations"> </td>
+<td> </td>
+<td> </td>
</tr>
<tr>
<td class="enum_member_name"><p><a name="GST-PHOTOGRAPHY-SCENE-MODE-THEATRE:CAPS"></a>GST_PHOTOGRAPHY_SCENE_MODE_THEATRE</p></td>
-<td class="enum_member_description">
-<p>Take photos in a theater (Since 1.2)</p>
-</td>
-<td class="enum_member_annotations"> </td>
+<td> </td>
+<td> </td>
</tr>
<tr>
<td class="enum_member_name"><p><a name="GST-PHOTOGRAPHY-SCENE-MODE-BEACH:CAPS"></a>GST_PHOTOGRAPHY_SCENE_MODE_BEACH</p></td>
-<td class="enum_member_description">
-<p>Take pictures on the beach (Since 1.2)</p>
-</td>
-<td class="enum_member_annotations"> </td>
+<td> </td>
+<td> </td>
</tr>
<tr>
<td class="enum_member_name"><p><a name="GST-PHOTOGRAPHY-SCENE-MODE-SNOW:CAPS"></a>GST_PHOTOGRAPHY_SCENE_MODE_SNOW</p></td>
-<td class="enum_member_description">
-<p>Take pictures on the snow (Since 1.2)</p>
-</td>
-<td class="enum_member_annotations"> </td>
+<td> </td>
+<td> </td>
</tr>
<tr>
<td class="enum_member_name"><p><a name="GST-PHOTOGRAPHY-SCENE-MODE-SUNSET:CAPS"></a>GST_PHOTOGRAPHY_SCENE_MODE_SUNSET</p></td>
-<td class="enum_member_description">
-<p>Take sunset photos (Since 1.2)</p>
-</td>
-<td class="enum_member_annotations"> </td>
+<td> </td>
+<td> </td>
</tr>
<tr>
<td class="enum_member_name"><p><a name="GST-PHOTOGRAPHY-SCENE-MODE-STEADY-PHOTO:CAPS"></a>GST_PHOTOGRAPHY_SCENE_MODE_STEADY_PHOTO</p></td>
-<td class="enum_member_description">
-<p>Avoid blurry pictures
- (for example, due to hand shake) (Since 1.2)</p>
-</td>
-<td class="enum_member_annotations"> </td>
+<td> </td>
+<td> </td>
</tr>
<tr>
<td class="enum_member_name"><p><a name="GST-PHOTOGRAPHY-SCENE-MODE-FIREWORKS:CAPS"></a>GST_PHOTOGRAPHY_SCENE_MODE_FIREWORKS</p></td>
-<td class="enum_member_description">
-<p>For shooting firework
- displays (Since 1.2)</p>
-</td>
-<td class="enum_member_annotations"> </td>
+<td> </td>
+<td> </td>
</tr>
<tr>
<td class="enum_member_name"><p><a name="GST-PHOTOGRAPHY-SCENE-MODE-PARTY:CAPS"></a>GST_PHOTOGRAPHY_SCENE_MODE_PARTY</p></td>
-<td class="enum_member_description">
-<p>Take indoor low-light shot (Since 1.2)</p>
-</td>
-<td class="enum_member_annotations"> </td>
+<td> </td>
+<td> </td>
</tr>
<tr>
<td class="enum_member_name"><p><a name="GST-PHOTOGRAPHY-SCENE-MODE-CANDLELIGHT:CAPS"></a>GST_PHOTOGRAPHY_SCENE_MODE_CANDLELIGHT</p></td>
-<td class="enum_member_description">
-<p>Capture the naturally warm color
- of scenes lit by candles (Since 1.2)</p>
-</td>
-<td class="enum_member_annotations"> </td>
+<td> </td>
+<td> </td>
</tr>
<tr>
<td class="enum_member_name"><p><a name="GST-PHOTOGRAPHY-SCENE-MODE-BARCODE:CAPS"></a>GST_PHOTOGRAPHY_SCENE_MODE_BARCODE</p></td>
-<td class="enum_member_description">
-<p>Applications are looking for
- a barcode (Since 1.2)</p>
-</td>
-<td class="enum_member_annotations"> </td>
+<td> </td>
+<td> </td>
</tr>
</tbody>
</table></div>
@@ -1891,7 +936,6 @@
<hr>
<div class="refsect2">
<a name="GstPhotographyFlashMode"></a><h3>enum GstPhotographyFlashMode</h3>
-<p>Modes for flash control.</p>
<div class="refsect3">
<a name="GstPhotographyFlashMode.members"></a><h4>Members</h4>
<div class="informaltable"><table class="informaltable" width="100%" border="0">
@@ -1903,40 +947,28 @@
<tbody>
<tr>
<td class="enum_member_name"><p><a name="GST-PHOTOGRAPHY-FLASH-MODE-AUTO:CAPS"></a>GST_PHOTOGRAPHY_FLASH_MODE_AUTO</p></td>
-<td class="enum_member_description">
-<p>Fire flash automatically according to
-lighting conditions.</p>
-</td>
-<td class="enum_member_annotations"> </td>
+<td> </td>
+<td> </td>
</tr>
<tr>
<td class="enum_member_name"><p><a name="GST-PHOTOGRAPHY-FLASH-MODE-OFF:CAPS"></a>GST_PHOTOGRAPHY_FLASH_MODE_OFF</p></td>
-<td class="enum_member_description">
-<p>Never fire flash</p>
-</td>
-<td class="enum_member_annotations"> </td>
+<td> </td>
+<td> </td>
</tr>
<tr>
<td class="enum_member_name"><p><a name="GST-PHOTOGRAPHY-FLASH-MODE-ON:CAPS"></a>GST_PHOTOGRAPHY_FLASH_MODE_ON</p></td>
-<td class="enum_member_description">
-<p>Always fire flash</p>
-</td>
-<td class="enum_member_annotations"> </td>
+<td> </td>
+<td> </td>
</tr>
<tr>
<td class="enum_member_name"><p><a name="GST-PHOTOGRAPHY-FLASH-MODE-FILL-IN:CAPS"></a>GST_PHOTOGRAPHY_FLASH_MODE_FILL_IN</p></td>
-<td class="enum_member_description">
-<p>Fill in flash</p>
-</td>
-<td class="enum_member_annotations"> </td>
+<td> </td>
+<td> </td>
</tr>
<tr>
<td class="enum_member_name"><p><a name="GST-PHOTOGRAPHY-FLASH-MODE-RED-EYE:CAPS"></a>GST_PHOTOGRAPHY_FLASH_MODE_RED_EYE</p></td>
-<td class="enum_member_description">
-<p>Flash mode for reducing chance of
-capturing red eyes</p>
-</td>
-<td class="enum_member_annotations"> </td>
+<td> </td>
+<td> </td>
</tr>
</tbody>
</table></div>
@@ -1945,7 +977,6 @@
<hr>
<div class="refsect2">
<a name="GstPhotographyFlickerReductionMode"></a><h3>enum GstPhotographyFlickerReductionMode</h3>
-<p>Reduce flicker in video caused by light source fluctuation.</p>
<div class="refsect3">
<a name="GstPhotographyFlickerReductionMode.members"></a><h4>Members</h4>
<div class="informaltable"><table class="informaltable" width="100%" border="0">
@@ -1957,31 +988,23 @@
<tbody>
<tr>
<td class="enum_member_name"><p><a name="GST-PHOTOGRAPHY-FLICKER-REDUCTION-OFF:CAPS"></a>GST_PHOTOGRAPHY_FLICKER_REDUCTION_OFF</p></td>
-<td class="enum_member_description">
-<p>Disable flicker reduction</p>
-</td>
-<td class="enum_member_annotations"> </td>
+<td> </td>
+<td> </td>
</tr>
<tr>
<td class="enum_member_name"><p><a name="GST-PHOTOGRAPHY-FLICKER-REDUCTION-50HZ:CAPS"></a>GST_PHOTOGRAPHY_FLICKER_REDUCTION_50HZ</p></td>
-<td class="enum_member_description">
-<p>50Hz flicker reduction</p>
-</td>
-<td class="enum_member_annotations"> </td>
+<td> </td>
+<td> </td>
</tr>
<tr>
<td class="enum_member_name"><p><a name="GST-PHOTOGRAPHY-FLICKER-REDUCTION-60HZ:CAPS"></a>GST_PHOTOGRAPHY_FLICKER_REDUCTION_60HZ</p></td>
-<td class="enum_member_description">
-<p>60Hz flicker reduction</p>
-</td>
-<td class="enum_member_annotations"> </td>
+<td> </td>
+<td> </td>
</tr>
<tr>
<td class="enum_member_name"><p><a name="GST-PHOTOGRAPHY-FLICKER-REDUCTION-AUTO:CAPS"></a>GST_PHOTOGRAPHY_FLICKER_REDUCTION_AUTO</p></td>
-<td class="enum_member_description">
-<p>Choose mode automatically</p>
-</td>
-<td class="enum_member_annotations"> </td>
+<td> </td>
+<td> </td>
</tr>
</tbody>
</table></div>
@@ -1990,7 +1013,6 @@
<hr>
<div class="refsect2">
<a name="GstPhotographyFocusMode"></a><h3>enum GstPhotographyFocusMode</h3>
-<p>Choose mode for focusing algorithm.</p>
<div class="refsect3">
<a name="GstPhotographyFocusMode.members"></a><h4>Members</h4>
<div class="informaltable"><table class="informaltable" width="100%" border="0">
@@ -2002,70 +1024,48 @@
<tbody>
<tr>
<td class="enum_member_name"><p><a name="GST-PHOTOGRAPHY-FOCUS-MODE-AUTO:CAPS"></a>GST_PHOTOGRAPHY_FOCUS_MODE_AUTO</p></td>
-<td class="enum_member_description">
-<p>Choose focus mode automatically</p>
-</td>
-<td class="enum_member_annotations"> </td>
+<td> </td>
+<td> </td>
</tr>
<tr>
<td class="enum_member_name"><p><a name="GST-PHOTOGRAPHY-FOCUS-MODE-MACRO:CAPS"></a>GST_PHOTOGRAPHY_FOCUS_MODE_MACRO</p></td>
-<td class="enum_member_description">
-<p>Mode for focusing objects close to lens</p>
-</td>
-<td class="enum_member_annotations"> </td>
+<td> </td>
+<td> </td>
</tr>
<tr>
<td class="enum_member_name"><p><a name="GST-PHOTOGRAPHY-FOCUS-MODE-PORTRAIT:CAPS"></a>GST_PHOTOGRAPHY_FOCUS_MODE_PORTRAIT</p></td>
-<td class="enum_member_description">
-<p>Mode for portraits</p>
-</td>
-<td class="enum_member_annotations"> </td>
+<td> </td>
+<td> </td>
</tr>
<tr>
<td class="enum_member_name"><p><a name="GST-PHOTOGRAPHY-FOCUS-MODE-INFINITY:CAPS"></a>GST_PHOTOGRAPHY_FOCUS_MODE_INFINITY</p></td>
-<td class="enum_member_description">
-<p>Mode for landscapes and far away objects</p>
-</td>
-<td class="enum_member_annotations"> </td>
+<td> </td>
+<td> </td>
</tr>
<tr>
<td class="enum_member_name"><p><a name="GST-PHOTOGRAPHY-FOCUS-MODE-HYPERFOCAL:CAPS"></a>GST_PHOTOGRAPHY_FOCUS_MODE_HYPERFOCAL</p></td>
-<td class="enum_member_description">
-<p>Mode for maximum depth of field, keeping
-focus acceptable both in infinify and as close objects as possible</p>
-</td>
-<td class="enum_member_annotations"> </td>
+<td> </td>
+<td> </td>
</tr>
<tr>
<td class="enum_member_name"><p><a name="GST-PHOTOGRAPHY-FOCUS-MODE-EXTENDED:CAPS"></a>GST_PHOTOGRAPHY_FOCUS_MODE_EXTENDED</p></td>
-<td class="enum_member_description">
-<p>Extended focus mode</p>
-</td>
-<td class="enum_member_annotations"> </td>
+<td> </td>
+<td> </td>
</tr>
<tr>
<td class="enum_member_name"><p><a name="GST-PHOTOGRAPHY-FOCUS-MODE-CONTINUOUS-NORMAL:CAPS"></a>GST_PHOTOGRAPHY_FOCUS_MODE_CONTINUOUS_NORMAL</p></td>
-<td class="enum_member_description">
-<p>Continuous autofocus mode</p>
-</td>
-<td class="enum_member_annotations"> </td>
+<td> </td>
+<td> </td>
</tr>
<tr>
<td class="enum_member_name"><p><a name="GST-PHOTOGRAPHY-FOCUS-MODE-CONTINUOUS-EXTENDED:CAPS"></a>GST_PHOTOGRAPHY_FOCUS_MODE_CONTINUOUS_EXTENDED</p></td>
-<td class="enum_member_description">
-<p>Extended continuous
-autofocus mode</p>
-</td>
-<td class="enum_member_annotations"> </td>
+<td> </td>
+<td> </td>
</tr>
<tr>
<td class="enum_member_name"><p><a name="GST-PHOTOGRAPHY-FOCUS-MODE-MANUAL:CAPS"></a>GST_PHOTOGRAPHY_FOCUS_MODE_MANUAL</p></td>
-<td class="enum_member_description">
-<p>Disable automatic focusing
-and keep current value. <span class="type">“lens-focus”</span> property can
-be used to change focus manually.</p>
-</td>
-<td class="enum_member_annotations"> </td>
+<td> </td>
+<td> </td>
</tr>
</tbody>
</table></div>
@@ -2074,8 +1074,6 @@
<hr>
<div class="refsect2">
<a name="GstPhotographyFocusStatus"></a><h3>enum GstPhotographyFocusStatus</h3>
-<p>Status of the focusing operation, used in <a class="link" href="gst-plugins-bad-libs-GstPhotography.html#GST-PHOTOGRAPHY-AUTOFOCUS-DONE:CAPS" title="GST_PHOTOGRAPHY_AUTOFOCUS_DONE"><span class="type">GST_PHOTOGRAPHY_AUTOFOCUS_DONE</span></a>
-message.</p>
<div class="refsect3">
<a name="GstPhotographyFocusStatus.members"></a><h4>Members</h4>
<div class="informaltable"><table class="informaltable" width="100%" border="0">
@@ -2087,31 +1085,23 @@
<tbody>
<tr>
<td class="enum_member_name"><p><a name="GST-PHOTOGRAPHY-FOCUS-STATUS-NONE:CAPS"></a>GST_PHOTOGRAPHY_FOCUS_STATUS_NONE</p></td>
-<td class="enum_member_description">
-<p>No status available</p>
-</td>
-<td class="enum_member_annotations"> </td>
+<td> </td>
+<td> </td>
</tr>
<tr>
<td class="enum_member_name"><p><a name="GST-PHOTOGRAPHY-FOCUS-STATUS-RUNNING:CAPS"></a>GST_PHOTOGRAPHY_FOCUS_STATUS_RUNNING</p></td>
-<td class="enum_member_description">
-<p>Focusing is ongoing</p>
-</td>
-<td class="enum_member_annotations"> </td>
+<td> </td>
+<td> </td>
</tr>
<tr>
<td class="enum_member_name"><p><a name="GST-PHOTOGRAPHY-FOCUS-STATUS-FAIL:CAPS"></a>GST_PHOTOGRAPHY_FOCUS_STATUS_FAIL</p></td>
-<td class="enum_member_description">
-<p>Focusing failed</p>
-</td>
-<td class="enum_member_annotations"> </td>
+<td> </td>
+<td> </td>
</tr>
<tr>
<td class="enum_member_name"><p><a name="GST-PHOTOGRAPHY-FOCUS-STATUS-SUCCESS:CAPS"></a>GST_PHOTOGRAPHY_FOCUS_STATUS_SUCCESS</p></td>
-<td class="enum_member_description">
-<p>Focusing succeeded</p>
-</td>
-<td class="enum_member_annotations"> </td>
+<td> </td>
+<td> </td>
</tr>
</tbody>
</table></div>
@@ -2120,8 +1110,6 @@
<hr>
<div class="refsect2">
<a name="GstPhotographyCaps"></a><h3>enum GstPhotographyCaps</h3>
-<p>Bitmask that indicates which <a class="link" href="gst-plugins-bad-libs-GstPhotography.html#GstPhotography" title="GstPhotography"><span class="type">GstPhotography</span></a> interface features an instance
-supports.</p>
<div class="refsect3">
<a name="GstPhotographyCaps.members"></a><h4>Members</h4>
<div class="informaltable"><table class="informaltable" width="100%" border="0">
@@ -2218,8 +1206,6 @@
<hr>
<div class="refsect2">
<a name="GstPhotographyShakeRisk"></a><h3>enum GstPhotographyShakeRisk</h3>
-<p>Risk level of captured image becoming "shaken" due to camera movement and
-too long exposure time. Used in <a class="link" href="gst-plugins-bad-libs-GstPhotography.html#GST-PHOTOGRAPHY-SHAKE-RISK:CAPS" title="GST_PHOTOGRAPHY_SHAKE_RISK"><span class="type">GST_PHOTOGRAPHY_SHAKE_RISK</span></a> <a href="/usr/share/gtk-doc/html/gstreamer-1.0GstMessage.html#GstMessage-struct"><span class="type">GstMessage</span></a>.</p>
<div class="refsect3">
<a name="GstPhotographyShakeRisk.members"></a><h4>Members</h4>
<div class="informaltable"><table class="informaltable" width="100%" border="0">
@@ -2231,24 +1217,18 @@
<tbody>
<tr>
<td class="enum_member_name"><p><a name="GST-PHOTOGRAPHY-SHAKE-RISK-LOW:CAPS"></a>GST_PHOTOGRAPHY_SHAKE_RISK_LOW</p></td>
-<td class="enum_member_description">
-<p>Low risk</p>
-</td>
-<td class="enum_member_annotations"> </td>
+<td> </td>
+<td> </td>
</tr>
<tr>
<td class="enum_member_name"><p><a name="GST-PHOTOGRAPHY-SHAKE-RISK-MEDIUM:CAPS"></a>GST_PHOTOGRAPHY_SHAKE_RISK_MEDIUM</p></td>
-<td class="enum_member_description">
-<p>Medium risk</p>
-</td>
-<td class="enum_member_annotations"> </td>
+<td> </td>
+<td> </td>
</tr>
<tr>
<td class="enum_member_name"><p><a name="GST-PHOTOGRAPHY-SHAKE-RISK-HIGH:CAPS"></a>GST_PHOTOGRAPHY_SHAKE_RISK_HIGH</p></td>
-<td class="enum_member_description">
-<p>High risk</p>
-</td>
-<td class="enum_member_annotations"> </td>
+<td> </td>
+<td> </td>
</tr>
</tbody>
</table></div>
@@ -2259,48 +1239,12 @@
<a name="GST-PHOTOGRAPHY-AUTOFOCUS-DONE:CAPS"></a><h3>GST_PHOTOGRAPHY_AUTOFOCUS_DONE</h3>
<pre class="programlisting">#define GST_PHOTOGRAPHY_AUTOFOCUS_DONE "autofocus-done"
</pre>
-<p>Name of custom GstMessage that will be posted to <a href="/usr/share/gtk-doc/html/gstreamer-1.0GstBus.html#GstBus-struct"><span class="type">GstBus</span></a> when autofocusing
-is complete.
-This message contains following fields:</p>
-<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
-<li class="listitem"><p>
- <a class="link" href="gst-plugins-bad-libs-GstPhotography.html#GstPhotographyFocusStatus" title="enum GstPhotographyFocusStatus"><span class="type">GstPhotographyFocusStatus</span></a>
- <code class="classname">"status"</code>:
- Tells if focusing succeeded or failed.
- </p></li>
-<li class="listitem"><p>
- <a href="/usr/share/gtk-doc/html/gobjectgobject-Type-Information.html#G-TYPE-INT:CAPS"><span class="type">G_TYPE_INT</span></a>
- <code class="classname">"focus-window-rows"</code>:
- Tells number of focus matrix rows.
- </p></li>
-<li class="listitem"><p>
- <a href="/usr/share/gtk-doc/html/gobjectgobject-Type-Information.html#G-TYPE-INT:CAPS"><span class="type">G_TYPE_INT</span></a>
- <code class="classname">"focus-window-columns"</code>:
- Tells number of focus matrix columns.
- </p></li>
-<li class="listitem"><p>
- <a href="/usr/share/gtk-doc/html/gobjectgobject-Type-Information.html#G-TYPE-INT:CAPS"><span class="type">G_TYPE_INT</span></a>
- <code class="classname">"focus-window-mask"</code>:
- Bitmask containing rows x columns bits which mark the focus points in the
- focus matrix. Lowest bit (LSB) always represents the top-left corner of the
- focus matrix. This field is only valid when focusing status is SUCCESS.
- </p></li>
-</ul></div>
</div>
<hr>
<div class="refsect2">
<a name="GST-PHOTOGRAPHY-SHAKE-RISK:CAPS"></a><h3>GST_PHOTOGRAPHY_SHAKE_RISK</h3>
<pre class="programlisting">#define GST_PHOTOGRAPHY_SHAKE_RISK "shake-risk"
</pre>
-<p>Name of custom GstMessage that is posted to <a href="/usr/share/gtk-doc/html/gstreamer-1.0GstBus.html#GstBus-struct"><span class="type">GstBus</span></a> during autofocusing
-process. It is posted if there is change in the risk of captured image
-becoming "shaken" due to camera movement and too long exposure time.</p>
-<p>This message contains following fields:</p>
-<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p>
- <a class="link" href="gst-plugins-bad-libs-GstPhotography.html#GstPhotographyShakeRisk" title="enum GstPhotographyShakeRisk"><span class="type">GstPhotographyShakeRisk</span></a>
- <code class="classname">"status"</code>:
- Tells risk level of capturing shaken image.
- </p></li></ul></div>
</div>
<hr>
<div class="refsect2">
diff --git a/docs/libs/html/gst-plugins-bad-libs-GstVideoAggregator.html b/docs/libs/html/gst-plugins-bad-libs-GstVideoAggregator.html
index 6000c20..8421f95 100644
--- a/docs/libs/html/gst-plugins-bad-libs-GstVideoAggregator.html
+++ b/docs/libs/html/gst-plugins-bad-libs-GstVideoAggregator.html
@@ -27,7 +27,7 @@
<div class="refnamediv"><table width="100%"><tr>
<td valign="top">
<h2><span class="refentrytitle"><a name="gst-plugins-bad-libs-GstVideoAggregator.top_of_page"></a>GstVideoAggregator</span></h2>
-<p>GstVideoAggregator — Base class for video aggregators</p>
+<p>GstVideoAggregator</p>
</td>
<td class="gallery_image" valign="top" align="right"></td>
</tr></table></div>
@@ -52,13 +52,6 @@
</div>
<div class="refsect1">
<a name="gst-plugins-bad-libs-GstVideoAggregator.description"></a><h2>Description</h2>
-<p>VideoAggregator can accept AYUV, ARGB and BGRA video streams. For each of the requested
-sink pads it will compare the incoming geometry and framerate to define the
-output parameters. Indeed output video frames will have the geometry of the
-biggest incoming video stream and the framerate of the fastest incoming one.</p>
-<p>VideoAggregator will do colorspace conversion.</p>
-<p>Zorder for each input stream can be configured on the
-<a class="link" href="gst-plugins-bad-libs-GstVideoAggregatorPad.html#GstVideoAggregatorPad" title="struct GstVideoAggregatorPad"><span class="type">GstVideoAggregatorPad</span></a>.</p>
</div>
<div class="refsect1">
<a name="gst-plugins-bad-libs-GstVideoAggregator.functions_details"></a><h2>Functions</h2>
@@ -75,29 +68,6 @@
GstVideoInfo info;
};
</pre>
-<div class="refsect3">
-<a name="GstVideoAggregator.members"></a><h4>Members</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="300px" class="struct_members_name">
-<col class="struct_members_description">
-<col width="200px" class="struct_members_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="struct_member_name"><p><a class="link" href="gst-plugins-bad-libs-GstAggregator.html#GstAggregator" title="struct GstAggregator"><span class="type">GstAggregator</span></a> <em class="structfield"><code><a name="GstVideoAggregator.aggregator"></a>aggregator</code></em>;</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/gst-plugins-base-libs-1.0gst-plugins-base-libs-gstvideo.html#GstVideoInfo"><span class="type">GstVideoInfo</span></a> <em class="structfield"><code><a name="GstVideoAggregator.info"></a>info</code></em>;</p></td>
-<td class="struct_member_description"><p>The <a href="/usr/share/gtk-doc/html/gst-plugins-base-libs-1.0gst-plugins-base-libs-gstvideo.html#GstVideoInfo"><span class="type">GstVideoInfo</span></a> representing the currently set
-srcpad caps.</p></td>
-<td class="struct_member_annotations"> </td>
-</tr>
-</tbody>
-</table></div>
-</div>
</div>
<hr>
<div class="refsect2">
@@ -122,71 +92,6 @@
GstCaps *sink_non_alpha_caps;
};
</pre>
-<div class="refsect3">
-<a name="GstVideoAggregatorClass.members"></a><h4>Members</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="300px" class="struct_members_name">
-<col class="struct_members_description">
-<col width="200px" class="struct_members_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="struct_member_name"><p><em class="structfield"><code><a name="GstVideoAggregatorClass.update-caps"></a>update_caps</code></em> ()</p></td>
-<td class="struct_member_description"><p>Optional.
-Lets subclasses update the <a href="/usr/share/gtk-doc/html/gstreamer-1.0GstCaps.html#GstCaps-struct"><span class="type">GstCaps</span></a> representing
-the src pad caps before usage. Return <a href="/usr/share/gtk-doc/html/glibglib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a> to indicate failure.</p></td>
-<td class="struct_member_annotations"> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><em class="structfield"><code><a name="GstVideoAggregatorClass.fixate-caps"></a>fixate_caps</code></em> ()</p></td>
-<td class="struct_member_description"><p>Fixate and return the src pad caps provided. The function takes
-ownership of <em class="parameter"><code>caps</code></em>
-and returns a fixated version of
-<em class="parameter"><code>caps</code></em>
-. <em class="parameter"><code>caps</code></em>
-is not guaranteed to be writable.</p></td>
-<td class="struct_member_annotations"> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><em class="structfield"><code><a name="GstVideoAggregatorClass.aggregate-frames"></a>aggregate_frames</code></em> ()</p></td>
-<td class="struct_member_description"><p>Lets subclasses aggregate frames that are ready. Subclasses
-should iterate the GstElement.sinkpads and use the already
-mapped <a href="/usr/share/gtk-doc/html/gst-plugins-base-libs-1.0gst-plugins-base-libs-gstvideo.html#GstVideoFrame"><span class="type">GstVideoFrame</span></a> from GstVideoAggregatorPad.aggregated_frame
-or directly use the <a href="/usr/share/gtk-doc/html/gstreamer-1.0GstBuffer.html#GstBuffer-struct"><span class="type">GstBuffer</span></a> from GstVideoAggregatorPad.buffer
-if it needs to map the buffer in a special way. The result of the
-aggregation should land in <em class="parameter"><code>outbuffer</code></em>
-.</p></td>
-<td class="struct_member_annotations"> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><em class="structfield"><code><a name="GstVideoAggregatorClass.get-output-buffer"></a>get_output_buffer</code></em> ()</p></td>
-<td class="struct_member_description"><p>Optional.
-Lets subclasses provide a <a href="/usr/share/gtk-doc/html/gstreamer-1.0GstBuffer.html#GstBuffer-struct"><span class="type">GstBuffer</span></a> to be used as <em class="parameter"><code>outbuffer</code></em>
-of
-the <span class="type">aggregate_frames</span> vmethod.</p></td>
-<td class="struct_member_annotations"> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><em class="structfield"><code><a name="GstVideoAggregatorClass.negotiated-caps"></a>negotiated_caps</code></em> ()</p></td>
-<td class="struct_member_description"><p>Optional.
-Notifies subclasses what caps format has been negotiated</p></td>
-<td class="struct_member_annotations"> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><em class="structfield"><code><a name="GstVideoAggregatorClass.find-best-format"></a>find_best_format</code></em> ()</p></td>
-<td class="struct_member_description"><p>Optional.
-Lets subclasses decide of the best common format to use.</p></td>
-<td class="struct_member_annotations"> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/gstreamer-1.0GstCaps.html#GstCaps-struct"><span class="type">GstCaps</span></a> *<em class="structfield"><code><a name="GstVideoAggregatorClass.sink-non-alpha-caps"></a>sink_non_alpha_caps</code></em>;</p></td>
-<td> </td>
-<td> </td>
-</tr>
-</tbody>
-</table></div>
-</div>
</div>
</div>
</div>
diff --git a/docs/libs/html/gst-plugins-bad-libs-GstVideoAggregatorPad.html b/docs/libs/html/gst-plugins-bad-libs-GstVideoAggregatorPad.html
index 035f1c4..3494b6b 100644
--- a/docs/libs/html/gst-plugins-bad-libs-GstVideoAggregatorPad.html
+++ b/docs/libs/html/gst-plugins-bad-libs-GstVideoAggregatorPad.html
@@ -82,56 +82,6 @@
gboolean ignore_eos;
};
</pre>
-<div class="refsect3">
-<a name="GstVideoAggregatorPad.members"></a><h4>Members</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="300px" class="struct_members_name">
-<col class="struct_members_description">
-<col width="200px" class="struct_members_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="struct_member_name"><p><a class="link" href="gst-plugins-bad-libs-GstAggregatorPad.html#GstAggregatorPad" title="struct GstAggregatorPad"><span class="type">GstAggregatorPad</span></a> <em class="structfield"><code><a name="GstVideoAggregatorPad.parent"></a>parent</code></em>;</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/gst-plugins-base-libs-1.0gst-plugins-base-libs-gstvideo.html#GstVideoInfo"><span class="type">GstVideoInfo</span></a> <em class="structfield"><code><a name="GstVideoAggregatorPad.info"></a>info</code></em>;</p></td>
-<td class="struct_member_description"><p>The <a href="/usr/share/gtk-doc/html/gst-plugins-base-libs-1.0gst-plugins-base-libs-gstvideo.html#GstVideoInfo"><span class="type">GstVideoInfo</span></a> currently set on the pad</p></td>
-<td class="struct_member_annotations"> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/gstreamer-1.0GstBuffer.html#GstBuffer-struct"><span class="type">GstBuffer</span></a> *<em class="structfield"><code><a name="GstVideoAggregatorPad.buffer"></a>buffer</code></em>;</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/gst-plugins-base-libs-1.0gst-plugins-base-libs-gstvideo.html#GstVideoInfo"><span class="type">GstVideoInfo</span></a> <em class="structfield"><code><a name="GstVideoAggregatorPad.buffer-vinfo"></a>buffer_vinfo</code></em>;</p></td>
-<td class="struct_member_description"><p>The <a href="/usr/share/gtk-doc/html/gst-plugins-base-libs-1.0gst-plugins-base-libs-gstvideo.html#GstVideoInfo"><span class="type">GstVideoInfo</span></a> representing the type contained
-in <em class="parameter"><code>buffer</code></em>
-</p></td>
-<td class="struct_member_annotations"> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/gst-plugins-base-libs-1.0gst-plugins-base-libs-gstvideo.html#GstVideoFrame"><span class="type">GstVideoFrame</span></a> *<em class="structfield"><code><a name="GstVideoAggregatorPad.aggregated-frame"></a>aggregated_frame</code></em>;</p></td>
-<td class="struct_member_description"><p>The <a href="/usr/share/gtk-doc/html/gst-plugins-base-libs-1.0gst-plugins-base-libs-gstvideo.html#GstVideoFrame"><span class="type">GstVideoFrame</span></a> ready to be used for aggregation
-inside the aggregate_frames vmethod.</p></td>
-<td class="struct_member_annotations"> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint"><span class="type">guint</span></a> <em class="structfield"><code><a name="GstVideoAggregatorPad.zorder"></a>zorder</code></em>;</p></td>
-<td class="struct_member_description"><p>The zorder of this pad</p></td>
-<td class="struct_member_annotations"> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a> <em class="structfield"><code><a name="GstVideoAggregatorPad.ignore-eos"></a>ignore_eos</code></em>;</p></td>
-<td> </td>
-<td> </td>
-</tr>
-</tbody>
-</table></div>
-</div>
</div>
<hr>
<div class="refsect2">
@@ -152,15 +102,6 @@
gpointer _gst_reserved[GST_PADDING_LARGE];
};
</pre>
-<p><em class="parameter"><code>set_info</code></em>
-: Lets subclass set a converter on the pad,
- right after a new format has been negotiated.
-<em class="parameter"><code>prepare_frame</code></em>
-: Prepare the frame from the pad buffer (if any)
- and sets it to <em class="parameter"><code>aggregated_frame</code></em>
-
-<em class="parameter"><code>clean_frame</code></em>
-: clean the frame previously prepared in prepare_frame</p>
</div>
</div>
</div>
diff --git a/docs/libs/html/gst-plugins-bad-libs-Mpeg-ts-helper-library.html b/docs/libs/html/gst-plugins-bad-libs-Mpeg-ts-helper-library.html
deleted file mode 100644
index c50a0c3..0000000
--- a/docs/libs/html/gst-plugins-bad-libs-Mpeg-ts-helper-library.html
+++ /dev/null
@@ -1,76 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>Mpeg-ts helper library: GStreamer Bad Plugins 1.0 Library Reference Manual</title>
-<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
-<link rel="home" href="index.html" title="GStreamer Bad Plugins 1.0 Library Reference Manual">
-<link rel="up" href="mpegts.html" title="Mpeg TS helper library">
-<link rel="prev" href="mpegts.html" title="Mpeg TS helper library">
-<link rel="next" href="gst-plugins-bad-libs-Base-MPEG-TS-sections.html" title="Base MPEG-TS sections">
-<meta name="generator" content="GTK-Doc V1.25 (XML mode)">
-<link rel="stylesheet" href="style.css" type="text/css">
-</head>
-<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
-<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="5"><tr valign="middle">
-<td width="100%" align="left" class="shortcuts">
-<a href="#" class="shortcut">Top</a><span id="nav_description"> <span class="dim">|</span>
- <a href="#gst-plugins-bad-libs-Mpeg-ts-helper-library.description" class="shortcut">Description</a></span>
-</td>
-<td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
-<td><a accesskey="u" href="mpegts.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
-<td><a accesskey="p" href="mpegts.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
-<td><a accesskey="n" href="gst-plugins-bad-libs-Base-MPEG-TS-sections.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
-</tr></table>
-<div class="refentry">
-<a name="gst-plugins-bad-libs-Mpeg-ts-helper-library"></a><div class="titlepage"></div>
-<div class="refnamediv"><table width="100%"><tr>
-<td valign="top">
-<h2><span class="refentrytitle"><a name="gst-plugins-bad-libs-Mpeg-ts-helper-library.top_of_page"></a>Mpeg-ts helper library</span></h2>
-<p>Mpeg-ts helper library — Mpeg-ts helper library for plugins and applications</p>
-</td>
-<td class="gallery_image" valign="top" align="right"></td>
-</tr></table></div>
-<div class="refsect1">
-<a name="gst-plugins-bad-libs-Mpeg-ts-helper-library.functions"></a><h2>Functions</h2>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="functions_return">
-<col class="functions_name">
-</colgroup>
-<tbody><tr>
-<td class="function_type">
-<span class="returnvalue">void</span>
-</td>
-<td class="function_name">
-<a class="link" href="gst-plugins-bad-libs-Mpeg-ts-helper-library.html#gst-mpegts-initialize" title="gst_mpegts_initialize ()">gst_mpegts_initialize</a> <span class="c_punctuation">()</span>
-</td>
-</tr></tbody>
-</table></div>
-</div>
-<div class="refsect1">
-<a name="gst-plugins-bad-libs-Mpeg-ts-helper-library.includes"></a><h2>Includes</h2>
-<pre class="synopsis">#include <gst/mpegts/mpegts.h>
-</pre>
-</div>
-<div class="refsect1">
-<a name="gst-plugins-bad-libs-Mpeg-ts-helper-library.description"></a><h2>Description</h2>
-</div>
-<div class="refsect1">
-<a name="gst-plugins-bad-libs-Mpeg-ts-helper-library.functions_details"></a><h2>Functions</h2>
-<div class="refsect2">
-<a name="gst-mpegts-initialize"></a><h3>gst_mpegts_initialize ()</h3>
-<pre class="programlisting"><span class="returnvalue">void</span>
-gst_mpegts_initialize (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
-<p>Initializes the MPEG-TS helper library. Must be called before any
-usage.</p>
-</div>
-</div>
-<div class="refsect1">
-<a name="gst-plugins-bad-libs-Mpeg-ts-helper-library.other_details"></a><h2>Types and Values</h2>
-</div>
-</div>
-<div class="footer">
-<hr>Generated by GTK-Doc V1.25</div>
-</body>
-</html>
\ No newline at end of file
diff --git a/docs/libs/html/gst-plugins-bad-libs-OpenGL-Formats.html b/docs/libs/html/gst-plugins-bad-libs-OpenGL-Formats.html
index 6f9ce8b..66ebd42 100644
--- a/docs/libs/html/gst-plugins-bad-libs-OpenGL-Formats.html
+++ b/docs/libs/html/gst-plugins-bad-libs-OpenGL-Formats.html
@@ -169,87 +169,18 @@
<pre class="programlisting"><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint"><span class="returnvalue">guint</span></a>
gst_gl_format_type_n_bytes (<em class="parameter"><code><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint"><span class="type">guint</span></a> format</code></em>,
<em class="parameter"><code><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint"><span class="type">guint</span></a> type</code></em>);</pre>
-<div class="refsect3">
-<a name="gst-gl-format-type-n-bytes.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="parameter_name"><p>format</p></td>
-<td class="parameter_description"><p>the OpenGL format, <code class="literal">GL_RGBA</code>, <code class="literal">GL_LUMINANCE</code>, etc</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>type</p></td>
-<td class="parameter_description"><p>the OpenGL type, <code class="literal">GL_UNSIGNED_BYTE</code>, <code class="literal">GL_FLOAT</code>, etc</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<div class="refsect3">
-<a name="gst-gl-format-type-n-bytes.returns"></a><h4>Returns</h4>
-<p> the number of bytes the specified <em class="parameter"><code>format</code></em>
-, <em class="parameter"><code>type</code></em>
-combination takes
-per pixel</p>
-</div>
</div>
<hr>
<div class="refsect2">
<a name="gst-gl-texture-type-n-bytes"></a><h3>gst_gl_texture_type_n_bytes ()</h3>
<pre class="programlisting"><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint"><span class="returnvalue">guint</span></a>
gst_gl_texture_type_n_bytes (<em class="parameter"><code><span class="type">GstVideoGLTextureType</span> tex_format</code></em>);</pre>
-<div class="refsect3">
-<a name="gst-gl-texture-type-n-bytes.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody><tr>
-<td class="parameter_name"><p>tex_format</p></td>
-<td class="parameter_description"><p>a <span class="type">GstVideoGLTextureType</span></p></td>
-<td class="parameter_annotations"> </td>
-</tr></tbody>
-</table></div>
-</div>
-<div class="refsect3">
-<a name="gst-gl-texture-type-n-bytes.returns"></a><h4>Returns</h4>
-<p> the number of bytes <em class="parameter"><code>tex_format</code></em>
-used per pixel</p>
-</div>
</div>
<hr>
<div class="refsect2">
<a name="gst-gl-format-from-gl-texture-type"></a><h3>gst_gl_format_from_gl_texture_type ()</h3>
<pre class="programlisting"><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint"><span class="returnvalue">guint</span></a>
gst_gl_format_from_gl_texture_type (<em class="parameter"><code><span class="type">GstVideoGLTextureType</span> tex_format</code></em>);</pre>
-<div class="refsect3">
-<a name="gst-gl-format-from-gl-texture-type.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody><tr>
-<td class="parameter_name"><p>tex_format</p></td>
-<td class="parameter_description"><p>a <span class="type">GstVideoGLTextureType</span></p></td>
-<td class="parameter_annotations"> </td>
-</tr></tbody>
-</table></div>
-</div>
-<div class="refsect3">
-<a name="gst-gl-format-from-gl-texture-type.returns"></a><h4>Returns</h4>
-<p> the OpenGL format specified by <em class="parameter"><code>tex_format</code></em>
-</p>
-</div>
</div>
<hr>
<div class="refsect2">
@@ -258,40 +189,6 @@
gst_gl_texture_type_from_format (<em class="parameter"><code><a class="link" href="GstGLContext.html" title="GstGLContext"><span class="type">GstGLContext</span></a> *context</code></em>,
<em class="parameter"><code><a href="/usr/share/gtk-doc/html/gst-plugins-base-libs-1.0gst-plugins-base-libs-gstvideo.html#GstVideoFormat"><span class="type">GstVideoFormat</span></a> v_format</code></em>,
<em class="parameter"><code><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint"><span class="type">guint</span></a> plane</code></em>);</pre>
-<div class="refsect3">
-<a name="gst-gl-texture-type-from-format.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="parameter_name"><p>context</p></td>
-<td class="parameter_description"><p>a <a class="link" href="GstGLContext.html" title="GstGLContext"><span class="type">GstGLContext</span></a></p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>v_format</p></td>
-<td class="parameter_description"><p>a <a href="/usr/share/gtk-doc/html/gst-plugins-base-libs-1.0gst-plugins-base-libs-gstvideo.html#GstVideoFormat"><span class="type">GstVideoFormat</span></a></p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>plane</p></td>
-<td class="parameter_description"><p>the plane number (starting from 0)</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<div class="refsect3">
-<a name="gst-gl-texture-type-from-format.returns"></a><h4>Returns</h4>
-<p> the <span class="type">GstVideoGLTextureType</span> for the specified <em class="parameter"><code>format</code></em>
-and <em class="parameter"><code>plane</code></em>
-that can be allocated using <em class="parameter"><code>context</code></em>
-</p>
-</div>
</div>
<hr>
<div class="refsect2">
@@ -301,41 +198,6 @@
(<em class="parameter"><code><a class="link" href="GstGLContext.html" title="GstGLContext"><span class="type">GstGLContext</span></a> *context</code></em>,
<em class="parameter"><code><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint"><span class="type">guint</span></a> format</code></em>,
<em class="parameter"><code><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint"><span class="type">guint</span></a> type</code></em>);</pre>
-<div class="refsect3">
-<a name="gst-gl-sized-gl-format-from-gl-format-type.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="parameter_name"><p>context</p></td>
-<td class="parameter_description"><p>a <a class="link" href="GstGLContext.html" title="GstGLContext"><span class="type">GstGLContext</span></a></p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>format</p></td>
-<td class="parameter_description"><p>an OpenGL format, <code class="literal">GL_RGBA</code>, <code class="literal">GL_LUMINANCE</code>, etc</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>type</p></td>
-<td class="parameter_description"><p>an OpenGL type, <code class="literal">GL_UNSIGNED_BYTE</code>, <code class="literal">GL_FLOAT</code>, etc</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<div class="refsect3">
-<a name="gst-gl-sized-gl-format-from-gl-format-type.returns"></a><h4>Returns</h4>
-<p> the sized internal format specified by <em class="parameter"><code>format</code></em>
-and <em class="parameter"><code>type</code></em>
-that can
-be used in <em class="parameter"><code>context</code></em>
-</p>
-</div>
</div>
<hr>
<div class="refsect2">
@@ -348,81 +210,18 @@
<a name="gst-gl-texture-target-to-string"></a><h3>gst_gl_texture_target_to_string ()</h3>
<pre class="programlisting">const <a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gchar"><span class="returnvalue">gchar</span></a> *
gst_gl_texture_target_to_string (<em class="parameter"><code><a class="link" href="gst-plugins-bad-libs-OpenGL-Formats.html#GstGLTextureTarget" title="enum GstGLTextureTarget"><span class="type">GstGLTextureTarget</span></a> target</code></em>);</pre>
-<div class="refsect3">
-<a name="gst-gl-texture-target-to-string.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody><tr>
-<td class="parameter_name"><p>str</p></td>
-<td class="parameter_description"><p>a string equivalant to one of the GST_GL_TEXTURE_TARGET_*_STR values</p></td>
-<td class="parameter_annotations"> </td>
-</tr></tbody>
-</table></div>
-</div>
-<div class="refsect3">
-<a name="gst-gl-texture-target-to-string.returns"></a><h4>Returns</h4>
-<p> the <a class="link" href="gst-plugins-bad-libs-OpenGL-Formats.html#GstGLTextureTarget" title="enum GstGLTextureTarget"><span class="type">GstGLTextureTarget</span></a> represented by <em class="parameter"><code>str</code></em>
-or
-<a class="link" href="gst-plugins-bad-libs-OpenGL-Formats.html#GST-GL-TEXTURE-TARGET-NONE:CAPS"><code class="literal">GST_GL_TEXTURE_TARGET_NONE</code></a></p>
-</div>
</div>
<hr>
<div class="refsect2">
<a name="gst-gl-texture-target-to-gl"></a><h3>gst_gl_texture_target_to_gl ()</h3>
<pre class="programlisting"><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint"><span class="returnvalue">guint</span></a>
gst_gl_texture_target_to_gl (<em class="parameter"><code><a class="link" href="gst-plugins-bad-libs-OpenGL-Formats.html#GstGLTextureTarget" title="enum GstGLTextureTarget"><span class="type">GstGLTextureTarget</span></a> target</code></em>);</pre>
-<div class="refsect3">
-<a name="gst-gl-texture-target-to-gl.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody><tr>
-<td class="parameter_name"><p>target</p></td>
-<td class="parameter_description"><p>a <a class="link" href="gst-plugins-bad-libs-OpenGL-Formats.html#GstGLTextureTarget" title="enum GstGLTextureTarget"><span class="type">GstGLTextureTarget</span></a></p></td>
-<td class="parameter_annotations"> </td>
-</tr></tbody>
-</table></div>
-</div>
-<div class="refsect3">
-<a name="gst-gl-texture-target-to-gl.returns"></a><h4>Returns</h4>
-<p> the OpenGL value for binding the <em class="parameter"><code>target</code></em>
-with <code class="function">glBindTexture()</code> and
-similar functions or 0</p>
-</div>
</div>
<hr>
<div class="refsect2">
<a name="gst-gl-texture-target-from-gl"></a><h3>gst_gl_texture_target_from_gl ()</h3>
<pre class="programlisting"><a class="link" href="gst-plugins-bad-libs-OpenGL-Formats.html#GstGLTextureTarget" title="enum GstGLTextureTarget"><span class="returnvalue">GstGLTextureTarget</span></a>
gst_gl_texture_target_from_gl (<em class="parameter"><code><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint"><span class="type">guint</span></a> target</code></em>);</pre>
-<div class="refsect3">
-<a name="gst-gl-texture-target-from-gl.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody><tr>
-<td class="parameter_name"><p>target</p></td>
-<td class="parameter_description"><p>an OpenGL texture binding target</p></td>
-<td class="parameter_annotations"> </td>
-</tr></tbody>
-</table></div>
-</div>
-<div class="refsect3">
-<a name="gst-gl-texture-target-from-gl.returns"></a><h4>Returns</h4>
-<p> the <a class="link" href="gst-plugins-bad-libs-OpenGL-Formats.html#GstGLTextureTarget" title="enum GstGLTextureTarget"><span class="type">GstGLTextureTarget</span></a> that's equiavalant to <em class="parameter"><code>target</code></em>
-or
-<a class="link" href="gst-plugins-bad-libs-OpenGL-Formats.html#GST-GL-TEXTURE-TARGET-NONE:CAPS"><code class="literal">GST_GL_TEXTURE_TARGET_NONE</code></a></p>
-</div>
</div>
<hr>
<div class="refsect2">
@@ -430,27 +229,6 @@
<pre class="programlisting">const <a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gchar"><span class="returnvalue">gchar</span></a> *
gst_gl_texture_target_to_buffer_pool_option
(<em class="parameter"><code><a class="link" href="gst-plugins-bad-libs-OpenGL-Formats.html#GstGLTextureTarget" title="enum GstGLTextureTarget"><span class="type">GstGLTextureTarget</span></a> target</code></em>);</pre>
-<div class="refsect3">
-<a name="gst-gl-texture-target-to-buffer-pool-option.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody><tr>
-<td class="parameter_name"><p>target</p></td>
-<td class="parameter_description"><p>a <a class="link" href="gst-plugins-bad-libs-OpenGL-Formats.html#GstGLTextureTarget" title="enum GstGLTextureTarget"><span class="type">GstGLTextureTarget</span></a></p></td>
-<td class="parameter_annotations"> </td>
-</tr></tbody>
-</table></div>
-</div>
-<div class="refsect3">
-<a name="gst-gl-texture-target-to-buffer-pool-option.returns"></a><h4>Returns</h4>
-<p> a string representing the <em class="parameter"><code>GstBufferPoolOption</code></em>
-specified by <em class="parameter"><code>target</code></em>
-</p>
-</div>
</div>
</div>
<div class="refsect1">
@@ -468,78 +246,63 @@
<tbody>
<tr>
<td class="enum_member_name"><p><a name="GST-GL-TEXTURE-TARGET-NONE:CAPS"></a>GST_GL_TEXTURE_TARGET_NONE</p></td>
-<td class="enum_member_description">
-<p>no texture target</p>
-</td>
-<td class="enum_member_annotations"> </td>
+<td> </td>
+<td> </td>
</tr>
<tr>
<td class="enum_member_name"><p><a name="GST-GL-TEXTURE-TARGET-2D:CAPS"></a>GST_GL_TEXTURE_TARGET_2D</p></td>
-<td class="enum_member_description">
-<p>2D texture target</p>
-</td>
-<td class="enum_member_annotations"> </td>
+<td> </td>
+<td> </td>
</tr>
<tr>
<td class="enum_member_name"><p><a name="GST-GL-TEXTURE-TARGET-RECTANGLE:CAPS"></a>GST_GL_TEXTURE_TARGET_RECTANGLE</p></td>
-<td class="enum_member_description">
-<p>rectangle texture target</p>
-</td>
-<td class="enum_member_annotations"> </td>
+<td> </td>
+<td> </td>
</tr>
<tr>
<td class="enum_member_name"><p><a name="GST-GL-TEXTURE-TARGET-EXTERNAL-OES:CAPS"></a>GST_GL_TEXTURE_TARGET_EXTERNAL_OES</p></td>
-<td class="enum_member_description">
-<p>external oes texture target</p>
-</td>
-<td class="enum_member_annotations"> </td>
+<td> </td>
+<td> </td>
</tr>
</tbody>
</table></div>
</div>
-<p class="since">Since: 1.8</p>
</div>
<hr>
<div class="refsect2">
<a name="GST-GL-TEXTURE-TARGET-2D-STR:CAPS"></a><h3>GST_GL_TEXTURE_TARGET_2D_STR</h3>
<pre class="programlisting">#define GST_GL_TEXTURE_TARGET_2D_STR "2D"
</pre>
-<p>String used for <a class="link" href="gst-plugins-bad-libs-OpenGL-Formats.html#GST-GL-TEXTURE-TARGET-2D:CAPS"><code class="literal">GST_GL_TEXTURE_TARGET_2D</code></a> in things like caps values</p>
</div>
<hr>
<div class="refsect2">
<a name="GST-GL-TEXTURE-TARGET-RECTANGLE-STR:CAPS"></a><h3>GST_GL_TEXTURE_TARGET_RECTANGLE_STR</h3>
<pre class="programlisting">#define GST_GL_TEXTURE_TARGET_RECTANGLE_STR "rectangle"
</pre>
-<p>String used for <a class="link" href="gst-plugins-bad-libs-OpenGL-Formats.html#GST-GL-TEXTURE-TARGET-RECTANGLE:CAPS"><code class="literal">GST_GL_TEXTURE_TARGET_RECTANGLE</code></a> in things like caps values</p>
</div>
<hr>
<div class="refsect2">
<a name="GST-GL-TEXTURE-TARGET-EXTERNAL-OES-STR:CAPS"></a><h3>GST_GL_TEXTURE_TARGET_EXTERNAL_OES_STR</h3>
<pre class="programlisting">#define GST_GL_TEXTURE_TARGET_EXTERNAL_OES_STR "external-oes"
</pre>
-<p>String used for <a class="link" href="gst-plugins-bad-libs-OpenGL-Formats.html#GST-GL-TEXTURE-TARGET-EXTERNAL-OES:CAPS"><code class="literal">GST_GL_TEXTURE_TARGET_EXTERNAL_OES</code></a> in things like caps values</p>
</div>
<hr>
<div class="refsect2">
<a name="GST-BUFFER-POOL-OPTION-GL-TEXTURE-TARGET-2D:CAPS"></a><h3>GST_BUFFER_POOL_OPTION_GL_TEXTURE_TARGET_2D</h3>
<pre class="programlisting">#define GST_BUFFER_POOL_OPTION_GL_TEXTURE_TARGET_2D "GstBufferPoolOptionGLTextureTarget2D"
</pre>
-<p>String used for <a class="link" href="gst-plugins-bad-libs-OpenGL-Formats.html#GST-GL-TEXTURE-TARGET-2D:CAPS"><code class="literal">GST_GL_TEXTURE_TARGET_2D</code></a> as a <a href="/usr/share/gtk-doc/html/gstreamer-1.0GstBufferPool.html#GstBufferPool-struct"><span class="type">GstBufferPool</span></a> pool option</p>
</div>
<hr>
<div class="refsect2">
<a name="GST-BUFFER-POOL-OPTION-GL-TEXTURE-TARGET-RECTANGLE:CAPS"></a><h3>GST_BUFFER_POOL_OPTION_GL_TEXTURE_TARGET_RECTANGLE</h3>
<pre class="programlisting">#define GST_BUFFER_POOL_OPTION_GL_TEXTURE_TARGET_RECTANGLE "GstBufferPoolOptionGLTextureTargetRectangle"
</pre>
-<p>String used for <a class="link" href="gst-plugins-bad-libs-OpenGL-Formats.html#GST-GL-TEXTURE-TARGET-RECTANGLE:CAPS"><code class="literal">GST_GL_TEXTURE_TARGET_RECTANGLE</code></a> as a <a href="/usr/share/gtk-doc/html/gstreamer-1.0GstBufferPool.html#GstBufferPool-struct"><span class="type">GstBufferPool</span></a> pool option</p>
</div>
<hr>
<div class="refsect2">
<a name="GST-BUFFER-POOL-OPTION-GL-TEXTURE-TARGET-EXTERNAL-OES:CAPS"></a><h3>GST_BUFFER_POOL_OPTION_GL_TEXTURE_TARGET_EXTERNAL_OES</h3>
<pre class="programlisting">#define GST_BUFFER_POOL_OPTION_GL_TEXTURE_TARGET_EXTERNAL_OES "GstBufferPoolOptionGLTextureTargetExternalOES"
</pre>
-<p>String used for <code class="literal">GST_GL_TEXTURE_TARGET_ESTERNAL_OES</code> as a <a href="/usr/share/gtk-doc/html/gstreamer-1.0GstBufferPool.html#GstBufferPool-struct"><span class="type">GstBufferPool</span></a> pool option</p>
</div>
</div>
</div>
diff --git a/docs/libs/html/gst-plugins-bad-libs-OpenGL-Miscellaneous-Utilities.html b/docs/libs/html/gst-plugins-bad-libs-OpenGL-Miscellaneous-Utilities.html
index a3841ea..cd4ec70 100644
--- a/docs/libs/html/gst-plugins-bad-libs-OpenGL-Miscellaneous-Utilities.html
+++ b/docs/libs/html/gst-plugins-bad-libs-OpenGL-Miscellaneous-Utilities.html
@@ -6,7 +6,7 @@
<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
<link rel="home" href="index.html" title="GStreamer Bad Plugins 1.0 Library Reference Manual">
<link rel="up" href="gl.html" title="OpenGL Helper Library">
-<link rel="prev" href="gst-plugins-bad-libs-OpenGL-debugging.html" title="OpenGL debugging">
+<link rel="prev" href="gst-plugins-bad-libs-gstgldebug.html" title="OpenGL Debugging">
<link rel="next" href="gst-plugins-bad-libs-OpenGL-Formats.html" title="OpenGL Formats">
<meta name="generator" content="GTK-Doc V1.25 (XML mode)">
<link rel="stylesheet" href="style.css" type="text/css">
@@ -19,7 +19,7 @@
</td>
<td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
<td><a accesskey="u" href="gl.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
-<td><a accesskey="p" href="gst-plugins-bad-libs-OpenGL-debugging.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
+<td><a accesskey="p" href="gst-plugins-bad-libs-gstgldebug.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
<td><a accesskey="n" href="gst-plugins-bad-libs-OpenGL-Formats.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
</tr></table>
<div class="refentry">
@@ -81,22 +81,6 @@
</tr>
<tr>
<td class="function_type">
-<span class="returnvalue">void</span>
-</td>
-<td class="function_name">
-<a class="link" href="gst-plugins-bad-libs-OpenGL-Miscellaneous-Utilities.html#gst-gl-context-gen-texture" title="gst_gl_context_gen_texture ()">gst_gl_context_gen_texture</a> <span class="c_punctuation">()</span>
-</td>
-</tr>
-<tr>
-<td class="function_type">
-<span class="returnvalue">void</span>
-</td>
-<td class="function_name">
-<a class="link" href="gst-plugins-bad-libs-OpenGL-Miscellaneous-Utilities.html#gst-gl-context-del-texture" title="gst_gl_context_del_texture ()">gst_gl_context_del_texture</a> <span class="c_punctuation">()</span>
-</td>
-</tr>
-<tr>
-<td class="function_type">
<a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
</td>
<td class="function_name">
@@ -169,14 +153,6 @@
</tr>
<tr>
<td class="function_type">
-<span class="returnvalue">void</span>
-</td>
-<td class="function_name">
-<a class="link" href="gst-plugins-bad-libs-OpenGL-Miscellaneous-Utilities.html#gst-gl-generate-texture-full" title="gst_gl_generate_texture_full ()">gst_gl_generate_texture_full</a> <span class="c_punctuation">()</span>
-</td>
-</tr>
-<tr>
-<td class="function_type">
<a href="/usr/share/gtk-doc/html/gstreamer-1.0GstCaps.html#GstCaps-struct"><span class="returnvalue">GstCaps</span></a> *
</td>
<td class="function_name">
@@ -267,61 +243,12 @@
<em class="parameter"><code><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gint"><span class="type">gint</span></a> Param2</code></em>,
<em class="parameter"><code><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint"><span class="type">guint</span></a> Param3</code></em>,
<em class="parameter"><code><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a> stuff</code></em>);</pre>
-<p>callback definition for operating on textures</p>
-<div class="refsect3">
-<a name="GLCB.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="parameter_name"><p>width</p></td>
-<td class="parameter_description"><p>the width</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>height</p></td>
-<td class="parameter_description"><p>the height</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>texture</p></td>
-<td class="parameter_description"><p>texture</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>stuff</p></td>
-<td class="parameter_description"><p>user data</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-</tbody>
-</table></div>
-</div>
</div>
<hr>
<div class="refsect2">
<a name="GLCB-V2:CAPS"></a><h3>GLCB_V2 ()</h3>
<pre class="programlisting"><span class="returnvalue">void</span>
<span class="c_punctuation">(</span>*GLCB_V2<span class="c_punctuation">)</span> (<em class="parameter"><code><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a> stuff</code></em>);</pre>
-<p>callback definition for operating through a Framebuffer object</p>
-<div class="refsect3">
-<a name="GLCB-V2.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody><tr>
-<td class="parameter_name"><p>stuff</p></td>
-<td class="parameter_description"><p>user data</p></td>
-<td class="parameter_annotations"> </td>
-</tr></tbody>
-</table></div>
-</div>
</div>
<hr>
<div class="refsect2">
@@ -331,39 +258,6 @@
<em class="parameter"><code><span class="type">GLuint</span> width</code></em>,
<em class="parameter"><code><span class="type">GLuint</span> height</code></em>,
<em class="parameter"><code><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a> data</code></em>);</pre>
-<p>client draw callback</p>
-<div class="refsect3">
-<a name="CDCB.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="parameter_name"><p>texture</p></td>
-<td class="parameter_description"><p>texture to draw</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>width</p></td>
-<td class="parameter_description"><p>new width</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>height</p></td>
-<td class="parameter_description"><p>new height:</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>data</p></td>
-<td class="parameter_description"><p>user data</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-</tbody>
-</table></div>
-</div>
</div>
<hr>
<div class="refsect2">
@@ -385,23 +279,6 @@
</div>
<hr>
<div class="refsect2">
-<a name="gst-gl-context-gen-texture"></a><h3>gst_gl_context_gen_texture ()</h3>
-<pre class="programlisting"><span class="returnvalue">void</span>
-gst_gl_context_gen_texture (<em class="parameter"><code><a class="link" href="GstGLContext.html" title="GstGLContext"><span class="type">GstGLContext</span></a> *context</code></em>,
- <em class="parameter"><code><span class="type">GLuint</span> *pTexture</code></em>,
- <em class="parameter"><code><a href="/usr/share/gtk-doc/html/gst-plugins-base-libs-1.0gst-plugins-base-libs-gstvideo.html#GstVideoFormat"><span class="type">GstVideoFormat</span></a> v_format</code></em>,
- <em class="parameter"><code><span class="type">GLint</span> width</code></em>,
- <em class="parameter"><code><span class="type">GLint</span> height</code></em>);</pre>
-</div>
-<hr>
-<div class="refsect2">
-<a name="gst-gl-context-del-texture"></a><h3>gst_gl_context_del_texture ()</h3>
-<pre class="programlisting"><span class="returnvalue">void</span>
-gst_gl_context_del_texture (<em class="parameter"><code><a class="link" href="GstGLContext.html" title="GstGLContext"><span class="type">GstGLContext</span></a> *context</code></em>,
- <em class="parameter"><code><span class="type">GLuint</span> *pTexture</code></em>);</pre>
-</div>
-<hr>
-<div class="refsect2">
<a name="gst-gl-context-gen-fbo"></a><h3>gst_gl_context_gen_fbo ()</h3>
<pre class="programlisting"><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
gst_gl_context_gen_fbo (<em class="parameter"><code><a class="link" href="GstGLContext.html" title="GstGLContext"><span class="type">GstGLContext</span></a> *context</code></em>,
@@ -473,35 +350,6 @@
<a name="gst-gl-context-clear-shader"></a><h3>gst_gl_context_clear_shader ()</h3>
<pre class="programlisting"><span class="returnvalue">void</span>
gst_gl_context_clear_shader (<em class="parameter"><code><a class="link" href="GstGLContext.html" title="GstGLContext"><span class="type">GstGLContext</span></a> *context</code></em>);</pre>
-<p>Clear's the currently set shader from the GL state machine.</p>
-<p>Note: must be called in the GL thread.</p>
-<div class="refsect3">
-<a name="gst-gl-context-clear-shader.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody><tr>
-<td class="parameter_name"><p>context</p></td>
-<td class="parameter_description"><p>a <a class="link" href="GstGLContext.html" title="GstGLContext"><span class="type">GstGLContext</span></a></p></td>
-<td class="parameter_annotations"> </td>
-</tr></tbody>
-</table></div>
-</div>
-</div>
-<hr>
-<div class="refsect2">
-<a name="gst-gl-generate-texture-full"></a><h3>gst_gl_generate_texture_full ()</h3>
-<pre class="programlisting"><span class="returnvalue">void</span>
-gst_gl_generate_texture_full (<em class="parameter"><code><a class="link" href="GstGLContext.html" title="GstGLContext"><span class="type">GstGLContext</span></a> *context</code></em>,
- <em class="parameter"><code>const <a href="/usr/share/gtk-doc/html/gst-plugins-base-libs-1.0gst-plugins-base-libs-gstvideo.html#GstVideoInfo"><span class="type">GstVideoInfo</span></a> *info</code></em>,
- <em class="parameter"><code>const <a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint"><span class="type">guint</span></a> comp</code></em>,
- <em class="parameter"><code><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gint"><span class="type">gint</span></a> stride[]</code></em>,
- <em class="parameter"><code><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gsize"><span class="type">gsize</span></a> offset[]</code></em>,
- <em class="parameter"><code><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gsize"><span class="type">gsize</span></a> size[]</code></em>,
- <em class="parameter"><code><span class="type">GLuint</span> *pTexture</code></em>);</pre>
</div>
<hr>
<div class="refsect2">
@@ -547,27 +395,6 @@
<a name="gst-gl-value-get-texture-target-mask"></a><h3>gst_gl_value_get_texture_target_mask ()</h3>
<pre class="programlisting"><a class="link" href="gst-plugins-bad-libs-OpenGL-Formats.html#GstGLTextureTarget" title="enum GstGLTextureTarget"><span class="returnvalue">GstGLTextureTarget</span></a>
gst_gl_value_get_texture_target_mask (<em class="parameter"><code>const <a href="/usr/share/gtk-doc/html/gobjectgobject-Generic-values.html#GValue"><span class="type">GValue</span></a> *value</code></em>);</pre>
-<p>See <a class="link" href="gst-plugins-bad-libs-OpenGL-Miscellaneous-Utilities.html#gst-gl-value-set-texture-target-from-mask" title="gst_gl_value_set_texture_target_from_mask ()"><code class="function">gst_gl_value_set_texture_target_from_mask()</code></a> for what entails a mask</p>
-<div class="refsect3">
-<a name="gst-gl-value-get-texture-target-mask.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody><tr>
-<td class="parameter_name"><p>value</p></td>
-<td class="parameter_description"><p>an initialized <a href="/usr/share/gtk-doc/html/gobjectgobject-Generic-values.html#GValue"><span class="type">GValue</span></a> of type G_TYPE_STRING</p></td>
-<td class="parameter_annotations"> </td>
-</tr></tbody>
-</table></div>
-</div>
-<div class="refsect3">
-<a name="gst-gl-value-get-texture-target-mask.returns"></a><h4>Returns</h4>
-<p> the mask of <a class="link" href="gst-plugins-bad-libs-OpenGL-Formats.html#GstGLTextureTarget" title="enum GstGLTextureTarget"><span class="type">GstGLTextureTarget</span></a>'s in <em class="parameter"><code>value</code></em>
-</p>
-</div>
</div>
<hr>
<div class="refsect2">
@@ -575,34 +402,6 @@
<pre class="programlisting"><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
gst_gl_value_set_texture_target (<em class="parameter"><code><a href="/usr/share/gtk-doc/html/gobjectgobject-Generic-values.html#GValue"><span class="type">GValue</span></a> *value</code></em>,
<em class="parameter"><code><a class="link" href="gst-plugins-bad-libs-OpenGL-Formats.html#GstGLTextureTarget" title="enum GstGLTextureTarget"><span class="type">GstGLTextureTarget</span></a> target</code></em>);</pre>
-<div class="refsect3">
-<a name="gst-gl-value-set-texture-target.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="parameter_name"><p>value</p></td>
-<td class="parameter_description"><p>an initialized <a href="/usr/share/gtk-doc/html/gobjectgobject-Generic-values.html#GValue"><span class="type">GValue</span></a> of type G_TYPE_STRING</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>target</p></td>
-<td class="parameter_description"><p>a <a class="link" href="gst-plugins-bad-libs-OpenGL-Formats.html#GstGLTextureTarget" title="enum GstGLTextureTarget"><span class="type">GstGLTextureTarget</span></a>'s</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<div class="refsect3">
-<a name="gst-gl-value-set-texture-target.returns"></a><h4>Returns</h4>
-<p> whether the <em class="parameter"><code>target</code></em>
-could be set on <em class="parameter"><code>value</code></em>
-</p>
-</div>
</div>
<hr>
<div class="refsect2">
@@ -611,36 +410,6 @@
gst_gl_value_set_texture_target_from_mask
(<em class="parameter"><code><a href="/usr/share/gtk-doc/html/gobjectgobject-Generic-values.html#GValue"><span class="type">GValue</span></a> *value</code></em>,
<em class="parameter"><code><a class="link" href="gst-plugins-bad-libs-OpenGL-Formats.html#GstGLTextureTarget" title="enum GstGLTextureTarget"><span class="type">GstGLTextureTarget</span></a> target_mask</code></em>);</pre>
-<p>A mask is a bitwise OR of (1 << target) where target is a valid
-<a class="link" href="gst-plugins-bad-libs-OpenGL-Formats.html#GstGLTextureTarget" title="enum GstGLTextureTarget"><span class="type">GstGLTextureTarget</span></a></p>
-<div class="refsect3">
-<a name="gst-gl-value-set-texture-target-from-mask.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="parameter_name"><p>value</p></td>
-<td class="parameter_description"><p>an uninitialized <a href="/usr/share/gtk-doc/html/gobjectgobject-Generic-values.html#GValue"><span class="type">GValue</span></a></p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>target_mask</p></td>
-<td class="parameter_description"><p>a bitwise mask of <a class="link" href="gst-plugins-bad-libs-OpenGL-Formats.html#GstGLTextureTarget" title="enum GstGLTextureTarget"><span class="type">GstGLTextureTarget</span></a>'s</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<div class="refsect3">
-<a name="gst-gl-value-set-texture-target-from-mask.returns"></a><h4>Returns</h4>
-<p> whether the <em class="parameter"><code>target_mask</code></em>
-could be set on <em class="parameter"><code>value</code></em>
-</p>
-</div>
</div>
</div>
<div class="refsect1">
diff --git a/docs/libs/html/gst-plugins-bad-libs-OpenGL-debugging.html b/docs/libs/html/gst-plugins-bad-libs-OpenGL-debugging.html
deleted file mode 100644
index ac96c27..0000000
--- a/docs/libs/html/gst-plugins-bad-libs-OpenGL-debugging.html
+++ /dev/null
@@ -1,648 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>OpenGL debugging: GStreamer Bad Plugins 1.0 Library Reference Manual</title>
-<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
-<link rel="home" href="index.html" title="GStreamer Bad Plugins 1.0 Library Reference Manual">
-<link rel="up" href="gl.html" title="OpenGL Helper Library">
-<link rel="prev" href="gst-plugins-bad-libs-GstGLWindowX11.html" title="GstGLWindowX11">
-<link rel="next" href="gst-plugins-bad-libs-OpenGL-Miscellaneous-Utilities.html" title="OpenGL Miscellaneous Utilities">
-<meta name="generator" content="GTK-Doc V1.25 (XML mode)">
-<link rel="stylesheet" href="style.css" type="text/css">
-</head>
-<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
-<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="5"><tr valign="middle">
-<td width="100%" align="left" class="shortcuts">
-<a href="#" class="shortcut">Top</a><span id="nav_description"> <span class="dim">|</span>
- <a href="#gst-plugins-bad-libs-OpenGL-debugging.description" class="shortcut">Description</a></span>
-</td>
-<td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
-<td><a accesskey="u" href="gl.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
-<td><a accesskey="p" href="gst-plugins-bad-libs-GstGLWindowX11.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
-<td><a accesskey="n" href="gst-plugins-bad-libs-OpenGL-Miscellaneous-Utilities.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
-</tr></table>
-<div class="refentry">
-<a name="gst-plugins-bad-libs-OpenGL-debugging"></a><div class="titlepage"></div>
-<div class="refnamediv"><table width="100%"><tr>
-<td valign="top">
-<h2><span class="refentrytitle"><a name="gst-plugins-bad-libs-OpenGL-debugging.top_of_page"></a>OpenGL debugging</span></h2>
-<p>OpenGL debugging — helper routines for dealing with OpenGL debugging</p>
-</td>
-<td class="gallery_image" valign="top" align="right"></td>
-</tr></table></div>
-<div class="refsect1">
-<a name="gst-plugins-bad-libs-OpenGL-debugging.functions"></a><h2>Functions</h2>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="functions_return">
-<col class="functions_name">
-</colgroup>
-<tbody>
-<tr>
-<td class="function_type">
-<a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gchar"><span class="returnvalue">gchar</span></a> *
-</td>
-<td class="function_name">
-<span class="c_punctuation">(</span><a class="link" href="gst-plugins-bad-libs-OpenGL-debugging.html#GstGLAsyncDebugLogGetMessage" title="GstGLAsyncDebugLogGetMessage ()">*GstGLAsyncDebugLogGetMessage</a><span class="c_punctuation">)</span> <span class="c_punctuation">()</span>
-</td>
-</tr>
-<tr>
-<td class="function_type">
-<a class="link" href="gst-plugins-bad-libs-OpenGL-debugging.html#GstGLAsyncDebug" title="struct GstGLAsyncDebug"><span class="returnvalue">GstGLAsyncDebug</span></a> *
-</td>
-<td class="function_name">
-<a class="link" href="gst-plugins-bad-libs-OpenGL-debugging.html#gst-gl-async-debug-new" title="gst_gl_async_debug_new ()">gst_gl_async_debug_new</a> <span class="c_punctuation">()</span>
-</td>
-</tr>
-<tr>
-<td class="function_type">
-<span class="returnvalue">void</span>
-</td>
-<td class="function_name">
-<a class="link" href="gst-plugins-bad-libs-OpenGL-debugging.html#gst-gl-async-debug-free" title="gst_gl_async_debug_free ()">gst_gl_async_debug_free</a> <span class="c_punctuation">()</span>
-</td>
-</tr>
-<tr>
-<td class="function_type">
-<span class="returnvalue">void</span>
-</td>
-<td class="function_name">
-<a class="link" href="gst-plugins-bad-libs-OpenGL-debugging.html#gst-gl-async-debug-init" title="gst_gl_async_debug_init ()">gst_gl_async_debug_init</a> <span class="c_punctuation">()</span>
-</td>
-</tr>
-<tr>
-<td class="function_type">
-<span class="returnvalue">void</span>
-</td>
-<td class="function_name">
-<a class="link" href="gst-plugins-bad-libs-OpenGL-debugging.html#gst-gl-async-debug-unset" title="gst_gl_async_debug_unset ()">gst_gl_async_debug_unset</a> <span class="c_punctuation">()</span>
-</td>
-</tr>
-<tr>
-<td class="function_type">
-<span class="returnvalue">void</span>
-</td>
-<td class="function_name">
-<a class="link" href="gst-plugins-bad-libs-OpenGL-debugging.html#gst-gl-async-debug-freeze" title="gst_gl_async_debug_freeze ()">gst_gl_async_debug_freeze</a> <span class="c_punctuation">()</span>
-</td>
-</tr>
-<tr>
-<td class="function_type">
-<span class="returnvalue">void</span>
-</td>
-<td class="function_name">
-<a class="link" href="gst-plugins-bad-libs-OpenGL-debugging.html#gst-gl-async-debug-thaw" title="gst_gl_async_debug_thaw ()">gst_gl_async_debug_thaw</a> <span class="c_punctuation">()</span>
-</td>
-</tr>
-<tr>
-<td class="function_type">
-<span class="returnvalue">void</span>
-</td>
-<td class="function_name">
-<a class="link" href="gst-plugins-bad-libs-OpenGL-debugging.html#gst-gl-async-debug-output-log-msg" title="gst_gl_async_debug_output_log_msg ()">gst_gl_async_debug_output_log_msg</a> <span class="c_punctuation">()</span>
-</td>
-</tr>
-<tr>
-<td class="function_type">
-<span class="returnvalue">void</span>
-</td>
-<td class="function_name">
-<a class="link" href="gst-plugins-bad-libs-OpenGL-debugging.html#gst-gl-async-debug-store-log-msg" title="gst_gl_async_debug_store_log_msg ()">gst_gl_async_debug_store_log_msg</a> <span class="c_punctuation">()</span>
-</td>
-</tr>
-<tr>
-<td class="function_type">
-<span class="returnvalue">void</span>
-</td>
-<td class="function_name">
-<a class="link" href="gst-plugins-bad-libs-OpenGL-debugging.html#gst-gl-async-debug-store-log-msg-valist" title="gst_gl_async_debug_store_log_msg_valist ()">gst_gl_async_debug_store_log_msg_valist</a> <span class="c_punctuation">()</span>
-</td>
-</tr>
-<tr>
-<td class="define_keyword">#define</td>
-<td class="function_name">
-<a class="link" href="gst-plugins-bad-libs-OpenGL-debugging.html#GST-GL-ASYNC-CAT-LEVEL-LOG-valist" title="GST_GL_ASYNC_CAT_LEVEL_LOG_valist()">GST_GL_ASYNC_CAT_LEVEL_LOG_valist</a><span class="c_punctuation">()</span>
-</td>
-</tr>
-<tr>
-<td class="define_keyword">#define</td>
-<td class="function_name">
-<a class="link" href="gst-plugins-bad-libs-OpenGL-debugging.html#GST-GL-ASYNC-CAT-LEVEL-LOG:CAPS" title="GST_GL_ASYNC_CAT_LEVEL_LOG()">GST_GL_ASYNC_CAT_LEVEL_LOG</a><span class="c_punctuation">()</span>
-</td>
-</tr>
-<tr>
-<td class="function_type">
-<span class="returnvalue">void</span>
-</td>
-<td class="function_name">
-<a class="link" href="gst-plugins-bad-libs-OpenGL-debugging.html#gst-gl-insert-debug-marker" title="gst_gl_insert_debug_marker ()">gst_gl_insert_debug_marker</a> <span class="c_punctuation">()</span>
-</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<div class="refsect1">
-<a name="gst-plugins-bad-libs-OpenGL-debugging.other"></a><h2>Types and Values</h2>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="name">
-<col class="description">
-</colgroup>
-<tbody><tr>
-<td class="datatype_keyword">struct</td>
-<td class="function_name"><a class="link" href="gst-plugins-bad-libs-OpenGL-debugging.html#GstGLAsyncDebug" title="struct GstGLAsyncDebug">GstGLAsyncDebug</a></td>
-</tr></tbody>
-</table></div>
-</div>
-<div class="refsect1">
-<a name="gst-plugins-bad-libs-OpenGL-debugging.description"></a><h2>Description</h2>
-</div>
-<div class="refsect1">
-<a name="gst-plugins-bad-libs-OpenGL-debugging.functions_details"></a><h2>Functions</h2>
-<div class="refsect2">
-<a name="GstGLAsyncDebugLogGetMessage"></a><h3>GstGLAsyncDebugLogGetMessage ()</h3>
-<pre class="programlisting"><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gchar"><span class="returnvalue">gchar</span></a> *
-<span class="c_punctuation">(</span>*GstGLAsyncDebugLogGetMessage<span class="c_punctuation">)</span> (<em class="parameter"><code><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a> user_data</code></em>);</pre>
-</div>
-<hr>
-<div class="refsect2">
-<a name="gst-gl-async-debug-new"></a><h3>gst_gl_async_debug_new ()</h3>
-<pre class="programlisting"><a class="link" href="gst-plugins-bad-libs-OpenGL-debugging.html#GstGLAsyncDebug" title="struct GstGLAsyncDebug"><span class="returnvalue">GstGLAsyncDebug</span></a> *
-gst_gl_async_debug_new (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
-<p>Free with <a class="link" href="gst-plugins-bad-libs-OpenGL-debugging.html#gst-gl-async-debug-free" title="gst_gl_async_debug_free ()"><code class="function">gst_gl_async_debug_free()</code></a></p>
-<div class="refsect3">
-<a name="gst-gl-async-debug-new.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody><tr>
-<td class="parameter_name"><p>ad</p></td>
-<td class="parameter_description"><p>a <a class="link" href="gst-plugins-bad-libs-OpenGL-debugging.html#GstGLAsyncDebug" title="struct GstGLAsyncDebug"><span class="type">GstGLAsyncDebug</span></a></p></td>
-<td class="parameter_annotations"> </td>
-</tr></tbody>
-</table></div>
-</div>
-<div class="refsect3">
-<a name="gst-gl-async-debug-new.returns"></a><h4>Returns</h4>
-<p> a new <a class="link" href="gst-plugins-bad-libs-OpenGL-debugging.html#GstGLAsyncDebug" title="struct GstGLAsyncDebug"><span class="type">GstGLAsyncDebug</span></a></p>
-</div>
-<p class="since">Since: 1.8</p>
-</div>
-<hr>
-<div class="refsect2">
-<a name="gst-gl-async-debug-free"></a><h3>gst_gl_async_debug_free ()</h3>
-<pre class="programlisting"><span class="returnvalue">void</span>
-gst_gl_async_debug_free (<em class="parameter"><code><a class="link" href="gst-plugins-bad-libs-OpenGL-debugging.html#GstGLAsyncDebug" title="struct GstGLAsyncDebug"><span class="type">GstGLAsyncDebug</span></a> *ad</code></em>);</pre>
-<p>Frees <em class="parameter"><code>ad</code></em>
-</p>
-<div class="refsect3">
-<a name="gst-gl-async-debug-free.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody><tr>
-<td class="parameter_name"><p>ad</p></td>
-<td class="parameter_description"><p>a <a class="link" href="gst-plugins-bad-libs-OpenGL-debugging.html#GstGLAsyncDebug" title="struct GstGLAsyncDebug"><span class="type">GstGLAsyncDebug</span></a></p></td>
-<td class="parameter_annotations"> </td>
-</tr></tbody>
-</table></div>
-</div>
-<p class="since">Since: 1.8</p>
-</div>
-<hr>
-<div class="refsect2">
-<a name="gst-gl-async-debug-init"></a><h3>gst_gl_async_debug_init ()</h3>
-<pre class="programlisting"><span class="returnvalue">void</span>
-gst_gl_async_debug_init (<em class="parameter"><code><a class="link" href="gst-plugins-bad-libs-OpenGL-debugging.html#GstGLAsyncDebug" title="struct GstGLAsyncDebug"><span class="type">GstGLAsyncDebug</span></a> *ad</code></em>);</pre>
-<p>Initialize <em class="parameter"><code>ad</code></em>
-. Intended for use with <a class="link" href="gst-plugins-bad-libs-OpenGL-debugging.html#GstGLAsyncDebug" title="struct GstGLAsyncDebug"><span class="type">GstGLAsyncDebug</span></a>'s that are embedded
-in other structs.</p>
-<div class="refsect3">
-<a name="gst-gl-async-debug-init.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody><tr>
-<td class="parameter_name"><p>ad</p></td>
-<td class="parameter_description"><p>a <a class="link" href="gst-plugins-bad-libs-OpenGL-debugging.html#GstGLAsyncDebug" title="struct GstGLAsyncDebug"><span class="type">GstGLAsyncDebug</span></a></p></td>
-<td class="parameter_annotations"> </td>
-</tr></tbody>
-</table></div>
-</div>
-<p class="since">Since: 1.8</p>
-</div>
-<hr>
-<div class="refsect2">
-<a name="gst-gl-async-debug-unset"></a><h3>gst_gl_async_debug_unset ()</h3>
-<pre class="programlisting"><span class="returnvalue">void</span>
-gst_gl_async_debug_unset (<em class="parameter"><code><a class="link" href="gst-plugins-bad-libs-OpenGL-debugging.html#GstGLAsyncDebug" title="struct GstGLAsyncDebug"><span class="type">GstGLAsyncDebug</span></a> *ad</code></em>);</pre>
-<p>Unset any dynamically allocated data. Intended for use with
-<a class="link" href="gst-plugins-bad-libs-OpenGL-debugging.html#GstGLAsyncDebug" title="struct GstGLAsyncDebug"><span class="type">GstGLAsyncDebug</span></a>'s that are embedded in other structs.</p>
-<div class="refsect3">
-<a name="gst-gl-async-debug-unset.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody><tr>
-<td class="parameter_name"><p>ad</p></td>
-<td class="parameter_description"><p>a <a class="link" href="gst-plugins-bad-libs-OpenGL-debugging.html#GstGLAsyncDebug" title="struct GstGLAsyncDebug"><span class="type">GstGLAsyncDebug</span></a></p></td>
-<td class="parameter_annotations"> </td>
-</tr></tbody>
-</table></div>
-</div>
-</div>
-<hr>
-<div class="refsect2">
-<a name="gst-gl-async-debug-freeze"></a><h3>gst_gl_async_debug_freeze ()</h3>
-<pre class="programlisting"><span class="returnvalue">void</span>
-gst_gl_async_debug_freeze (<em class="parameter"><code><a class="link" href="gst-plugins-bad-libs-OpenGL-debugging.html#GstGLAsyncDebug" title="struct GstGLAsyncDebug"><span class="type">GstGLAsyncDebug</span></a> *ad</code></em>);</pre>
-<p>freeze the debug output. While frozen, any call to
-<a class="link" href="gst-plugins-bad-libs-OpenGL-debugging.html#gst-gl-async-debug-output-log-msg" title="gst_gl_async_debug_output_log_msg ()"><code class="function">gst_gl_async_debug_output_log_msg()</code></a> will not output any messages but
-subsequent calls to <a class="link" href="gst-plugins-bad-libs-OpenGL-debugging.html#gst-gl-async-debug-store-log-msg" title="gst_gl_async_debug_store_log_msg ()"><code class="function">gst_gl_async_debug_store_log_msg()</code></a> will overwrite previous
-messages.</p>
-<div class="refsect3">
-<a name="gst-gl-async-debug-freeze.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody><tr>
-<td class="parameter_name"><p>ad</p></td>
-<td class="parameter_description"><p>a <a class="link" href="gst-plugins-bad-libs-OpenGL-debugging.html#GstGLAsyncDebug" title="struct GstGLAsyncDebug"><span class="type">GstGLAsyncDebug</span></a></p></td>
-<td class="parameter_annotations"> </td>
-</tr></tbody>
-</table></div>
-</div>
-<p class="since">Since: 1.8</p>
-</div>
-<hr>
-<div class="refsect2">
-<a name="gst-gl-async-debug-thaw"></a><h3>gst_gl_async_debug_thaw ()</h3>
-<pre class="programlisting"><span class="returnvalue">void</span>
-gst_gl_async_debug_thaw (<em class="parameter"><code><a class="link" href="gst-plugins-bad-libs-OpenGL-debugging.html#GstGLAsyncDebug" title="struct GstGLAsyncDebug"><span class="type">GstGLAsyncDebug</span></a> *ad</code></em>);</pre>
-<p>unfreeze the debug output. See <a class="link" href="gst-plugins-bad-libs-OpenGL-debugging.html#gst-gl-async-debug-freeze" title="gst_gl_async_debug_freeze ()"><code class="function">gst_gl_async_debug_freeze()</code></a> for what freezing means</p>
-<div class="refsect3">
-<a name="gst-gl-async-debug-thaw.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody><tr>
-<td class="parameter_name"><p>ad</p></td>
-<td class="parameter_description"><p>a <a class="link" href="gst-plugins-bad-libs-OpenGL-debugging.html#GstGLAsyncDebug" title="struct GstGLAsyncDebug"><span class="type">GstGLAsyncDebug</span></a></p></td>
-<td class="parameter_annotations"> </td>
-</tr></tbody>
-</table></div>
-</div>
-<p class="since">Since: 1.8</p>
-</div>
-<hr>
-<div class="refsect2">
-<a name="gst-gl-async-debug-output-log-msg"></a><h3>gst_gl_async_debug_output_log_msg ()</h3>
-<pre class="programlisting"><span class="returnvalue">void</span>
-gst_gl_async_debug_output_log_msg (<em class="parameter"><code><a class="link" href="gst-plugins-bad-libs-OpenGL-debugging.html#GstGLAsyncDebug" title="struct GstGLAsyncDebug"><span class="type">GstGLAsyncDebug</span></a> *ad</code></em>);</pre>
-<p>Outputs a previously stored debug message.</p>
-<div class="refsect3">
-<a name="gst-gl-async-debug-output-log-msg.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody><tr>
-<td class="parameter_name"><p>ad</p></td>
-<td class="parameter_description"><p>the <a class="link" href="gst-plugins-bad-libs-OpenGL-debugging.html#GstGLAsyncDebug" title="struct GstGLAsyncDebug"><span class="type">GstGLAsyncDebug</span></a> to store the message in</p></td>
-<td class="parameter_annotations"> </td>
-</tr></tbody>
-</table></div>
-</div>
-</div>
-<hr>
-<div class="refsect2">
-<a name="gst-gl-async-debug-store-log-msg"></a><h3>gst_gl_async_debug_store_log_msg ()</h3>
-<pre class="programlisting"><span class="returnvalue">void</span>
-gst_gl_async_debug_store_log_msg (<em class="parameter"><code><a class="link" href="gst-plugins-bad-libs-OpenGL-debugging.html#GstGLAsyncDebug" title="struct GstGLAsyncDebug"><span class="type">GstGLAsyncDebug</span></a> *ad</code></em>,
- <em class="parameter"><code><a href="/usr/share/gtk-doc/html/gstreamer-1.0gstreamer-GstInfo.html#GstDebugCategory"><span class="type">GstDebugCategory</span></a> *cat</code></em>,
- <em class="parameter"><code><a href="/usr/share/gtk-doc/html/gstreamer-1.0gstreamer-GstInfo.html#GstDebugLevel"><span class="type">GstDebugLevel</span></a> level</code></em>,
- <em class="parameter"><code>const <a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *file</code></em>,
- <em class="parameter"><code>const <a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *function</code></em>,
- <em class="parameter"><code><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gint"><span class="type">gint</span></a> line</code></em>,
- <em class="parameter"><code><a href="/usr/share/gtk-doc/html/gobjectgobject-The-Base-Object-Type.html#GObject-struct"><span class="type">GObject</span></a> *object</code></em>,
- <em class="parameter"><code>const <a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *format</code></em>,
- <em class="parameter"><code>...</code></em>);</pre>
-<p>Stores a debug message for later output by <a class="link" href="gst-plugins-bad-libs-OpenGL-debugging.html#gst-gl-async-debug-output-log-msg" title="gst_gl_async_debug_output_log_msg ()"><code class="function">gst_gl_async_debug_output_log_msg()</code></a></p>
-<div class="refsect3">
-<a name="gst-gl-async-debug-store-log-msg.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="parameter_name"><p>ad</p></td>
-<td class="parameter_description"><p>the <a class="link" href="gst-plugins-bad-libs-OpenGL-debugging.html#GstGLAsyncDebug" title="struct GstGLAsyncDebug"><span class="type">GstGLAsyncDebug</span></a> to store the message in</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>cat</p></td>
-<td class="parameter_description"><p>the <a href="/usr/share/gtk-doc/html/gstreamer-1.0gstreamer-GstInfo.html#GstDebugCategory"><span class="type">GstDebugCategory</span></a> to output the message in</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>level</p></td>
-<td class="parameter_description"><p>the <a href="/usr/share/gtk-doc/html/gst-plugins-good-plugins-1.0gst-plugins-good-plugins-level.html#GstLevel-struct"><span class="type">GstLevel</span></a></p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>file</p></td>
-<td class="parameter_description"><p>the file where the debug message originates from</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>function</p></td>
-<td class="parameter_description"><p>the function where the debug message originates from</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>line</p></td>
-<td class="parameter_description"><p>the line in <em class="parameter"><code>file</code></em>
-where the debug message originates from</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>object</p></td>
-<td class="parameter_description"><p> a <a href="/usr/share/gtk-doc/html/gobjectgobject-The-Base-Object-Type.html#GObject-struct"><span class="type">GObject</span></a> to associate with the debug message. </p></td>
-<td class="parameter_annotations"><span class="annotation">[<acronym title="NULL is OK, both for passing and for returning."><span class="acronym">allow-none</span></acronym>]</span></td>
-</tr>
-<tr>
-<td class="parameter_name"><p>format</p></td>
-<td class="parameter_description"><p>a printf style format string</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>...</p></td>
-<td class="parameter_description"><p>the list of arguments for <em class="parameter"><code>format</code></em>
-</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<p class="since">Since: 1.8</p>
-</div>
-<hr>
-<div class="refsect2">
-<a name="gst-gl-async-debug-store-log-msg-valist"></a><h3>gst_gl_async_debug_store_log_msg_valist ()</h3>
-<pre class="programlisting"><span class="returnvalue">void</span>
-gst_gl_async_debug_store_log_msg_valist
- (<em class="parameter"><code><a class="link" href="gst-plugins-bad-libs-OpenGL-debugging.html#GstGLAsyncDebug" title="struct GstGLAsyncDebug"><span class="type">GstGLAsyncDebug</span></a> *ad</code></em>,
- <em class="parameter"><code><a href="/usr/share/gtk-doc/html/gstreamer-1.0gstreamer-GstInfo.html#GstDebugCategory"><span class="type">GstDebugCategory</span></a> *cat</code></em>,
- <em class="parameter"><code><a href="/usr/share/gtk-doc/html/gstreamer-1.0gstreamer-GstInfo.html#GstDebugLevel"><span class="type">GstDebugLevel</span></a> level</code></em>,
- <em class="parameter"><code>const <a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *file</code></em>,
- <em class="parameter"><code>const <a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *function</code></em>,
- <em class="parameter"><code><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gint"><span class="type">gint</span></a> line</code></em>,
- <em class="parameter"><code><a href="/usr/share/gtk-doc/html/gobjectgobject-The-Base-Object-Type.html#GObject-struct"><span class="type">GObject</span></a> *object</code></em>,
- <em class="parameter"><code>const <a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *format</code></em>,
- <em class="parameter"><code><span class="type">va_list</span> varargs</code></em>);</pre>
-<p>Stores a debug message for later output by <a class="link" href="gst-plugins-bad-libs-OpenGL-debugging.html#gst-gl-async-debug-output-log-msg" title="gst_gl_async_debug_output_log_msg ()"><code class="function">gst_gl_async_debug_output_log_msg()</code></a></p>
-<div class="refsect3">
-<a name="gst-gl-async-debug-store-log-msg-valist.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="parameter_name"><p>ad</p></td>
-<td class="parameter_description"><p>the <a class="link" href="gst-plugins-bad-libs-OpenGL-debugging.html#GstGLAsyncDebug" title="struct GstGLAsyncDebug"><span class="type">GstGLAsyncDebug</span></a> to store the message in</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>cat</p></td>
-<td class="parameter_description"><p>the <a href="/usr/share/gtk-doc/html/gstreamer-1.0gstreamer-GstInfo.html#GstDebugCategory"><span class="type">GstDebugCategory</span></a> to output the message in</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>level</p></td>
-<td class="parameter_description"><p>the <a href="/usr/share/gtk-doc/html/gst-plugins-good-plugins-1.0gst-plugins-good-plugins-level.html#GstLevel-struct"><span class="type">GstLevel</span></a></p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>file</p></td>
-<td class="parameter_description"><p>the file where the debug message originates from</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>function</p></td>
-<td class="parameter_description"><p>the function where the debug message originates from</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>line</p></td>
-<td class="parameter_description"><p>the line in <em class="parameter"><code>file</code></em>
-where the debug message originates from</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>object</p></td>
-<td class="parameter_description"><p> a <a href="/usr/share/gtk-doc/html/gobjectgobject-The-Base-Object-Type.html#GObject-struct"><span class="type">GObject</span></a> to associate with the debug message. </p></td>
-<td class="parameter_annotations"><span class="annotation">[<acronym title="NULL is OK, both for passing and for returning."><span class="acronym">allow-none</span></acronym>]</span></td>
-</tr>
-<tr>
-<td class="parameter_name"><p>format</p></td>
-<td class="parameter_description"><p>a printf style format string</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>varargs</p></td>
-<td class="parameter_description"><p>the list of arguments for <em class="parameter"><code>format</code></em>
-</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<p class="since">Since: 1.8</p>
-</div>
-<hr>
-<div class="refsect2">
-<a name="GST-GL-ASYNC-CAT-LEVEL-LOG-valist"></a><h3>GST_GL_ASYNC_CAT_LEVEL_LOG_valist()</h3>
-<pre class="programlisting">#define GST_GL_ASYNC_CAT_LEVEL_LOG_valist(ad,cat,level,object,format,varargs)</pre>
-<p>Stores a debug message in <em class="parameter"><code>ad</code></em>
- for later output</p>
-<div class="refsect3">
-<a name="GST-GL-ASYNC-CAT-LEVEL-LOG-valist.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="parameter_name"><p>ad</p></td>
-<td class="parameter_description"><p>the <a class="link" href="gst-plugins-bad-libs-OpenGL-debugging.html#GstGLAsyncDebug" title="struct GstGLAsyncDebug"><span class="type">GstGLAsyncDebug</span></a> to store the message in</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>cat</p></td>
-<td class="parameter_description"><p>the <a href="/usr/share/gtk-doc/html/gstreamer-1.0gstreamer-GstInfo.html#GstDebugCategory"><span class="type">GstDebugCategory</span></a> to output the message in</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>level</p></td>
-<td class="parameter_description"><p>the <a href="/usr/share/gtk-doc/html/gst-plugins-good-plugins-1.0gst-plugins-good-plugins-level.html#GstLevel-struct"><span class="type">GstLevel</span></a></p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>object</p></td>
-<td class="parameter_description"><p> a <a href="/usr/share/gtk-doc/html/gobjectgobject-The-Base-Object-Type.html#GObject-struct"><span class="type">GObject</span></a> to associate with the debug message. </p></td>
-<td class="parameter_annotations"><span class="annotation">[<acronym title="NULL is OK, both for passing and for returning."><span class="acronym">allow-none</span></acronym>]</span></td>
-</tr>
-<tr>
-<td class="parameter_name"><p>format</p></td>
-<td class="parameter_description"><p>a printf style format string</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>varargs</p></td>
-<td class="parameter_description"><p>the list of arguments for <em class="parameter"><code>format</code></em>
-</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-</tbody>
-</table></div>
-</div>
-</div>
-<hr>
-<div class="refsect2">
-<a name="GST-GL-ASYNC-CAT-LEVEL-LOG:CAPS"></a><h3>GST_GL_ASYNC_CAT_LEVEL_LOG()</h3>
-<pre class="programlisting">#define GST_GL_ASYNC_CAT_LEVEL_LOG(ad,cat,level,object,format,...)</pre>
-<p>Stores a debug message in <em class="parameter"><code>ad</code></em>
- for later output</p>
-<div class="refsect3">
-<a name="GST-GL-ASYNC-CAT-LEVEL-LOG.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="parameter_name"><p>ad</p></td>
-<td class="parameter_description"><p>the <a class="link" href="gst-plugins-bad-libs-OpenGL-debugging.html#GstGLAsyncDebug" title="struct GstGLAsyncDebug"><span class="type">GstGLAsyncDebug</span></a> to store the message in</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>cat</p></td>
-<td class="parameter_description"><p>the <a href="/usr/share/gtk-doc/html/gstreamer-1.0gstreamer-GstInfo.html#GstDebugCategory"><span class="type">GstDebugCategory</span></a> to output the message in</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>level</p></td>
-<td class="parameter_description"><p>the <a href="/usr/share/gtk-doc/html/gst-plugins-good-plugins-1.0gst-plugins-good-plugins-level.html#GstLevel-struct"><span class="type">GstLevel</span></a></p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>object</p></td>
-<td class="parameter_description"><p> a <a href="/usr/share/gtk-doc/html/gobjectgobject-The-Base-Object-Type.html#GObject-struct"><span class="type">GObject</span></a> to associate with the debug message. </p></td>
-<td class="parameter_annotations"><span class="annotation">[<acronym title="NULL is OK, both for passing and for returning."><span class="acronym">allow-none</span></acronym>]</span></td>
-</tr>
-<tr>
-<td class="parameter_name"><p>format</p></td>
-<td class="parameter_description"><p>a printf style format string</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>...</p></td>
-<td class="parameter_description"><p>the list of arguments for <em class="parameter"><code>format</code></em>
-</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-</tbody>
-</table></div>
-</div>
-</div>
-<hr>
-<div class="refsect2">
-<a name="gst-gl-insert-debug-marker"></a><h3>gst_gl_insert_debug_marker ()</h3>
-<pre class="programlisting"><span class="returnvalue">void</span>
-gst_gl_insert_debug_marker (<em class="parameter"><code><a class="link" href="GstGLContext.html" title="GstGLContext"><span class="type">GstGLContext</span></a> *context</code></em>,
- <em class="parameter"><code>const <a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *format</code></em>,
- <em class="parameter"><code>...</code></em>);</pre>
-<p>Inserts a marker into a GL debug stream. Requires the 'gldebugmarker'
-debug category to be at least <a href="/usr/share/gtk-doc/html/gstreamer-1.0gstreamer-GstInfo.html#GST-LEVEL-FIXME:CAPS"><code class="literal">GST_LEVEL_FIXME</code></a>.</p>
-<div class="refsect3">
-<a name="gst-gl-insert-debug-marker.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="parameter_name"><p>context</p></td>
-<td class="parameter_description"><p>a <a class="link" href="GstGLContext.html" title="GstGLContext"><span class="type">GstGLContext</span></a></p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>format</p></td>
-<td class="parameter_description"><p>a printf-style format string</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>...</p></td>
-<td class="parameter_description"><p>arguments form <em class="parameter"><code>format</code></em>
-</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<p class="since">Since: 1.8</p>
-</div>
-</div>
-<div class="refsect1">
-<a name="gst-plugins-bad-libs-OpenGL-debugging.other_details"></a><h2>Types and Values</h2>
-<div class="refsect2">
-<a name="GstGLAsyncDebug"></a><h3>struct GstGLAsyncDebug</h3>
-<pre class="programlisting">struct GstGLAsyncDebug {
-};
-</pre>
-<p><a class="link" href="gst-plugins-bad-libs-OpenGL-debugging.html#GstGLAsyncDebug" title="struct GstGLAsyncDebug"><span class="type">GstGLAsyncDebug</span></a> an opaque structure and should only be accessed through the
-provided API.</p>
-</div>
-</div>
-<div class="refsect1">
-<a name="gst-plugins-bad-libs-OpenGL-debugging.see-also"></a><h2>See Also</h2>
-<p><a class="link" href="GstGLContext.html" title="GstGLContext"><span class="type">GstGLContext</span></a></p>
-</div>
-</div>
-<div class="footer">
-<hr>Generated by GTK-Doc V1.25</div>
-</body>
-</html>
\ No newline at end of file
diff --git a/docs/libs/html/gst-plugins-bad-libs-ATSC-variants-of-MPEG-TS-descriptors.html b/docs/libs/html/gst-plugins-bad-libs-gst-atsc-descriptor.html
similarity index 72%
rename from docs/libs/html/gst-plugins-bad-libs-ATSC-variants-of-MPEG-TS-descriptors.html
rename to docs/libs/html/gst-plugins-bad-libs-gst-atsc-descriptor.html
index d8ac88d..54af81d 100644
--- a/docs/libs/html/gst-plugins-bad-libs-ATSC-variants-of-MPEG-TS-descriptors.html
+++ b/docs/libs/html/gst-plugins-bad-libs-gst-atsc-descriptor.html
@@ -2,12 +2,12 @@
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>ATSC variants of MPEG-TS descriptors: GStreamer Bad Plugins 1.0 Library Reference Manual</title>
+<title>gst-atsc-descriptor: GStreamer Bad Plugins 1.0 Library Reference Manual</title>
<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
<link rel="home" href="index.html" title="GStreamer Bad Plugins 1.0 Library Reference Manual">
<link rel="up" href="mpegts.html" title="Mpeg TS helper library">
-<link rel="prev" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-sections.html" title="DVB variants of MPEG-TS sections">
-<link rel="next" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html" title="DVB variants of MPEG-TS descriptors">
+<link rel="prev" href="gst-plugins-bad-libs-gst-dvb-section.html" title="gst-dvb-section">
+<link rel="next" href="gst-plugins-bad-libs-gst-dvb-descriptor.html" title="gst-dvb-descriptor">
<meta name="generator" content="GTK-Doc V1.25 (XML mode)">
<link rel="stylesheet" href="style.css" type="text/css">
</head>
@@ -15,24 +15,24 @@
<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="5"><tr valign="middle">
<td width="100%" align="left" class="shortcuts">
<a href="#" class="shortcut">Top</a><span id="nav_description"> <span class="dim">|</span>
- <a href="#gst-plugins-bad-libs-ATSC-variants-of-MPEG-TS-descriptors.description" class="shortcut">Description</a></span>
+ <a href="#gst-plugins-bad-libs-gst-atsc-descriptor.description" class="shortcut">Description</a></span>
</td>
<td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
<td><a accesskey="u" href="mpegts.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
-<td><a accesskey="p" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-sections.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
-<td><a accesskey="n" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
+<td><a accesskey="p" href="gst-plugins-bad-libs-gst-dvb-section.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
+<td><a accesskey="n" href="gst-plugins-bad-libs-gst-dvb-descriptor.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
</tr></table>
<div class="refentry">
-<a name="gst-plugins-bad-libs-ATSC-variants-of-MPEG-TS-descriptors"></a><div class="titlepage"></div>
+<a name="gst-plugins-bad-libs-gst-atsc-descriptor"></a><div class="titlepage"></div>
<div class="refnamediv"><table width="100%"><tr>
<td valign="top">
-<h2><span class="refentrytitle"><a name="gst-plugins-bad-libs-ATSC-variants-of-MPEG-TS-descriptors.top_of_page"></a>ATSC variants of MPEG-TS descriptors</span></h2>
-<p>ATSC variants of MPEG-TS descriptors — Descriptors for the various ATSC specifications</p>
+<h2><span class="refentrytitle"><a name="gst-plugins-bad-libs-gst-atsc-descriptor.top_of_page"></a>gst-atsc-descriptor</span></h2>
+<p>gst-atsc-descriptor</p>
</td>
<td class="gallery_image" valign="top" align="right"></td>
</tr></table></div>
<div class="refsect1">
-<a name="gst-plugins-bad-libs-ATSC-variants-of-MPEG-TS-descriptors.other"></a><h2>Types and Values</h2>
+<a name="gst-plugins-bad-libs-gst-atsc-descriptor.other"></a><h2>Types and Values</h2>
<div class="informaltable"><table class="informaltable" width="100%" border="0">
<colgroup>
<col width="150px" class="name">
@@ -40,29 +40,21 @@
</colgroup>
<tbody><tr>
<td class="datatype_keyword">enum</td>
-<td class="function_name"><a class="link" href="gst-plugins-bad-libs-ATSC-variants-of-MPEG-TS-descriptors.html#GstMpegtsATSCDescriptorType" title="enum GstMpegtsATSCDescriptorType">GstMpegtsATSCDescriptorType</a></td>
+<td class="function_name"><a class="link" href="gst-plugins-bad-libs-gst-atsc-descriptor.html#GstMpegtsATSCDescriptorType" title="enum GstMpegtsATSCDescriptorType">GstMpegtsATSCDescriptorType</a></td>
</tr></tbody>
</table></div>
</div>
<div class="refsect1">
-<a name="gst-plugins-bad-libs-ATSC-variants-of-MPEG-TS-descriptors.includes"></a><h2>Includes</h2>
-<pre class="synopsis">#include <gst/mpegts/mpegts.h>
-</pre>
+<a name="gst-plugins-bad-libs-gst-atsc-descriptor.description"></a><h2>Description</h2>
</div>
<div class="refsect1">
-<a name="gst-plugins-bad-libs-ATSC-variants-of-MPEG-TS-descriptors.description"></a><h2>Description</h2>
-</div>
-<div class="refsect1">
-<a name="gst-plugins-bad-libs-ATSC-variants-of-MPEG-TS-descriptors.functions_details"></a><h2>Functions</h2>
+<a name="gst-plugins-bad-libs-gst-atsc-descriptor.functions_details"></a><h2>Functions</h2>
<p></p>
</div>
<div class="refsect1">
-<a name="gst-plugins-bad-libs-ATSC-variants-of-MPEG-TS-descriptors.other_details"></a><h2>Types and Values</h2>
+<a name="gst-plugins-bad-libs-gst-atsc-descriptor.other_details"></a><h2>Types and Values</h2>
<div class="refsect2">
<a name="GstMpegtsATSCDescriptorType"></a><h3>enum GstMpegtsATSCDescriptorType</h3>
-<p>These values correspond to the registered descriptor type from
-the various ATSC specifications.</p>
-<p>Consult the relevant specifications for more details.</p>
<div class="refsect3">
<a name="GstMpegtsATSCDescriptorType.members"></a><h4>Members</h4>
<div class="informaltable"><table class="informaltable" width="100%" border="0">
diff --git a/docs/libs/html/gst-plugins-bad-libs-gst-atsc-section.html b/docs/libs/html/gst-plugins-bad-libs-gst-atsc-section.html
new file mode 100644
index 0000000..9fdf2f6
--- /dev/null
+++ b/docs/libs/html/gst-plugins-bad-libs-gst-atsc-section.html
@@ -0,0 +1,475 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>gst-atsc-section: GStreamer Bad Plugins 1.0 Library Reference Manual</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
+<link rel="home" href="index.html" title="GStreamer Bad Plugins 1.0 Library Reference Manual">
+<link rel="up" href="mpegts.html" title="Mpeg TS helper library">
+<link rel="prev" href="gst-plugins-bad-libs-gstmpegtsdescriptor.html" title="gstmpegtsdescriptor">
+<link rel="next" href="gst-plugins-bad-libs-gst-dvb-section.html" title="gst-dvb-section">
+<meta name="generator" content="GTK-Doc V1.25 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="5"><tr valign="middle">
+<td width="100%" align="left" class="shortcuts">
+<a href="#" class="shortcut">Top</a><span id="nav_description"> <span class="dim">|</span>
+ <a href="#gst-plugins-bad-libs-gst-atsc-section.description" class="shortcut">Description</a></span>
+</td>
+<td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
+<td><a accesskey="u" href="mpegts.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
+<td><a accesskey="p" href="gst-plugins-bad-libs-gstmpegtsdescriptor.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
+<td><a accesskey="n" href="gst-plugins-bad-libs-gst-dvb-section.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
+</tr></table>
+<div class="refentry">
+<a name="gst-plugins-bad-libs-gst-atsc-section"></a><div class="titlepage"></div>
+<div class="refnamediv"><table width="100%"><tr>
+<td valign="top">
+<h2><span class="refentrytitle"><a name="gst-plugins-bad-libs-gst-atsc-section.top_of_page"></a>gst-atsc-section</span></h2>
+<p>gst-atsc-section</p>
+</td>
+<td class="gallery_image" valign="top" align="right"></td>
+</tr></table></div>
+<div class="refsect1">
+<a name="gst-plugins-bad-libs-gst-atsc-section.functions"></a><h2>Functions</h2>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
+<col width="150px" class="functions_return">
+<col class="functions_name">
+</colgroup>
+<tbody>
+<tr>
+<td class="function_type">const <a class="link" href="gst-plugins-bad-libs-gst-atsc-section.html#GstMpegtsAtscVCT" title="struct GstMpegtsAtscVCT"><span class="returnvalue">GstMpegtsAtscVCT</span></a> *
+</td>
+<td class="function_name">
+<a class="link" href="gst-plugins-bad-libs-gst-atsc-section.html#gst-mpegts-section-get-atsc-tvct" title="gst_mpegts_section_get_atsc_tvct ()">gst_mpegts_section_get_atsc_tvct</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">const <a class="link" href="gst-plugins-bad-libs-gst-atsc-section.html#GstMpegtsAtscVCT" title="struct GstMpegtsAtscVCT"><span class="returnvalue">GstMpegtsAtscVCT</span></a> *
+</td>
+<td class="function_name">
+<a class="link" href="gst-plugins-bad-libs-gst-atsc-section.html#gst-mpegts-section-get-atsc-cvct" title="gst_mpegts_section_get_atsc_cvct ()">gst_mpegts_section_get_atsc_cvct</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">const <a class="link" href="gst-plugins-bad-libs-gst-atsc-section.html#GstMpegtsAtscMGT" title="struct GstMpegtsAtscMGT"><span class="returnvalue">GstMpegtsAtscMGT</span></a> *
+</td>
+<td class="function_name">
+<a class="link" href="gst-plugins-bad-libs-gst-atsc-section.html#gst-mpegts-section-get-atsc-mgt" title="gst_mpegts_section_get_atsc_mgt ()">gst_mpegts_section_get_atsc_mgt</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">const <a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gchar"><span class="returnvalue">gchar</span></a> *
+</td>
+<td class="function_name">
+<a class="link" href="gst-plugins-bad-libs-gst-atsc-section.html#gst-mpegts-atsc-string-segment-get-string" title="gst_mpegts_atsc_string_segment_get_string ()">gst_mpegts_atsc_string_segment_get_string</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">const <a class="link" href="gst-plugins-bad-libs-gst-atsc-section.html#GstMpegtsAtscEIT" title="struct GstMpegtsAtscEIT"><span class="returnvalue">GstMpegtsAtscEIT</span></a> *
+</td>
+<td class="function_name">
+<a class="link" href="gst-plugins-bad-libs-gst-atsc-section.html#gst-mpegts-section-get-atsc-eit" title="gst_mpegts_section_get_atsc_eit ()">gst_mpegts_section_get_atsc_eit</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">const <a class="link" href="gst-plugins-bad-libs-gst-atsc-section.html#GstMpegtsAtscETT" title="struct GstMpegtsAtscETT"><span class="returnvalue">GstMpegtsAtscETT</span></a> *
+</td>
+<td class="function_name">
+<a class="link" href="gst-plugins-bad-libs-gst-atsc-section.html#gst-mpegts-section-get-atsc-ett" title="gst_mpegts_section_get_atsc_ett ()">gst_mpegts_section_get_atsc_ett</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">const <a class="link" href="gst-plugins-bad-libs-gst-atsc-section.html#GstMpegtsAtscSTT" title="struct GstMpegtsAtscSTT"><span class="returnvalue">GstMpegtsAtscSTT</span></a> *
+</td>
+<td class="function_name">
+<a class="link" href="gst-plugins-bad-libs-gst-atsc-section.html#gst-mpegts-section-get-atsc-stt" title="gst_mpegts_section_get_atsc_stt ()">gst_mpegts_section_get_atsc_stt</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<a href="/usr/share/gtk-doc/html/gstreamer-1.0GstDateTime.html#GstDateTime-struct"><span class="returnvalue">GstDateTime</span></a> *
+</td>
+<td class="function_name">
+<a class="link" href="gst-plugins-bad-libs-gst-atsc-section.html#gst-mpegts-atsc-stt-get-datetime-utc" title="gst_mpegts_atsc_stt_get_datetime_utc ()">gst_mpegts_atsc_stt_get_datetime_utc</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<div class="refsect1">
+<a name="gst-plugins-bad-libs-gst-atsc-section.other"></a><h2>Types and Values</h2>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
+<col width="150px" class="name">
+<col class="description">
+</colgroup>
+<tbody>
+<tr>
+<td class="datatype_keyword">enum</td>
+<td class="function_name"><a class="link" href="gst-plugins-bad-libs-gst-atsc-section.html#GstMpegtsSectionATSCTableID" title="enum GstMpegtsSectionATSCTableID">GstMpegtsSectionATSCTableID</a></td>
+</tr>
+<tr>
+<td class="datatype_keyword">struct</td>
+<td class="function_name"><a class="link" href="gst-plugins-bad-libs-gst-atsc-section.html#GstMpegtsAtscVCTSource" title="struct GstMpegtsAtscVCTSource">GstMpegtsAtscVCTSource</a></td>
+</tr>
+<tr>
+<td class="datatype_keyword">struct</td>
+<td class="function_name"><a class="link" href="gst-plugins-bad-libs-gst-atsc-section.html#GstMpegtsAtscVCT" title="struct GstMpegtsAtscVCT">GstMpegtsAtscVCT</a></td>
+</tr>
+<tr>
+<td class="datatype_keyword">enum</td>
+<td class="function_name"><a class="link" href="gst-plugins-bad-libs-gst-atsc-section.html#GstMpegtsAtscMGTTableType" title="enum GstMpegtsAtscMGTTableType">GstMpegtsAtscMGTTableType</a></td>
+</tr>
+<tr>
+<td class="datatype_keyword">struct</td>
+<td class="function_name"><a class="link" href="gst-plugins-bad-libs-gst-atsc-section.html#GstMpegtsAtscMGTTable" title="struct GstMpegtsAtscMGTTable">GstMpegtsAtscMGTTable</a></td>
+</tr>
+<tr>
+<td class="datatype_keyword">struct</td>
+<td class="function_name"><a class="link" href="gst-plugins-bad-libs-gst-atsc-section.html#GstMpegtsAtscMGT" title="struct GstMpegtsAtscMGT">GstMpegtsAtscMGT</a></td>
+</tr>
+<tr>
+<td class="datatype_keyword">struct</td>
+<td class="function_name"><a class="link" href="gst-plugins-bad-libs-gst-atsc-section.html#GstMpegtsAtscMultString" title="struct GstMpegtsAtscMultString">GstMpegtsAtscMultString</a></td>
+</tr>
+<tr>
+<td class="datatype_keyword">struct</td>
+<td class="function_name"><a class="link" href="gst-plugins-bad-libs-gst-atsc-section.html#GstMpegtsAtscEITEvent" title="struct GstMpegtsAtscEITEvent">GstMpegtsAtscEITEvent</a></td>
+</tr>
+<tr>
+<td class="datatype_keyword">struct</td>
+<td class="function_name"><a class="link" href="gst-plugins-bad-libs-gst-atsc-section.html#GstMpegtsAtscEIT" title="struct GstMpegtsAtscEIT">GstMpegtsAtscEIT</a></td>
+</tr>
+<tr>
+<td class="datatype_keyword">struct</td>
+<td class="function_name"><a class="link" href="gst-plugins-bad-libs-gst-atsc-section.html#GstMpegtsAtscETT" title="struct GstMpegtsAtscETT">GstMpegtsAtscETT</a></td>
+</tr>
+<tr>
+<td class="datatype_keyword">struct</td>
+<td class="function_name"><a class="link" href="gst-plugins-bad-libs-gst-atsc-section.html#GstMpegtsAtscSTT" title="struct GstMpegtsAtscSTT">GstMpegtsAtscSTT</a></td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<div class="refsect1">
+<a name="gst-plugins-bad-libs-gst-atsc-section.description"></a><h2>Description</h2>
+</div>
+<div class="refsect1">
+<a name="gst-plugins-bad-libs-gst-atsc-section.functions_details"></a><h2>Functions</h2>
+<div class="refsect2">
+<a name="gst-mpegts-section-get-atsc-tvct"></a><h3>gst_mpegts_section_get_atsc_tvct ()</h3>
+<pre class="programlisting">const <a class="link" href="gst-plugins-bad-libs-gst-atsc-section.html#GstMpegtsAtscVCT" title="struct GstMpegtsAtscVCT"><span class="returnvalue">GstMpegtsAtscVCT</span></a> *
+gst_mpegts_section_get_atsc_tvct (<em class="parameter"><code><a class="link" href="gst-plugins-bad-libs-gstmpegtssection.html#GstMpegtsSection"><span class="type">GstMpegtsSection</span></a> *section</code></em>);</pre>
+</div>
+<hr>
+<div class="refsect2">
+<a name="gst-mpegts-section-get-atsc-cvct"></a><h3>gst_mpegts_section_get_atsc_cvct ()</h3>
+<pre class="programlisting">const <a class="link" href="gst-plugins-bad-libs-gst-atsc-section.html#GstMpegtsAtscVCT" title="struct GstMpegtsAtscVCT"><span class="returnvalue">GstMpegtsAtscVCT</span></a> *
+gst_mpegts_section_get_atsc_cvct (<em class="parameter"><code><a class="link" href="gst-plugins-bad-libs-gstmpegtssection.html#GstMpegtsSection"><span class="type">GstMpegtsSection</span></a> *section</code></em>);</pre>
+</div>
+<hr>
+<div class="refsect2">
+<a name="gst-mpegts-section-get-atsc-mgt"></a><h3>gst_mpegts_section_get_atsc_mgt ()</h3>
+<pre class="programlisting">const <a class="link" href="gst-plugins-bad-libs-gst-atsc-section.html#GstMpegtsAtscMGT" title="struct GstMpegtsAtscMGT"><span class="returnvalue">GstMpegtsAtscMGT</span></a> *
+gst_mpegts_section_get_atsc_mgt (<em class="parameter"><code><a class="link" href="gst-plugins-bad-libs-gstmpegtssection.html#GstMpegtsSection"><span class="type">GstMpegtsSection</span></a> *section</code></em>);</pre>
+</div>
+<hr>
+<div class="refsect2">
+<a name="gst-mpegts-atsc-string-segment-get-string"></a><h3>gst_mpegts_atsc_string_segment_get_string ()</h3>
+<pre class="programlisting">const <a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gchar"><span class="returnvalue">gchar</span></a> *
+gst_mpegts_atsc_string_segment_get_string
+ (<em class="parameter"><code><span class="type">GstMpegtsAtscStringSegment</span> *seg</code></em>);</pre>
+</div>
+<hr>
+<div class="refsect2">
+<a name="gst-mpegts-section-get-atsc-eit"></a><h3>gst_mpegts_section_get_atsc_eit ()</h3>
+<pre class="programlisting">const <a class="link" href="gst-plugins-bad-libs-gst-atsc-section.html#GstMpegtsAtscEIT" title="struct GstMpegtsAtscEIT"><span class="returnvalue">GstMpegtsAtscEIT</span></a> *
+gst_mpegts_section_get_atsc_eit (<em class="parameter"><code><a class="link" href="gst-plugins-bad-libs-gstmpegtssection.html#GstMpegtsSection"><span class="type">GstMpegtsSection</span></a> *section</code></em>);</pre>
+</div>
+<hr>
+<div class="refsect2">
+<a name="gst-mpegts-section-get-atsc-ett"></a><h3>gst_mpegts_section_get_atsc_ett ()</h3>
+<pre class="programlisting">const <a class="link" href="gst-plugins-bad-libs-gst-atsc-section.html#GstMpegtsAtscETT" title="struct GstMpegtsAtscETT"><span class="returnvalue">GstMpegtsAtscETT</span></a> *
+gst_mpegts_section_get_atsc_ett (<em class="parameter"><code><a class="link" href="gst-plugins-bad-libs-gstmpegtssection.html#GstMpegtsSection"><span class="type">GstMpegtsSection</span></a> *section</code></em>);</pre>
+</div>
+<hr>
+<div class="refsect2">
+<a name="gst-mpegts-section-get-atsc-stt"></a><h3>gst_mpegts_section_get_atsc_stt ()</h3>
+<pre class="programlisting">const <a class="link" href="gst-plugins-bad-libs-gst-atsc-section.html#GstMpegtsAtscSTT" title="struct GstMpegtsAtscSTT"><span class="returnvalue">GstMpegtsAtscSTT</span></a> *
+gst_mpegts_section_get_atsc_stt (<em class="parameter"><code><a class="link" href="gst-plugins-bad-libs-gstmpegtssection.html#GstMpegtsSection"><span class="type">GstMpegtsSection</span></a> *section</code></em>);</pre>
+</div>
+<hr>
+<div class="refsect2">
+<a name="gst-mpegts-atsc-stt-get-datetime-utc"></a><h3>gst_mpegts_atsc_stt_get_datetime_utc ()</h3>
+<pre class="programlisting"><a href="/usr/share/gtk-doc/html/gstreamer-1.0GstDateTime.html#GstDateTime-struct"><span class="returnvalue">GstDateTime</span></a> *
+gst_mpegts_atsc_stt_get_datetime_utc (<em class="parameter"><code><a class="link" href="gst-plugins-bad-libs-gst-atsc-section.html#GstMpegtsAtscSTT" title="struct GstMpegtsAtscSTT"><span class="type">GstMpegtsAtscSTT</span></a> *stt</code></em>);</pre>
+</div>
+</div>
+<div class="refsect1">
+<a name="gst-plugins-bad-libs-gst-atsc-section.other_details"></a><h2>Types and Values</h2>
+<div class="refsect2">
+<a name="GstMpegtsSectionATSCTableID"></a><h3>enum GstMpegtsSectionATSCTableID</h3>
+<div class="refsect3">
+<a name="GstMpegtsSectionATSCTableID.members"></a><h4>Members</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
+<col width="300px" class="enum_members_name">
+<col class="enum_members_description">
+<col width="200px" class="enum_members_annotations">
+</colgroup>
+<tbody>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MTS-TABLE-ID-ATSC-MASTER-GUIDE:CAPS"></a>GST_MTS_TABLE_ID_ATSC_MASTER_GUIDE</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MTS-TABLE-ID-ATSC-TERRESTRIAL-VIRTUAL-CHANNEL:CAPS"></a>GST_MTS_TABLE_ID_ATSC_TERRESTRIAL_VIRTUAL_CHANNEL</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MTS-TABLE-ID-ATSC-CABLE-VIRTUAL-CHANNEL:CAPS"></a>GST_MTS_TABLE_ID_ATSC_CABLE_VIRTUAL_CHANNEL</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MTS-TABLE-ID-ATSC-RATING-REGION:CAPS"></a>GST_MTS_TABLE_ID_ATSC_RATING_REGION</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MTS-TABLE-ID-ATSC-EVENT-INFORMATION:CAPS"></a>GST_MTS_TABLE_ID_ATSC_EVENT_INFORMATION</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MTS-TABLE-ID-ATSC-CHANNEL-OR-EVENT-EXTENDED-TEXT:CAPS"></a>GST_MTS_TABLE_ID_ATSC_CHANNEL_OR_EVENT_EXTENDED_TEXT</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MTS-TABLE-ID-ATSC-SYSTEM-TIME:CAPS"></a>GST_MTS_TABLE_ID_ATSC_SYSTEM_TIME</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MTS-TABLE-ID-ATSC-DATA-EVENT:CAPS"></a>GST_MTS_TABLE_ID_ATSC_DATA_EVENT</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MTS-TABLE-ID-ATSC-DATA-SERVICE:CAPS"></a>GST_MTS_TABLE_ID_ATSC_DATA_SERVICE</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MTS-TABLE-ID-ATSC-NETWORK-RESOURCE:CAPS"></a>GST_MTS_TABLE_ID_ATSC_NETWORK_RESOURCE</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MTS-TABLE-ID-ATSC-LONG-TERM-SERVICE:CAPS"></a>GST_MTS_TABLE_ID_ATSC_LONG_TERM_SERVICE</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MTS-TABLE-ID-ATSC-DIRECTED-CHANNEL-CHANGE:CAPS"></a>GST_MTS_TABLE_ID_ATSC_DIRECTED_CHANNEL_CHANGE</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MTS-TABLE-ID-ATSC-DIRECTED-CHANNEL-CHANGE-SECTION-CODE:CAPS"></a>GST_MTS_TABLE_ID_ATSC_DIRECTED_CHANNEL_CHANGE_SECTION_CODE</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MTS-TABLE-ID-ATSC-AGGREGATE-EVENT-INFORMATION:CAPS"></a>GST_MTS_TABLE_ID_ATSC_AGGREGATE_EVENT_INFORMATION</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MTS-TABLE-ID-ATSC-AGGREGATE-EXTENDED-TEXT:CAPS"></a>GST_MTS_TABLE_ID_ATSC_AGGREGATE_EXTENDED_TEXT</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MTS-TABLE-ID-ATSC-AGGREGATE-DATA-EVENT:CAPS"></a>GST_MTS_TABLE_ID_ATSC_AGGREGATE_DATA_EVENT</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MTS-TABLE-ID-ATSC-SATELLITE-VIRTUAL-CHANNEL:CAPS"></a>GST_MTS_TABLE_ID_ATSC_SATELLITE_VIRTUAL_CHANNEL</p></td>
+<td> </td>
+<td> </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstMpegtsAtscVCTSource"></a><h3>struct GstMpegtsAtscVCTSource</h3>
+<pre class="programlisting">struct GstMpegtsAtscVCTSource {
+ gchar *short_name;
+ guint16 major_channel_number;
+ guint16 minor_channel_number;
+ guint8 modulation_mode;
+ guint32 carrier_frequency;
+ guint16 channel_TSID;
+ guint16 program_number;
+ /* FIXME: */
+ guint8 ETM_location;
+ gboolean access_controlled;
+ gboolean hidden;
+ gboolean path_select; /* CVCT only - reserved bit in TVCT */
+ gboolean out_of_band; /* CVCT only - reserved bit in TVCT */
+ gboolean hide_guide;
+ /* FIXME: */
+ guint8 service_type;
+ guint16 source_id;
+ GPtrArray *descriptors;
+};
+</pre>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstMpegtsAtscVCT"></a><h3>struct GstMpegtsAtscVCT</h3>
+<pre class="programlisting">struct GstMpegtsAtscVCT {
+ guint16 transport_stream_id;
+ guint8 protocol_version;
+ GPtrArray *sources;
+ GPtrArray *descriptors;
+};
+</pre>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstMpegtsAtscMGTTableType"></a><h3>enum GstMpegtsAtscMGTTableType</h3>
+<div class="refsect3">
+<a name="GstMpegtsAtscMGTTableType.members"></a><h4>Members</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
+<col width="300px" class="enum_members_name">
+<col class="enum_members_description">
+<col width="200px" class="enum_members_annotations">
+</colgroup>
+<tbody>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MPEGTS-ATSC-MGT-TABLE-TYPE-EIT0:CAPS"></a>GST_MPEGTS_ATSC_MGT_TABLE_TYPE_EIT0</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MPEGTS-ATSC-MGT-TABLE-TYPE-EIT127:CAPS"></a>GST_MPEGTS_ATSC_MGT_TABLE_TYPE_EIT127</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MPEGTS-ATSC-MGT-TABLE-TYPE-ETT0:CAPS"></a>GST_MPEGTS_ATSC_MGT_TABLE_TYPE_ETT0</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MPEGTS-ATSC-MGT-TABLE-TYPE-ETT127:CAPS"></a>GST_MPEGTS_ATSC_MGT_TABLE_TYPE_ETT127</p></td>
+<td> </td>
+<td> </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstMpegtsAtscMGTTable"></a><h3>struct GstMpegtsAtscMGTTable</h3>
+<pre class="programlisting">struct GstMpegtsAtscMGTTable {
+ guint16 table_type;
+ guint16 pid;
+ guint8 version_number;
+ guint32 number_bytes;
+ GPtrArray *descriptors;
+};
+</pre>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstMpegtsAtscMGT"></a><h3>struct GstMpegtsAtscMGT</h3>
+<pre class="programlisting">struct GstMpegtsAtscMGT {
+ guint8 protocol_version;
+ guint16 tables_defined;
+ GPtrArray *tables;
+ GPtrArray *descriptors;
+};
+</pre>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstMpegtsAtscMultString"></a><h3>struct GstMpegtsAtscMultString</h3>
+<pre class="programlisting">struct GstMpegtsAtscMultString {
+ gchar iso_639_langcode[4];
+ GPtrArray *segments;
+};
+</pre>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstMpegtsAtscEITEvent"></a><h3>struct GstMpegtsAtscEITEvent</h3>
+<pre class="programlisting">struct GstMpegtsAtscEITEvent {
+ guint16 event_id;
+ guint32 start_time;
+ guint8 etm_location;
+ guint32 length_in_seconds;
+ GPtrArray *titles;
+
+ GPtrArray *descriptors;
+};
+</pre>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstMpegtsAtscEIT"></a><h3>struct GstMpegtsAtscEIT</h3>
+<pre class="programlisting">struct GstMpegtsAtscEIT {
+ guint16 source_id;
+ guint8 protocol_version;
+
+ GPtrArray *events;
+};
+</pre>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstMpegtsAtscETT"></a><h3>struct GstMpegtsAtscETT</h3>
+<pre class="programlisting">struct GstMpegtsAtscETT {
+ guint16 ett_table_id_extension;
+ guint16 protocol_version;
+ guint32 etm_id;
+
+ GPtrArray *messages;
+};
+</pre>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstMpegtsAtscSTT"></a><h3>struct GstMpegtsAtscSTT</h3>
+<pre class="programlisting">struct GstMpegtsAtscSTT {
+ guint8 protocol_version;
+ guint32 system_time;
+ guint8 gps_utc_offset;
+ gboolean ds_status;
+ guint8 ds_dayofmonth;
+ guint8 ds_hour;
+ GPtrArray *descriptors;
+
+ GstDateTime *utc_datetime;
+};
+</pre>
+</div>
+</div>
+</div>
+<div class="footer">
+<hr>Generated by GTK-Doc V1.25</div>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/libs/html/gst-plugins-bad-libs-gst-dvb-descriptor.html b/docs/libs/html/gst-plugins-bad-libs-gst-dvb-descriptor.html
new file mode 100644
index 0000000..2f5759c
--- /dev/null
+++ b/docs/libs/html/gst-plugins-bad-libs-gst-dvb-descriptor.html
@@ -0,0 +1,2425 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>gst-dvb-descriptor: GStreamer Bad Plugins 1.0 Library Reference Manual</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
+<link rel="home" href="index.html" title="GStreamer Bad Plugins 1.0 Library Reference Manual">
+<link rel="up" href="mpegts.html" title="Mpeg TS helper library">
+<link rel="prev" href="gst-plugins-bad-libs-gst-atsc-descriptor.html" title="gst-atsc-descriptor">
+<link rel="next" href="gst-plugins-bad-libs-gst-isdb-descriptor.html" title="gst-isdb-descriptor">
+<meta name="generator" content="GTK-Doc V1.25 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="5"><tr valign="middle">
+<td width="100%" align="left" class="shortcuts">
+<a href="#" class="shortcut">Top</a><span id="nav_description"> <span class="dim">|</span>
+ <a href="#gst-plugins-bad-libs-gst-dvb-descriptor.description" class="shortcut">Description</a></span><span id="nav_hierarchy"> <span class="dim">|</span>
+ <a href="#gst-plugins-bad-libs-gst-dvb-descriptor.object-hierarchy" class="shortcut">Object Hierarchy</a></span>
+</td>
+<td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
+<td><a accesskey="u" href="mpegts.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
+<td><a accesskey="p" href="gst-plugins-bad-libs-gst-atsc-descriptor.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
+<td><a accesskey="n" href="gst-plugins-bad-libs-gst-isdb-descriptor.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
+</tr></table>
+<div class="refentry">
+<a name="gst-plugins-bad-libs-gst-dvb-descriptor"></a><div class="titlepage"></div>
+<div class="refnamediv"><table width="100%"><tr>
+<td valign="top">
+<h2><span class="refentrytitle"><a name="gst-plugins-bad-libs-gst-dvb-descriptor.top_of_page"></a>gst-dvb-descriptor</span></h2>
+<p>gst-dvb-descriptor</p>
+</td>
+<td class="gallery_image" valign="top" align="right"></td>
+</tr></table></div>
+<div class="refsect1">
+<a name="gst-plugins-bad-libs-gst-dvb-descriptor.functions"></a><h2>Functions</h2>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
+<col width="150px" class="functions_return">
+<col class="functions_name">
+</colgroup>
+<tbody>
+<tr>
+<td class="function_type">
+<a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
+</td>
+<td class="function_name">
+<a class="link" href="gst-plugins-bad-libs-gst-dvb-descriptor.html#gst-mpegts-descriptor-parse-dvb-content" title="gst_mpegts_descriptor_parse_dvb_content ()">gst_mpegts_descriptor_parse_dvb_content</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<span class="returnvalue">void</span>
+</td>
+<td class="function_name">
+<a class="link" href="gst-plugins-bad-libs-gst-dvb-descriptor.html#gst-mpegts-dvb-component-descriptor-free" title="gst_mpegts_dvb_component_descriptor_free ()">gst_mpegts_dvb_component_descriptor_free</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
+</td>
+<td class="function_name">
+<a class="link" href="gst-plugins-bad-libs-gst-dvb-descriptor.html#gst-mpegts-descriptor-parse-dvb-component" title="gst_mpegts_descriptor_parse_dvb_component ()">gst_mpegts_descriptor_parse_dvb_component</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<span class="returnvalue">void</span>
+</td>
+<td class="function_name">
+<a class="link" href="gst-plugins-bad-libs-gst-dvb-descriptor.html#gst-mpegts-extended-event-descriptor-free" title="gst_mpegts_extended_event_descriptor_free ()">gst_mpegts_extended_event_descriptor_free</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
+</td>
+<td class="function_name">
+<a class="link" href="gst-plugins-bad-libs-gst-dvb-descriptor.html#gst-mpegts-descriptor-parse-dvb-extended-event" title="gst_mpegts_descriptor_parse_dvb_extended_event ()">gst_mpegts_descriptor_parse_dvb_extended_event</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
+</td>
+<td class="function_name">
+<a class="link" href="gst-plugins-bad-libs-gst-dvb-descriptor.html#gst-mpegts-descriptor-parse-satellite-delivery-system" title="gst_mpegts_descriptor_parse_satellite_delivery_system ()">gst_mpegts_descriptor_parse_satellite_delivery_system</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
+</td>
+<td class="function_name">
+<a class="link" href="gst-plugins-bad-libs-gst-dvb-descriptor.html#gst-mpegts-descriptor-parse-cable-delivery-system" title="gst_mpegts_descriptor_parse_cable_delivery_system ()">gst_mpegts_descriptor_parse_cable_delivery_system</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
+</td>
+<td class="function_name">
+<a class="link" href="gst-plugins-bad-libs-gst-dvb-descriptor.html#gst-mpegts-descriptor-parse-terrestrial-delivery-system" title="gst_mpegts_descriptor_parse_terrestrial_delivery_system ()">gst_mpegts_descriptor_parse_terrestrial_delivery_system</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<span class="returnvalue">void</span>
+</td>
+<td class="function_name">
+<a class="link" href="gst-plugins-bad-libs-gst-dvb-descriptor.html#gst-mpegts-t2-delivery-system-descriptor-free" title="gst_mpegts_t2_delivery_system_descriptor_free ()">gst_mpegts_t2_delivery_system_descriptor_free</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
+</td>
+<td class="function_name">
+<a class="link" href="gst-plugins-bad-libs-gst-dvb-descriptor.html#gst-mpegts-descriptor-parse-dvb-t2-delivery-system" title="gst_mpegts_descriptor_parse_dvb_t2_delivery_system ()">gst_mpegts_descriptor_parse_dvb_t2_delivery_system</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
+</td>
+<td class="function_name">
+<a class="link" href="gst-plugins-bad-libs-gst-dvb-descriptor.html#gst-mpegts-descriptor-parse-dvb-short-event" title="gst_mpegts_descriptor_parse_dvb_short_event ()">gst_mpegts_descriptor_parse_dvb_short_event</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
+</td>
+<td class="function_name">
+<a class="link" href="gst-plugins-bad-libs-gst-dvb-descriptor.html#gst-mpegts-descriptor-parse-dvb-network-name" title="gst_mpegts_descriptor_parse_dvb_network_name ()">gst_mpegts_descriptor_parse_dvb_network_name</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<a class="link" href="gst-plugins-bad-libs-gstmpegtsdescriptor.html#GstMpegtsDescriptor"><span class="returnvalue">GstMpegtsDescriptor</span></a> *
+</td>
+<td class="function_name">
+<a class="link" href="gst-plugins-bad-libs-gst-dvb-descriptor.html#gst-mpegts-descriptor-from-dvb-network-name" title="gst_mpegts_descriptor_from_dvb_network_name ()">gst_mpegts_descriptor_from_dvb_network_name</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
+</td>
+<td class="function_name">
+<a class="link" href="gst-plugins-bad-libs-gst-dvb-descriptor.html#gst-mpegts-descriptor-parse-dvb-service" title="gst_mpegts_descriptor_parse_dvb_service ()">gst_mpegts_descriptor_parse_dvb_service</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<a class="link" href="gst-plugins-bad-libs-gstmpegtsdescriptor.html#GstMpegtsDescriptor"><span class="returnvalue">GstMpegtsDescriptor</span></a> *
+</td>
+<td class="function_name">
+<a class="link" href="gst-plugins-bad-libs-gst-dvb-descriptor.html#gst-mpegts-descriptor-from-dvb-service" title="gst_mpegts_descriptor_from_dvb_service ()">gst_mpegts_descriptor_from_dvb_service</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
+</td>
+<td class="function_name">
+<a class="link" href="gst-plugins-bad-libs-gst-dvb-descriptor.html#gst-mpegts-descriptor-parse-dvb-teletext-idx" title="gst_mpegts_descriptor_parse_dvb_teletext_idx ()">gst_mpegts_descriptor_parse_dvb_teletext_idx</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint"><span class="returnvalue">guint</span></a>
+</td>
+<td class="function_name">
+<a class="link" href="gst-plugins-bad-libs-gst-dvb-descriptor.html#gst-mpegts-descriptor-parse-dvb-teletext-nb" title="gst_mpegts_descriptor_parse_dvb_teletext_nb ()">gst_mpegts_descriptor_parse_dvb_teletext_nb</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
+</td>
+<td class="function_name">
+<a class="link" href="gst-plugins-bad-libs-gst-dvb-descriptor.html#gst-mpegts-descriptor-parse-dvb-subtitling-idx" title="gst_mpegts_descriptor_parse_dvb_subtitling_idx ()">gst_mpegts_descriptor_parse_dvb_subtitling_idx</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint"><span class="returnvalue">guint</span></a>
+</td>
+<td class="function_name">
+<a class="link" href="gst-plugins-bad-libs-gst-dvb-descriptor.html#gst-mpegts-descriptor-parse-dvb-subtitling-nb" title="gst_mpegts_descriptor_parse_dvb_subtitling_nb ()">gst_mpegts_descriptor_parse_dvb_subtitling_nb</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<a class="link" href="gst-plugins-bad-libs-gstmpegtsdescriptor.html#GstMpegtsDescriptor"><span class="returnvalue">GstMpegtsDescriptor</span></a> *
+</td>
+<td class="function_name">
+<a class="link" href="gst-plugins-bad-libs-gst-dvb-descriptor.html#gst-mpegts-descriptor-from-dvb-subtitling" title="gst_mpegts_descriptor_from_dvb_subtitling ()">gst_mpegts_descriptor_from_dvb_subtitling</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<span class="returnvalue">void</span>
+</td>
+<td class="function_name">
+<a class="link" href="gst-plugins-bad-libs-gst-dvb-descriptor.html#gst-mpegts-dvb-linkage-descriptor-free" title="gst_mpegts_dvb_linkage_descriptor_free ()">gst_mpegts_dvb_linkage_descriptor_free</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">const <a class="link" href="gst-plugins-bad-libs-gst-dvb-descriptor.html#GstMpegtsDVBLinkageMobileHandOver" title="struct GstMpegtsDVBLinkageMobileHandOver"><span class="returnvalue">GstMpegtsDVBLinkageMobileHandOver</span></a> *
+</td>
+<td class="function_name">
+<a class="link" href="gst-plugins-bad-libs-gst-dvb-descriptor.html#gst-mpegts-dvb-linkage-descriptor-get-mobile-hand-over" title="gst_mpegts_dvb_linkage_descriptor_get_mobile_hand_over ()">gst_mpegts_dvb_linkage_descriptor_get_mobile_hand_over</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">const <a class="link" href="gst-plugins-bad-libs-gst-dvb-descriptor.html#GstMpegtsDVBLinkageEvent" title="struct GstMpegtsDVBLinkageEvent"><span class="returnvalue">GstMpegtsDVBLinkageEvent</span></a> *
+</td>
+<td class="function_name">
+<a class="link" href="gst-plugins-bad-libs-gst-dvb-descriptor.html#gst-mpegts-dvb-linkage-descriptor-get-event" title="gst_mpegts_dvb_linkage_descriptor_get_event ()">gst_mpegts_dvb_linkage_descriptor_get_event</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">const <a href="/usr/share/gtk-doc/html/glibglib-Pointer-Arrays.html#GPtrArray"><span class="returnvalue">GPtrArray</span></a> *
+</td>
+<td class="function_name">
+<a class="link" href="gst-plugins-bad-libs-gst-dvb-descriptor.html#gst-mpegts-dvb-linkage-descriptor-get-extended-event" title="gst_mpegts_dvb_linkage_descriptor_get_extended_event ()">gst_mpegts_dvb_linkage_descriptor_get_extended_event</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
+</td>
+<td class="function_name">
+<a class="link" href="gst-plugins-bad-libs-gst-dvb-descriptor.html#gst-mpegts-descriptor-parse-dvb-linkage" title="gst_mpegts_descriptor_parse_dvb_linkage ()">gst_mpegts_descriptor_parse_dvb_linkage</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
+</td>
+<td class="function_name">
+<a class="link" href="gst-plugins-bad-libs-gst-dvb-descriptor.html#gst-mpegts-descriptor-parse-dvb-private-data-specifier" title="gst_mpegts_descriptor_parse_dvb_private_data_specifier ()">gst_mpegts_descriptor_parse_dvb_private_data_specifier</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
+</td>
+<td class="function_name">
+<a class="link" href="gst-plugins-bad-libs-gst-dvb-descriptor.html#gst-mpegts-descriptor-parse-dvb-frequency-list" title="gst_mpegts_descriptor_parse_dvb_frequency_list ()">gst_mpegts_descriptor_parse_dvb_frequency_list</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<span class="returnvalue">void</span>
+</td>
+<td class="function_name">
+<a class="link" href="gst-plugins-bad-libs-gst-dvb-descriptor.html#gst-mpegts-dvb-data-broadcast-descriptor-free" title="gst_mpegts_dvb_data_broadcast_descriptor_free ()">gst_mpegts_dvb_data_broadcast_descriptor_free</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
+</td>
+<td class="function_name">
+<a class="link" href="gst-plugins-bad-libs-gst-dvb-descriptor.html#gst-mpegts-descriptor-parse-dvb-data-broadcast" title="gst_mpegts_descriptor_parse_dvb_data_broadcast ()">gst_mpegts_descriptor_parse_dvb_data_broadcast</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
+</td>
+<td class="function_name">
+<a class="link" href="gst-plugins-bad-libs-gst-dvb-descriptor.html#gst-mpegts-descriptor-parse-dvb-scrambling" title="gst_mpegts_descriptor_parse_dvb_scrambling ()">gst_mpegts_descriptor_parse_dvb_scrambling</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
+</td>
+<td class="function_name">
+<a class="link" href="gst-plugins-bad-libs-gst-dvb-descriptor.html#gst-mpegts-descriptor-parse-dvb-data-broadcast-id" title="gst_mpegts_descriptor_parse_dvb_data_broadcast_id ()">gst_mpegts_descriptor_parse_dvb_data_broadcast_id</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
+</td>
+<td class="function_name">
+<a class="link" href="gst-plugins-bad-libs-gst-dvb-descriptor.html#gst-mpegts-descriptor-parse-dvb-parental-rating" title="gst_mpegts_descriptor_parse_dvb_parental_rating ()">gst_mpegts_descriptor_parse_dvb_parental_rating</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
+</td>
+<td class="function_name">
+<a class="link" href="gst-plugins-bad-libs-gst-dvb-descriptor.html#gst-mpegts-descriptor-parse-dvb-stream-identifier" title="gst_mpegts_descriptor_parse_dvb_stream_identifier ()">gst_mpegts_descriptor_parse_dvb_stream_identifier</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
+</td>
+<td class="function_name">
+<a class="link" href="gst-plugins-bad-libs-gst-dvb-descriptor.html#gst-mpegts-descriptor-parse-dvb-ca-identifier" title="gst_mpegts_descriptor_parse_dvb_ca_identifier ()">gst_mpegts_descriptor_parse_dvb_ca_identifier</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
+</td>
+<td class="function_name">
+<a class="link" href="gst-plugins-bad-libs-gst-dvb-descriptor.html#gst-mpegts-descriptor-parse-dvb-service-list" title="gst_mpegts_descriptor_parse_dvb_service_list ()">gst_mpegts_descriptor_parse_dvb_service_list</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
+</td>
+<td class="function_name">
+<a class="link" href="gst-plugins-bad-libs-gst-dvb-descriptor.html#gst-mpegts-descriptor-parse-dvb-stuffing" title="gst_mpegts_descriptor_parse_dvb_stuffing ()">gst_mpegts_descriptor_parse_dvb_stuffing</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
+</td>
+<td class="function_name">
+<a class="link" href="gst-plugins-bad-libs-gst-dvb-descriptor.html#gst-mpegts-descriptor-parse-dvb-bouquet-name" title="gst_mpegts_descriptor_parse_dvb_bouquet_name ()">gst_mpegts_descriptor_parse_dvb_bouquet_name</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
+</td>
+<td class="function_name">
+<a class="link" href="gst-plugins-bad-libs-gst-dvb-descriptor.html#gst-mpegts-descriptor-parse-dvb-multilingual-network-name" title="gst_mpegts_descriptor_parse_dvb_multilingual_network_name ()">gst_mpegts_descriptor_parse_dvb_multilingual_network_name</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
+</td>
+<td class="function_name">
+<a class="link" href="gst-plugins-bad-libs-gst-dvb-descriptor.html#gst-mpegts-descriptor-parse-dvb-multilingual-bouquet-name" title="gst_mpegts_descriptor_parse_dvb_multilingual_bouquet_name ()">gst_mpegts_descriptor_parse_dvb_multilingual_bouquet_name</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
+</td>
+<td class="function_name">
+<a class="link" href="gst-plugins-bad-libs-gst-dvb-descriptor.html#gst-mpegts-descriptor-parse-dvb-multilingual-service-name" title="gst_mpegts_descriptor_parse_dvb_multilingual_service_name ()">gst_mpegts_descriptor_parse_dvb_multilingual_service_name</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
+</td>
+<td class="function_name">
+<a class="link" href="gst-plugins-bad-libs-gst-dvb-descriptor.html#gst-mpegts-descriptor-parse-dvb-multilingual-component" title="gst_mpegts_descriptor_parse_dvb_multilingual_component ()">gst_mpegts_descriptor_parse_dvb_multilingual_component</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<div class="refsect1">
+<a name="gst-plugins-bad-libs-gst-dvb-descriptor.other"></a><h2>Types and Values</h2>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
+<col width="150px" class="name">
+<col class="description">
+</colgroup>
+<tbody>
+<tr>
+<td class="datatype_keyword">enum</td>
+<td class="function_name"><a class="link" href="gst-plugins-bad-libs-gst-dvb-descriptor.html#GstMpegtsDVBDescriptorType" title="enum GstMpegtsDVBDescriptorType">GstMpegtsDVBDescriptorType</a></td>
+</tr>
+<tr>
+<td class="datatype_keyword">enum</td>
+<td class="function_name"><a class="link" href="gst-plugins-bad-libs-gst-dvb-descriptor.html#GstMpegtsDVBExtendedDescriptorType" title="enum GstMpegtsDVBExtendedDescriptorType">GstMpegtsDVBExtendedDescriptorType</a></td>
+</tr>
+<tr>
+<td class="datatype_keyword">struct</td>
+<td class="function_name"><a class="link" href="gst-plugins-bad-libs-gst-dvb-descriptor.html#GstMpegtsContent" title="struct GstMpegtsContent">GstMpegtsContent</a></td>
+</tr>
+<tr>
+<td class="datatype_keyword">struct</td>
+<td class="function_name"><a class="link" href="gst-plugins-bad-libs-gst-dvb-descriptor.html#GstMpegtsComponentDescriptor" title="struct GstMpegtsComponentDescriptor">GstMpegtsComponentDescriptor</a></td>
+</tr>
+<tr>
+<td class="datatype_keyword">struct</td>
+<td class="function_name"><a class="link" href="gst-plugins-bad-libs-gst-dvb-descriptor.html#GstMpegtsExtendedEventItem" title="struct GstMpegtsExtendedEventItem">GstMpegtsExtendedEventItem</a></td>
+</tr>
+<tr>
+<td class="datatype_keyword">struct</td>
+<td class="function_name"><a class="link" href="gst-plugins-bad-libs-gst-dvb-descriptor.html#GstMpegtsExtendedEventDescriptor" title="struct GstMpegtsExtendedEventDescriptor">GstMpegtsExtendedEventDescriptor</a></td>
+</tr>
+<tr>
+<td class="datatype_keyword">struct</td>
+<td class="function_name"><a class="link" href="gst-plugins-bad-libs-gst-dvb-descriptor.html#GstMpegtsSatelliteDeliverySystemDescriptor" title="struct GstMpegtsSatelliteDeliverySystemDescriptor">GstMpegtsSatelliteDeliverySystemDescriptor</a></td>
+</tr>
+<tr>
+<td class="datatype_keyword">enum</td>
+<td class="function_name"><a class="link" href="gst-plugins-bad-libs-gst-dvb-descriptor.html#GstMpegtsDVBCodeRate" title="enum GstMpegtsDVBCodeRate">GstMpegtsDVBCodeRate</a></td>
+</tr>
+<tr>
+<td class="datatype_keyword">enum</td>
+<td class="function_name"><a class="link" href="gst-plugins-bad-libs-gst-dvb-descriptor.html#GstMpegtsModulationType" title="enum GstMpegtsModulationType">GstMpegtsModulationType</a></td>
+</tr>
+<tr>
+<td class="datatype_keyword">enum</td>
+<td class="function_name"><a class="link" href="gst-plugins-bad-libs-gst-dvb-descriptor.html#GstMpegtsSatellitePolarizationType" title="enum GstMpegtsSatellitePolarizationType">GstMpegtsSatellitePolarizationType</a></td>
+</tr>
+<tr>
+<td class="datatype_keyword">enum</td>
+<td class="function_name"><a class="link" href="gst-plugins-bad-libs-gst-dvb-descriptor.html#GstMpegtsSatelliteRolloff" title="enum GstMpegtsSatelliteRolloff">GstMpegtsSatelliteRolloff</a></td>
+</tr>
+<tr>
+<td class="datatype_keyword">struct</td>
+<td class="function_name"><a class="link" href="gst-plugins-bad-libs-gst-dvb-descriptor.html#GstMpegtsCableDeliverySystemDescriptor" title="struct GstMpegtsCableDeliverySystemDescriptor">GstMpegtsCableDeliverySystemDescriptor</a></td>
+</tr>
+<tr>
+<td class="datatype_keyword">enum</td>
+<td class="function_name"><a class="link" href="gst-plugins-bad-libs-gst-dvb-descriptor.html#GstMpegtsCableOuterFECScheme" title="enum GstMpegtsCableOuterFECScheme">GstMpegtsCableOuterFECScheme</a></td>
+</tr>
+<tr>
+<td class="datatype_keyword">struct</td>
+<td class="function_name"><a class="link" href="gst-plugins-bad-libs-gst-dvb-descriptor.html#GstMpegtsTerrestrialDeliverySystemDescriptor" title="struct GstMpegtsTerrestrialDeliverySystemDescriptor">GstMpegtsTerrestrialDeliverySystemDescriptor</a></td>
+</tr>
+<tr>
+<td class="datatype_keyword">enum</td>
+<td class="function_name"><a class="link" href="gst-plugins-bad-libs-gst-dvb-descriptor.html#GstMpegtsTerrestrialTransmissionMode" title="enum GstMpegtsTerrestrialTransmissionMode">GstMpegtsTerrestrialTransmissionMode</a></td>
+</tr>
+<tr>
+<td class="datatype_keyword">enum</td>
+<td class="function_name"><a class="link" href="gst-plugins-bad-libs-gst-dvb-descriptor.html#GstMpegtsTerrestrialGuardInterval" title="enum GstMpegtsTerrestrialGuardInterval">GstMpegtsTerrestrialGuardInterval</a></td>
+</tr>
+<tr>
+<td class="datatype_keyword">enum</td>
+<td class="function_name"><a class="link" href="gst-plugins-bad-libs-gst-dvb-descriptor.html#GstMpegtsTerrestrialHierarchy" title="enum GstMpegtsTerrestrialHierarchy">GstMpegtsTerrestrialHierarchy</a></td>
+</tr>
+<tr>
+<td class="datatype_keyword">struct</td>
+<td class="function_name"><a class="link" href="gst-plugins-bad-libs-gst-dvb-descriptor.html#GstMpegtsT2DeliverySystemCellExtension" title="struct GstMpegtsT2DeliverySystemCellExtension">GstMpegtsT2DeliverySystemCellExtension</a></td>
+</tr>
+<tr>
+<td class="datatype_keyword">struct</td>
+<td class="function_name"><a class="link" href="gst-plugins-bad-libs-gst-dvb-descriptor.html#GstMpegtsT2DeliverySystemCell" title="struct GstMpegtsT2DeliverySystemCell">GstMpegtsT2DeliverySystemCell</a></td>
+</tr>
+<tr>
+<td class="datatype_keyword">struct</td>
+<td class="function_name"><a class="link" href="gst-plugins-bad-libs-gst-dvb-descriptor.html#GstMpegtsT2DeliverySystemDescriptor" title="struct GstMpegtsT2DeliverySystemDescriptor">GstMpegtsT2DeliverySystemDescriptor</a></td>
+</tr>
+<tr>
+<td class="datatype_keyword">enum</td>
+<td class="function_name"><a class="link" href="gst-plugins-bad-libs-gst-dvb-descriptor.html#GstMpegtsDVBServiceType" title="enum GstMpegtsDVBServiceType">GstMpegtsDVBServiceType</a></td>
+</tr>
+<tr>
+<td class="datatype_keyword">enum</td>
+<td class="function_name"><a class="link" href="gst-plugins-bad-libs-gst-dvb-descriptor.html#GstMpegtsDVBTeletextType" title="enum GstMpegtsDVBTeletextType">GstMpegtsDVBTeletextType</a></td>
+</tr>
+<tr>
+<td class="datatype_keyword">enum</td>
+<td class="function_name"><a class="link" href="gst-plugins-bad-libs-gst-dvb-descriptor.html#GstMpegtsDVBLinkageType" title="enum GstMpegtsDVBLinkageType">GstMpegtsDVBLinkageType</a></td>
+</tr>
+<tr>
+<td class="datatype_keyword">enum</td>
+<td class="function_name"><a class="link" href="gst-plugins-bad-libs-gst-dvb-descriptor.html#GstMpegtsDVBLinkageHandOverType" title="enum GstMpegtsDVBLinkageHandOverType">GstMpegtsDVBLinkageHandOverType</a></td>
+</tr>
+<tr>
+<td class="datatype_keyword">struct</td>
+<td class="function_name"><a class="link" href="gst-plugins-bad-libs-gst-dvb-descriptor.html#GstMpegtsDVBLinkageMobileHandOver" title="struct GstMpegtsDVBLinkageMobileHandOver">GstMpegtsDVBLinkageMobileHandOver</a></td>
+</tr>
+<tr>
+<td class="datatype_keyword">struct</td>
+<td class="function_name"><a class="link" href="gst-plugins-bad-libs-gst-dvb-descriptor.html#GstMpegtsDVBLinkageEvent" title="struct GstMpegtsDVBLinkageEvent">GstMpegtsDVBLinkageEvent</a></td>
+</tr>
+<tr>
+<td class="datatype_keyword">struct</td>
+<td class="function_name"><a class="link" href="gst-plugins-bad-libs-gst-dvb-descriptor.html#GstMpegtsDVBLinkageExtendedEvent" title="struct GstMpegtsDVBLinkageExtendedEvent">GstMpegtsDVBLinkageExtendedEvent</a></td>
+</tr>
+<tr>
+<td class="datatype_keyword">struct</td>
+<td class="function_name"><a class="link" href="gst-plugins-bad-libs-gst-dvb-descriptor.html#GstMpegtsDVBLinkageDescriptor" title="struct GstMpegtsDVBLinkageDescriptor">GstMpegtsDVBLinkageDescriptor</a></td>
+</tr>
+<tr>
+<td class="datatype_keyword">struct</td>
+<td class="function_name"><a class="link" href="gst-plugins-bad-libs-gst-dvb-descriptor.html#GstMpegtsDataBroadcastDescriptor" title="struct GstMpegtsDataBroadcastDescriptor">GstMpegtsDataBroadcastDescriptor</a></td>
+</tr>
+<tr>
+<td class="datatype_keyword">enum</td>
+<td class="function_name"><a class="link" href="gst-plugins-bad-libs-gst-dvb-descriptor.html#GstMpegtsDVBScramblingModeType" title="enum GstMpegtsDVBScramblingModeType">GstMpegtsDVBScramblingModeType</a></td>
+</tr>
+<tr>
+<td class="datatype_keyword">struct</td>
+<td class="function_name"><a class="link" href="gst-plugins-bad-libs-gst-dvb-descriptor.html#GstMpegtsDVBParentalRatingItem" title="struct GstMpegtsDVBParentalRatingItem">GstMpegtsDVBParentalRatingItem</a></td>
+</tr>
+<tr>
+<td class="datatype_keyword">struct</td>
+<td class="function_name"><a class="link" href="gst-plugins-bad-libs-gst-dvb-descriptor.html#GstMpegtsDVBServiceListItem" title="struct GstMpegtsDVBServiceListItem">GstMpegtsDVBServiceListItem</a></td>
+</tr>
+<tr>
+<td class="datatype_keyword">struct</td>
+<td class="function_name"><a class="link" href="gst-plugins-bad-libs-gst-dvb-descriptor.html#GstMpegtsDvbMultilingualNetworkNameItem" title="struct GstMpegtsDvbMultilingualNetworkNameItem">GstMpegtsDvbMultilingualNetworkNameItem</a></td>
+</tr>
+<tr>
+<td class="datatype_keyword">struct</td>
+<td class="function_name"><a class="link" href="gst-plugins-bad-libs-gst-dvb-descriptor.html#GstMpegtsDvbMultilingualBouquetNameItem" title="struct GstMpegtsDvbMultilingualBouquetNameItem">GstMpegtsDvbMultilingualBouquetNameItem</a></td>
+</tr>
+<tr>
+<td class="datatype_keyword">struct</td>
+<td class="function_name"><a class="link" href="gst-plugins-bad-libs-gst-dvb-descriptor.html#GstMpegtsDvbMultilingualServiceNameItem" title="struct GstMpegtsDvbMultilingualServiceNameItem">GstMpegtsDvbMultilingualServiceNameItem</a></td>
+</tr>
+<tr>
+<td class="datatype_keyword">struct</td>
+<td class="function_name"><a class="link" href="gst-plugins-bad-libs-gst-dvb-descriptor.html#GstMpegtsDvbMultilingualComponentItem" title="struct GstMpegtsDvbMultilingualComponentItem">GstMpegtsDvbMultilingualComponentItem</a></td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<div class="refsect1">
+<a name="gst-plugins-bad-libs-gst-dvb-descriptor.object-hierarchy"></a><h2>Object Hierarchy</h2>
+<pre class="screen"> <a href="https://developer.gnome.org/gobject/unstable/gobject-Enumeration-and-Flag-Types.html">GEnum</a>
+ <span class="lineart">├──</span> GstMpegtsCableOuterFECScheme
+ <span class="lineart">├──</span> GstMpegtsDVBCodeRate
+ <span class="lineart">├──</span> GstMpegtsDVBServiceType
+ <span class="lineart">├──</span> GstMpegtsModulationType
+ <span class="lineart">├──</span> GstMpegtsSatellitePolarizationType
+ <span class="lineart">╰──</span> GstMpegtsSatelliteRolloff
+</pre>
+</div>
+<div class="refsect1">
+<a name="gst-plugins-bad-libs-gst-dvb-descriptor.description"></a><h2>Description</h2>
+</div>
+<div class="refsect1">
+<a name="gst-plugins-bad-libs-gst-dvb-descriptor.functions_details"></a><h2>Functions</h2>
+<div class="refsect2">
+<a name="gst-mpegts-descriptor-parse-dvb-content"></a><h3>gst_mpegts_descriptor_parse_dvb_content ()</h3>
+<pre class="programlisting"><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
+gst_mpegts_descriptor_parse_dvb_content
+ (<em class="parameter"><code>const <a class="link" href="gst-plugins-bad-libs-gstmpegtsdescriptor.html#GstMpegtsDescriptor"><span class="type">GstMpegtsDescriptor</span></a> *descriptor</code></em>,
+ <em class="parameter"><code><a href="/usr/share/gtk-doc/html/glibglib-Pointer-Arrays.html#GPtrArray"><span class="type">GPtrArray</span></a> **content</code></em>);</pre>
+</div>
+<hr>
+<div class="refsect2">
+<a name="gst-mpegts-dvb-component-descriptor-free"></a><h3>gst_mpegts_dvb_component_descriptor_free ()</h3>
+<pre class="programlisting"><span class="returnvalue">void</span>
+gst_mpegts_dvb_component_descriptor_free
+ (<em class="parameter"><code><a class="link" href="gst-plugins-bad-libs-gst-dvb-descriptor.html#GstMpegtsComponentDescriptor" title="struct GstMpegtsComponentDescriptor"><span class="type">GstMpegtsComponentDescriptor</span></a> *source</code></em>);</pre>
+</div>
+<hr>
+<div class="refsect2">
+<a name="gst-mpegts-descriptor-parse-dvb-component"></a><h3>gst_mpegts_descriptor_parse_dvb_component ()</h3>
+<pre class="programlisting"><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
+gst_mpegts_descriptor_parse_dvb_component
+ (<em class="parameter"><code>const <a class="link" href="gst-plugins-bad-libs-gstmpegtsdescriptor.html#GstMpegtsDescriptor"><span class="type">GstMpegtsDescriptor</span></a> *descriptor</code></em>,
+ <em class="parameter"><code><a class="link" href="gst-plugins-bad-libs-gst-dvb-descriptor.html#GstMpegtsComponentDescriptor" title="struct GstMpegtsComponentDescriptor"><span class="type">GstMpegtsComponentDescriptor</span></a> **res</code></em>);</pre>
+</div>
+<hr>
+<div class="refsect2">
+<a name="gst-mpegts-extended-event-descriptor-free"></a><h3>gst_mpegts_extended_event_descriptor_free ()</h3>
+<pre class="programlisting"><span class="returnvalue">void</span>
+gst_mpegts_extended_event_descriptor_free
+ (<em class="parameter"><code><a class="link" href="gst-plugins-bad-libs-gst-dvb-descriptor.html#GstMpegtsExtendedEventDescriptor" title="struct GstMpegtsExtendedEventDescriptor"><span class="type">GstMpegtsExtendedEventDescriptor</span></a> *source</code></em>);</pre>
+</div>
+<hr>
+<div class="refsect2">
+<a name="gst-mpegts-descriptor-parse-dvb-extended-event"></a><h3>gst_mpegts_descriptor_parse_dvb_extended_event ()</h3>
+<pre class="programlisting"><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
+gst_mpegts_descriptor_parse_dvb_extended_event
+ (<em class="parameter"><code>const <a class="link" href="gst-plugins-bad-libs-gstmpegtsdescriptor.html#GstMpegtsDescriptor"><span class="type">GstMpegtsDescriptor</span></a> *descriptor</code></em>,
+ <em class="parameter"><code><a class="link" href="gst-plugins-bad-libs-gst-dvb-descriptor.html#GstMpegtsExtendedEventDescriptor" title="struct GstMpegtsExtendedEventDescriptor"><span class="type">GstMpegtsExtendedEventDescriptor</span></a> **res</code></em>);</pre>
+</div>
+<hr>
+<div class="refsect2">
+<a name="gst-mpegts-descriptor-parse-satellite-delivery-system"></a><h3>gst_mpegts_descriptor_parse_satellite_delivery_system ()</h3>
+<pre class="programlisting"><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
+gst_mpegts_descriptor_parse_satellite_delivery_system
+ (<em class="parameter"><code>const <a class="link" href="gst-plugins-bad-libs-gstmpegtsdescriptor.html#GstMpegtsDescriptor"><span class="type">GstMpegtsDescriptor</span></a> *descriptor</code></em>,
+ <em class="parameter"><code><a class="link" href="gst-plugins-bad-libs-gst-dvb-descriptor.html#GstMpegtsSatelliteDeliverySystemDescriptor" title="struct GstMpegtsSatelliteDeliverySystemDescriptor"><span class="type">GstMpegtsSatelliteDeliverySystemDescriptor</span></a> *res</code></em>);</pre>
+</div>
+<hr>
+<div class="refsect2">
+<a name="gst-mpegts-descriptor-parse-cable-delivery-system"></a><h3>gst_mpegts_descriptor_parse_cable_delivery_system ()</h3>
+<pre class="programlisting"><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
+gst_mpegts_descriptor_parse_cable_delivery_system
+ (<em class="parameter"><code>const <a class="link" href="gst-plugins-bad-libs-gstmpegtsdescriptor.html#GstMpegtsDescriptor"><span class="type">GstMpegtsDescriptor</span></a> *descriptor</code></em>,
+ <em class="parameter"><code><a class="link" href="gst-plugins-bad-libs-gst-dvb-descriptor.html#GstMpegtsCableDeliverySystemDescriptor" title="struct GstMpegtsCableDeliverySystemDescriptor"><span class="type">GstMpegtsCableDeliverySystemDescriptor</span></a> *res</code></em>);</pre>
+</div>
+<hr>
+<div class="refsect2">
+<a name="gst-mpegts-descriptor-parse-terrestrial-delivery-system"></a><h3>gst_mpegts_descriptor_parse_terrestrial_delivery_system ()</h3>
+<pre class="programlisting"><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
+gst_mpegts_descriptor_parse_terrestrial_delivery_system
+ (<em class="parameter"><code>const <a class="link" href="gst-plugins-bad-libs-gstmpegtsdescriptor.html#GstMpegtsDescriptor"><span class="type">GstMpegtsDescriptor</span></a> *descriptor</code></em>,
+ <em class="parameter"><code><a class="link" href="gst-plugins-bad-libs-gst-dvb-descriptor.html#GstMpegtsTerrestrialDeliverySystemDescriptor" title="struct GstMpegtsTerrestrialDeliverySystemDescriptor"><span class="type">GstMpegtsTerrestrialDeliverySystemDescriptor</span></a> *res</code></em>);</pre>
+</div>
+<hr>
+<div class="refsect2">
+<a name="gst-mpegts-t2-delivery-system-descriptor-free"></a><h3>gst_mpegts_t2_delivery_system_descriptor_free ()</h3>
+<pre class="programlisting"><span class="returnvalue">void</span>
+gst_mpegts_t2_delivery_system_descriptor_free
+ (<em class="parameter"><code><a class="link" href="gst-plugins-bad-libs-gst-dvb-descriptor.html#GstMpegtsT2DeliverySystemDescriptor" title="struct GstMpegtsT2DeliverySystemDescriptor"><span class="type">GstMpegtsT2DeliverySystemDescriptor</span></a> *source</code></em>);</pre>
+</div>
+<hr>
+<div class="refsect2">
+<a name="gst-mpegts-descriptor-parse-dvb-t2-delivery-system"></a><h3>gst_mpegts_descriptor_parse_dvb_t2_delivery_system ()</h3>
+<pre class="programlisting"><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
+gst_mpegts_descriptor_parse_dvb_t2_delivery_system
+ (<em class="parameter"><code>const <a class="link" href="gst-plugins-bad-libs-gstmpegtsdescriptor.html#GstMpegtsDescriptor"><span class="type">GstMpegtsDescriptor</span></a> *descriptor</code></em>,
+ <em class="parameter"><code><a class="link" href="gst-plugins-bad-libs-gst-dvb-descriptor.html#GstMpegtsT2DeliverySystemDescriptor" title="struct GstMpegtsT2DeliverySystemDescriptor"><span class="type">GstMpegtsT2DeliverySystemDescriptor</span></a> **res</code></em>);</pre>
+</div>
+<hr>
+<div class="refsect2">
+<a name="gst-mpegts-descriptor-parse-dvb-short-event"></a><h3>gst_mpegts_descriptor_parse_dvb_short_event ()</h3>
+<pre class="programlisting"><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
+gst_mpegts_descriptor_parse_dvb_short_event
+ (<em class="parameter"><code>const <a class="link" href="gst-plugins-bad-libs-gstmpegtsdescriptor.html#GstMpegtsDescriptor"><span class="type">GstMpegtsDescriptor</span></a> *descriptor</code></em>,
+ <em class="parameter"><code><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gchar"><span class="type">gchar</span></a> **language_code</code></em>,
+ <em class="parameter"><code><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gchar"><span class="type">gchar</span></a> **event_name</code></em>,
+ <em class="parameter"><code><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gchar"><span class="type">gchar</span></a> **text</code></em>);</pre>
+</div>
+<hr>
+<div class="refsect2">
+<a name="gst-mpegts-descriptor-parse-dvb-network-name"></a><h3>gst_mpegts_descriptor_parse_dvb_network_name ()</h3>
+<pre class="programlisting"><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
+gst_mpegts_descriptor_parse_dvb_network_name
+ (<em class="parameter"><code>const <a class="link" href="gst-plugins-bad-libs-gstmpegtsdescriptor.html#GstMpegtsDescriptor"><span class="type">GstMpegtsDescriptor</span></a> *descriptor</code></em>,
+ <em class="parameter"><code><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gchar"><span class="type">gchar</span></a> **name</code></em>);</pre>
+</div>
+<hr>
+<div class="refsect2">
+<a name="gst-mpegts-descriptor-from-dvb-network-name"></a><h3>gst_mpegts_descriptor_from_dvb_network_name ()</h3>
+<pre class="programlisting"><a class="link" href="gst-plugins-bad-libs-gstmpegtsdescriptor.html#GstMpegtsDescriptor"><span class="returnvalue">GstMpegtsDescriptor</span></a> *
+gst_mpegts_descriptor_from_dvb_network_name
+ (<em class="parameter"><code>const <a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *name</code></em>);</pre>
+</div>
+<hr>
+<div class="refsect2">
+<a name="gst-mpegts-descriptor-parse-dvb-service"></a><h3>gst_mpegts_descriptor_parse_dvb_service ()</h3>
+<pre class="programlisting"><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
+gst_mpegts_descriptor_parse_dvb_service
+ (<em class="parameter"><code>const <a class="link" href="gst-plugins-bad-libs-gstmpegtsdescriptor.html#GstMpegtsDescriptor"><span class="type">GstMpegtsDescriptor</span></a> *descriptor</code></em>,
+ <em class="parameter"><code><a class="link" href="gst-plugins-bad-libs-gst-dvb-descriptor.html#GstMpegtsDVBServiceType" title="enum GstMpegtsDVBServiceType"><span class="type">GstMpegtsDVBServiceType</span></a> *service_type</code></em>,
+ <em class="parameter"><code><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gchar"><span class="type">gchar</span></a> **service_name</code></em>,
+ <em class="parameter"><code><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gchar"><span class="type">gchar</span></a> **provider_name</code></em>);</pre>
+</div>
+<hr>
+<div class="refsect2">
+<a name="gst-mpegts-descriptor-from-dvb-service"></a><h3>gst_mpegts_descriptor_from_dvb_service ()</h3>
+<pre class="programlisting"><a class="link" href="gst-plugins-bad-libs-gstmpegtsdescriptor.html#GstMpegtsDescriptor"><span class="returnvalue">GstMpegtsDescriptor</span></a> *
+gst_mpegts_descriptor_from_dvb_service
+ (<em class="parameter"><code><a class="link" href="gst-plugins-bad-libs-gst-dvb-descriptor.html#GstMpegtsDVBServiceType" title="enum GstMpegtsDVBServiceType"><span class="type">GstMpegtsDVBServiceType</span></a> service_type</code></em>,
+ <em class="parameter"><code>const <a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *service_name</code></em>,
+ <em class="parameter"><code>const <a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *service_provider</code></em>);</pre>
+</div>
+<hr>
+<div class="refsect2">
+<a name="gst-mpegts-descriptor-parse-dvb-teletext-idx"></a><h3>gst_mpegts_descriptor_parse_dvb_teletext_idx ()</h3>
+<pre class="programlisting"><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
+gst_mpegts_descriptor_parse_dvb_teletext_idx
+ (<em class="parameter"><code>const <a class="link" href="gst-plugins-bad-libs-gstmpegtsdescriptor.html#GstMpegtsDescriptor"><span class="type">GstMpegtsDescriptor</span></a> *descriptor</code></em>,
+ <em class="parameter"><code><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint"><span class="type">guint</span></a> idx</code></em>,
+ <em class="parameter"><code><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gchar"><span class="type">gchar</span></a> **language_code</code></em>,
+ <em class="parameter"><code><a class="link" href="gst-plugins-bad-libs-gst-dvb-descriptor.html#GstMpegtsDVBTeletextType" title="enum GstMpegtsDVBTeletextType"><span class="type">GstMpegtsDVBTeletextType</span></a> *teletext_type</code></em>,
+ <em class="parameter"><code><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint8"><span class="type">guint8</span></a> *magazine_number</code></em>,
+ <em class="parameter"><code><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint8"><span class="type">guint8</span></a> *page_number</code></em>);</pre>
+</div>
+<hr>
+<div class="refsect2">
+<a name="gst-mpegts-descriptor-parse-dvb-teletext-nb"></a><h3>gst_mpegts_descriptor_parse_dvb_teletext_nb ()</h3>
+<pre class="programlisting"><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint"><span class="returnvalue">guint</span></a>
+gst_mpegts_descriptor_parse_dvb_teletext_nb
+ (<em class="parameter"><code>const <a class="link" href="gst-plugins-bad-libs-gstmpegtsdescriptor.html#GstMpegtsDescriptor"><span class="type">GstMpegtsDescriptor</span></a> *descriptor</code></em>);</pre>
+</div>
+<hr>
+<div class="refsect2">
+<a name="gst-mpegts-descriptor-parse-dvb-subtitling-idx"></a><h3>gst_mpegts_descriptor_parse_dvb_subtitling_idx ()</h3>
+<pre class="programlisting"><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
+gst_mpegts_descriptor_parse_dvb_subtitling_idx
+ (<em class="parameter"><code>const <a class="link" href="gst-plugins-bad-libs-gstmpegtsdescriptor.html#GstMpegtsDescriptor"><span class="type">GstMpegtsDescriptor</span></a> *descriptor</code></em>,
+ <em class="parameter"><code><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint"><span class="type">guint</span></a> idx</code></em>,
+ <em class="parameter"><code><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gchar"><span class="type">gchar</span></a> **lang</code></em>,
+ <em class="parameter"><code><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint8"><span class="type">guint8</span></a> *type</code></em>,
+ <em class="parameter"><code><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint16"><span class="type">guint16</span></a> *composition_page_id</code></em>,
+ <em class="parameter"><code><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint16"><span class="type">guint16</span></a> *ancillary_page_id</code></em>);</pre>
+</div>
+<hr>
+<div class="refsect2">
+<a name="gst-mpegts-descriptor-parse-dvb-subtitling-nb"></a><h3>gst_mpegts_descriptor_parse_dvb_subtitling_nb ()</h3>
+<pre class="programlisting"><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint"><span class="returnvalue">guint</span></a>
+gst_mpegts_descriptor_parse_dvb_subtitling_nb
+ (<em class="parameter"><code>const <a class="link" href="gst-plugins-bad-libs-gstmpegtsdescriptor.html#GstMpegtsDescriptor"><span class="type">GstMpegtsDescriptor</span></a> *descriptor</code></em>);</pre>
+</div>
+<hr>
+<div class="refsect2">
+<a name="gst-mpegts-descriptor-from-dvb-subtitling"></a><h3>gst_mpegts_descriptor_from_dvb_subtitling ()</h3>
+<pre class="programlisting"><a class="link" href="gst-plugins-bad-libs-gstmpegtsdescriptor.html#GstMpegtsDescriptor"><span class="returnvalue">GstMpegtsDescriptor</span></a> *
+gst_mpegts_descriptor_from_dvb_subtitling
+ (<em class="parameter"><code>const <a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *lang</code></em>,
+ <em class="parameter"><code><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint8"><span class="type">guint8</span></a> type</code></em>,
+ <em class="parameter"><code><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint16"><span class="type">guint16</span></a> composition</code></em>,
+ <em class="parameter"><code><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint16"><span class="type">guint16</span></a> ancillary</code></em>);</pre>
+</div>
+<hr>
+<div class="refsect2">
+<a name="gst-mpegts-dvb-linkage-descriptor-free"></a><h3>gst_mpegts_dvb_linkage_descriptor_free ()</h3>
+<pre class="programlisting"><span class="returnvalue">void</span>
+gst_mpegts_dvb_linkage_descriptor_free
+ (<em class="parameter"><code><a class="link" href="gst-plugins-bad-libs-gst-dvb-descriptor.html#GstMpegtsDVBLinkageDescriptor" title="struct GstMpegtsDVBLinkageDescriptor"><span class="type">GstMpegtsDVBLinkageDescriptor</span></a> *source</code></em>);</pre>
+</div>
+<hr>
+<div class="refsect2">
+<a name="gst-mpegts-dvb-linkage-descriptor-get-mobile-hand-over"></a><h3>gst_mpegts_dvb_linkage_descriptor_get_mobile_hand_over ()</h3>
+<pre class="programlisting">const <a class="link" href="gst-plugins-bad-libs-gst-dvb-descriptor.html#GstMpegtsDVBLinkageMobileHandOver" title="struct GstMpegtsDVBLinkageMobileHandOver"><span class="returnvalue">GstMpegtsDVBLinkageMobileHandOver</span></a> *
+gst_mpegts_dvb_linkage_descriptor_get_mobile_hand_over
+ (<em class="parameter"><code>const <a class="link" href="gst-plugins-bad-libs-gst-dvb-descriptor.html#GstMpegtsDVBLinkageDescriptor" title="struct GstMpegtsDVBLinkageDescriptor"><span class="type">GstMpegtsDVBLinkageDescriptor</span></a> *desc</code></em>);</pre>
+</div>
+<hr>
+<div class="refsect2">
+<a name="gst-mpegts-dvb-linkage-descriptor-get-event"></a><h3>gst_mpegts_dvb_linkage_descriptor_get_event ()</h3>
+<pre class="programlisting">const <a class="link" href="gst-plugins-bad-libs-gst-dvb-descriptor.html#GstMpegtsDVBLinkageEvent" title="struct GstMpegtsDVBLinkageEvent"><span class="returnvalue">GstMpegtsDVBLinkageEvent</span></a> *
+gst_mpegts_dvb_linkage_descriptor_get_event
+ (<em class="parameter"><code>const <a class="link" href="gst-plugins-bad-libs-gst-dvb-descriptor.html#GstMpegtsDVBLinkageDescriptor" title="struct GstMpegtsDVBLinkageDescriptor"><span class="type">GstMpegtsDVBLinkageDescriptor</span></a> *desc</code></em>);</pre>
+</div>
+<hr>
+<div class="refsect2">
+<a name="gst-mpegts-dvb-linkage-descriptor-get-extended-event"></a><h3>gst_mpegts_dvb_linkage_descriptor_get_extended_event ()</h3>
+<pre class="programlisting">const <a href="/usr/share/gtk-doc/html/glibglib-Pointer-Arrays.html#GPtrArray"><span class="returnvalue">GPtrArray</span></a> *
+gst_mpegts_dvb_linkage_descriptor_get_extended_event
+ (<em class="parameter"><code>const <a class="link" href="gst-plugins-bad-libs-gst-dvb-descriptor.html#GstMpegtsDVBLinkageDescriptor" title="struct GstMpegtsDVBLinkageDescriptor"><span class="type">GstMpegtsDVBLinkageDescriptor</span></a> *desc</code></em>);</pre>
+</div>
+<hr>
+<div class="refsect2">
+<a name="gst-mpegts-descriptor-parse-dvb-linkage"></a><h3>gst_mpegts_descriptor_parse_dvb_linkage ()</h3>
+<pre class="programlisting"><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
+gst_mpegts_descriptor_parse_dvb_linkage
+ (<em class="parameter"><code>const <a class="link" href="gst-plugins-bad-libs-gstmpegtsdescriptor.html#GstMpegtsDescriptor"><span class="type">GstMpegtsDescriptor</span></a> *descriptor</code></em>,
+ <em class="parameter"><code><a class="link" href="gst-plugins-bad-libs-gst-dvb-descriptor.html#GstMpegtsDVBLinkageDescriptor" title="struct GstMpegtsDVBLinkageDescriptor"><span class="type">GstMpegtsDVBLinkageDescriptor</span></a> **res</code></em>);</pre>
+</div>
+<hr>
+<div class="refsect2">
+<a name="gst-mpegts-descriptor-parse-dvb-private-data-specifier"></a><h3>gst_mpegts_descriptor_parse_dvb_private_data_specifier ()</h3>
+<pre class="programlisting"><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
+gst_mpegts_descriptor_parse_dvb_private_data_specifier
+ (<em class="parameter"><code>const <a class="link" href="gst-plugins-bad-libs-gstmpegtsdescriptor.html#GstMpegtsDescriptor"><span class="type">GstMpegtsDescriptor</span></a> *descriptor</code></em>,
+ <em class="parameter"><code><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint32"><span class="type">guint32</span></a> *private_data_specifier</code></em>,
+ <em class="parameter"><code><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint8"><span class="type">guint8</span></a> **private_data</code></em>,
+ <em class="parameter"><code><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint8"><span class="type">guint8</span></a> *length</code></em>);</pre>
+</div>
+<hr>
+<div class="refsect2">
+<a name="gst-mpegts-descriptor-parse-dvb-frequency-list"></a><h3>gst_mpegts_descriptor_parse_dvb_frequency_list ()</h3>
+<pre class="programlisting"><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
+gst_mpegts_descriptor_parse_dvb_frequency_list
+ (<em class="parameter"><code>const <a class="link" href="gst-plugins-bad-libs-gstmpegtsdescriptor.html#GstMpegtsDescriptor"><span class="type">GstMpegtsDescriptor</span></a> *descriptor</code></em>,
+ <em class="parameter"><code><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a> *offset</code></em>,
+ <em class="parameter"><code><a href="/usr/share/gtk-doc/html/glibglib-Arrays.html#GArray"><span class="type">GArray</span></a> **list</code></em>);</pre>
+</div>
+<hr>
+<div class="refsect2">
+<a name="gst-mpegts-dvb-data-broadcast-descriptor-free"></a><h3>gst_mpegts_dvb_data_broadcast_descriptor_free ()</h3>
+<pre class="programlisting"><span class="returnvalue">void</span>
+gst_mpegts_dvb_data_broadcast_descriptor_free
+ (<em class="parameter"><code><a class="link" href="gst-plugins-bad-libs-gst-dvb-descriptor.html#GstMpegtsDataBroadcastDescriptor" title="struct GstMpegtsDataBroadcastDescriptor"><span class="type">GstMpegtsDataBroadcastDescriptor</span></a> *source</code></em>);</pre>
+</div>
+<hr>
+<div class="refsect2">
+<a name="gst-mpegts-descriptor-parse-dvb-data-broadcast"></a><h3>gst_mpegts_descriptor_parse_dvb_data_broadcast ()</h3>
+<pre class="programlisting"><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
+gst_mpegts_descriptor_parse_dvb_data_broadcast
+ (<em class="parameter"><code>const <a class="link" href="gst-plugins-bad-libs-gstmpegtsdescriptor.html#GstMpegtsDescriptor"><span class="type">GstMpegtsDescriptor</span></a> *descriptor</code></em>,
+ <em class="parameter"><code><a class="link" href="gst-plugins-bad-libs-gst-dvb-descriptor.html#GstMpegtsDataBroadcastDescriptor" title="struct GstMpegtsDataBroadcastDescriptor"><span class="type">GstMpegtsDataBroadcastDescriptor</span></a> **res</code></em>);</pre>
+</div>
+<hr>
+<div class="refsect2">
+<a name="gst-mpegts-descriptor-parse-dvb-scrambling"></a><h3>gst_mpegts_descriptor_parse_dvb_scrambling ()</h3>
+<pre class="programlisting"><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
+gst_mpegts_descriptor_parse_dvb_scrambling
+ (<em class="parameter"><code>const <a class="link" href="gst-plugins-bad-libs-gstmpegtsdescriptor.html#GstMpegtsDescriptor"><span class="type">GstMpegtsDescriptor</span></a> *descriptor</code></em>,
+ <em class="parameter"><code><a class="link" href="gst-plugins-bad-libs-gst-dvb-descriptor.html#GstMpegtsDVBScramblingModeType" title="enum GstMpegtsDVBScramblingModeType"><span class="type">GstMpegtsDVBScramblingModeType</span></a> *scrambling_mode</code></em>);</pre>
+</div>
+<hr>
+<div class="refsect2">
+<a name="gst-mpegts-descriptor-parse-dvb-data-broadcast-id"></a><h3>gst_mpegts_descriptor_parse_dvb_data_broadcast_id ()</h3>
+<pre class="programlisting"><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
+gst_mpegts_descriptor_parse_dvb_data_broadcast_id
+ (<em class="parameter"><code>const <a class="link" href="gst-plugins-bad-libs-gstmpegtsdescriptor.html#GstMpegtsDescriptor"><span class="type">GstMpegtsDescriptor</span></a> *descriptor</code></em>,
+ <em class="parameter"><code><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint16"><span class="type">guint16</span></a> *data_broadcast_id</code></em>,
+ <em class="parameter"><code><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint8"><span class="type">guint8</span></a> **id_selector_bytes</code></em>,
+ <em class="parameter"><code><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint8"><span class="type">guint8</span></a> *len</code></em>);</pre>
+</div>
+<hr>
+<div class="refsect2">
+<a name="gst-mpegts-descriptor-parse-dvb-parental-rating"></a><h3>gst_mpegts_descriptor_parse_dvb_parental_rating ()</h3>
+<pre class="programlisting"><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
+gst_mpegts_descriptor_parse_dvb_parental_rating
+ (<em class="parameter"><code>const <a class="link" href="gst-plugins-bad-libs-gstmpegtsdescriptor.html#GstMpegtsDescriptor"><span class="type">GstMpegtsDescriptor</span></a> *descriptor</code></em>,
+ <em class="parameter"><code><a href="/usr/share/gtk-doc/html/glibglib-Pointer-Arrays.html#GPtrArray"><span class="type">GPtrArray</span></a> **rating</code></em>);</pre>
+</div>
+<hr>
+<div class="refsect2">
+<a name="gst-mpegts-descriptor-parse-dvb-stream-identifier"></a><h3>gst_mpegts_descriptor_parse_dvb_stream_identifier ()</h3>
+<pre class="programlisting"><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
+gst_mpegts_descriptor_parse_dvb_stream_identifier
+ (<em class="parameter"><code>const <a class="link" href="gst-plugins-bad-libs-gstmpegtsdescriptor.html#GstMpegtsDescriptor"><span class="type">GstMpegtsDescriptor</span></a> *descriptor</code></em>,
+ <em class="parameter"><code><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint8"><span class="type">guint8</span></a> *component_tag</code></em>);</pre>
+</div>
+<hr>
+<div class="refsect2">
+<a name="gst-mpegts-descriptor-parse-dvb-ca-identifier"></a><h3>gst_mpegts_descriptor_parse_dvb_ca_identifier ()</h3>
+<pre class="programlisting"><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
+gst_mpegts_descriptor_parse_dvb_ca_identifier
+ (<em class="parameter"><code>const <a class="link" href="gst-plugins-bad-libs-gstmpegtsdescriptor.html#GstMpegtsDescriptor"><span class="type">GstMpegtsDescriptor</span></a> *descriptor</code></em>,
+ <em class="parameter"><code><a href="/usr/share/gtk-doc/html/glibglib-Arrays.html#GArray"><span class="type">GArray</span></a> **list</code></em>);</pre>
+</div>
+<hr>
+<div class="refsect2">
+<a name="gst-mpegts-descriptor-parse-dvb-service-list"></a><h3>gst_mpegts_descriptor_parse_dvb_service_list ()</h3>
+<pre class="programlisting"><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
+gst_mpegts_descriptor_parse_dvb_service_list
+ (<em class="parameter"><code>const <a class="link" href="gst-plugins-bad-libs-gstmpegtsdescriptor.html#GstMpegtsDescriptor"><span class="type">GstMpegtsDescriptor</span></a> *descriptor</code></em>,
+ <em class="parameter"><code><a href="/usr/share/gtk-doc/html/glibglib-Pointer-Arrays.html#GPtrArray"><span class="type">GPtrArray</span></a> **list</code></em>);</pre>
+</div>
+<hr>
+<div class="refsect2">
+<a name="gst-mpegts-descriptor-parse-dvb-stuffing"></a><h3>gst_mpegts_descriptor_parse_dvb_stuffing ()</h3>
+<pre class="programlisting"><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
+gst_mpegts_descriptor_parse_dvb_stuffing
+ (<em class="parameter"><code>const <a class="link" href="gst-plugins-bad-libs-gstmpegtsdescriptor.html#GstMpegtsDescriptor"><span class="type">GstMpegtsDescriptor</span></a> *descriptor</code></em>,
+ <em class="parameter"><code><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint8"><span class="type">guint8</span></a> **stuffing_bytes</code></em>);</pre>
+</div>
+<hr>
+<div class="refsect2">
+<a name="gst-mpegts-descriptor-parse-dvb-bouquet-name"></a><h3>gst_mpegts_descriptor_parse_dvb_bouquet_name ()</h3>
+<pre class="programlisting"><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
+gst_mpegts_descriptor_parse_dvb_bouquet_name
+ (<em class="parameter"><code>const <a class="link" href="gst-plugins-bad-libs-gstmpegtsdescriptor.html#GstMpegtsDescriptor"><span class="type">GstMpegtsDescriptor</span></a> *descriptor</code></em>,
+ <em class="parameter"><code><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gchar"><span class="type">gchar</span></a> **bouquet_name</code></em>);</pre>
+</div>
+<hr>
+<div class="refsect2">
+<a name="gst-mpegts-descriptor-parse-dvb-multilingual-network-name"></a><h3>gst_mpegts_descriptor_parse_dvb_multilingual_network_name ()</h3>
+<pre class="programlisting"><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
+gst_mpegts_descriptor_parse_dvb_multilingual_network_name
+ (<em class="parameter"><code>const <a class="link" href="gst-plugins-bad-libs-gstmpegtsdescriptor.html#GstMpegtsDescriptor"><span class="type">GstMpegtsDescriptor</span></a> *descriptor</code></em>,
+ <em class="parameter"><code><a href="/usr/share/gtk-doc/html/glibglib-Pointer-Arrays.html#GPtrArray"><span class="type">GPtrArray</span></a> **network_name_items</code></em>);</pre>
+</div>
+<hr>
+<div class="refsect2">
+<a name="gst-mpegts-descriptor-parse-dvb-multilingual-bouquet-name"></a><h3>gst_mpegts_descriptor_parse_dvb_multilingual_bouquet_name ()</h3>
+<pre class="programlisting"><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
+gst_mpegts_descriptor_parse_dvb_multilingual_bouquet_name
+ (<em class="parameter"><code>const <a class="link" href="gst-plugins-bad-libs-gstmpegtsdescriptor.html#GstMpegtsDescriptor"><span class="type">GstMpegtsDescriptor</span></a> *descriptor</code></em>,
+ <em class="parameter"><code><a href="/usr/share/gtk-doc/html/glibglib-Pointer-Arrays.html#GPtrArray"><span class="type">GPtrArray</span></a> **bouquet_name_items</code></em>);</pre>
+</div>
+<hr>
+<div class="refsect2">
+<a name="gst-mpegts-descriptor-parse-dvb-multilingual-service-name"></a><h3>gst_mpegts_descriptor_parse_dvb_multilingual_service_name ()</h3>
+<pre class="programlisting"><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
+gst_mpegts_descriptor_parse_dvb_multilingual_service_name
+ (<em class="parameter"><code>const <a class="link" href="gst-plugins-bad-libs-gstmpegtsdescriptor.html#GstMpegtsDescriptor"><span class="type">GstMpegtsDescriptor</span></a> *descriptor</code></em>,
+ <em class="parameter"><code><a href="/usr/share/gtk-doc/html/glibglib-Pointer-Arrays.html#GPtrArray"><span class="type">GPtrArray</span></a> **service_name_items</code></em>);</pre>
+</div>
+<hr>
+<div class="refsect2">
+<a name="gst-mpegts-descriptor-parse-dvb-multilingual-component"></a><h3>gst_mpegts_descriptor_parse_dvb_multilingual_component ()</h3>
+<pre class="programlisting"><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
+gst_mpegts_descriptor_parse_dvb_multilingual_component
+ (<em class="parameter"><code>const <a class="link" href="gst-plugins-bad-libs-gstmpegtsdescriptor.html#GstMpegtsDescriptor"><span class="type">GstMpegtsDescriptor</span></a> *descriptor</code></em>,
+ <em class="parameter"><code><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint8"><span class="type">guint8</span></a> *component_tag</code></em>,
+ <em class="parameter"><code><a href="/usr/share/gtk-doc/html/glibglib-Pointer-Arrays.html#GPtrArray"><span class="type">GPtrArray</span></a> **component_description_items</code></em>);</pre>
+</div>
+</div>
+<div class="refsect1">
+<a name="gst-plugins-bad-libs-gst-dvb-descriptor.other_details"></a><h2>Types and Values</h2>
+<div class="refsect2">
+<a name="GstMpegtsDVBDescriptorType"></a><h3>enum GstMpegtsDVBDescriptorType</h3>
+<div class="refsect3">
+<a name="GstMpegtsDVBDescriptorType.members"></a><h4>Members</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
+<col width="300px" class="enum_members_name">
+<col class="enum_members_description">
+<col width="200px" class="enum_members_annotations">
+</colgroup>
+<tbody>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MTS-DESC-DVB-NETWORK-NAME:CAPS"></a>GST_MTS_DESC_DVB_NETWORK_NAME</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MTS-DESC-DVB-SERVICE-LIST:CAPS"></a>GST_MTS_DESC_DVB_SERVICE_LIST</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MTS-DESC-DVB-STUFFING:CAPS"></a>GST_MTS_DESC_DVB_STUFFING</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MTS-DESC-DVB-SATELLITE-DELIVERY-SYSTEM:CAPS"></a>GST_MTS_DESC_DVB_SATELLITE_DELIVERY_SYSTEM</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MTS-DESC-DVB-CABLE-DELIVERY-SYSTEM:CAPS"></a>GST_MTS_DESC_DVB_CABLE_DELIVERY_SYSTEM</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MTS-DESC-DVB-VBI-DATA:CAPS"></a>GST_MTS_DESC_DVB_VBI_DATA</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MTS-DESC-DVB-VBI-TELETEXT:CAPS"></a>GST_MTS_DESC_DVB_VBI_TELETEXT</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MTS-DESC-DVB-BOUQUET-NAME:CAPS"></a>GST_MTS_DESC_DVB_BOUQUET_NAME</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MTS-DESC-DVB-SERVICE:CAPS"></a>GST_MTS_DESC_DVB_SERVICE</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MTS-DESC-DVB-COUNTRY-AVAILABILITY:CAPS"></a>GST_MTS_DESC_DVB_COUNTRY_AVAILABILITY</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MTS-DESC-DVB-LINKAGE:CAPS"></a>GST_MTS_DESC_DVB_LINKAGE</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MTS-DESC-DVB-NVOD-REFERENCE:CAPS"></a>GST_MTS_DESC_DVB_NVOD_REFERENCE</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MTS-DESC-DVB-TIME-SHIFTED-SERVICE:CAPS"></a>GST_MTS_DESC_DVB_TIME_SHIFTED_SERVICE</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MTS-DESC-DVB-SHORT-EVENT:CAPS"></a>GST_MTS_DESC_DVB_SHORT_EVENT</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MTS-DESC-DVB-EXTENDED-EVENT:CAPS"></a>GST_MTS_DESC_DVB_EXTENDED_EVENT</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MTS-DESC-DVB-TIME-SHIFTED-EVENT:CAPS"></a>GST_MTS_DESC_DVB_TIME_SHIFTED_EVENT</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MTS-DESC-DVB-COMPONENT:CAPS"></a>GST_MTS_DESC_DVB_COMPONENT</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MTS-DESC-DVB-MOSAIC:CAPS"></a>GST_MTS_DESC_DVB_MOSAIC</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MTS-DESC-DVB-STREAM-IDENTIFIER:CAPS"></a>GST_MTS_DESC_DVB_STREAM_IDENTIFIER</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MTS-DESC-DVB-CA-IDENTIFIER:CAPS"></a>GST_MTS_DESC_DVB_CA_IDENTIFIER</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MTS-DESC-DVB-CONTENT:CAPS"></a>GST_MTS_DESC_DVB_CONTENT</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MTS-DESC-DVB-PARENTAL-RATING:CAPS"></a>GST_MTS_DESC_DVB_PARENTAL_RATING</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MTS-DESC-DVB-TELETEXT:CAPS"></a>GST_MTS_DESC_DVB_TELETEXT</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MTS-DESC-DVB-TELEPHONE:CAPS"></a>GST_MTS_DESC_DVB_TELEPHONE</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MTS-DESC-DVB-LOCAL-TIME-OFFSET:CAPS"></a>GST_MTS_DESC_DVB_LOCAL_TIME_OFFSET</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MTS-DESC-DVB-SUBTITLING:CAPS"></a>GST_MTS_DESC_DVB_SUBTITLING</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MTS-DESC-DVB-TERRESTRIAL-DELIVERY-SYSTEM:CAPS"></a>GST_MTS_DESC_DVB_TERRESTRIAL_DELIVERY_SYSTEM</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MTS-DESC-DVB-MULTILINGUAL-NETWORK-NAME:CAPS"></a>GST_MTS_DESC_DVB_MULTILINGUAL_NETWORK_NAME</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MTS-DESC-DVB-MULTILINGUAL-BOUQUET-NAME:CAPS"></a>GST_MTS_DESC_DVB_MULTILINGUAL_BOUQUET_NAME</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MTS-DESC-DVB-MULTILINGUAL-SERVICE-NAME:CAPS"></a>GST_MTS_DESC_DVB_MULTILINGUAL_SERVICE_NAME</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MTS-DESC-DVB-MULTILINGUAL-COMPONENT:CAPS"></a>GST_MTS_DESC_DVB_MULTILINGUAL_COMPONENT</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MTS-DESC-DVB-PRIVATE-DATA-SPECIFIER:CAPS"></a>GST_MTS_DESC_DVB_PRIVATE_DATA_SPECIFIER</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MTS-DESC-DVB-SERVICE-MOVE:CAPS"></a>GST_MTS_DESC_DVB_SERVICE_MOVE</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MTS-DESC-DVB-SHORT-SMOOTHING-BUFFER:CAPS"></a>GST_MTS_DESC_DVB_SHORT_SMOOTHING_BUFFER</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MTS-DESC-DVB-FREQUENCY-LIST:CAPS"></a>GST_MTS_DESC_DVB_FREQUENCY_LIST</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MTS-DESC-DVB-PARTIAL-TRANSPORT-STREAM:CAPS"></a>GST_MTS_DESC_DVB_PARTIAL_TRANSPORT_STREAM</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MTS-DESC-DVB-DATA-BROADCAST:CAPS"></a>GST_MTS_DESC_DVB_DATA_BROADCAST</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MTS-DESC-DVB-SCRAMBLING:CAPS"></a>GST_MTS_DESC_DVB_SCRAMBLING</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MTS-DESC-DVB-DATA-BROADCAST-ID:CAPS"></a>GST_MTS_DESC_DVB_DATA_BROADCAST_ID</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MTS-DESC-DVB-TRANSPORT-STREAM:CAPS"></a>GST_MTS_DESC_DVB_TRANSPORT_STREAM</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MTS-DESC-DVB-DSNG:CAPS"></a>GST_MTS_DESC_DVB_DSNG</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MTS-DESC-DVB-PDC:CAPS"></a>GST_MTS_DESC_DVB_PDC</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MTS-DESC-DVB-AC3:CAPS"></a>GST_MTS_DESC_DVB_AC3</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MTS-DESC-DVB-ANCILLARY-DATA:CAPS"></a>GST_MTS_DESC_DVB_ANCILLARY_DATA</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MTS-DESC-DVB-CELL-LIST:CAPS"></a>GST_MTS_DESC_DVB_CELL_LIST</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MTS-DESC-DVB-CELL-FREQUENCY-LINK:CAPS"></a>GST_MTS_DESC_DVB_CELL_FREQUENCY_LINK</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MTS-DESC-DVB-ANNOUNCEMENT-SUPPORT:CAPS"></a>GST_MTS_DESC_DVB_ANNOUNCEMENT_SUPPORT</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MTS-DESC-DVB-APPLICATION-SIGNALLING:CAPS"></a>GST_MTS_DESC_DVB_APPLICATION_SIGNALLING</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MTS-DESC-DVB-ADAPTATION-FIELD-DATA:CAPS"></a>GST_MTS_DESC_DVB_ADAPTATION_FIELD_DATA</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MTS-DESC-DVB-SERVICE-IDENTIFIER:CAPS"></a>GST_MTS_DESC_DVB_SERVICE_IDENTIFIER</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MTS-DESC-DVB-SERVICE-AVAILABILITY:CAPS"></a>GST_MTS_DESC_DVB_SERVICE_AVAILABILITY</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MTS-DESC-DVB-DEFAULT-AUTHORITY:CAPS"></a>GST_MTS_DESC_DVB_DEFAULT_AUTHORITY</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MTS-DESC-DVB-RELATED-CONTENT:CAPS"></a>GST_MTS_DESC_DVB_RELATED_CONTENT</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MTS-DESC-DVB-TVA-ID:CAPS"></a>GST_MTS_DESC_DVB_TVA_ID</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MTS-DESC-DVB-CONTENT-IDENTIFIER:CAPS"></a>GST_MTS_DESC_DVB_CONTENT_IDENTIFIER</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MTS-DESC-DVB-TIMESLICE-FEC-IDENTIFIER:CAPS"></a>GST_MTS_DESC_DVB_TIMESLICE_FEC_IDENTIFIER</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MTS-DESC-DVB-ECM-REPETITION-RATE:CAPS"></a>GST_MTS_DESC_DVB_ECM_REPETITION_RATE</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MTS-DESC-DVB-S2-SATELLITE-DELIVERY-SYSTEM:CAPS"></a>GST_MTS_DESC_DVB_S2_SATELLITE_DELIVERY_SYSTEM</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MTS-DESC-DVB-ENHANCED-AC3:CAPS"></a>GST_MTS_DESC_DVB_ENHANCED_AC3</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MTS-DESC-DVB-DTS:CAPS"></a>GST_MTS_DESC_DVB_DTS</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MTS-DESC-DVB-AAC:CAPS"></a>GST_MTS_DESC_DVB_AAC</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MTS-DESC-DVB-XAIT-LOCATION:CAPS"></a>GST_MTS_DESC_DVB_XAIT_LOCATION</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MTS-DESC-DVB-FTA-CONTENT-MANAGEMENT:CAPS"></a>GST_MTS_DESC_DVB_FTA_CONTENT_MANAGEMENT</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MTS-DESC-DVB-EXTENSION:CAPS"></a>GST_MTS_DESC_DVB_EXTENSION</p></td>
+<td> </td>
+<td> </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstMpegtsDVBExtendedDescriptorType"></a><h3>enum GstMpegtsDVBExtendedDescriptorType</h3>
+<div class="refsect3">
+<a name="GstMpegtsDVBExtendedDescriptorType.members"></a><h4>Members</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
+<col width="300px" class="enum_members_name">
+<col class="enum_members_description">
+<col width="200px" class="enum_members_annotations">
+</colgroup>
+<tbody>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MTS-DESC-EXT-DVB-IMAGE-ICON:CAPS"></a>GST_MTS_DESC_EXT_DVB_IMAGE_ICON</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MTS-DESC-EXT-DVB-CPCM-DELIVERY-SIGNALLING:CAPS"></a>GST_MTS_DESC_EXT_DVB_CPCM_DELIVERY_SIGNALLING</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MTS-DESC-EXT-DVB-CP:CAPS"></a>GST_MTS_DESC_EXT_DVB_CP</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MTS-DESC-EXT-DVB-CP-IDENTIFIER:CAPS"></a>GST_MTS_DESC_EXT_DVB_CP_IDENTIFIER</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MTS-DESC-EXT-DVB-T2-DELIVERY-SYSTEM:CAPS"></a>GST_MTS_DESC_EXT_DVB_T2_DELIVERY_SYSTEM</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MTS-DESC-EXT-DVB-SH-DELIVERY-SYSTEM:CAPS"></a>GST_MTS_DESC_EXT_DVB_SH_DELIVERY_SYSTEM</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MTS-DESC-EXT-DVB-SUPPLEMENTARY-AUDIO:CAPS"></a>GST_MTS_DESC_EXT_DVB_SUPPLEMENTARY_AUDIO</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MTS-DESC-EXT-DVB-NETWORK-CHANGE-NOTIFY:CAPS"></a>GST_MTS_DESC_EXT_DVB_NETWORK_CHANGE_NOTIFY</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MTS-DESC-EXT-DVB-MESSAGE:CAPS"></a>GST_MTS_DESC_EXT_DVB_MESSAGE</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MTS-DESC-EXT-DVB-TARGET-REGION:CAPS"></a>GST_MTS_DESC_EXT_DVB_TARGET_REGION</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MTS-DESC-EXT-DVB-TARGET-REGION-NAME:CAPS"></a>GST_MTS_DESC_EXT_DVB_TARGET_REGION_NAME</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MTS-DESC-EXT-DVB-SERVICE-RELOCATED:CAPS"></a>GST_MTS_DESC_EXT_DVB_SERVICE_RELOCATED</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MTS-DESC-EXT-DVB-XAIT-PID:CAPS"></a>GST_MTS_DESC_EXT_DVB_XAIT_PID</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MTS-DESC-EXT-DVB-C2-DELIVERY-SYSTEM:CAPS"></a>GST_MTS_DESC_EXT_DVB_C2_DELIVERY_SYSTEM</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MTS-DESC-EXT-DVB-DTS-HD-AUDIO-STREAM:CAPS"></a>GST_MTS_DESC_EXT_DVB_DTS_HD_AUDIO_STREAM</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MTS-DESC-EXT-DVB-DTS-NEUTRAL:CAPS"></a>GST_MTS_DESC_EXT_DVB_DTS_NEUTRAL</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MTS-DESC-EXT-DVB-VIDEO-DEPTH-RANGE:CAPS"></a>GST_MTS_DESC_EXT_DVB_VIDEO_DEPTH_RANGE</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MTS-DESC-EXT-DVB-T2MI:CAPS"></a>GST_MTS_DESC_EXT_DVB_T2MI</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MTS-DESC-EXT-DVB-URI-LINKAGE:CAPS"></a>GST_MTS_DESC_EXT_DVB_URI_LINKAGE</p></td>
+<td> </td>
+<td> </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstMpegtsContent"></a><h3>struct GstMpegtsContent</h3>
+<pre class="programlisting">struct GstMpegtsContent {
+ GstMpegtsContentNibbleHi content_nibble_1;
+ guint8 content_nibble_2;
+ guint8 user_byte;
+};
+</pre>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstMpegtsComponentDescriptor"></a><h3>struct GstMpegtsComponentDescriptor</h3>
+<pre class="programlisting">struct GstMpegtsComponentDescriptor {
+ guint8 stream_content;
+ guint8 component_type;
+ guint8 component_tag;
+ gchar *language_code;
+ gchar *text;
+};
+</pre>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstMpegtsExtendedEventItem"></a><h3>struct GstMpegtsExtendedEventItem</h3>
+<pre class="programlisting">struct GstMpegtsExtendedEventItem {
+ gchar *item_description;
+ gchar *item;
+};
+</pre>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstMpegtsExtendedEventDescriptor"></a><h3>struct GstMpegtsExtendedEventDescriptor</h3>
+<pre class="programlisting">struct GstMpegtsExtendedEventDescriptor {
+ guint8 descriptor_number;
+ guint8 last_descriptor_number;
+ gchar *language_code;
+ GPtrArray *items;
+ gchar *text;
+};
+</pre>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstMpegtsSatelliteDeliverySystemDescriptor"></a><h3>struct GstMpegtsSatelliteDeliverySystemDescriptor</h3>
+<pre class="programlisting">struct GstMpegtsSatelliteDeliverySystemDescriptor {
+ guint32 frequency;
+ gfloat orbital_position;
+ gboolean west_east;
+ GstMpegtsSatellitePolarizationType polarization;
+
+ GstMpegtsSatelliteRolloff roll_off;
+ gboolean modulation_system;
+ GstMpegtsModulationType modulation_type;
+
+ guint32 symbol_rate;
+ GstMpegtsDVBCodeRate fec_inner;
+};
+</pre>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstMpegtsDVBCodeRate"></a><h3>enum GstMpegtsDVBCodeRate</h3>
+<div class="refsect3">
+<a name="GstMpegtsDVBCodeRate.members"></a><h4>Members</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
+<col width="300px" class="enum_members_name">
+<col class="enum_members_description">
+<col width="200px" class="enum_members_annotations">
+</colgroup>
+<tbody>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MPEGTS-FEC-NONE:CAPS"></a>GST_MPEGTS_FEC_NONE</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MPEGTS-FEC-1-2:CAPS"></a>GST_MPEGTS_FEC_1_2</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MPEGTS-FEC-2-3:CAPS"></a>GST_MPEGTS_FEC_2_3</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MPEGTS-FEC-3-4:CAPS"></a>GST_MPEGTS_FEC_3_4</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MPEGTS-FEC-4-5:CAPS"></a>GST_MPEGTS_FEC_4_5</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MPEGTS-FEC-5-6:CAPS"></a>GST_MPEGTS_FEC_5_6</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MPEGTS-FEC-6-7:CAPS"></a>GST_MPEGTS_FEC_6_7</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MPEGTS-FEC-7-8:CAPS"></a>GST_MPEGTS_FEC_7_8</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MPEGTS-FEC-8-9:CAPS"></a>GST_MPEGTS_FEC_8_9</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MPEGTS-FEC-AUTO:CAPS"></a>GST_MPEGTS_FEC_AUTO</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MPEGTS-FEC-3-5:CAPS"></a>GST_MPEGTS_FEC_3_5</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MPEGTS-FEC-9-10:CAPS"></a>GST_MPEGTS_FEC_9_10</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MPEGTS-FEC-2-5:CAPS"></a>GST_MPEGTS_FEC_2_5</p></td>
+<td> </td>
+<td> </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstMpegtsModulationType"></a><h3>enum GstMpegtsModulationType</h3>
+<div class="refsect3">
+<a name="GstMpegtsModulationType.members"></a><h4>Members</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
+<col width="300px" class="enum_members_name">
+<col class="enum_members_description">
+<col width="200px" class="enum_members_annotations">
+</colgroup>
+<tbody>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MPEGTS-MODULATION-QPSK:CAPS"></a>GST_MPEGTS_MODULATION_QPSK</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MPEGTS-MODULATION-QAM-16:CAPS"></a>GST_MPEGTS_MODULATION_QAM_16</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MPEGTS-MODULATION-QAM-32:CAPS"></a>GST_MPEGTS_MODULATION_QAM_32</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MPEGTS-MODULATION-QAM-64:CAPS"></a>GST_MPEGTS_MODULATION_QAM_64</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MPEGTS-MODULATION-QAM-128:CAPS"></a>GST_MPEGTS_MODULATION_QAM_128</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MPEGTS-MODULATION-QAM-256:CAPS"></a>GST_MPEGTS_MODULATION_QAM_256</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MPEGTS-MODULATION-QAM-AUTO:CAPS"></a>GST_MPEGTS_MODULATION_QAM_AUTO</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MPEGTS-MODULATION-VSB-8:CAPS"></a>GST_MPEGTS_MODULATION_VSB_8</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MPEGTS-MODULATION-VSB-16:CAPS"></a>GST_MPEGTS_MODULATION_VSB_16</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MPEGTS-MODULATION-PSK-8:CAPS"></a>GST_MPEGTS_MODULATION_PSK_8</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MPEGTS-MODULATION-APSK-16:CAPS"></a>GST_MPEGTS_MODULATION_APSK_16</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MPEGTS-MODULATION-APSK-32:CAPS"></a>GST_MPEGTS_MODULATION_APSK_32</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MPEGTS-MODULATION-DQPSK:CAPS"></a>GST_MPEGTS_MODULATION_DQPSK</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MPEGTS-MODULATION-QAM-4-NR-:CAPS"></a>GST_MPEGTS_MODULATION_QAM_4_NR_</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MPEGTS-MODULATION-NONE:CAPS"></a>GST_MPEGTS_MODULATION_NONE</p></td>
+<td> </td>
+<td> </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstMpegtsSatellitePolarizationType"></a><h3>enum GstMpegtsSatellitePolarizationType</h3>
+<div class="refsect3">
+<a name="GstMpegtsSatellitePolarizationType.members"></a><h4>Members</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
+<col width="300px" class="enum_members_name">
+<col class="enum_members_description">
+<col width="200px" class="enum_members_annotations">
+</colgroup>
+<tbody>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MPEGTS-POLARIZATION-LINEAR-HORIZONTAL:CAPS"></a>GST_MPEGTS_POLARIZATION_LINEAR_HORIZONTAL</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MPEGTS-POLARIZATION-LINEAR-VERTICAL:CAPS"></a>GST_MPEGTS_POLARIZATION_LINEAR_VERTICAL</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MPEGTS-POLARIZATION-CIRCULAR-LEFT:CAPS"></a>GST_MPEGTS_POLARIZATION_CIRCULAR_LEFT</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MPEGTS-POLARIZATION-CIRCULAR-RIGHT:CAPS"></a>GST_MPEGTS_POLARIZATION_CIRCULAR_RIGHT</p></td>
+<td> </td>
+<td> </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstMpegtsSatelliteRolloff"></a><h3>enum GstMpegtsSatelliteRolloff</h3>
+<div class="refsect3">
+<a name="GstMpegtsSatelliteRolloff.members"></a><h4>Members</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
+<col width="300px" class="enum_members_name">
+<col class="enum_members_description">
+<col width="200px" class="enum_members_annotations">
+</colgroup>
+<tbody>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MPEGTS-ROLLOFF-35:CAPS"></a>GST_MPEGTS_ROLLOFF_35</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MPEGTS-ROLLOFF-20:CAPS"></a>GST_MPEGTS_ROLLOFF_20</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MPEGTS-ROLLOFF-25:CAPS"></a>GST_MPEGTS_ROLLOFF_25</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MPEGTS-ROLLOFF-RESERVED:CAPS"></a>GST_MPEGTS_ROLLOFF_RESERVED</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MPEGTS-ROLLOFF-AUTO:CAPS"></a>GST_MPEGTS_ROLLOFF_AUTO</p></td>
+<td> </td>
+<td> </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstMpegtsCableDeliverySystemDescriptor"></a><h3>struct GstMpegtsCableDeliverySystemDescriptor</h3>
+<pre class="programlisting">struct GstMpegtsCableDeliverySystemDescriptor {
+ guint32 frequency;
+ GstMpegtsCableOuterFECScheme outer_fec;
+ GstMpegtsModulationType modulation;
+
+ guint32 symbol_rate;
+ GstMpegtsDVBCodeRate fec_inner;
+};
+</pre>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstMpegtsCableOuterFECScheme"></a><h3>enum GstMpegtsCableOuterFECScheme</h3>
+<div class="refsect3">
+<a name="GstMpegtsCableOuterFECScheme.members"></a><h4>Members</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
+<col width="300px" class="enum_members_name">
+<col class="enum_members_description">
+<col width="200px" class="enum_members_annotations">
+</colgroup>
+<tbody>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MPEGTS-CABLE-OUTER-FEC-UNDEFINED:CAPS"></a>GST_MPEGTS_CABLE_OUTER_FEC_UNDEFINED</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MPEGTS-CABLE-OUTER-FEC-NONE:CAPS"></a>GST_MPEGTS_CABLE_OUTER_FEC_NONE</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MPEGTS-CABLE-OUTER-FEC-RS-204-188:CAPS"></a>GST_MPEGTS_CABLE_OUTER_FEC_RS_204_188</p></td>
+<td> </td>
+<td> </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstMpegtsTerrestrialDeliverySystemDescriptor"></a><h3>struct GstMpegtsTerrestrialDeliverySystemDescriptor</h3>
+<pre class="programlisting">struct GstMpegtsTerrestrialDeliverySystemDescriptor {
+ guint32 frequency;
+ guint32 bandwidth;
+ gboolean priority;
+ gboolean time_slicing;
+ gboolean mpe_fec;
+ GstMpegtsModulationType constellation;
+ GstMpegtsTerrestrialHierarchy hierarchy;
+ GstMpegtsDVBCodeRate code_rate_hp;
+ GstMpegtsDVBCodeRate code_rate_lp;
+ GstMpegtsTerrestrialGuardInterval guard_interval;
+ GstMpegtsTerrestrialTransmissionMode transmission_mode;
+ gboolean other_frequency;
+};
+</pre>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstMpegtsTerrestrialTransmissionMode"></a><h3>enum GstMpegtsTerrestrialTransmissionMode</h3>
+<div class="refsect3">
+<a name="GstMpegtsTerrestrialTransmissionMode.members"></a><h4>Members</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
+<col width="300px" class="enum_members_name">
+<col class="enum_members_description">
+<col width="200px" class="enum_members_annotations">
+</colgroup>
+<tbody>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MPEGTS-TRANSMISSION-MODE-2K:CAPS"></a>GST_MPEGTS_TRANSMISSION_MODE_2K</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MPEGTS-TRANSMISSION-MODE-8K:CAPS"></a>GST_MPEGTS_TRANSMISSION_MODE_8K</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MPEGTS-TRANSMISSION-MODE-AUTO:CAPS"></a>GST_MPEGTS_TRANSMISSION_MODE_AUTO</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MPEGTS-TRANSMISSION-MODE-4K:CAPS"></a>GST_MPEGTS_TRANSMISSION_MODE_4K</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MPEGTS-TRANSMISSION-MODE-1K:CAPS"></a>GST_MPEGTS_TRANSMISSION_MODE_1K</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MPEGTS-TRANSMISSION-MODE-16K:CAPS"></a>GST_MPEGTS_TRANSMISSION_MODE_16K</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MPEGTS-TRANSMISSION-MODE-32K:CAPS"></a>GST_MPEGTS_TRANSMISSION_MODE_32K</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MPEGTS-TRANSMISSION-MODE-C1:CAPS"></a>GST_MPEGTS_TRANSMISSION_MODE_C1</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MPEGTS-TRANSMISSION-MODE-C3780:CAPS"></a>GST_MPEGTS_TRANSMISSION_MODE_C3780</p></td>
+<td> </td>
+<td> </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstMpegtsTerrestrialGuardInterval"></a><h3>enum GstMpegtsTerrestrialGuardInterval</h3>
+<div class="refsect3">
+<a name="GstMpegtsTerrestrialGuardInterval.members"></a><h4>Members</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
+<col width="300px" class="enum_members_name">
+<col class="enum_members_description">
+<col width="200px" class="enum_members_annotations">
+</colgroup>
+<tbody>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MPEGTS-GUARD-INTERVAL-1-32:CAPS"></a>GST_MPEGTS_GUARD_INTERVAL_1_32</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MPEGTS-GUARD-INTERVAL-1-16:CAPS"></a>GST_MPEGTS_GUARD_INTERVAL_1_16</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MPEGTS-GUARD-INTERVAL-1-8:CAPS"></a>GST_MPEGTS_GUARD_INTERVAL_1_8</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MPEGTS-GUARD-INTERVAL-1-4:CAPS"></a>GST_MPEGTS_GUARD_INTERVAL_1_4</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MPEGTS-GUARD-INTERVAL-AUTO:CAPS"></a>GST_MPEGTS_GUARD_INTERVAL_AUTO</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MPEGTS-GUARD-INTERVAL-1-128:CAPS"></a>GST_MPEGTS_GUARD_INTERVAL_1_128</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MPEGTS-GUARD-INTERVAL-19-128:CAPS"></a>GST_MPEGTS_GUARD_INTERVAL_19_128</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MPEGTS-GUARD-INTERVAL-19-256:CAPS"></a>GST_MPEGTS_GUARD_INTERVAL_19_256</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MPEGTS-GUARD-INTERVAL-PN420:CAPS"></a>GST_MPEGTS_GUARD_INTERVAL_PN420</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MPEGTS-GUARD-INTERVAL-PN595:CAPS"></a>GST_MPEGTS_GUARD_INTERVAL_PN595</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MPEGTS-GUARD-INTERVAL-PN945:CAPS"></a>GST_MPEGTS_GUARD_INTERVAL_PN945</p></td>
+<td> </td>
+<td> </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstMpegtsTerrestrialHierarchy"></a><h3>enum GstMpegtsTerrestrialHierarchy</h3>
+<div class="refsect3">
+<a name="GstMpegtsTerrestrialHierarchy.members"></a><h4>Members</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
+<col width="300px" class="enum_members_name">
+<col class="enum_members_description">
+<col width="200px" class="enum_members_annotations">
+</colgroup>
+<tbody>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MPEGTS-HIERARCHY-NONE:CAPS"></a>GST_MPEGTS_HIERARCHY_NONE</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MPEGTS-HIERARCHY-1:CAPS"></a>GST_MPEGTS_HIERARCHY_1</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MPEGTS-HIERARCHY-2:CAPS"></a>GST_MPEGTS_HIERARCHY_2</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MPEGTS-HIERARCHY-4:CAPS"></a>GST_MPEGTS_HIERARCHY_4</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MPEGTS-HIERARCHY-AUTO:CAPS"></a>GST_MPEGTS_HIERARCHY_AUTO</p></td>
+<td> </td>
+<td> </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstMpegtsT2DeliverySystemCellExtension"></a><h3>struct GstMpegtsT2DeliverySystemCellExtension</h3>
+<pre class="programlisting">struct GstMpegtsT2DeliverySystemCellExtension {
+ guint8 cell_id_extension;
+ guint32 transposer_frequency;
+};
+</pre>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstMpegtsT2DeliverySystemCell"></a><h3>struct GstMpegtsT2DeliverySystemCell</h3>
+<pre class="programlisting">struct GstMpegtsT2DeliverySystemCell {
+ guint16 cell_id;
+ GArray *centre_frequencies;
+ GPtrArray *sub_cells;
+};
+</pre>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstMpegtsT2DeliverySystemDescriptor"></a><h3>struct GstMpegtsT2DeliverySystemDescriptor</h3>
+<pre class="programlisting">struct GstMpegtsT2DeliverySystemDescriptor {
+ guint8 plp_id;
+ guint16 t2_system_id;
+ /* FIXME: */
+ guint8 siso_miso;
+ guint32 bandwidth;
+ GstMpegtsTerrestrialGuardInterval guard_interval;
+ GstMpegtsTerrestrialTransmissionMode transmission_mode;
+ gboolean other_frequency;
+ gboolean tfs;
+ GPtrArray *cells;
+};
+</pre>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstMpegtsDVBServiceType"></a><h3>enum GstMpegtsDVBServiceType</h3>
+<div class="refsect3">
+<a name="GstMpegtsDVBServiceType.members"></a><h4>Members</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
+<col width="300px" class="enum_members_name">
+<col class="enum_members_description">
+<col width="200px" class="enum_members_annotations">
+</colgroup>
+<tbody>
+<tr>
+<td class="enum_member_name"><p><a name="GST-DVB-SERVICE-RESERVED-00:CAPS"></a>GST_DVB_SERVICE_RESERVED_00</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-DVB-SERVICE-DIGITAL-TELEVISION:CAPS"></a>GST_DVB_SERVICE_DIGITAL_TELEVISION</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-DVB-SERVICE-DIGITAL-RADIO-SOUND:CAPS"></a>GST_DVB_SERVICE_DIGITAL_RADIO_SOUND</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-DVB-SERVICE-TELETEXT:CAPS"></a>GST_DVB_SERVICE_TELETEXT</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-DVB-SERVICE-NVOD-REFERENCE:CAPS"></a>GST_DVB_SERVICE_NVOD_REFERENCE</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-DVB-SERVICE-NVOD-TIME-SHIFTED:CAPS"></a>GST_DVB_SERVICE_NVOD_TIME_SHIFTED</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-DVB-SERVICE-MOSAIC:CAPS"></a>GST_DVB_SERVICE_MOSAIC</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-DVB-SERVICE-FM-RADIO:CAPS"></a>GST_DVB_SERVICE_FM_RADIO</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-DVB-SERVICE-DVB-SRM:CAPS"></a>GST_DVB_SERVICE_DVB_SRM</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-DVB-SERVICE-RESERVED-09:CAPS"></a>GST_DVB_SERVICE_RESERVED_09</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-DVB-SERVICE-ADVANCED-CODEC-DIGITAL-RADIO-SOUND:CAPS"></a>GST_DVB_SERVICE_ADVANCED_CODEC_DIGITAL_RADIO_SOUND</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-DVB-SERVICE-ADVANCED-CODEC-MOSAIC:CAPS"></a>GST_DVB_SERVICE_ADVANCED_CODEC_MOSAIC</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-DVB-SERVICE-DATA-BROADCAST:CAPS"></a>GST_DVB_SERVICE_DATA_BROADCAST</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-DVB-SERVICE-RESERVED-0D-COMMON-INTERFACE:CAPS"></a>GST_DVB_SERVICE_RESERVED_0D_COMMON_INTERFACE</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-DVB-SERVICE-RCS-MAP:CAPS"></a>GST_DVB_SERVICE_RCS_MAP</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-DVB-SERVICE-RCS-FLS:CAPS"></a>GST_DVB_SERVICE_RCS_FLS</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-DVB-SERVICE-DVB-MHP:CAPS"></a>GST_DVB_SERVICE_DVB_MHP</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-DVB-SERVICE-MPEG2-HD-DIGITAL-TELEVISION:CAPS"></a>GST_DVB_SERVICE_MPEG2_HD_DIGITAL_TELEVISION</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-DVB-SERVICE-ADVANCED-CODEC-SD-DIGITAL-TELEVISION:CAPS"></a>GST_DVB_SERVICE_ADVANCED_CODEC_SD_DIGITAL_TELEVISION</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-DVB-SERVICE-ADVANCED-CODEC-SD-NVOD-TIME-SHIFTED:CAPS"></a>GST_DVB_SERVICE_ADVANCED_CODEC_SD_NVOD_TIME_SHIFTED</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-DVB-SERVICE-ADVANCED-CODEC-SD-NVOD-REFERENCE:CAPS"></a>GST_DVB_SERVICE_ADVANCED_CODEC_SD_NVOD_REFERENCE</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-DVB-SERVICE-ADVANCED-CODEC-HD-DIGITAL-TELEVISION:CAPS"></a>GST_DVB_SERVICE_ADVANCED_CODEC_HD_DIGITAL_TELEVISION</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-DVB-SERVICE-ADVANCED-CODEC-HD-NVOD-TIME-SHIFTED:CAPS"></a>GST_DVB_SERVICE_ADVANCED_CODEC_HD_NVOD_TIME_SHIFTED</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-DVB-SERVICE-ADVANCED-CODEC-HD-NVOD-REFERENCE:CAPS"></a>GST_DVB_SERVICE_ADVANCED_CODEC_HD_NVOD_REFERENCE</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-DVB-SERVICE-ADVANCED-CODEC-STEREO-HD-DIGITAL-TELEVISION:CAPS"></a>GST_DVB_SERVICE_ADVANCED_CODEC_STEREO_HD_DIGITAL_TELEVISION</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-DVB-SERVICE-ADVANCED-CODEC-STEREO-HD-NVOD-TIME-SHIFTED:CAPS"></a>GST_DVB_SERVICE_ADVANCED_CODEC_STEREO_HD_NVOD_TIME_SHIFTED</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-DVB-SERVICE-ADVANCED-CODEC-STEREO-HD-NVOD-REFERENCE:CAPS"></a>GST_DVB_SERVICE_ADVANCED_CODEC_STEREO_HD_NVOD_REFERENCE</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-DVB-SERVICE-RESERVED-FF:CAPS"></a>GST_DVB_SERVICE_RESERVED_FF</p></td>
+<td> </td>
+<td> </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstMpegtsDVBTeletextType"></a><h3>enum GstMpegtsDVBTeletextType</h3>
+<div class="refsect3">
+<a name="GstMpegtsDVBTeletextType.members"></a><h4>Members</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
+<col width="300px" class="enum_members_name">
+<col class="enum_members_description">
+<col width="200px" class="enum_members_annotations">
+</colgroup>
+<tbody>
+<tr>
+<td class="enum_member_name"><p><a name="INITIAL-PAGE:CAPS"></a>INITIAL_PAGE</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="SUBTITLE-PAGE:CAPS"></a>SUBTITLE_PAGE</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="ADDITIONAL-INFO-PAGE:CAPS"></a>ADDITIONAL_INFO_PAGE</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="PROGRAMME-SCHEDULE-PAGE:CAPS"></a>PROGRAMME_SCHEDULE_PAGE</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="HEARING-IMPAIRED-PAGE:CAPS"></a>HEARING_IMPAIRED_PAGE</p></td>
+<td> </td>
+<td> </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstMpegtsDVBLinkageType"></a><h3>enum GstMpegtsDVBLinkageType</h3>
+<div class="refsect3">
+<a name="GstMpegtsDVBLinkageType.members"></a><h4>Members</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
+<col width="300px" class="enum_members_name">
+<col class="enum_members_description">
+<col width="200px" class="enum_members_annotations">
+</colgroup>
+<tbody>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MPEGTS-DVB-LINKAGE-RESERVED-00:CAPS"></a>GST_MPEGTS_DVB_LINKAGE_RESERVED_00</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MPEGTS-DVB-LINKAGE-INFORMATION:CAPS"></a>GST_MPEGTS_DVB_LINKAGE_INFORMATION</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MPEGTS-DVB-LINKAGE-EPG:CAPS"></a>GST_MPEGTS_DVB_LINKAGE_EPG</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MPEGTS-DVB-LINKAGE-CA-REPLACEMENT:CAPS"></a>GST_MPEGTS_DVB_LINKAGE_CA_REPLACEMENT</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MPEGTS-DVB-LINKAGE-TS-CONTAINING-COMPLETE-SI:CAPS"></a>GST_MPEGTS_DVB_LINKAGE_TS_CONTAINING_COMPLETE_SI</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MPEGTS-DVB-LINKAGE-SERVICE-REPLACEMENT:CAPS"></a>GST_MPEGTS_DVB_LINKAGE_SERVICE_REPLACEMENT</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MPEGTS-DVB-LINKAGE-DATA-BROADCAST:CAPS"></a>GST_MPEGTS_DVB_LINKAGE_DATA_BROADCAST</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MPEGTS-DVB-LINKAGE-RCS-MAP:CAPS"></a>GST_MPEGTS_DVB_LINKAGE_RCS_MAP</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MPEGTS-DVB-LINKAGE-MOBILE-HAND-OVER:CAPS"></a>GST_MPEGTS_DVB_LINKAGE_MOBILE_HAND_OVER</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MPEGTS-DVB-LINKAGE-SYSTEM-SOFTWARE-UPDATE:CAPS"></a>GST_MPEGTS_DVB_LINKAGE_SYSTEM_SOFTWARE_UPDATE</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MPEGTS-DVB-LINKAGE-TS-CONTAINING-SSU:CAPS"></a>GST_MPEGTS_DVB_LINKAGE_TS_CONTAINING_SSU</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MPEGTS-DVB-LINKAGE-IP-MAC-NOTIFICATION:CAPS"></a>GST_MPEGTS_DVB_LINKAGE_IP_MAC_NOTIFICATION</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MPEGTS-DVB-LINKAGE-TS-CONTAINING-INT:CAPS"></a>GST_MPEGTS_DVB_LINKAGE_TS_CONTAINING_INT</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MPEGTS-DVB-LINKAGE-EVENT:CAPS"></a>GST_MPEGTS_DVB_LINKAGE_EVENT</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MPEGTS-DVB-LINKAGE-EXTENDED-EVENT:CAPS"></a>GST_MPEGTS_DVB_LINKAGE_EXTENDED_EVENT</p></td>
+<td> </td>
+<td> </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstMpegtsDVBLinkageHandOverType"></a><h3>enum GstMpegtsDVBLinkageHandOverType</h3>
+<div class="refsect3">
+<a name="GstMpegtsDVBLinkageHandOverType.members"></a><h4>Members</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
+<col width="300px" class="enum_members_name">
+<col class="enum_members_description">
+<col width="200px" class="enum_members_annotations">
+</colgroup>
+<tbody>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MPEGTS-DVB-LINKAGE-HAND-OVER-RESERVED:CAPS"></a>GST_MPEGTS_DVB_LINKAGE_HAND_OVER_RESERVED</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MPEGTS-DVB-LINKAGE-HAND-OVER-IDENTICAL:CAPS"></a>GST_MPEGTS_DVB_LINKAGE_HAND_OVER_IDENTICAL</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MPEGTS-DVB-LINKAGE-HAND-OVER-LOCAL-VARIATION:CAPS"></a>GST_MPEGTS_DVB_LINKAGE_HAND_OVER_LOCAL_VARIATION</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MPEGTS-DVB-LINKAGE-HAND-OVER-ASSOCIATED:CAPS"></a>GST_MPEGTS_DVB_LINKAGE_HAND_OVER_ASSOCIATED</p></td>
+<td> </td>
+<td> </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstMpegtsDVBLinkageMobileHandOver"></a><h3>struct GstMpegtsDVBLinkageMobileHandOver</h3>
+<pre class="programlisting">struct GstMpegtsDVBLinkageMobileHandOver {
+ GstMpegtsDVBLinkageHandOverType hand_over_type;
+ /* 0 = NIT, 1 = SDT */
+ gboolean origin_type;
+ guint16 network_id;
+ guint16 initial_service_id;
+};
+</pre>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstMpegtsDVBLinkageEvent"></a><h3>struct GstMpegtsDVBLinkageEvent</h3>
+<pre class="programlisting">struct GstMpegtsDVBLinkageEvent {
+ guint16 target_event_id;
+ gboolean target_listed;
+ gboolean event_simulcast;
+};
+</pre>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstMpegtsDVBLinkageExtendedEvent"></a><h3>struct GstMpegtsDVBLinkageExtendedEvent</h3>
+<pre class="programlisting">struct GstMpegtsDVBLinkageExtendedEvent {
+ guint16 target_event_id;
+ gboolean target_listed;
+ gboolean event_simulcast;
+ /* FIXME: */
+ guint8 link_type;
+ /* FIXME: */
+ guint8 target_id_type;
+ gboolean original_network_id_flag;
+ gboolean service_id_flag;
+ /* if (target_id_type == 3) */
+ guint16 user_defined_id;
+ /* else */
+ guint16 target_transport_stream_id;
+ guint16 target_original_network_id;
+ guint16 target_service_id;
+};
+</pre>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstMpegtsDVBLinkageDescriptor"></a><h3>struct GstMpegtsDVBLinkageDescriptor</h3>
+<pre class="programlisting">struct GstMpegtsDVBLinkageDescriptor {
+ guint16 transport_stream_id;
+ guint16 original_network_id;
+ guint16 service_id;
+ GstMpegtsDVBLinkageType linkage_type;
+ guint8 private_data_length;
+ guint8 *private_data_bytes;
+};
+</pre>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstMpegtsDataBroadcastDescriptor"></a><h3>struct GstMpegtsDataBroadcastDescriptor</h3>
+<pre class="programlisting">struct GstMpegtsDataBroadcastDescriptor {
+ guint16 data_broadcast_id;
+ guint8 component_tag;
+ guint8 length;
+ guint8 *selector_bytes;
+ gchar *language_code;
+ gchar *text;
+};
+</pre>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstMpegtsDVBScramblingModeType"></a><h3>enum GstMpegtsDVBScramblingModeType</h3>
+<div class="refsect3">
+<a name="GstMpegtsDVBScramblingModeType.members"></a><h4>Members</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
+<col width="300px" class="enum_members_name">
+<col class="enum_members_description">
+<col width="200px" class="enum_members_annotations">
+</colgroup>
+<tbody>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MPEGTS-DVB-SCRAMBLING-MODE-RESERVED:CAPS"></a>GST_MPEGTS_DVB_SCRAMBLING_MODE_RESERVED</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MPEGTS-DVB-SCRAMBLING-MODE-CSA1:CAPS"></a>GST_MPEGTS_DVB_SCRAMBLING_MODE_CSA1</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MPEGTS-DVB-SCRAMBLING-MODE-CSA2:CAPS"></a>GST_MPEGTS_DVB_SCRAMBLING_MODE_CSA2</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MPEGTS-DVB-SCRAMBLING-MODE-CSA3-STANDARD:CAPS"></a>GST_MPEGTS_DVB_SCRAMBLING_MODE_CSA3_STANDARD</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MPEGTS-DVB-SCRAMBLING-MODE-CSA3-MINIMAL-ENHANCED:CAPS"></a>GST_MPEGTS_DVB_SCRAMBLING_MODE_CSA3_MINIMAL_ENHANCED</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MPEGTS-DVB-SCRAMBLING-MODE-CSA3-FULL-ENHANCED:CAPS"></a>GST_MPEGTS_DVB_SCRAMBLING_MODE_CSA3_FULL_ENHANCED</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MPEGTS-DVB-SCRAMBLING-MODE-CISSA:CAPS"></a>GST_MPEGTS_DVB_SCRAMBLING_MODE_CISSA</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MPEGTS-DVB-SCRAMBLING-MODE-ATIS-0:CAPS"></a>GST_MPEGTS_DVB_SCRAMBLING_MODE_ATIS_0</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MPEGTS-DVB-SCRAMBLING-MODE-ATIS-F:CAPS"></a>GST_MPEGTS_DVB_SCRAMBLING_MODE_ATIS_F</p></td>
+<td> </td>
+<td> </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstMpegtsDVBParentalRatingItem"></a><h3>struct GstMpegtsDVBParentalRatingItem</h3>
+<pre class="programlisting">struct GstMpegtsDVBParentalRatingItem {
+ gchar *country_code;
+ guint8 rating;
+};
+</pre>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstMpegtsDVBServiceListItem"></a><h3>struct GstMpegtsDVBServiceListItem</h3>
+<pre class="programlisting">struct GstMpegtsDVBServiceListItem {
+ guint16 service_id;
+ GstMpegtsDVBServiceType type;
+};
+</pre>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstMpegtsDvbMultilingualNetworkNameItem"></a><h3>struct GstMpegtsDvbMultilingualNetworkNameItem</h3>
+<pre class="programlisting">struct GstMpegtsDvbMultilingualNetworkNameItem {
+ gchar *language_code;
+ gchar *network_name;
+};
+</pre>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstMpegtsDvbMultilingualBouquetNameItem"></a><h3>struct GstMpegtsDvbMultilingualBouquetNameItem</h3>
+<pre class="programlisting">struct GstMpegtsDvbMultilingualBouquetNameItem {
+ gchar *language_code;
+ gchar *bouquet_name;
+};
+</pre>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstMpegtsDvbMultilingualServiceNameItem"></a><h3>struct GstMpegtsDvbMultilingualServiceNameItem</h3>
+<pre class="programlisting">struct GstMpegtsDvbMultilingualServiceNameItem {
+ gchar *language_code;
+ gchar *provider_name;
+ gchar *service_name;
+};
+</pre>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstMpegtsDvbMultilingualComponentItem"></a><h3>struct GstMpegtsDvbMultilingualComponentItem</h3>
+<pre class="programlisting">struct GstMpegtsDvbMultilingualComponentItem {
+ gchar *language_code;
+ gchar *description;
+};
+</pre>
+</div>
+</div>
+</div>
+<div class="footer">
+<hr>Generated by GTK-Doc V1.25</div>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/libs/html/gst-plugins-bad-libs-gst-dvb-section.html b/docs/libs/html/gst-plugins-bad-libs-gst-dvb-section.html
new file mode 100644
index 0000000..aefbf64
--- /dev/null
+++ b/docs/libs/html/gst-plugins-bad-libs-gst-dvb-section.html
@@ -0,0 +1,647 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>gst-dvb-section: GStreamer Bad Plugins 1.0 Library Reference Manual</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
+<link rel="home" href="index.html" title="GStreamer Bad Plugins 1.0 Library Reference Manual">
+<link rel="up" href="mpegts.html" title="Mpeg TS helper library">
+<link rel="prev" href="gst-plugins-bad-libs-gst-atsc-section.html" title="gst-atsc-section">
+<link rel="next" href="gst-plugins-bad-libs-gst-atsc-descriptor.html" title="gst-atsc-descriptor">
+<meta name="generator" content="GTK-Doc V1.25 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="5"><tr valign="middle">
+<td width="100%" align="left" class="shortcuts">
+<a href="#" class="shortcut">Top</a><span id="nav_description"> <span class="dim">|</span>
+ <a href="#gst-plugins-bad-libs-gst-dvb-section.description" class="shortcut">Description</a></span><span id="nav_hierarchy"> <span class="dim">|</span>
+ <a href="#gst-plugins-bad-libs-gst-dvb-section.object-hierarchy" class="shortcut">Object Hierarchy</a></span>
+</td>
+<td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
+<td><a accesskey="u" href="mpegts.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
+<td><a accesskey="p" href="gst-plugins-bad-libs-gst-atsc-section.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
+<td><a accesskey="n" href="gst-plugins-bad-libs-gst-atsc-descriptor.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
+</tr></table>
+<div class="refentry">
+<a name="gst-plugins-bad-libs-gst-dvb-section"></a><div class="titlepage"></div>
+<div class="refnamediv"><table width="100%"><tr>
+<td valign="top">
+<h2><span class="refentrytitle"><a name="gst-plugins-bad-libs-gst-dvb-section.top_of_page"></a>gst-dvb-section</span></h2>
+<p>gst-dvb-section</p>
+</td>
+<td class="gallery_image" valign="top" align="right"></td>
+</tr></table></div>
+<div class="refsect1">
+<a name="gst-plugins-bad-libs-gst-dvb-section.functions"></a><h2>Functions</h2>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
+<col width="150px" class="functions_return">
+<col class="functions_name">
+</colgroup>
+<tbody>
+<tr>
+<td class="function_type">const <a class="link" href="gst-plugins-bad-libs-gst-dvb-section.html#GstMpegtsNIT" title="struct GstMpegtsNIT"><span class="returnvalue">GstMpegtsNIT</span></a> *
+</td>
+<td class="function_name">
+<a class="link" href="gst-plugins-bad-libs-gst-dvb-section.html#gst-mpegts-section-get-nit" title="gst_mpegts_section_get_nit ()">gst_mpegts_section_get_nit</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<a class="link" href="gst-plugins-bad-libs-gst-dvb-section.html#GstMpegtsNIT" title="struct GstMpegtsNIT"><span class="returnvalue">GstMpegtsNIT</span></a> *
+</td>
+<td class="function_name">
+<a class="link" href="gst-plugins-bad-libs-gst-dvb-section.html#gst-mpegts-nit-new" title="gst_mpegts_nit_new ()">gst_mpegts_nit_new</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<a class="link" href="gst-plugins-bad-libs-gst-dvb-section.html#GstMpegtsNITStream" title="struct GstMpegtsNITStream"><span class="returnvalue">GstMpegtsNITStream</span></a> *
+</td>
+<td class="function_name">
+<a class="link" href="gst-plugins-bad-libs-gst-dvb-section.html#gst-mpegts-nit-stream-new" title="gst_mpegts_nit_stream_new ()">gst_mpegts_nit_stream_new</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<a class="link" href="gst-plugins-bad-libs-gstmpegtssection.html#GstMpegtsSection"><span class="returnvalue">GstMpegtsSection</span></a> *
+</td>
+<td class="function_name">
+<a class="link" href="gst-plugins-bad-libs-gst-dvb-section.html#gst-mpegts-section-from-nit" title="gst_mpegts_section_from_nit ()">gst_mpegts_section_from_nit</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">const <a class="link" href="gst-plugins-bad-libs-gst-dvb-section.html#GstMpegtsBAT" title="struct GstMpegtsBAT"><span class="returnvalue">GstMpegtsBAT</span></a> *
+</td>
+<td class="function_name">
+<a class="link" href="gst-plugins-bad-libs-gst-dvb-section.html#gst-mpegts-section-get-bat" title="gst_mpegts_section_get_bat ()">gst_mpegts_section_get_bat</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">const <a class="link" href="gst-plugins-bad-libs-gst-dvb-section.html#GstMpegtsSDT" title="struct GstMpegtsSDT"><span class="returnvalue">GstMpegtsSDT</span></a> *
+</td>
+<td class="function_name">
+<a class="link" href="gst-plugins-bad-libs-gst-dvb-section.html#gst-mpegts-section-get-sdt" title="gst_mpegts_section_get_sdt ()">gst_mpegts_section_get_sdt</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<a class="link" href="gst-plugins-bad-libs-gst-dvb-section.html#GstMpegtsSDT" title="struct GstMpegtsSDT"><span class="returnvalue">GstMpegtsSDT</span></a> *
+</td>
+<td class="function_name">
+<a class="link" href="gst-plugins-bad-libs-gst-dvb-section.html#gst-mpegts-sdt-new" title="gst_mpegts_sdt_new ()">gst_mpegts_sdt_new</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<a class="link" href="gst-plugins-bad-libs-gst-dvb-section.html#GstMpegtsSDTService" title="struct GstMpegtsSDTService"><span class="returnvalue">GstMpegtsSDTService</span></a> *
+</td>
+<td class="function_name">
+<a class="link" href="gst-plugins-bad-libs-gst-dvb-section.html#gst-mpegts-sdt-service-new" title="gst_mpegts_sdt_service_new ()">gst_mpegts_sdt_service_new</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<a class="link" href="gst-plugins-bad-libs-gstmpegtssection.html#GstMpegtsSection"><span class="returnvalue">GstMpegtsSection</span></a> *
+</td>
+<td class="function_name">
+<a class="link" href="gst-plugins-bad-libs-gst-dvb-section.html#gst-mpegts-section-from-sdt" title="gst_mpegts_section_from_sdt ()">gst_mpegts_section_from_sdt</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">const <a class="link" href="gst-plugins-bad-libs-gst-dvb-section.html#GstMpegtsEIT" title="struct GstMpegtsEIT"><span class="returnvalue">GstMpegtsEIT</span></a> *
+</td>
+<td class="function_name">
+<a class="link" href="gst-plugins-bad-libs-gst-dvb-section.html#gst-mpegts-section-get-eit" title="gst_mpegts_section_get_eit ()">gst_mpegts_section_get_eit</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<a href="/usr/share/gtk-doc/html/gstreamer-1.0GstDateTime.html#GstDateTime-struct"><span class="returnvalue">GstDateTime</span></a> *
+</td>
+<td class="function_name">
+<a class="link" href="gst-plugins-bad-libs-gst-dvb-section.html#gst-mpegts-section-get-tdt" title="gst_mpegts_section_get_tdt ()">gst_mpegts_section_get_tdt</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">const <a class="link" href="gst-plugins-bad-libs-gst-dvb-section.html#GstMpegtsTOT" title="struct GstMpegtsTOT"><span class="returnvalue">GstMpegtsTOT</span></a> *
+</td>
+<td class="function_name">
+<a class="link" href="gst-plugins-bad-libs-gst-dvb-section.html#gst-mpegts-section-get-tot" title="gst_mpegts_section_get_tot ()">gst_mpegts_section_get_tot</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<div class="refsect1">
+<a name="gst-plugins-bad-libs-gst-dvb-section.other"></a><h2>Types and Values</h2>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
+<col width="150px" class="name">
+<col class="description">
+</colgroup>
+<tbody>
+<tr>
+<td class="datatype_keyword">enum</td>
+<td class="function_name"><a class="link" href="gst-plugins-bad-libs-gst-dvb-section.html#GstMpegtsSectionDVBTableID" title="enum GstMpegtsSectionDVBTableID">GstMpegtsSectionDVBTableID</a></td>
+</tr>
+<tr>
+<td class="datatype_keyword">struct</td>
+<td class="function_name"><a class="link" href="gst-plugins-bad-libs-gst-dvb-section.html#GstMpegtsNIT" title="struct GstMpegtsNIT">GstMpegtsNIT</a></td>
+</tr>
+<tr>
+<td class="datatype_keyword">struct</td>
+<td class="function_name"><a class="link" href="gst-plugins-bad-libs-gst-dvb-section.html#GstMpegtsNITStream" title="struct GstMpegtsNITStream">GstMpegtsNITStream</a></td>
+</tr>
+<tr>
+<td class="datatype_keyword">struct</td>
+<td class="function_name"><a class="link" href="gst-plugins-bad-libs-gst-dvb-section.html#GstMpegtsBAT" title="struct GstMpegtsBAT">GstMpegtsBAT</a></td>
+</tr>
+<tr>
+<td class="datatype_keyword">struct</td>
+<td class="function_name"><a class="link" href="gst-plugins-bad-libs-gst-dvb-section.html#GstMpegtsBATStream" title="struct GstMpegtsBATStream">GstMpegtsBATStream</a></td>
+</tr>
+<tr>
+<td class="datatype_keyword">struct</td>
+<td class="function_name"><a class="link" href="gst-plugins-bad-libs-gst-dvb-section.html#GstMpegtsSDT" title="struct GstMpegtsSDT">GstMpegtsSDT</a></td>
+</tr>
+<tr>
+<td class="datatype_keyword">struct</td>
+<td class="function_name"><a class="link" href="gst-plugins-bad-libs-gst-dvb-section.html#GstMpegtsSDTService" title="struct GstMpegtsSDTService">GstMpegtsSDTService</a></td>
+</tr>
+<tr>
+<td class="datatype_keyword">struct</td>
+<td class="function_name"><a class="link" href="gst-plugins-bad-libs-gst-dvb-section.html#GstMpegtsEIT" title="struct GstMpegtsEIT">GstMpegtsEIT</a></td>
+</tr>
+<tr>
+<td class="datatype_keyword">struct</td>
+<td class="function_name"><a class="link" href="gst-plugins-bad-libs-gst-dvb-section.html#GstMpegtsEITEvent" title="struct GstMpegtsEITEvent">GstMpegtsEITEvent</a></td>
+</tr>
+<tr>
+<td class="datatype_keyword">enum</td>
+<td class="function_name"><a class="link" href="gst-plugins-bad-libs-gst-dvb-section.html#GstMpegtsRunningStatus" title="enum GstMpegtsRunningStatus">GstMpegtsRunningStatus</a></td>
+</tr>
+<tr>
+<td class="datatype_keyword">struct</td>
+<td class="function_name"><a class="link" href="gst-plugins-bad-libs-gst-dvb-section.html#GstMpegtsTOT" title="struct GstMpegtsTOT">GstMpegtsTOT</a></td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<div class="refsect1">
+<a name="gst-plugins-bad-libs-gst-dvb-section.object-hierarchy"></a><h2>Object Hierarchy</h2>
+<pre class="screen"> <a href="https://developer.gnome.org/gobject/unstable/gobject-Enumeration-and-Flag-Types.html">GEnum</a>
+ <span class="lineart">╰──</span> GstMpegtsRunningStatus
+</pre>
+</div>
+<div class="refsect1">
+<a name="gst-plugins-bad-libs-gst-dvb-section.description"></a><h2>Description</h2>
+</div>
+<div class="refsect1">
+<a name="gst-plugins-bad-libs-gst-dvb-section.functions_details"></a><h2>Functions</h2>
+<div class="refsect2">
+<a name="gst-mpegts-section-get-nit"></a><h3>gst_mpegts_section_get_nit ()</h3>
+<pre class="programlisting">const <a class="link" href="gst-plugins-bad-libs-gst-dvb-section.html#GstMpegtsNIT" title="struct GstMpegtsNIT"><span class="returnvalue">GstMpegtsNIT</span></a> *
+gst_mpegts_section_get_nit (<em class="parameter"><code><a class="link" href="gst-plugins-bad-libs-gstmpegtssection.html#GstMpegtsSection"><span class="type">GstMpegtsSection</span></a> *section</code></em>);</pre>
+</div>
+<hr>
+<div class="refsect2">
+<a name="gst-mpegts-nit-new"></a><h3>gst_mpegts_nit_new ()</h3>
+<pre class="programlisting"><a class="link" href="gst-plugins-bad-libs-gst-dvb-section.html#GstMpegtsNIT" title="struct GstMpegtsNIT"><span class="returnvalue">GstMpegtsNIT</span></a> *
+gst_mpegts_nit_new (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
+</div>
+<hr>
+<div class="refsect2">
+<a name="gst-mpegts-nit-stream-new"></a><h3>gst_mpegts_nit_stream_new ()</h3>
+<pre class="programlisting"><a class="link" href="gst-plugins-bad-libs-gst-dvb-section.html#GstMpegtsNITStream" title="struct GstMpegtsNITStream"><span class="returnvalue">GstMpegtsNITStream</span></a> *
+gst_mpegts_nit_stream_new (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
+</div>
+<hr>
+<div class="refsect2">
+<a name="gst-mpegts-section-from-nit"></a><h3>gst_mpegts_section_from_nit ()</h3>
+<pre class="programlisting"><a class="link" href="gst-plugins-bad-libs-gstmpegtssection.html#GstMpegtsSection"><span class="returnvalue">GstMpegtsSection</span></a> *
+gst_mpegts_section_from_nit (<em class="parameter"><code><a class="link" href="gst-plugins-bad-libs-gst-dvb-section.html#GstMpegtsNIT" title="struct GstMpegtsNIT"><span class="type">GstMpegtsNIT</span></a> *nit</code></em>);</pre>
+</div>
+<hr>
+<div class="refsect2">
+<a name="gst-mpegts-section-get-bat"></a><h3>gst_mpegts_section_get_bat ()</h3>
+<pre class="programlisting">const <a class="link" href="gst-plugins-bad-libs-gst-dvb-section.html#GstMpegtsBAT" title="struct GstMpegtsBAT"><span class="returnvalue">GstMpegtsBAT</span></a> *
+gst_mpegts_section_get_bat (<em class="parameter"><code><a class="link" href="gst-plugins-bad-libs-gstmpegtssection.html#GstMpegtsSection"><span class="type">GstMpegtsSection</span></a> *section</code></em>);</pre>
+</div>
+<hr>
+<div class="refsect2">
+<a name="gst-mpegts-section-get-sdt"></a><h3>gst_mpegts_section_get_sdt ()</h3>
+<pre class="programlisting">const <a class="link" href="gst-plugins-bad-libs-gst-dvb-section.html#GstMpegtsSDT" title="struct GstMpegtsSDT"><span class="returnvalue">GstMpegtsSDT</span></a> *
+gst_mpegts_section_get_sdt (<em class="parameter"><code><a class="link" href="gst-plugins-bad-libs-gstmpegtssection.html#GstMpegtsSection"><span class="type">GstMpegtsSection</span></a> *section</code></em>);</pre>
+</div>
+<hr>
+<div class="refsect2">
+<a name="gst-mpegts-sdt-new"></a><h3>gst_mpegts_sdt_new ()</h3>
+<pre class="programlisting"><a class="link" href="gst-plugins-bad-libs-gst-dvb-section.html#GstMpegtsSDT" title="struct GstMpegtsSDT"><span class="returnvalue">GstMpegtsSDT</span></a> *
+gst_mpegts_sdt_new (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
+</div>
+<hr>
+<div class="refsect2">
+<a name="gst-mpegts-sdt-service-new"></a><h3>gst_mpegts_sdt_service_new ()</h3>
+<pre class="programlisting"><a class="link" href="gst-plugins-bad-libs-gst-dvb-section.html#GstMpegtsSDTService" title="struct GstMpegtsSDTService"><span class="returnvalue">GstMpegtsSDTService</span></a> *
+gst_mpegts_sdt_service_new (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
+</div>
+<hr>
+<div class="refsect2">
+<a name="gst-mpegts-section-from-sdt"></a><h3>gst_mpegts_section_from_sdt ()</h3>
+<pre class="programlisting"><a class="link" href="gst-plugins-bad-libs-gstmpegtssection.html#GstMpegtsSection"><span class="returnvalue">GstMpegtsSection</span></a> *
+gst_mpegts_section_from_sdt (<em class="parameter"><code><a class="link" href="gst-plugins-bad-libs-gst-dvb-section.html#GstMpegtsSDT" title="struct GstMpegtsSDT"><span class="type">GstMpegtsSDT</span></a> *sdt</code></em>);</pre>
+</div>
+<hr>
+<div class="refsect2">
+<a name="gst-mpegts-section-get-eit"></a><h3>gst_mpegts_section_get_eit ()</h3>
+<pre class="programlisting">const <a class="link" href="gst-plugins-bad-libs-gst-dvb-section.html#GstMpegtsEIT" title="struct GstMpegtsEIT"><span class="returnvalue">GstMpegtsEIT</span></a> *
+gst_mpegts_section_get_eit (<em class="parameter"><code><a class="link" href="gst-plugins-bad-libs-gstmpegtssection.html#GstMpegtsSection"><span class="type">GstMpegtsSection</span></a> *section</code></em>);</pre>
+</div>
+<hr>
+<div class="refsect2">
+<a name="gst-mpegts-section-get-tdt"></a><h3>gst_mpegts_section_get_tdt ()</h3>
+<pre class="programlisting"><a href="/usr/share/gtk-doc/html/gstreamer-1.0GstDateTime.html#GstDateTime-struct"><span class="returnvalue">GstDateTime</span></a> *
+gst_mpegts_section_get_tdt (<em class="parameter"><code><a class="link" href="gst-plugins-bad-libs-gstmpegtssection.html#GstMpegtsSection"><span class="type">GstMpegtsSection</span></a> *section</code></em>);</pre>
+</div>
+<hr>
+<div class="refsect2">
+<a name="gst-mpegts-section-get-tot"></a><h3>gst_mpegts_section_get_tot ()</h3>
+<pre class="programlisting">const <a class="link" href="gst-plugins-bad-libs-gst-dvb-section.html#GstMpegtsTOT" title="struct GstMpegtsTOT"><span class="returnvalue">GstMpegtsTOT</span></a> *
+gst_mpegts_section_get_tot (<em class="parameter"><code><a class="link" href="gst-plugins-bad-libs-gstmpegtssection.html#GstMpegtsSection"><span class="type">GstMpegtsSection</span></a> *section</code></em>);</pre>
+</div>
+</div>
+<div class="refsect1">
+<a name="gst-plugins-bad-libs-gst-dvb-section.other_details"></a><h2>Types and Values</h2>
+<div class="refsect2">
+<a name="GstMpegtsSectionDVBTableID"></a><h3>enum GstMpegtsSectionDVBTableID</h3>
+<div class="refsect3">
+<a name="GstMpegtsSectionDVBTableID.members"></a><h4>Members</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
+<col width="300px" class="enum_members_name">
+<col class="enum_members_description">
+<col width="200px" class="enum_members_annotations">
+</colgroup>
+<tbody>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MTS-TABLE-ID-NETWORK-INFORMATION-ACTUAL-NETWORK:CAPS"></a>GST_MTS_TABLE_ID_NETWORK_INFORMATION_ACTUAL_NETWORK</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MTS-TABLE-ID-NETWORK-INFORMATION-OTHER-NETWORK:CAPS"></a>GST_MTS_TABLE_ID_NETWORK_INFORMATION_OTHER_NETWORK</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MTS-TABLE-ID-SERVICE-DESCRIPTION-ACTUAL-TS:CAPS"></a>GST_MTS_TABLE_ID_SERVICE_DESCRIPTION_ACTUAL_TS</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MTS-TABLE-ID-SERVICE-DESCRIPTION-OTHER-TS:CAPS"></a>GST_MTS_TABLE_ID_SERVICE_DESCRIPTION_OTHER_TS</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MTS-TABLE-ID-BOUQUET-ASSOCIATION:CAPS"></a>GST_MTS_TABLE_ID_BOUQUET_ASSOCIATION</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MTS-TABLE-ID-EVENT-INFORMATION-ACTUAL-TS-PRESENT:CAPS"></a>GST_MTS_TABLE_ID_EVENT_INFORMATION_ACTUAL_TS_PRESENT</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MTS-TABLE-ID-EVENT-INFORMATION-OTHER-TS-PRESENT:CAPS"></a>GST_MTS_TABLE_ID_EVENT_INFORMATION_OTHER_TS_PRESENT</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MTS-TABLE-ID-EVENT-INFORMATION-ACTUAL-TS-SCHEDULE-1:CAPS"></a>GST_MTS_TABLE_ID_EVENT_INFORMATION_ACTUAL_TS_SCHEDULE_1</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MTS-TABLE-ID-EVENT-INFORMATION-ACTUAL-TS-SCHEDULE-N:CAPS"></a>GST_MTS_TABLE_ID_EVENT_INFORMATION_ACTUAL_TS_SCHEDULE_N</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MTS-TABLE-ID-EVENT-INFORMATION-OTHER-TS-SCHEDULE-1:CAPS"></a>GST_MTS_TABLE_ID_EVENT_INFORMATION_OTHER_TS_SCHEDULE_1</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MTS-TABLE-ID-EVENT-INFORMATION-OTHER-TS-SCHEDULE-N:CAPS"></a>GST_MTS_TABLE_ID_EVENT_INFORMATION_OTHER_TS_SCHEDULE_N</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MTS-TABLE-ID-TIME-DATE:CAPS"></a>GST_MTS_TABLE_ID_TIME_DATE</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MTS-TABLE-ID-RUNNING-STATUS:CAPS"></a>GST_MTS_TABLE_ID_RUNNING_STATUS</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MTS-TABLE-ID-STUFFING:CAPS"></a>GST_MTS_TABLE_ID_STUFFING</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MTS-TABLE-ID-TIME-OFFSET:CAPS"></a>GST_MTS_TABLE_ID_TIME_OFFSET</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MTS-TABLE-ID-APPLICATION-INFORMATION-TABLE:CAPS"></a>GST_MTS_TABLE_ID_APPLICATION_INFORMATION_TABLE</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MTS-TABLE-ID-CONTAINER:CAPS"></a>GST_MTS_TABLE_ID_CONTAINER</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MTS-TABLE-ID-RELATED-CONTENT:CAPS"></a>GST_MTS_TABLE_ID_RELATED_CONTENT</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MTS-TABLE-ID-CONTENT-IDENTIFIER:CAPS"></a>GST_MTS_TABLE_ID_CONTENT_IDENTIFIER</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MTS-TABLE-ID-MPE-FEC:CAPS"></a>GST_MTS_TABLE_ID_MPE_FEC</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MTS-TABLE-ID-RESOLUTION-NOTIFICATION:CAPS"></a>GST_MTS_TABLE_ID_RESOLUTION_NOTIFICATION</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MTS-TABLE-ID-MPE-IFEC:CAPS"></a>GST_MTS_TABLE_ID_MPE_IFEC</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MTS-TABLE-ID-DISCONTINUITY-INFORMATION:CAPS"></a>GST_MTS_TABLE_ID_DISCONTINUITY_INFORMATION</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MTS-TABLE-ID-SELECTION-INFORMATION:CAPS"></a>GST_MTS_TABLE_ID_SELECTION_INFORMATION</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MTS-TABLE-ID-CA-MESSAGE-ECM-0:CAPS"></a>GST_MTS_TABLE_ID_CA_MESSAGE_ECM_0</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MTS-TABLE-ID-CA-MESSAGE-ECM-1:CAPS"></a>GST_MTS_TABLE_ID_CA_MESSAGE_ECM_1</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MTS-TABLE-ID-CA-MESSAGE-SYSTEM-PRIVATE-1:CAPS"></a>GST_MTS_TABLE_ID_CA_MESSAGE_SYSTEM_PRIVATE_1</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MTS-TABLE-ID-CA-MESSAGE-SYSTEM-PRIVATE-N:CAPS"></a>GST_MTS_TABLE_ID_CA_MESSAGE_SYSTEM_PRIVATE_N</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MTS-TABLE-ID-SCT:CAPS"></a>GST_MTS_TABLE_ID_SCT</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MTS-TABLE-ID-FCT:CAPS"></a>GST_MTS_TABLE_ID_FCT</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MTS-TABLE-ID-TCT:CAPS"></a>GST_MTS_TABLE_ID_TCT</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MTS-TABLE-ID-SPT:CAPS"></a>GST_MTS_TABLE_ID_SPT</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MTS-TABLE-ID-CMT:CAPS"></a>GST_MTS_TABLE_ID_CMT</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MTS-TABLE-ID-TBTP:CAPS"></a>GST_MTS_TABLE_ID_TBTP</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MTS-TABLE-ID-PCR-PACKET-PAYLOAD:CAPS"></a>GST_MTS_TABLE_ID_PCR_PACKET_PAYLOAD</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MTS-TABLE-ID-TRANSMISSION-MODE-SUPPORT-PAYLOAD:CAPS"></a>GST_MTS_TABLE_ID_TRANSMISSION_MODE_SUPPORT_PAYLOAD</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MTS-TABLE-ID-TIM:CAPS"></a>GST_MTS_TABLE_ID_TIM</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MTS-TABLE-ID-LL-FEC-PARITY-DATA-TABLE:CAPS"></a>GST_MTS_TABLE_ID_LL_FEC_PARITY_DATA_TABLE</p></td>
+<td> </td>
+<td> </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstMpegtsNIT"></a><h3>struct GstMpegtsNIT</h3>
+<pre class="programlisting">struct GstMpegtsNIT {
+ gboolean actual_network;
+ guint16 network_id;
+
+ GPtrArray *descriptors;
+
+ GPtrArray *streams;
+};
+</pre>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstMpegtsNITStream"></a><h3>struct GstMpegtsNITStream</h3>
+<pre class="programlisting">struct GstMpegtsNITStream {
+ guint16 transport_stream_id;
+ guint16 original_network_id;
+
+ GPtrArray *descriptors;
+};
+</pre>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstMpegtsBAT"></a><h3>struct GstMpegtsBAT</h3>
+<pre class="programlisting">struct GstMpegtsBAT {
+ GPtrArray *descriptors;
+
+ GPtrArray *streams;
+};
+</pre>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstMpegtsBATStream"></a><h3>struct GstMpegtsBATStream</h3>
+<pre class="programlisting">struct GstMpegtsBATStream {
+ guint16 transport_stream_id;
+ guint16 original_network_id;
+
+ GPtrArray *descriptors;
+};
+</pre>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstMpegtsSDT"></a><h3>struct GstMpegtsSDT</h3>
+<pre class="programlisting">struct GstMpegtsSDT {
+ guint16 original_network_id;
+ gboolean actual_ts;
+ guint16 transport_stream_id;
+
+ GPtrArray *services;
+};
+</pre>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstMpegtsSDTService"></a><h3>struct GstMpegtsSDTService</h3>
+<pre class="programlisting">struct GstMpegtsSDTService {
+ guint16 service_id;
+
+ gboolean EIT_schedule_flag;
+ gboolean EIT_present_following_flag;
+ GstMpegtsRunningStatus running_status;
+ gboolean free_CA_mode;
+
+ GPtrArray *descriptors;
+};
+</pre>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstMpegtsEIT"></a><h3>struct GstMpegtsEIT</h3>
+<pre class="programlisting">struct GstMpegtsEIT {
+ guint16 transport_stream_id;
+ guint16 original_network_id;
+ guint8 segment_last_section_number;
+ guint8 last_table_id;
+
+ gboolean actual_stream;
+ gboolean present_following;
+
+ GPtrArray *events;
+};
+</pre>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstMpegtsEITEvent"></a><h3>struct GstMpegtsEITEvent</h3>
+<pre class="programlisting">struct GstMpegtsEITEvent {
+ guint16 event_id;
+
+ GstDateTime *start_time;
+ guint32 duration;
+
+ GstMpegtsRunningStatus running_status;
+ gboolean free_CA_mode;
+
+ GPtrArray *descriptors;
+};
+</pre>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstMpegtsRunningStatus"></a><h3>enum GstMpegtsRunningStatus</h3>
+<div class="refsect3">
+<a name="GstMpegtsRunningStatus.members"></a><h4>Members</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
+<col width="300px" class="enum_members_name">
+<col class="enum_members_description">
+<col width="200px" class="enum_members_annotations">
+</colgroup>
+<tbody>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MPEGTS-RUNNING-STATUS-UNDEFINED:CAPS"></a>GST_MPEGTS_RUNNING_STATUS_UNDEFINED</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MPEGTS-RUNNING-STATUS-NOT-RUNNING:CAPS"></a>GST_MPEGTS_RUNNING_STATUS_NOT_RUNNING</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MPEGTS-RUNNING-STATUS-STARTS-IN-FEW-SECONDS:CAPS"></a>GST_MPEGTS_RUNNING_STATUS_STARTS_IN_FEW_SECONDS</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MPEGTS-RUNNING-STATUS-PAUSING:CAPS"></a>GST_MPEGTS_RUNNING_STATUS_PAUSING</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MPEGTS-RUNNING-STATUS-RUNNING:CAPS"></a>GST_MPEGTS_RUNNING_STATUS_RUNNING</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MPEGTS-RUNNING-STATUS-OFF-AIR:CAPS"></a>GST_MPEGTS_RUNNING_STATUS_OFF_AIR</p></td>
+<td> </td>
+<td> </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstMpegtsTOT"></a><h3>struct GstMpegtsTOT</h3>
+<pre class="programlisting">struct GstMpegtsTOT {
+ GstDateTime *utc_time;
+
+ GPtrArray *descriptors;
+};
+</pre>
+</div>
+</div>
+</div>
+<div class="footer">
+<hr>Generated by GTK-Doc V1.25</div>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/libs/html/gst-plugins-bad-libs-ISDB-variants-of-MPEG-TS-descriptors.html b/docs/libs/html/gst-plugins-bad-libs-gst-isdb-descriptor.html
similarity index 80%
rename from docs/libs/html/gst-plugins-bad-libs-ISDB-variants-of-MPEG-TS-descriptors.html
rename to docs/libs/html/gst-plugins-bad-libs-gst-isdb-descriptor.html
index 3e9c157..e2d8660 100644
--- a/docs/libs/html/gst-plugins-bad-libs-ISDB-variants-of-MPEG-TS-descriptors.html
+++ b/docs/libs/html/gst-plugins-bad-libs-gst-isdb-descriptor.html
@@ -2,11 +2,11 @@
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>ISDB variants of MPEG-TS descriptors: GStreamer Bad Plugins 1.0 Library Reference Manual</title>
+<title>gst-isdb-descriptor: GStreamer Bad Plugins 1.0 Library Reference Manual</title>
<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
<link rel="home" href="index.html" title="GStreamer Bad Plugins 1.0 Library Reference Manual">
<link rel="up" href="mpegts.html" title="Mpeg TS helper library">
-<link rel="prev" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html" title="DVB variants of MPEG-TS descriptors">
+<link rel="prev" href="gst-plugins-bad-libs-gst-dvb-descriptor.html" title="gst-dvb-descriptor">
<link rel="next" href="tools.html" title="Useful elements">
<meta name="generator" content="GTK-Doc V1.25 (XML mode)">
<link rel="stylesheet" href="style.css" type="text/css">
@@ -15,24 +15,24 @@
<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="5"><tr valign="middle">
<td width="100%" align="left" class="shortcuts">
<a href="#" class="shortcut">Top</a><span id="nav_description"> <span class="dim">|</span>
- <a href="#gst-plugins-bad-libs-ISDB-variants-of-MPEG-TS-descriptors.description" class="shortcut">Description</a></span>
+ <a href="#gst-plugins-bad-libs-gst-isdb-descriptor.description" class="shortcut">Description</a></span>
</td>
<td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
<td><a accesskey="u" href="mpegts.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
-<td><a accesskey="p" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
+<td><a accesskey="p" href="gst-plugins-bad-libs-gst-dvb-descriptor.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
<td><a accesskey="n" href="tools.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
</tr></table>
<div class="refentry">
-<a name="gst-plugins-bad-libs-ISDB-variants-of-MPEG-TS-descriptors"></a><div class="titlepage"></div>
+<a name="gst-plugins-bad-libs-gst-isdb-descriptor"></a><div class="titlepage"></div>
<div class="refnamediv"><table width="100%"><tr>
<td valign="top">
-<h2><span class="refentrytitle"><a name="gst-plugins-bad-libs-ISDB-variants-of-MPEG-TS-descriptors.top_of_page"></a>ISDB variants of MPEG-TS descriptors</span></h2>
-<p>ISDB variants of MPEG-TS descriptors — Descriptors for the various ISDB specifications</p>
+<h2><span class="refentrytitle"><a name="gst-plugins-bad-libs-gst-isdb-descriptor.top_of_page"></a>gst-isdb-descriptor</span></h2>
+<p>gst-isdb-descriptor</p>
</td>
<td class="gallery_image" valign="top" align="right"></td>
</tr></table></div>
<div class="refsect1">
-<a name="gst-plugins-bad-libs-ISDB-variants-of-MPEG-TS-descriptors.other"></a><h2>Types and Values</h2>
+<a name="gst-plugins-bad-libs-gst-isdb-descriptor.other"></a><h2>Types and Values</h2>
<div class="informaltable"><table class="informaltable" width="100%" border="0">
<colgroup>
<col width="150px" class="name">
@@ -40,29 +40,21 @@
</colgroup>
<tbody><tr>
<td class="datatype_keyword">enum</td>
-<td class="function_name"><a class="link" href="gst-plugins-bad-libs-ISDB-variants-of-MPEG-TS-descriptors.html#GstMpegtsISDBDescriptorType" title="enum GstMpegtsISDBDescriptorType">GstMpegtsISDBDescriptorType</a></td>
+<td class="function_name"><a class="link" href="gst-plugins-bad-libs-gst-isdb-descriptor.html#GstMpegtsISDBDescriptorType" title="enum GstMpegtsISDBDescriptorType">GstMpegtsISDBDescriptorType</a></td>
</tr></tbody>
</table></div>
</div>
<div class="refsect1">
-<a name="gst-plugins-bad-libs-ISDB-variants-of-MPEG-TS-descriptors.includes"></a><h2>Includes</h2>
-<pre class="synopsis">#include <gst/mpegts/mpegts.h>
-</pre>
+<a name="gst-plugins-bad-libs-gst-isdb-descriptor.description"></a><h2>Description</h2>
</div>
<div class="refsect1">
-<a name="gst-plugins-bad-libs-ISDB-variants-of-MPEG-TS-descriptors.description"></a><h2>Description</h2>
-</div>
-<div class="refsect1">
-<a name="gst-plugins-bad-libs-ISDB-variants-of-MPEG-TS-descriptors.functions_details"></a><h2>Functions</h2>
+<a name="gst-plugins-bad-libs-gst-isdb-descriptor.functions_details"></a><h2>Functions</h2>
<p></p>
</div>
<div class="refsect1">
-<a name="gst-plugins-bad-libs-ISDB-variants-of-MPEG-TS-descriptors.other_details"></a><h2>Types and Values</h2>
+<a name="gst-plugins-bad-libs-gst-isdb-descriptor.other_details"></a><h2>Types and Values</h2>
<div class="refsect2">
<a name="GstMpegtsISDBDescriptorType"></a><h3>enum GstMpegtsISDBDescriptorType</h3>
-<p>These values correspond to the registered descriptor type from
-the various ISDB specifications.</p>
-<p>Consult the relevant specifications for more details.</p>
<div class="refsect3">
<a name="GstMpegtsISDBDescriptorType.members"></a><h4>Members</h4>
<div class="informaltable"><table class="informaltable" width="100%" border="0">
diff --git a/docs/libs/html/gst-plugins-bad-libs-gstglbasememory.html b/docs/libs/html/gst-plugins-bad-libs-gstglbasememory.html
index 1f333d0..d27bd36 100644
--- a/docs/libs/html/gst-plugins-bad-libs-gstglbasememory.html
+++ b/docs/libs/html/gst-plugins-bad-libs-gstglbasememory.html
@@ -28,7 +28,7 @@
<div class="refnamediv"><table width="100%"><tr>
<td valign="top">
<h2><span class="refentrytitle"><a name="gst-plugins-bad-libs-gstglbasememory.top_of_page"></a>GstGLBaseMemory</span></h2>
-<p>GstGLBaseMemory — memory subclass for GL buffers</p>
+<p>GstGLBaseMemory</p>
</td>
<td class="gallery_image" valign="top" align="right"></td>
</tr></table></div>
@@ -271,9 +271,6 @@
</div>
<div class="refsect1">
<a name="gst-plugins-bad-libs-gstglbasememory.description"></a><h2>Description</h2>
-<p>GstGLBaseMemory is a <a href="/usr/share/gtk-doc/html/gstreamer-1.0GstMemory.html#GstMemory-struct"><span class="type">GstMemory</span></a> subclass providing the basis of support
-for the mapping of GL buffers.</p>
-<p>Data is uploaded or downloaded from the GPU as is necessary.</p>
</div>
<div class="refsect1">
<a name="gst-plugins-bad-libs-gstglbasememory.functions_details"></a><h2>Functions</h2>
@@ -282,55 +279,12 @@
<pre class="programlisting"><span class="returnvalue">void</span>
<span class="c_punctuation">(</span>*GstGLAllocationParamsCopyFunc<span class="c_punctuation">)</span> (<em class="parameter"><code><a class="link" href="gst-plugins-bad-libs-gstglbasememory.html#GstGLAllocationParams" title="struct GstGLAllocationParams"><span class="type">GstGLAllocationParams</span></a> *src</code></em>,
<em class="parameter"><code><a class="link" href="gst-plugins-bad-libs-gstglbasememory.html#GstGLAllocationParams" title="struct GstGLAllocationParams"><span class="type">GstGLAllocationParams</span></a> *dest</code></em>);</pre>
-<p>Copies the parameters from <em class="parameter"><code>src</code></em>
- into <em class="parameter"><code>dest</code></em>
-. The subclass must compose copy
-functions from the superclass.</p>
-<div class="refsect3">
-<a name="GstGLAllocationParamsCopyFunc.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="parameter_name"><p>src</p></td>
-<td class="parameter_description"><p>the source <a class="link" href="gst-plugins-bad-libs-gstglbasememory.html#GstGLAllocationParams" title="struct GstGLAllocationParams"><span class="type">GstGLAllocationParams</span></a> to copy from</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>dest</p></td>
-<td class="parameter_description"><p>the source <a class="link" href="gst-plugins-bad-libs-gstglbasememory.html#GstGLAllocationParams" title="struct GstGLAllocationParams"><span class="type">GstGLAllocationParams</span></a> to copy</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-</tbody>
-</table></div>
-</div>
</div>
<hr>
<div class="refsect2">
<a name="GstGLAllocationParamsFreeFunc"></a><h3>GstGLAllocationParamsFreeFunc ()</h3>
<pre class="programlisting"><span class="returnvalue">void</span>
<span class="c_punctuation">(</span>*GstGLAllocationParamsFreeFunc<span class="c_punctuation">)</span> (<em class="parameter"><code><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a> params</code></em>);</pre>
-<p>Free any dynamically allocated data. The subclass must call the superclass'
-free.</p>
-<div class="refsect3">
-<a name="GstGLAllocationParamsFreeFunc.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody><tr>
-<td class="parameter_name"><p>params</p></td>
-<td class="parameter_description"><p>a <a class="link" href="gst-plugins-bad-libs-gstglbasememory.html#GstGLAllocationParams" title="struct GstGLAllocationParams"><span class="type">GstGLAllocationParams</span></a></p></td>
-<td class="parameter_annotations"> </td>
-</tr></tbody>
-</table></div>
-</div>
</div>
<hr>
<div class="refsect2">
@@ -345,167 +299,27 @@
<em class="parameter"><code><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gsize"><span class="type">gsize</span></a> alloc_size</code></em>,
<em class="parameter"><code><a href="/usr/share/gtk-doc/html/gstreamer-1.0GstAllocator.html#GstAllocationParams-struct"><span class="type">GstAllocationParams</span></a> *alloc_params</code></em>,
<em class="parameter"><code><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a> wrapped_data</code></em>,
- <em class="parameter"><code><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint"><span class="type">guint</span></a> gl_handle</code></em>,
+ <em class="parameter"><code><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a> gl_handle</code></em>,
<em class="parameter"><code><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a> user_data</code></em>,
<em class="parameter"><code><a href="/usr/share/gtk-doc/html/glibglib-Datasets.html#GDestroyNotify"><span class="type">GDestroyNotify</span></a> notify</code></em>);</pre>
-<p><em class="parameter"><code>notify</code></em>
- will be called once for each allocated memory using these <em class="parameter"><code>params</code></em>
-
-when freeing the memory.</p>
-<div class="refsect3">
-<a name="gst-gl-allocation-params-init.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="parameter_name"><p>params</p></td>
-<td class="parameter_description"><p>the <a class="link" href="gst-plugins-bad-libs-gstglbasememory.html#GstGLAllocationParams" title="struct GstGLAllocationParams"><span class="type">GstGLAllocationParams</span></a> to initialize</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>struct_size</p></td>
-<td class="parameter_description"><p>the struct size of the implementation</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>alloc_flags</p></td>
-<td class="parameter_description"><p>some alloc flags</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>copy</p></td>
-<td class="parameter_description"><p>a copy function</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>free</p></td>
-<td class="parameter_description"><p>a free function</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>context</p></td>
-<td class="parameter_description"><p> a <a class="link" href="GstGLContext.html" title="GstGLContext"><span class="type">GstGLContext</span></a>. </p></td>
-<td class="parameter_annotations"><span class="annotation">[<acronym title="Don't free data after the code is done."><span class="acronym">transfer none</span></acronym>]</span></td>
-</tr>
-<tr>
-<td class="parameter_name"><p>alloc_size</p></td>
-<td class="parameter_description"><p>the number of bytes to allocate.</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>alloc_params</p></td>
-<td class="parameter_description"><p> a <a href="/usr/share/gtk-doc/html/gstreamer-1.0GstAllocator.html#GstAllocationParams-struct"><span class="type">GstAllocationParams</span></a> to apply. </p></td>
-<td class="parameter_annotations"><span class="annotation">[<acronym title="Don't free data after the code is done."><span class="acronym">transfer none</span></acronym>][<acronym title="NULL is OK, both for passing and for returning."><span class="acronym">allow-none</span></acronym>]</span></td>
-</tr>
-<tr>
-<td class="parameter_name"><p>wrapped_data</p></td>
-<td class="parameter_description"><p> a sysmem data pointer to initialize the allocation with. </p></td>
-<td class="parameter_annotations"><span class="annotation">[<acronym title="Don't free data after the code is done."><span class="acronym">transfer none</span></acronym>][<acronym title="NULL is OK, both for passing and for returning."><span class="acronym">allow-none</span></acronym>]</span></td>
-</tr>
-<tr>
-<td class="parameter_name"><p>gl_handle</p></td>
-<td class="parameter_description"><p> a GL handle to initialize the allocation with. </p></td>
-<td class="parameter_annotations"><span class="annotation">[<acronym title="Don't free data after the code is done."><span class="acronym">transfer none</span></acronym>]</span></td>
-</tr>
-<tr>
-<td class="parameter_name"><p>user_data</p></td>
-<td class="parameter_description"><p> user data to call <em class="parameter"><code>notify</code></em>
-with. </p></td>
-<td class="parameter_annotations"><span class="annotation">[<acronym title="Don't free data after the code is done."><span class="acronym">transfer none</span></acronym>][<acronym title="NULL is OK, both for passing and for returning."><span class="acronym">allow-none</span></acronym>]</span></td>
-</tr>
-<tr>
-<td class="parameter_name"><p>notify</p></td>
-<td class="parameter_description"><p> a <a href="/usr/share/gtk-doc/html/glibglib-Datasets.html#GDestroyNotify"><span class="type">GDestroyNotify</span></a>. </p></td>
-<td class="parameter_annotations"><span class="annotation">[<acronym title="NULL is OK, both for passing and for returning."><span class="acronym">allow-none</span></acronym>]</span></td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<div class="refsect3">
-<a name="gst-gl-allocation-params-init.returns"></a><h4>Returns</h4>
-<p> whether the paramaters could be initialized</p>
-</div>
-<p class="since">Since: 1.8</p>
</div>
<hr>
<div class="refsect2">
<a name="gst-gl-allocation-params-copy"></a><h3>gst_gl_allocation_params_copy ()</h3>
<pre class="programlisting"><a class="link" href="gst-plugins-bad-libs-gstglbasememory.html#GstGLAllocationParams" title="struct GstGLAllocationParams"><span class="returnvalue">GstGLAllocationParams</span></a> *
gst_gl_allocation_params_copy (<em class="parameter"><code><a class="link" href="gst-plugins-bad-libs-gstglbasememory.html#GstGLAllocationParams" title="struct GstGLAllocationParams"><span class="type">GstGLAllocationParams</span></a> *src</code></em>);</pre>
-<div class="refsect3">
-<a name="gst-gl-allocation-params-copy.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody><tr>
-<td class="parameter_name"><p>src</p></td>
-<td class="parameter_description"><p>the <a class="link" href="gst-plugins-bad-libs-gstglbasememory.html#GstGLAllocationParams" title="struct GstGLAllocationParams"><span class="type">GstGLAllocationParams</span></a> to initialize</p></td>
-<td class="parameter_annotations"> </td>
-</tr></tbody>
-</table></div>
-</div>
-<div class="refsect3">
-<a name="gst-gl-allocation-params-copy.returns"></a><h4>Returns</h4>
-<p> a copy of the <a class="link" href="gst-plugins-bad-libs-gstglbasememory.html#GstGLAllocationParams" title="struct GstGLAllocationParams"><span class="type">GstGLAllocationParams</span></a> specified by <em class="parameter"><code>src</code></em>
-or <a href="/usr/share/gtk-doc/html/glibglib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a> on
-failure</p>
-</div>
-<p class="since">Since: 1.8</p>
</div>
<hr>
<div class="refsect2">
<a name="gst-gl-allocation-params-free"></a><h3>gst_gl_allocation_params_free ()</h3>
<pre class="programlisting"><span class="returnvalue">void</span>
gst_gl_allocation_params_free (<em class="parameter"><code><a class="link" href="gst-plugins-bad-libs-gstglbasememory.html#GstGLAllocationParams" title="struct GstGLAllocationParams"><span class="type">GstGLAllocationParams</span></a> *params</code></em>);</pre>
-<p>Frees the <a class="link" href="gst-plugins-bad-libs-gstglbasememory.html#GstGLAllocationParams" title="struct GstGLAllocationParams"><span class="type">GstGLAllocationParams</span></a> and all associated data.</p>
-<div class="refsect3">
-<a name="gst-gl-allocation-params-free.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody><tr>
-<td class="parameter_name"><p>params</p></td>
-<td class="parameter_description"><p>the <a class="link" href="gst-plugins-bad-libs-gstglbasememory.html#GstGLAllocationParams" title="struct GstGLAllocationParams"><span class="type">GstGLAllocationParams</span></a> to initialize</p></td>
-<td class="parameter_annotations"> </td>
-</tr></tbody>
-</table></div>
-</div>
-<p class="since">Since: 1.8</p>
</div>
<hr>
<div class="refsect2">
<a name="gst-gl-allocation-params-free-data"></a><h3>gst_gl_allocation_params_free_data ()</h3>
<pre class="programlisting"><span class="returnvalue">void</span>
gst_gl_allocation_params_free_data (<em class="parameter"><code><a class="link" href="gst-plugins-bad-libs-gstglbasememory.html#GstGLAllocationParams" title="struct GstGLAllocationParams"><span class="type">GstGLAllocationParams</span></a> *params</code></em>);</pre>
-<p>Frees the dynamically allocated data in <em class="parameter"><code>params</code></em>
-. Direct subclasses
-should call this function in their own overriden free function.</p>
-<div class="refsect3">
-<a name="gst-gl-allocation-params-free-data.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody><tr>
-<td class="parameter_name"><p>params</p></td>
-<td class="parameter_description"><p>the source <a class="link" href="gst-plugins-bad-libs-gstglbasememory.html#GstGLAllocationParams" title="struct GstGLAllocationParams"><span class="type">GstGLAllocationParams</span></a></p></td>
-<td class="parameter_annotations"> </td>
-</tr></tbody>
-</table></div>
-</div>
-<p class="since">Since: 1.8</p>
</div>
<hr>
<div class="refsect2">
@@ -513,42 +327,12 @@
<pre class="programlisting"><span class="returnvalue">void</span>
gst_gl_allocation_params_copy_data (<em class="parameter"><code><a class="link" href="gst-plugins-bad-libs-gstglbasememory.html#GstGLAllocationParams" title="struct GstGLAllocationParams"><span class="type">GstGLAllocationParams</span></a> *src</code></em>,
<em class="parameter"><code><a class="link" href="gst-plugins-bad-libs-gstglbasememory.html#GstGLAllocationParams" title="struct GstGLAllocationParams"><span class="type">GstGLAllocationParams</span></a> *dest</code></em>);</pre>
-<p>Copies the dynamically allocated data from <em class="parameter"><code>src</code></em>
- to <em class="parameter"><code>dest</code></em>
-. Direct subclasses
-should call this function in their own overriden copy function.</p>
-<div class="refsect3">
-<a name="gst-gl-allocation-params-copy-data.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="parameter_name"><p>src</p></td>
-<td class="parameter_description"><p>the source <a class="link" href="gst-plugins-bad-libs-gstglbasememory.html#GstGLAllocationParams" title="struct GstGLAllocationParams"><span class="type">GstGLAllocationParams</span></a></p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>dest</p></td>
-<td class="parameter_description"><p>the destination <a class="link" href="gst-plugins-bad-libs-gstglbasememory.html#GstGLAllocationParams" title="struct GstGLAllocationParams"><span class="type">GstGLAllocationParams</span></a></p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<p class="since">Since: 1.8</p>
</div>
<hr>
<div class="refsect2">
<a name="gst-gl-base-memory-init-once"></a><h3>gst_gl_base_memory_init_once ()</h3>
<pre class="programlisting"><span class="returnvalue">void</span>
gst_gl_base_memory_init_once (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
-<p>Initializes the GL Base Memory allocator. It is safe to call this function
-multiple times. This must be called before any other GstGLBaseMemory operation.</p>
-<p class="since">Since: 1.8</p>
</div>
<hr>
<div class="refsect2">
@@ -562,90 +346,12 @@
<em class="parameter"><code><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gsize"><span class="type">gsize</span></a> size</code></em>,
<em class="parameter"><code><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a> user_data</code></em>,
<em class="parameter"><code><a href="/usr/share/gtk-doc/html/glibglib-Datasets.html#GDestroyNotify"><span class="type">GDestroyNotify</span></a> notify</code></em>);</pre>
-<p>Initializes <em class="parameter"><code>mem</code></em>
- with the required parameters</p>
-<div class="refsect3">
-<a name="gst-gl-base-memory-init.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="parameter_name"><p>mem</p></td>
-<td class="parameter_description"><p>the <a class="link" href="gst-plugins-bad-libs-gstglbasememory.html#GstGLBaseMemory" title="GstGLBaseMemory"><span class="type">GstGLBaseMemory</span></a> to initialize</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>allocator</p></td>
-<td class="parameter_description"><p>the <a href="/usr/share/gtk-doc/html/gstreamer-1.0GstAllocator.html#GstAllocator-struct"><span class="type">GstAllocator</span></a> to initialize with</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>parent</p></td>
-<td class="parameter_description"><p> the parent <a href="/usr/share/gtk-doc/html/gstreamer-1.0GstMemory.html#GstMemory-struct"><span class="type">GstMemory</span></a> to initialize with. </p></td>
-<td class="parameter_annotations"><span class="annotation">[<acronym title="NULL is OK, both for passing and for returning."><span class="acronym">allow-none</span></acronym>]</span></td>
-</tr>
-<tr>
-<td class="parameter_name"><p>context</p></td>
-<td class="parameter_description"><p>the <a class="link" href="GstGLContext.html" title="GstGLContext"><span class="type">GstGLContext</span></a> to initialize with</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>params</p></td>
-<td class="parameter_description"><p> the <em class="parameter"><code>GstAllocationParams</code></em>
-to initialize with. </p></td>
-<td class="parameter_annotations"><span class="annotation">[<acronym title="NULL is OK, both for passing and for returning."><span class="acronym">allow-none</span></acronym>]</span></td>
-</tr>
-<tr>
-<td class="parameter_name"><p>size</p></td>
-<td class="parameter_description"><p>the number of bytes to be allocated</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>user_data</p></td>
-<td class="parameter_description"><p> user data to call <em class="parameter"><code>notify</code></em>
-with. </p></td>
-<td class="parameter_annotations"><span class="annotation">[<acronym title="NULL is OK, both for passing and for returning."><span class="acronym">allow-none</span></acronym>]</span></td>
-</tr>
-<tr>
-<td class="parameter_name"><p>notify</p></td>
-<td class="parameter_description"><p> a <a href="/usr/share/gtk-doc/html/glibglib-Datasets.html#GDestroyNotify"><span class="type">GDestroyNotify</span></a>. </p></td>
-<td class="parameter_annotations"><span class="annotation">[<acronym title="NULL is OK, both for passing and for returning."><span class="acronym">allow-none</span></acronym>]</span></td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<p class="since">Since: 1.8</p>
</div>
<hr>
<div class="refsect2">
<a name="gst-is-gl-base-memory"></a><h3>gst_is_gl_base_memory ()</h3>
<pre class="programlisting"><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
gst_is_gl_base_memory (<em class="parameter"><code><a href="/usr/share/gtk-doc/html/gstreamer-1.0GstMemory.html#GstMemory-struct"><span class="type">GstMemory</span></a> *mem</code></em>);</pre>
-<div class="refsect3">
-<a name="gst-is-gl-base-memory.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody><tr>
-<td class="parameter_name"><p>mem</p></td>
-<td class="parameter_description"><p>a <a href="/usr/share/gtk-doc/html/gstreamer-1.0GstMemory.html#GstMemory-struct"><span class="type">GstMemory</span></a></p></td>
-<td class="parameter_annotations"> </td>
-</tr></tbody>
-</table></div>
-</div>
-<div class="refsect3">
-<a name="gst-is-gl-base-memory.returns"></a><h4>Returns</h4>
-<p> whether the memory at <em class="parameter"><code>mem</code></em>
-is a <a class="link" href="gst-plugins-bad-libs-gstglbasememory.html#GstGLBaseMemory" title="GstGLBaseMemory"><span class="type">GstGLBaseMemory</span></a></p>
-</div>
-<p class="since">Since: 1.8</p>
</div>
<hr>
<div class="refsect2">
@@ -654,36 +360,6 @@
<span class="c_punctuation">(</span>*GstGLBaseMemoryAllocatorAllocFunction<span class="c_punctuation">)</span>
(<em class="parameter"><code><a class="link" href="gst-plugins-bad-libs-gstglbasememory.html#GstGLBaseMemoryAllocator"><span class="type">GstGLBaseMemoryAllocator</span></a> *allocator</code></em>,
<em class="parameter"><code><a class="link" href="gst-plugins-bad-libs-gstglbasememory.html#GstGLAllocationParams" title="struct GstGLAllocationParams"><span class="type">GstGLAllocationParams</span></a> *params</code></em>);</pre>
-<p>Note: not called with a GL context current</p>
-<div class="refsect3">
-<a name="GstGLBaseMemoryAllocatorAllocFunction.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="parameter_name"><p>allocator</p></td>
-<td class="parameter_description"><p>a <a class="link" href="gst-plugins-bad-libs-gstglbasememory.html#GstGLBaseMemoryAllocator"><span class="type">GstGLBaseMemoryAllocator</span></a></p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>params</p></td>
-<td class="parameter_description"><p>the <a class="link" href="gst-plugins-bad-libs-gstglbasememory.html#GstGLAllocationParams" title="struct GstGLAllocationParams"><span class="type">GstGLAllocationParams</span></a> to allocate the memory with</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<div class="refsect3">
-<a name="GstGLBaseMemoryAllocatorAllocFunction.returns"></a><h4>Returns</h4>
-<p> a newly allocated <a class="link" href="gst-plugins-bad-libs-gstglbasememory.html#GstGLBaseMemory" title="GstGLBaseMemory"><span class="type">GstGLBaseMemory</span></a> from <em class="parameter"><code>allocator</code></em>
-and <em class="parameter"><code>params</code></em>
-</p>
-</div>
-<p class="since">Since: 1.8</p>
</div>
<hr>
<div class="refsect2">
@@ -692,35 +368,6 @@
<span class="c_punctuation">(</span>*GstGLBaseMemoryAllocatorCreateFunction<span class="c_punctuation">)</span>
(<em class="parameter"><code><a class="link" href="gst-plugins-bad-libs-gstglbasememory.html#GstGLBaseMemory" title="GstGLBaseMemory"><span class="type">GstGLBaseMemory</span></a> *mem</code></em>,
<em class="parameter"><code><a href="/usr/share/gtk-doc/html/glibglib-Error-Reporting.html#GError"><span class="type">GError</span></a> **error</code></em>);</pre>
-<p>As this virtual method is called with an OpenGL context current, use this
-function to allocate and OpenGL resources needed for your application</p>
-<div class="refsect3">
-<a name="GstGLBaseMemoryAllocatorCreateFunction.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="parameter_name"><p>mem</p></td>
-<td class="parameter_description"><p>a <a class="link" href="gst-plugins-bad-libs-gstglbasememory.html#GstGLBaseMemory" title="GstGLBaseMemory"><span class="type">GstGLBaseMemory</span></a></p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>error</p></td>
-<td class="parameter_description"><p>a <a href="/usr/share/gtk-doc/html/glibglib-Error-Reporting.html#GError"><span class="type">GError</span></a> to use on failure</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<div class="refsect3">
-<a name="GstGLBaseMemoryAllocatorCreateFunction.returns"></a><h4>Returns</h4>
-<p> whether the creation succeeded</p>
-</div>
-<p class="since">Since: 1.8</p>
</div>
<hr>
<div class="refsect2">
@@ -730,39 +377,6 @@
(<em class="parameter"><code><a class="link" href="gst-plugins-bad-libs-gstglbasememory.html#GstGLBaseMemory" title="GstGLBaseMemory"><span class="type">GstGLBaseMemory</span></a> *mem</code></em>,
<em class="parameter"><code><a href="/usr/share/gtk-doc/html/gstreamer-1.0GstMemory.html#GstMapInfo"><span class="type">GstMapInfo</span></a> *info</code></em>,
<em class="parameter"><code><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gsize"><span class="type">gsize</span></a> maxsize</code></em>);</pre>
-<p>Also see <a href="/usr/share/gtk-doc/html/gstreamer-1.0GstMemory.html#gst-memory-map"><code class="function">gst_memory_map()</code></a>;</p>
-<div class="refsect3">
-<a name="GstGLBaseMemoryAllocatorMapFunction.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="parameter_name"><p>mem</p></td>
-<td class="parameter_description"><p>a <a class="link" href="gst-plugins-bad-libs-gstglbasememory.html#GstGLBaseMemory" title="GstGLBaseMemory"><span class="type">GstGLBaseMemory</span></a></p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>info</p></td>
-<td class="parameter_description"><p>a <a href="/usr/share/gtk-doc/html/gstreamer-1.0GstMemory.html#GstMapInfo"><span class="type">GstMapInfo</span></a> to map with</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>maxsize</p></td>
-<td class="parameter_description"><p>the size to map</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<div class="refsect3">
-<a name="GstGLBaseMemoryAllocatorMapFunction.returns"></a><h4>Returns</h4>
-<p> the mapped pointer</p>
-</div>
-<p class="since">Since: 1.8</p>
</div>
<hr>
<div class="refsect2">
@@ -771,30 +385,6 @@
<span class="c_punctuation">(</span>*GstGLBaseMemoryAllocatorUnmapFunction<span class="c_punctuation">)</span>
(<em class="parameter"><code><a class="link" href="gst-plugins-bad-libs-gstglbasememory.html#GstGLBaseMemory" title="GstGLBaseMemory"><span class="type">GstGLBaseMemory</span></a> *mem</code></em>,
<em class="parameter"><code><a href="/usr/share/gtk-doc/html/gstreamer-1.0GstMemory.html#GstMapInfo"><span class="type">GstMapInfo</span></a> *info</code></em>);</pre>
-<p>Also see <a href="/usr/share/gtk-doc/html/gstreamer-1.0GstMemory.html#gst-memory-unmap"><code class="function">gst_memory_unmap()</code></a>;</p>
-<div class="refsect3">
-<a name="GstGLBaseMemoryAllocatorUnmapFunction.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="parameter_name"><p>mem</p></td>
-<td class="parameter_description"><p>a <a class="link" href="gst-plugins-bad-libs-gstglbasememory.html#GstGLBaseMemory" title="GstGLBaseMemory"><span class="type">GstGLBaseMemory</span></a></p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>info</p></td>
-<td class="parameter_description"><p>a <a href="/usr/share/gtk-doc/html/gstreamer-1.0GstMemory.html#GstMapInfo"><span class="type">GstMapInfo</span></a> to map with</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<p class="since">Since: 1.8</p>
</div>
<hr>
<div class="refsect2">
@@ -804,39 +394,6 @@
(<em class="parameter"><code><a class="link" href="gst-plugins-bad-libs-gstglbasememory.html#GstGLBaseMemory" title="GstGLBaseMemory"><span class="type">GstGLBaseMemory</span></a> *mem</code></em>,
<em class="parameter"><code><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gssize"><span class="type">gssize</span></a> offset</code></em>,
<em class="parameter"><code><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gssize"><span class="type">gssize</span></a> size</code></em>);</pre>
-<p>Also see <a href="/usr/share/gtk-doc/html/gstreamer-1.0GstMemory.html#gst-memory-copy"><code class="function">gst_memory_copy()</code></a>;</p>
-<div class="refsect3">
-<a name="GstGLBaseMemoryAllocatorCopyFunction.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="parameter_name"><p>mem</p></td>
-<td class="parameter_description"><p>a <a class="link" href="gst-plugins-bad-libs-gstglbasememory.html#GstGLBaseMemory" title="GstGLBaseMemory"><span class="type">GstGLBaseMemory</span></a></p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>offset</p></td>
-<td class="parameter_description"><p>the offset to copy from</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>size</p></td>
-<td class="parameter_description"><p>the number of bytes to copy</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<div class="refsect3">
-<a name="GstGLBaseMemoryAllocatorCopyFunction.returns"></a><h4>Returns</h4>
-<p> the newly copied <a class="link" href="gst-plugins-bad-libs-GstGLMemory.html#GstGLMemory" title="GstGLMemory"><span class="type">GstGLMemory</span></a> or <a href="/usr/share/gtk-doc/html/glibglib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a></p>
-</div>
-<p class="since">Since: 1.8</p>
</div>
<hr>
<div class="refsect2">
@@ -844,24 +401,6 @@
<pre class="programlisting"><span class="returnvalue">void</span>
<span class="c_punctuation">(</span>*GstGLBaseMemoryAllocatorDestroyFunction<span class="c_punctuation">)</span>
(<em class="parameter"><code><a class="link" href="gst-plugins-bad-libs-gstglbasememory.html#GstGLBaseMemory" title="GstGLBaseMemory"><span class="type">GstGLBaseMemory</span></a> *mem</code></em>);</pre>
-<p>Destroy any resources allocated throughout the lifetime of <em class="parameter"><code>mem</code></em>
-</p>
-<div class="refsect3">
-<a name="GstGLBaseMemoryAllocatorDestroyFunction.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody><tr>
-<td class="parameter_name"><p>mem</p></td>
-<td class="parameter_description"><p>a <a class="link" href="gst-plugins-bad-libs-gstglbasememory.html#GstGLBaseMemory" title="GstGLBaseMemory"><span class="type">GstGLBaseMemory</span></a></p></td>
-<td class="parameter_annotations"> </td>
-</tr></tbody>
-</table></div>
-</div>
-<p class="since">Since: 1.8</p>
</div>
<hr>
<div class="refsect2">
@@ -869,35 +408,6 @@
<pre class="programlisting"><a class="link" href="gst-plugins-bad-libs-gstglbasememory.html#GstGLBaseMemory" title="GstGLBaseMemory"><span class="returnvalue">GstGLBaseMemory</span></a> *
gst_gl_base_memory_alloc (<em class="parameter"><code><a class="link" href="gst-plugins-bad-libs-gstglbasememory.html#GstGLBaseMemoryAllocator"><span class="type">GstGLBaseMemoryAllocator</span></a> *allocator</code></em>,
<em class="parameter"><code><a class="link" href="gst-plugins-bad-libs-gstglbasememory.html#GstGLAllocationParams" title="struct GstGLAllocationParams"><span class="type">GstGLAllocationParams</span></a> *params</code></em>);</pre>
-<div class="refsect3">
-<a name="gst-gl-base-memory-alloc.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="parameter_name"><p>allocator</p></td>
-<td class="parameter_description"><p>a <a class="link" href="gst-plugins-bad-libs-gstglbasememory.html#GstGLBaseMemoryAllocator"><span class="type">GstGLBaseMemoryAllocator</span></a></p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>params</p></td>
-<td class="parameter_description"><p>the <a class="link" href="gst-plugins-bad-libs-gstglbasememory.html#GstGLAllocationParams" title="struct GstGLAllocationParams"><span class="type">GstGLAllocationParams</span></a> to allocate the memory with</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<div class="refsect3">
-<a name="gst-gl-base-memory-alloc.returns"></a><h4>Returns</h4>
-<p> a new <a class="link" href="gst-plugins-bad-libs-gstglbasememory.html#GstGLBaseMemory" title="GstGLBaseMemory"><span class="type">GstGLBaseMemory</span></a> from <em class="parameter"><code>allocator</code></em>
-with the requested <em class="parameter"><code>params</code></em>
-.</p>
-</div>
-<p class="since">Since: 1.8</p>
</div>
<hr>
<div class="refsect2">
@@ -913,43 +423,6 @@
<em class="parameter"><code><a class="link" href="gst-plugins-bad-libs-gstglbasememory.html#GstGLBaseMemory" title="GstGLBaseMemory"><span class="type">GstGLBaseMemory</span></a> *dest</code></em>,
<em class="parameter"><code><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gssize"><span class="type">gssize</span></a> offset</code></em>,
<em class="parameter"><code><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gssize"><span class="type">gssize</span></a> size</code></em>);</pre>
-<div class="refsect3">
-<a name="gst-gl-base-memory-memcpy.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="parameter_name"><p>src</p></td>
-<td class="parameter_description"><p>the source <a class="link" href="gst-plugins-bad-libs-gstglbasememory.html#GstGLBaseMemory" title="GstGLBaseMemory"><span class="type">GstGLBaseMemory</span></a></p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>dest</p></td>
-<td class="parameter_description"><p>the destination <a class="link" href="gst-plugins-bad-libs-gstglbasememory.html#GstGLBaseMemory" title="GstGLBaseMemory"><span class="type">GstGLBaseMemory</span></a></p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>offset</p></td>
-<td class="parameter_description"><p>the offset to start at</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>size</p></td>
-<td class="parameter_description"><p>the number of bytes to copy</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<div class="refsect3">
-<a name="gst-gl-base-memory-memcpy.returns"></a><h4>Returns</h4>
-<p> whether the copy suceeded.</p>
-</div>
-<p class="since">Since: 1.8</p>
</div>
</div>
<div class="refsect1">
@@ -957,8 +430,6 @@
<div class="refsect2">
<a name="GstGLBaseMemoryAllocator-struct"></a><h3>GstGLBaseMemoryAllocator</h3>
<pre class="programlisting">typedef struct _GstGLBaseMemoryAllocator GstGLBaseMemoryAllocator;</pre>
-<p>Opaque <a class="link" href="gst-plugins-bad-libs-gstglbasememory.html#GstGLBaseMemoryAllocator"><span class="type">GstGLBaseMemoryAllocator</span></a> struct</p>
-<p class="since">Since: 1.8</p>
</div>
<hr>
<div class="refsect2">
@@ -979,77 +450,18 @@
GstGLBaseMemoryAllocatorDestroyFunction destroy;
} GstGLBaseMemoryAllocatorClass;
</pre>
-<div class="refsect3">
-<a name="GstGLBaseMemoryAllocatorClass.members"></a><h4>Members</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="300px" class="struct_members_name">
-<col class="struct_members_description">
-<col width="200px" class="struct_members_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="struct_member_name"><p><a class="link" href="gst-plugins-bad-libs-gstglbasememory.html#GstGLBaseMemoryAllocatorAllocFunction" title="GstGLBaseMemoryAllocatorAllocFunction ()"><span class="type">GstGLBaseMemoryAllocatorAllocFunction</span></a> <em class="structfield"><code><a name="GstGLBaseMemoryAllocatorClass.alloc"></a>alloc</code></em>;</p></td>
-<td class="struct_member_description"><p>a <a href="gst-plugins-bad-libs-gstglbasememory.html#GstGLBaseMemoryAllocatorAllocFunction"><span class="type">GstGLBaseMemoryAllocatorAllocFunctions</span></a></p></td>
-<td class="struct_member_annotations"> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a class="link" href="gst-plugins-bad-libs-gstglbasememory.html#GstGLBaseMemoryAllocatorCreateFunction" title="GstGLBaseMemoryAllocatorCreateFunction ()"><span class="type">GstGLBaseMemoryAllocatorCreateFunction</span></a> <em class="structfield"><code><a name="GstGLBaseMemoryAllocatorClass.create"></a>create</code></em>;</p></td>
-<td class="struct_member_description"><p>a <a class="link" href="gst-plugins-bad-libs-gstglbasememory.html#GstGLBaseMemoryAllocatorCreateFunction" title="GstGLBaseMemoryAllocatorCreateFunction ()"><span class="type">GstGLBaseMemoryAllocatorCreateFunction</span></a></p></td>
-<td class="struct_member_annotations"> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a class="link" href="gst-plugins-bad-libs-gstglbasememory.html#GstGLBaseMemoryAllocatorMapFunction" title="GstGLBaseMemoryAllocatorMapFunction ()"><span class="type">GstGLBaseMemoryAllocatorMapFunction</span></a> <em class="structfield"><code><a name="GstGLBaseMemoryAllocatorClass.map"></a>map</code></em>;</p></td>
-<td class="struct_member_description"><p>a <a class="link" href="gst-plugins-bad-libs-gstglbasememory.html#GstGLBaseMemoryAllocatorMapFunction" title="GstGLBaseMemoryAllocatorMapFunction ()"><span class="type">GstGLBaseMemoryAllocatorMapFunction</span></a></p></td>
-<td class="struct_member_annotations"> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><span class="type">GstGLBaseMemoryAllocatorFlushFunction</span> <em class="structfield"><code><a name="GstGLBaseMemoryAllocatorClass.flush"></a>flush</code></em>;</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><span class="type">GstGLBaseMemoryAllocatorInvalidateFunction</span> <em class="structfield"><code><a name="GstGLBaseMemoryAllocatorClass.invalidate"></a>invalidate</code></em>;</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a class="link" href="gst-plugins-bad-libs-gstglbasememory.html#GstGLBaseMemoryAllocatorUnmapFunction" title="GstGLBaseMemoryAllocatorUnmapFunction ()"><span class="type">GstGLBaseMemoryAllocatorUnmapFunction</span></a> <em class="structfield"><code><a name="GstGLBaseMemoryAllocatorClass.unmap"></a>unmap</code></em>;</p></td>
-<td class="struct_member_description"><p>a <a class="link" href="gst-plugins-bad-libs-gstglbasememory.html#GstGLBaseMemoryAllocatorUnmapFunction" title="GstGLBaseMemoryAllocatorUnmapFunction ()"><span class="type">GstGLBaseMemoryAllocatorUnmapFunction</span></a></p></td>
-<td class="struct_member_annotations"> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a class="link" href="gst-plugins-bad-libs-gstglbasememory.html#GstGLBaseMemoryAllocatorCopyFunction" title="GstGLBaseMemoryAllocatorCopyFunction ()"><span class="type">GstGLBaseMemoryAllocatorCopyFunction</span></a> <em class="structfield"><code><a name="GstGLBaseMemoryAllocatorClass.copy"></a>copy</code></em>;</p></td>
-<td class="struct_member_description"><p>a <a class="link" href="gst-plugins-bad-libs-gstglbasememory.html#GstGLBaseMemoryAllocatorCopyFunction" title="GstGLBaseMemoryAllocatorCopyFunction ()"><span class="type">GstGLBaseMemoryAllocatorCopyFunction</span></a></p></td>
-<td class="struct_member_annotations"> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a class="link" href="gst-plugins-bad-libs-gstglbasememory.html#GstGLBaseMemoryAllocatorDestroyFunction" title="GstGLBaseMemoryAllocatorDestroyFunction ()"><span class="type">GstGLBaseMemoryAllocatorDestroyFunction</span></a> <em class="structfield"><code><a name="GstGLBaseMemoryAllocatorClass.destroy"></a>destroy</code></em>;</p></td>
-<td class="struct_member_description"><p>a <a class="link" href="gst-plugins-bad-libs-gstglbasememory.html#GstGLBaseMemoryAllocatorDestroyFunction" title="GstGLBaseMemoryAllocatorDestroyFunction ()"><span class="type">GstGLBaseMemoryAllocatorDestroyFunction</span></a></p></td>
-<td class="struct_member_annotations"> </td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<p class="since">Since: 1.8</p>
</div>
<hr>
<div class="refsect2">
<a name="GST-GL-BASE-MEMORY-ALLOCATOR-NAME:CAPS"></a><h3>GST_GL_BASE_MEMORY_ALLOCATOR_NAME</h3>
<pre class="programlisting">#define GST_GL_BASE_MEMORY_ALLOCATOR_NAME "GLBaseMemory"
</pre>
-<p>The name of the GL buffer allocator</p>
-<p class="since">Since: 1.8</p>
</div>
<hr>
<div class="refsect2">
<a name="GST-MAP-GL:CAPS"></a><h3>GST_MAP_GL</h3>
<pre class="programlisting">#define GST_MAP_GL (GST_MAP_FLAG_LAST << 1)
</pre>
-<p>Flag indicating that we should map the GL object instead of to system memory.</p>
-<p>Combining <a class="link" href="gst-plugins-bad-libs-gstglbasememory.html#GST-MAP-GL:CAPS" title="GST_MAP_GL"><span class="type">GST_MAP_GL</span></a> with <a href="/usr/share/gtk-doc/html/gstreamer-1.0GstMemory.html#GST-MAP-WRITE:CAPS"><span class="type">GST_MAP_WRITE</span></a> has the same semantics as though
-you are writing to OpenGL. Conversely, combining <a class="link" href="gst-plugins-bad-libs-gstglbasememory.html#GST-MAP-GL:CAPS" title="GST_MAP_GL"><span class="type">GST_MAP_GL</span></a> with
-<a href="/usr/share/gtk-doc/html/gstreamer-1.0GstMemory.html#GST-MAP-READ:CAPS"><span class="type">GST_MAP_READ</span></a> has the same semantics as though you are reading from OpenGL.</p>
</div>
<hr>
<div class="refsect2">
@@ -1065,25 +477,18 @@
<tbody>
<tr>
<td class="enum_member_name"><p><a name="GST-GL-BASE-MEMORY-ERROR-FAILED:CAPS"></a>GST_GL_BASE_MEMORY_ERROR_FAILED</p></td>
-<td class="enum_member_description">
-<p>generic faliure</p>
-</td>
-<td class="enum_member_annotations"> </td>
+<td> </td>
+<td> </td>
</tr>
<tr>
<td class="enum_member_name"><p><a name="GST-GL-BASE-MEMORY-ERROR-OLD-LIBS:CAPS"></a>GST_GL_BASE_MEMORY_ERROR_OLD_LIBS</p></td>
-<td class="enum_member_description">
-<p>the implementation is too old and doesn't
- implement enough features</p>
-</td>
-<td class="enum_member_annotations"> </td>
+<td> </td>
+<td> </td>
</tr>
<tr>
<td class="enum_member_name"><p><a name="GST-GL-BASE-MEMORY-ERROR-RESOURCE-UNAVAILABLE:CAPS"></a>GST_GL_BASE_MEMORY_ERROR_RESOURCE_UNAVAILABLE</p></td>
-<td class="enum_member_description">
-<p>a resource could not be found</p>
-</td>
-<td class="enum_member_annotations"> </td>
+<td> </td>
+<td> </td>
</tr>
</tbody>
</table></div>
@@ -1109,19 +514,13 @@
<tbody>
<tr>
<td class="enum_member_name"><p><a name="GST-GL-BASE-MEMORY-TRANSFER-NEED-DOWNLOAD:CAPS"></a>GST_GL_BASE_MEMORY_TRANSFER_NEED_DOWNLOAD</p></td>
-<td class="enum_member_description">
-<p>the texture needs downloading
- to the data pointer</p>
-</td>
-<td class="enum_member_annotations"> </td>
+<td> </td>
+<td> </td>
</tr>
<tr>
<td class="enum_member_name"><p><a name="GST-GL-BASE-MEMORY-TRANSFER-NEED-UPLOAD:CAPS"></a>GST_GL_BASE_MEMORY_TRANSFER_NEED_UPLOAD</p></td>
-<td class="enum_member_description">
-<p>the data pointer needs uploading
- to the texture</p>
-</td>
-<td class="enum_member_annotations"> </td>
+<td> </td>
+<td> </td>
</tr>
</tbody>
</table></div>
@@ -1145,77 +544,9 @@
/* GST_GL_ALLOCATION_PARAMS_ALLOC_FLAG_WRAP_SYSMEM only */
gpointer wrapped_data;
/* GST_GL_ALLOCATION_PARAMS_ALLOC_FLAG_WRAP_GPU_HANDLE only */
- guint gl_handle;
+ gpointer gl_handle;
};
</pre>
-<div class="refsect3">
-<a name="GstGLAllocationParams.members"></a><h4>Members</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="300px" class="struct_members_name">
-<col class="struct_members_description">
-<col width="200px" class="struct_members_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gsize"><span class="type">gsize</span></a> <em class="structfield"><code><a name="GstGLAllocationParams.struct-size"></a>struct_size</code></em>;</p></td>
-<td class="struct_member_description"><p>the size of the struct (including and subclass data)</p></td>
-<td class="struct_member_annotations"> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a class="link" href="gst-plugins-bad-libs-gstglbasememory.html#GstGLAllocationParamsCopyFunc" title="GstGLAllocationParamsCopyFunc ()"><span class="type">GstGLAllocationParamsCopyFunc</span></a> <em class="structfield"><code><a name="GstGLAllocationParams.copy"></a>copy</code></em>;</p></td>
-<td class="struct_member_description"><p>a <a class="link" href="gst-plugins-bad-libs-gstglbasememory.html#GstGLAllocationParamsCopyFunc" title="GstGLAllocationParamsCopyFunc ()"><span class="type">GstGLAllocationParamsCopyFunc</span></a></p></td>
-<td class="struct_member_annotations"> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a class="link" href="gst-plugins-bad-libs-gstglbasememory.html#GstGLAllocationParamsFreeFunc" title="GstGLAllocationParamsFreeFunc ()"><span class="type">GstGLAllocationParamsFreeFunc</span></a> <em class="structfield"><code><a name="GstGLAllocationParams.free"></a>free</code></em>;</p></td>
-<td class="struct_member_description"><p>a <a class="link" href="gst-plugins-bad-libs-gstglbasememory.html#GstGLAllocationParamsFreeFunc" title="GstGLAllocationParamsFreeFunc ()"><span class="type">GstGLAllocationParamsFreeFunc</span></a></p></td>
-<td class="struct_member_annotations"> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint"><span class="type">guint</span></a> <em class="structfield"><code><a name="GstGLAllocationParams.alloc-flags"></a>alloc_flags</code></em>;</p></td>
-<td class="struct_member_description"><p>allocation flags</p></td>
-<td class="struct_member_annotations"> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gsize"><span class="type">gsize</span></a> <em class="structfield"><code><a name="GstGLAllocationParams.alloc-size"></a>alloc_size</code></em>;</p></td>
-<td class="struct_member_description"><p>the allocation size</p></td>
-<td class="struct_member_annotations"> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/gstreamer-1.0GstAllocator.html#GstAllocationParams-struct"><span class="type">GstAllocationParams</span></a> *<em class="structfield"><code><a name="GstGLAllocationParams.alloc-params"></a>alloc_params</code></em>;</p></td>
-<td class="struct_member_description"><p>the <a href="/usr/share/gtk-doc/html/gstreamer-1.0GstAllocator.html#GstAllocationParams-struct"><span class="type">GstAllocationParams</span></a></p></td>
-<td class="struct_member_annotations"> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a class="link" href="GstGLContext.html" title="GstGLContext"><span class="type">GstGLContext</span></a> *<em class="structfield"><code><a name="GstGLAllocationParams.context"></a>context</code></em>;</p></td>
-<td class="struct_member_description"><p>a <a class="link" href="GstGLContext.html" title="GstGLContext"><span class="type">GstGLContext</span></a></p></td>
-<td class="struct_member_annotations"> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Datasets.html#GDestroyNotify"><span class="type">GDestroyNotify</span></a> <em class="structfield"><code><a name="GstGLAllocationParams.notify"></a>notify</code></em>;</p></td>
-<td class="struct_member_description"><p>a <a href="/usr/share/gtk-doc/html/glibglib-Datasets.html#GDestroyNotify"><span class="type">GDestroyNotify</span></a></p></td>
-<td class="struct_member_annotations"> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a> <em class="structfield"><code><a name="GstGLAllocationParams.user-data"></a>user_data</code></em>;</p></td>
-<td class="struct_member_description"><p>argument to call <em class="parameter"><code>notify</code></em>
-with</p></td>
-<td class="struct_member_annotations"> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a> <em class="structfield"><code><a name="GstGLAllocationParams.wrapped-data"></a>wrapped_data</code></em>;</p></td>
-<td class="struct_member_description"><p>the wrapped data pointer</p></td>
-<td class="struct_member_annotations"> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint"><span class="type">guint</span></a> <em class="structfield"><code><a name="GstGLAllocationParams.gl-handle"></a>gl_handle</code></em>;</p></td>
-<td class="struct_member_description"><p>the wrapped OpenGL handle</p></td>
-<td class="struct_member_annotations"> </td>
-</tr>
-</tbody>
-</table></div>
-</div>
</div>
<hr>
<div class="refsect2">
@@ -1250,36 +581,9 @@
GstGLContext *context;
} GstGLBaseMemory;
</pre>
-<p>Represents information about a GL memory object</p>
-<div class="refsect3">
-<a name="GstGLBaseMemory.members"></a><h4>Members</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="300px" class="struct_members_name">
-<col class="struct_members_description">
-<col width="200px" class="struct_members_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/gstreamer-1.0GstMemory.html#GstMemory-struct"><span class="type">GstMemory</span></a> <em class="structfield"><code><a name="GstGLBaseMemory.mem"></a>mem</code></em>;</p></td>
-<td class="struct_member_description"><p>the parent object</p></td>
-<td class="struct_member_annotations"> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a class="link" href="GstGLContext.html" title="GstGLContext"><span class="type">GstGLContext</span></a> *<em class="structfield"><code><a name="GstGLBaseMemory.context"></a>context</code></em>;</p></td>
-<td class="struct_member_description"><p>the <a class="link" href="GstGLContext.html" title="GstGLContext"><span class="type">GstGLContext</span></a> to use for GL operations</p></td>
-<td class="struct_member_annotations"> </td>
-</tr>
-</tbody>
-</table></div>
</div>
</div>
</div>
-<div class="refsect1">
-<a name="gst-plugins-bad-libs-gstglbasememory.see-also"></a><h2>See Also</h2>
-<p><a href="/usr/share/gtk-doc/html/gstreamer-1.0GstMemory.html#GstMemory-struct"><span class="type">GstMemory</span></a>, <a href="/usr/share/gtk-doc/html/gstreamer-1.0GstAllocator.html#GstAllocator-struct"><span class="type">GstAllocator</span></a></p>
-</div>
-</div>
<div class="footer">
<hr>Generated by GTK-Doc V1.25</div>
</body>
diff --git a/docs/libs/html/gst-plugins-bad-libs-gstgldebug.html b/docs/libs/html/gst-plugins-bad-libs-gstgldebug.html
new file mode 100644
index 0000000..4068760
--- /dev/null
+++ b/docs/libs/html/gst-plugins-bad-libs-gstgldebug.html
@@ -0,0 +1,271 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>OpenGL Debugging: GStreamer Bad Plugins 1.0 Library Reference Manual</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
+<link rel="home" href="index.html" title="GStreamer Bad Plugins 1.0 Library Reference Manual">
+<link rel="up" href="gl.html" title="OpenGL Helper Library">
+<link rel="prev" href="gst-plugins-bad-libs-GstGLWindowX11.html" title="GstGLWindowX11">
+<link rel="next" href="gst-plugins-bad-libs-OpenGL-Miscellaneous-Utilities.html" title="OpenGL Miscellaneous Utilities">
+<meta name="generator" content="GTK-Doc V1.25 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="5"><tr valign="middle">
+<td width="100%" align="left" class="shortcuts">
+<a href="#" class="shortcut">Top</a><span id="nav_description"> <span class="dim">|</span>
+ <a href="#gst-plugins-bad-libs-gstgldebug.description" class="shortcut">Description</a></span>
+</td>
+<td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
+<td><a accesskey="u" href="gl.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
+<td><a accesskey="p" href="gst-plugins-bad-libs-GstGLWindowX11.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
+<td><a accesskey="n" href="gst-plugins-bad-libs-OpenGL-Miscellaneous-Utilities.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
+</tr></table>
+<div class="refentry">
+<a name="gst-plugins-bad-libs-gstgldebug"></a><div class="titlepage"></div>
+<div class="refnamediv"><table width="100%"><tr>
+<td valign="top">
+<h2><span class="refentrytitle"><a name="gst-plugins-bad-libs-gstgldebug.top_of_page"></a>OpenGL Debugging</span></h2>
+<p>OpenGL Debugging</p>
+</td>
+<td class="gallery_image" valign="top" align="right"></td>
+</tr></table></div>
+<div class="refsect1">
+<a name="gst-plugins-bad-libs-gstgldebug.functions"></a><h2>Functions</h2>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
+<col width="150px" class="functions_return">
+<col class="functions_name">
+</colgroup>
+<tbody>
+<tr>
+<td class="function_type">
+<a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gchar"><span class="returnvalue">gchar</span></a> *
+</td>
+<td class="function_name">
+<span class="c_punctuation">(</span><a class="link" href="gst-plugins-bad-libs-gstgldebug.html#GstGLAsyncDebugLogGetMessage" title="GstGLAsyncDebugLogGetMessage ()">*GstGLAsyncDebugLogGetMessage</a><span class="c_punctuation">)</span> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<a class="link" href="gst-plugins-bad-libs-gstgldebug.html#GstGLAsyncDebug" title="struct GstGLAsyncDebug"><span class="returnvalue">GstGLAsyncDebug</span></a> *
+</td>
+<td class="function_name">
+<a class="link" href="gst-plugins-bad-libs-gstgldebug.html#gst-gl-async-debug-new" title="gst_gl_async_debug_new ()">gst_gl_async_debug_new</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<span class="returnvalue">void</span>
+</td>
+<td class="function_name">
+<a class="link" href="gst-plugins-bad-libs-gstgldebug.html#gst-gl-async-debug-free" title="gst_gl_async_debug_free ()">gst_gl_async_debug_free</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<span class="returnvalue">void</span>
+</td>
+<td class="function_name">
+<a class="link" href="gst-plugins-bad-libs-gstgldebug.html#gst-gl-async-debug-init" title="gst_gl_async_debug_init ()">gst_gl_async_debug_init</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<span class="returnvalue">void</span>
+</td>
+<td class="function_name">
+<a class="link" href="gst-plugins-bad-libs-gstgldebug.html#gst-gl-async-debug-unset" title="gst_gl_async_debug_unset ()">gst_gl_async_debug_unset</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<span class="returnvalue">void</span>
+</td>
+<td class="function_name">
+<a class="link" href="gst-plugins-bad-libs-gstgldebug.html#gst-gl-async-debug-freeze" title="gst_gl_async_debug_freeze ()">gst_gl_async_debug_freeze</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<span class="returnvalue">void</span>
+</td>
+<td class="function_name">
+<a class="link" href="gst-plugins-bad-libs-gstgldebug.html#gst-gl-async-debug-thaw" title="gst_gl_async_debug_thaw ()">gst_gl_async_debug_thaw</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<span class="returnvalue">void</span>
+</td>
+<td class="function_name">
+<a class="link" href="gst-plugins-bad-libs-gstgldebug.html#gst-gl-async-debug-output-log-msg" title="gst_gl_async_debug_output_log_msg ()">gst_gl_async_debug_output_log_msg</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<span class="returnvalue">void</span>
+</td>
+<td class="function_name">
+<a class="link" href="gst-plugins-bad-libs-gstgldebug.html#gst-gl-async-debug-store-log-msg" title="gst_gl_async_debug_store_log_msg ()">gst_gl_async_debug_store_log_msg</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<span class="returnvalue">void</span>
+</td>
+<td class="function_name">
+<a class="link" href="gst-plugins-bad-libs-gstgldebug.html#gst-gl-async-debug-store-log-msg-valist" title="gst_gl_async_debug_store_log_msg_valist ()">gst_gl_async_debug_store_log_msg_valist</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="define_keyword">#define</td>
+<td class="function_name">
+<a class="link" href="gst-plugins-bad-libs-gstgldebug.html#GST-GL-ASYNC-CAT-LEVEL-LOG-valist" title="GST_GL_ASYNC_CAT_LEVEL_LOG_valist()">GST_GL_ASYNC_CAT_LEVEL_LOG_valist</a><span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="define_keyword">#define</td>
+<td class="function_name">
+<a class="link" href="gst-plugins-bad-libs-gstgldebug.html#GST-GL-ASYNC-CAT-LEVEL-LOG:CAPS" title="GST_GL_ASYNC_CAT_LEVEL_LOG()">GST_GL_ASYNC_CAT_LEVEL_LOG</a><span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<span class="returnvalue">void</span>
+</td>
+<td class="function_name">
+<a class="link" href="gst-plugins-bad-libs-gstgldebug.html#gst-gl-insert-debug-marker" title="gst_gl_insert_debug_marker ()">gst_gl_insert_debug_marker</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<div class="refsect1">
+<a name="gst-plugins-bad-libs-gstgldebug.other"></a><h2>Types and Values</h2>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
+<col width="150px" class="name">
+<col class="description">
+</colgroup>
+<tbody><tr>
+<td class="datatype_keyword">struct</td>
+<td class="function_name"><a class="link" href="gst-plugins-bad-libs-gstgldebug.html#GstGLAsyncDebug" title="struct GstGLAsyncDebug">GstGLAsyncDebug</a></td>
+</tr></tbody>
+</table></div>
+</div>
+<div class="refsect1">
+<a name="gst-plugins-bad-libs-gstgldebug.description"></a><h2>Description</h2>
+</div>
+<div class="refsect1">
+<a name="gst-plugins-bad-libs-gstgldebug.functions_details"></a><h2>Functions</h2>
+<div class="refsect2">
+<a name="GstGLAsyncDebugLogGetMessage"></a><h3>GstGLAsyncDebugLogGetMessage ()</h3>
+<pre class="programlisting"><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gchar"><span class="returnvalue">gchar</span></a> *
+<span class="c_punctuation">(</span>*GstGLAsyncDebugLogGetMessage<span class="c_punctuation">)</span> (<em class="parameter"><code><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a> user_data</code></em>);</pre>
+</div>
+<hr>
+<div class="refsect2">
+<a name="gst-gl-async-debug-new"></a><h3>gst_gl_async_debug_new ()</h3>
+<pre class="programlisting"><a class="link" href="gst-plugins-bad-libs-gstgldebug.html#GstGLAsyncDebug" title="struct GstGLAsyncDebug"><span class="returnvalue">GstGLAsyncDebug</span></a> *
+gst_gl_async_debug_new (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
+</div>
+<hr>
+<div class="refsect2">
+<a name="gst-gl-async-debug-free"></a><h3>gst_gl_async_debug_free ()</h3>
+<pre class="programlisting"><span class="returnvalue">void</span>
+gst_gl_async_debug_free (<em class="parameter"><code><a class="link" href="gst-plugins-bad-libs-gstgldebug.html#GstGLAsyncDebug" title="struct GstGLAsyncDebug"><span class="type">GstGLAsyncDebug</span></a> *ad</code></em>);</pre>
+</div>
+<hr>
+<div class="refsect2">
+<a name="gst-gl-async-debug-init"></a><h3>gst_gl_async_debug_init ()</h3>
+<pre class="programlisting"><span class="returnvalue">void</span>
+gst_gl_async_debug_init (<em class="parameter"><code><a class="link" href="gst-plugins-bad-libs-gstgldebug.html#GstGLAsyncDebug" title="struct GstGLAsyncDebug"><span class="type">GstGLAsyncDebug</span></a> *ad</code></em>);</pre>
+</div>
+<hr>
+<div class="refsect2">
+<a name="gst-gl-async-debug-unset"></a><h3>gst_gl_async_debug_unset ()</h3>
+<pre class="programlisting"><span class="returnvalue">void</span>
+gst_gl_async_debug_unset (<em class="parameter"><code><a class="link" href="gst-plugins-bad-libs-gstgldebug.html#GstGLAsyncDebug" title="struct GstGLAsyncDebug"><span class="type">GstGLAsyncDebug</span></a> *ad</code></em>);</pre>
+</div>
+<hr>
+<div class="refsect2">
+<a name="gst-gl-async-debug-freeze"></a><h3>gst_gl_async_debug_freeze ()</h3>
+<pre class="programlisting"><span class="returnvalue">void</span>
+gst_gl_async_debug_freeze (<em class="parameter"><code><a class="link" href="gst-plugins-bad-libs-gstgldebug.html#GstGLAsyncDebug" title="struct GstGLAsyncDebug"><span class="type">GstGLAsyncDebug</span></a> *ad</code></em>);</pre>
+</div>
+<hr>
+<div class="refsect2">
+<a name="gst-gl-async-debug-thaw"></a><h3>gst_gl_async_debug_thaw ()</h3>
+<pre class="programlisting"><span class="returnvalue">void</span>
+gst_gl_async_debug_thaw (<em class="parameter"><code><a class="link" href="gst-plugins-bad-libs-gstgldebug.html#GstGLAsyncDebug" title="struct GstGLAsyncDebug"><span class="type">GstGLAsyncDebug</span></a> *ad</code></em>);</pre>
+</div>
+<hr>
+<div class="refsect2">
+<a name="gst-gl-async-debug-output-log-msg"></a><h3>gst_gl_async_debug_output_log_msg ()</h3>
+<pre class="programlisting"><span class="returnvalue">void</span>
+gst_gl_async_debug_output_log_msg (<em class="parameter"><code><a class="link" href="gst-plugins-bad-libs-gstgldebug.html#GstGLAsyncDebug" title="struct GstGLAsyncDebug"><span class="type">GstGLAsyncDebug</span></a> *ad</code></em>);</pre>
+</div>
+<hr>
+<div class="refsect2">
+<a name="gst-gl-async-debug-store-log-msg"></a><h3>gst_gl_async_debug_store_log_msg ()</h3>
+<pre class="programlisting"><span class="returnvalue">void</span>
+gst_gl_async_debug_store_log_msg (<em class="parameter"><code><a class="link" href="gst-plugins-bad-libs-gstgldebug.html#GstGLAsyncDebug" title="struct GstGLAsyncDebug"><span class="type">GstGLAsyncDebug</span></a> *ad</code></em>,
+ <em class="parameter"><code><a href="/usr/share/gtk-doc/html/gstreamer-1.0gstreamer-GstInfo.html#GstDebugCategory"><span class="type">GstDebugCategory</span></a> *cat</code></em>,
+ <em class="parameter"><code><a href="/usr/share/gtk-doc/html/gstreamer-1.0gstreamer-GstInfo.html#GstDebugLevel"><span class="type">GstDebugLevel</span></a> level</code></em>,
+ <em class="parameter"><code>const <a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *file</code></em>,
+ <em class="parameter"><code>const <a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *function</code></em>,
+ <em class="parameter"><code><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gint"><span class="type">gint</span></a> line</code></em>,
+ <em class="parameter"><code><a href="/usr/share/gtk-doc/html/gobjectgobject-The-Base-Object-Type.html#GObject-struct"><span class="type">GObject</span></a> *object</code></em>,
+ <em class="parameter"><code>const <a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *format</code></em>,
+ <em class="parameter"><code>...</code></em>);</pre>
+</div>
+<hr>
+<div class="refsect2">
+<a name="gst-gl-async-debug-store-log-msg-valist"></a><h3>gst_gl_async_debug_store_log_msg_valist ()</h3>
+<pre class="programlisting"><span class="returnvalue">void</span>
+gst_gl_async_debug_store_log_msg_valist
+ (<em class="parameter"><code><a class="link" href="gst-plugins-bad-libs-gstgldebug.html#GstGLAsyncDebug" title="struct GstGLAsyncDebug"><span class="type">GstGLAsyncDebug</span></a> *ad</code></em>,
+ <em class="parameter"><code><a href="/usr/share/gtk-doc/html/gstreamer-1.0gstreamer-GstInfo.html#GstDebugCategory"><span class="type">GstDebugCategory</span></a> *cat</code></em>,
+ <em class="parameter"><code><a href="/usr/share/gtk-doc/html/gstreamer-1.0gstreamer-GstInfo.html#GstDebugLevel"><span class="type">GstDebugLevel</span></a> level</code></em>,
+ <em class="parameter"><code>const <a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *file</code></em>,
+ <em class="parameter"><code>const <a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *function</code></em>,
+ <em class="parameter"><code><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gint"><span class="type">gint</span></a> line</code></em>,
+ <em class="parameter"><code><a href="/usr/share/gtk-doc/html/gobjectgobject-The-Base-Object-Type.html#GObject-struct"><span class="type">GObject</span></a> *object</code></em>,
+ <em class="parameter"><code>const <a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *format</code></em>,
+ <em class="parameter"><code><span class="type">va_list</span> varargs</code></em>);</pre>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GST-GL-ASYNC-CAT-LEVEL-LOG-valist"></a><h3>GST_GL_ASYNC_CAT_LEVEL_LOG_valist()</h3>
+<pre class="programlisting">#define GST_GL_ASYNC_CAT_LEVEL_LOG_valist(ad,cat,level,object,format,varargs)</pre>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GST-GL-ASYNC-CAT-LEVEL-LOG:CAPS"></a><h3>GST_GL_ASYNC_CAT_LEVEL_LOG()</h3>
+<pre class="programlisting">#define GST_GL_ASYNC_CAT_LEVEL_LOG(ad,cat,level,object,format,...)</pre>
+</div>
+<hr>
+<div class="refsect2">
+<a name="gst-gl-insert-debug-marker"></a><h3>gst_gl_insert_debug_marker ()</h3>
+<pre class="programlisting"><span class="returnvalue">void</span>
+gst_gl_insert_debug_marker (<em class="parameter"><code><a class="link" href="GstGLContext.html" title="GstGLContext"><span class="type">GstGLContext</span></a> *context</code></em>,
+ <em class="parameter"><code>const <a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *format</code></em>,
+ <em class="parameter"><code>...</code></em>);</pre>
+</div>
+</div>
+<div class="refsect1">
+<a name="gst-plugins-bad-libs-gstgldebug.other_details"></a><h2>Types and Values</h2>
+<div class="refsect2">
+<a name="GstGLAsyncDebug"></a><h3>struct GstGLAsyncDebug</h3>
+<pre class="programlisting">struct GstGLAsyncDebug {
+};
+</pre>
+</div>
+</div>
+</div>
+<div class="footer">
+<hr>Generated by GTK-Doc V1.25</div>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/libs/html/gst-plugins-bad-libs-gstglmemorypbo.html b/docs/libs/html/gst-plugins-bad-libs-gstglmemorypbo.html
index d2f10d1..6fc51d3 100644
--- a/docs/libs/html/gst-plugins-bad-libs-gstglmemorypbo.html
+++ b/docs/libs/html/gst-plugins-bad-libs-gstglmemorypbo.html
@@ -28,7 +28,7 @@
<div class="refnamediv"><table width="100%"><tr>
<td valign="top">
<h2><span class="refentrytitle"><a name="gst-plugins-bad-libs-gstglmemorypbo.top_of_page"></a>GstGLMemoryPBO</span></h2>
-<p>GstGLMemoryPBO — memory subclass for GL textures</p>
+<p>GstGLMemoryPBO</p>
</td>
<td class="gallery_image" valign="top" align="right"></td>
</tr></table></div>
@@ -123,11 +123,6 @@
</div>
<div class="refsect1">
<a name="gst-plugins-bad-libs-gstglmemorypbo.description"></a><h2>Description</h2>
-<p><a class="link" href="gst-plugins-bad-libs-gstglmemorypbo.html#GstGLMemoryPBO" title="GstGLMemoryPBO"><span class="type">GstGLMemoryPBO</span></a> is created or wrapped through <a class="link" href="gst-plugins-bad-libs-gstglbasememory.html#gst-gl-base-memory-alloc" title="gst_gl_base_memory_alloc ()"><code class="function">gst_gl_base_memory_alloc()</code></a>
-with <a class="link" href="gst-plugins-bad-libs-GstGLMemory.html#GstGLVideoAllocationParams" title="struct GstGLVideoAllocationParams"><span class="type">GstGLVideoAllocationParams</span></a>.</p>
-<p><a class="link" href="gst-plugins-bad-libs-gstglmemorypbo.html#GstGLMemoryPBO" title="GstGLMemoryPBO"><span class="type">GstGLMemoryPBO</span></a> is created through <code class="function">gst_gl_memory_pbo_alloc()</code> or system memory can
-be wrapped through <code class="function">gst_gl_memory_pbo_wrapped()</code>.</p>
-<p>Data is uploaded or downloaded from the GPU as is necessary.</p>
</div>
<div class="refsect1">
<a name="gst-plugins-bad-libs-gstglmemorypbo.functions_details"></a><h2>Functions</h2>
@@ -135,27 +130,6 @@
<a name="gst-is-gl-memory-pbo"></a><h3>gst_is_gl_memory_pbo ()</h3>
<pre class="programlisting"><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
gst_is_gl_memory_pbo (<em class="parameter"><code><a href="/usr/share/gtk-doc/html/gstreamer-1.0GstMemory.html#GstMemory-struct"><span class="type">GstMemory</span></a> *mem</code></em>);</pre>
-<div class="refsect3">
-<a name="gst-is-gl-memory-pbo.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody><tr>
-<td class="parameter_name"><p>mem</p></td>
-<td class="parameter_description"><p>a <a href="/usr/share/gtk-doc/html/gstreamer-1.0GstMemory.html#GstMemory-struct"><span class="type">GstMemory</span></a></p></td>
-<td class="parameter_annotations"> </td>
-</tr></tbody>
-</table></div>
-</div>
-<div class="refsect3">
-<a name="gst-is-gl-memory-pbo.returns"></a><h4>Returns</h4>
-<p> whether the memory at <em class="parameter"><code>mem</code></em>
-is a <a class="link" href="gst-plugins-bad-libs-gstglmemorypbo.html#GstGLMemoryPBO" title="GstGLMemoryPBO"><span class="type">GstGLMemoryPBO</span></a></p>
-</div>
-<p class="since">Since: 1.8</p>
</div>
<hr>
<div class="refsect2">
@@ -169,107 +143,12 @@
<em class="parameter"><code><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gint"><span class="type">gint</span></a> height</code></em>,
<em class="parameter"><code><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gint"><span class="type">gint</span></a> stride</code></em>,
<em class="parameter"><code><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a> respecify</code></em>);</pre>
-<p>Copies <em class="parameter"><code>gl_mem</code></em>
- into the texture specfified by <em class="parameter"><code>tex_id</code></em>
-. The format of <em class="parameter"><code>tex_id</code></em>
-
-is specified by <em class="parameter"><code>tex_type</code></em>
-, <em class="parameter"><code>width</code></em>
- and <em class="parameter"><code>height</code></em>
-.</p>
-<p>If <em class="parameter"><code>respecify</code></em>
- is <a href="/usr/share/gtk-doc/html/glibglib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a>, then the copy is performed in terms of the texture
-data. This is useful for splitting RGBA textures into RG or R textures or
-vice versa. The requirement for this to succeed is that the backing texture
-data must be the same size, i.e. say a RGBA8 texture is converted into a RG8
-texture, then the RG texture must have twice as many pixels available for
-output as the RGBA texture.</p>
-<p>Otherwise, if <em class="parameter"><code>respecify</code></em>
- is <a href="/usr/share/gtk-doc/html/glibglib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a>, then the copy is performed per texel
-using glCopyTexImage. See the OpenGL specification for details on the
-mappings between texture formats.</p>
-<div class="refsect3">
-<a name="gst-gl-memory-pbo-copy-into-texture.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="parameter_name"><p>gl_mem</p></td>
-<td class="parameter_description"><p>a <a class="link" href="gst-plugins-bad-libs-gstglmemorypbo.html#GstGLMemoryPBO" title="GstGLMemoryPBO"><span class="type">GstGLMemoryPBO</span></a></p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>tex_id</p></td>
-<td class="parameter_description"><p>the destination texture id</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>target</p></td>
-<td class="parameter_description"><p>the destination <a class="link" href="gst-plugins-bad-libs-OpenGL-Formats.html#GstGLTextureTarget" title="enum GstGLTextureTarget"><span class="type">GstGLTextureTarget</span></a></p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>tex_type</p></td>
-<td class="parameter_description"><p>the destination <span class="type">GstVideoGLTextureType</span></p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>width</p></td>
-<td class="parameter_description"><p>width of <em class="parameter"><code>tex_id</code></em>
-</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>height</p></td>
-<td class="parameter_description"><p>height of <em class="parameter"><code>tex_id</code></em>
-</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>stride</p></td>
-<td class="parameter_description"><p>stride of the backing texture data</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>respecify</p></td>
-<td class="parameter_description"><p>whether to copy the data or copy per texel</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<div class="refsect3">
-<a name="gst-gl-memory-pbo-copy-into-texture.returns"></a><h4>Returns</h4>
-<p> Whether the copy suceeded</p>
-</div>
-<p class="since">Since: 1.8</p>
</div>
<hr>
<div class="refsect2">
<a name="gst-gl-memory-pbo-download-transfer"></a><h3>gst_gl_memory_pbo_download_transfer ()</h3>
<pre class="programlisting"><span class="returnvalue">void</span>
gst_gl_memory_pbo_download_transfer (<em class="parameter"><code><a class="link" href="gst-plugins-bad-libs-gstglmemorypbo.html#GstGLMemoryPBO" title="GstGLMemoryPBO"><span class="type">GstGLMemoryPBO</span></a> *gl_mem</code></em>);</pre>
-<p>Transfer the texture data from the PBO into the texture if necessary.</p>
-<div class="refsect3">
-<a name="gst-gl-memory-pbo-download-transfer.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody><tr>
-<td class="parameter_name"><p>gl_mem</p></td>
-<td class="parameter_description"><p>a <a class="link" href="gst-plugins-bad-libs-gstglmemorypbo.html#GstGLMemoryPBO" title="GstGLMemoryPBO"><span class="type">GstGLMemoryPBO</span></a></p></td>
-<td class="parameter_annotations"> </td>
-</tr></tbody>
-</table></div>
-</div>
-<p class="since">Since: 1.8</p>
</div>
<hr>
<div class="refsect2">
@@ -311,13 +190,8 @@
GstGLMemory mem;
} GstGLMemoryPBO;
</pre>
-<p>Private instance</p>
</div>
</div>
-<div class="refsect1">
-<a name="gst-plugins-bad-libs-gstglmemorypbo.see-also"></a><h2>See Also</h2>
-<p><a href="/usr/share/gtk-doc/html/gstreamer-1.0GstMemory.html#GstMemory-struct"><span class="type">GstMemory</span></a>, <a href="/usr/share/gtk-doc/html/gstreamer-1.0GstAllocator.html#GstAllocator-struct"><span class="type">GstAllocator</span></a>, <a class="link" href="GstGLBufferPool.html" title="GstGLBufferPool"><span class="type">GstGLBufferPool</span></a></p>
-</div>
</div>
<div class="footer">
<hr>Generated by GTK-Doc V1.25</div>
diff --git a/docs/libs/html/gst-plugins-bad-libs-gstmpegts.html b/docs/libs/html/gst-plugins-bad-libs-gstmpegts.html
new file mode 100644
index 0000000..a9c8284
--- /dev/null
+++ b/docs/libs/html/gst-plugins-bad-libs-gstmpegts.html
@@ -0,0 +1,69 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>gstmpegts: GStreamer Bad Plugins 1.0 Library Reference Manual</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
+<link rel="home" href="index.html" title="GStreamer Bad Plugins 1.0 Library Reference Manual">
+<link rel="up" href="mpegts.html" title="Mpeg TS helper library">
+<link rel="prev" href="mpegts.html" title="Mpeg TS helper library">
+<link rel="next" href="gst-plugins-bad-libs-gstmpegtssection.html" title="gstmpegtssection">
+<meta name="generator" content="GTK-Doc V1.25 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="5"><tr valign="middle">
+<td width="100%" align="left" class="shortcuts">
+<a href="#" class="shortcut">Top</a><span id="nav_description"> <span class="dim">|</span>
+ <a href="#gst-plugins-bad-libs-gstmpegts.description" class="shortcut">Description</a></span>
+</td>
+<td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
+<td><a accesskey="u" href="mpegts.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
+<td><a accesskey="p" href="mpegts.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
+<td><a accesskey="n" href="gst-plugins-bad-libs-gstmpegtssection.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
+</tr></table>
+<div class="refentry">
+<a name="gst-plugins-bad-libs-gstmpegts"></a><div class="titlepage"></div>
+<div class="refnamediv"><table width="100%"><tr>
+<td valign="top">
+<h2><span class="refentrytitle"><a name="gst-plugins-bad-libs-gstmpegts.top_of_page"></a>gstmpegts</span></h2>
+<p>gstmpegts</p>
+</td>
+<td class="gallery_image" valign="top" align="right"></td>
+</tr></table></div>
+<div class="refsect1">
+<a name="gst-plugins-bad-libs-gstmpegts.functions"></a><h2>Functions</h2>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
+<col width="150px" class="functions_return">
+<col class="functions_name">
+</colgroup>
+<tbody><tr>
+<td class="function_type">
+<span class="returnvalue">void</span>
+</td>
+<td class="function_name">
+<a class="link" href="gst-plugins-bad-libs-gstmpegts.html#gst-mpegts-initialize" title="gst_mpegts_initialize ()">gst_mpegts_initialize</a> <span class="c_punctuation">()</span>
+</td>
+</tr></tbody>
+</table></div>
+</div>
+<div class="refsect1">
+<a name="gst-plugins-bad-libs-gstmpegts.description"></a><h2>Description</h2>
+</div>
+<div class="refsect1">
+<a name="gst-plugins-bad-libs-gstmpegts.functions_details"></a><h2>Functions</h2>
+<div class="refsect2">
+<a name="gst-mpegts-initialize"></a><h3>gst_mpegts_initialize ()</h3>
+<pre class="programlisting"><span class="returnvalue">void</span>
+gst_mpegts_initialize (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
+</div>
+</div>
+<div class="refsect1">
+<a name="gst-plugins-bad-libs-gstmpegts.other_details"></a><h2>Types and Values</h2>
+</div>
+</div>
+<div class="footer">
+<hr>Generated by GTK-Doc V1.25</div>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/libs/html/gst-plugins-bad-libs-gstmpegtsdescriptor.html b/docs/libs/html/gst-plugins-bad-libs-gstmpegtsdescriptor.html
new file mode 100644
index 0000000..40d6ef9
--- /dev/null
+++ b/docs/libs/html/gst-plugins-bad-libs-gstmpegtsdescriptor.html
@@ -0,0 +1,635 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>gstmpegtsdescriptor: GStreamer Bad Plugins 1.0 Library Reference Manual</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
+<link rel="home" href="index.html" title="GStreamer Bad Plugins 1.0 Library Reference Manual">
+<link rel="up" href="mpegts.html" title="Mpeg TS helper library">
+<link rel="prev" href="gst-plugins-bad-libs-gstmpegtssection.html" title="gstmpegtssection">
+<link rel="next" href="gst-plugins-bad-libs-gst-atsc-section.html" title="gst-atsc-section">
+<meta name="generator" content="GTK-Doc V1.25 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="5"><tr valign="middle">
+<td width="100%" align="left" class="shortcuts">
+<a href="#" class="shortcut">Top</a><span id="nav_description"> <span class="dim">|</span>
+ <a href="#gst-plugins-bad-libs-gstmpegtsdescriptor.description" class="shortcut">Description</a></span><span id="nav_hierarchy"> <span class="dim">|</span>
+ <a href="#gst-plugins-bad-libs-gstmpegtsdescriptor.object-hierarchy" class="shortcut">Object Hierarchy</a></span>
+</td>
+<td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
+<td><a accesskey="u" href="mpegts.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
+<td><a accesskey="p" href="gst-plugins-bad-libs-gstmpegtssection.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
+<td><a accesskey="n" href="gst-plugins-bad-libs-gst-atsc-section.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
+</tr></table>
+<div class="refentry">
+<a name="gst-plugins-bad-libs-gstmpegtsdescriptor"></a><div class="titlepage"></div>
+<div class="refnamediv"><table width="100%"><tr>
+<td valign="top">
+<h2><span class="refentrytitle"><a name="gst-plugins-bad-libs-gstmpegtsdescriptor.top_of_page"></a>gstmpegtsdescriptor</span></h2>
+<p>gstmpegtsdescriptor</p>
+</td>
+<td class="gallery_image" valign="top" align="right"></td>
+</tr></table></div>
+<div class="refsect1">
+<a name="gst-plugins-bad-libs-gstmpegtsdescriptor.functions"></a><h2>Functions</h2>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
+<col width="150px" class="functions_return">
+<col class="functions_name">
+</colgroup>
+<tbody>
+<tr>
+<td class="function_type">const <a class="link" href="gst-plugins-bad-libs-gstmpegtsdescriptor.html#GstMpegtsDescriptor"><span class="returnvalue">GstMpegtsDescriptor</span></a> *
+</td>
+<td class="function_name">
+<a class="link" href="gst-plugins-bad-libs-gstmpegtsdescriptor.html#gst-mpegts-find-descriptor" title="gst_mpegts_find_descriptor ()">gst_mpegts_find_descriptor</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<a href="/usr/share/gtk-doc/html/glibglib-Pointer-Arrays.html#GPtrArray"><span class="returnvalue">GPtrArray</span></a> *
+</td>
+<td class="function_name">
+<a class="link" href="gst-plugins-bad-libs-gstmpegtsdescriptor.html#gst-mpegts-parse-descriptors" title="gst_mpegts_parse_descriptors ()">gst_mpegts_parse_descriptors</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<a class="link" href="gst-plugins-bad-libs-gstmpegtsdescriptor.html#GstMpegtsDescriptor"><span class="returnvalue">GstMpegtsDescriptor</span></a> *
+</td>
+<td class="function_name">
+<a class="link" href="gst-plugins-bad-libs-gstmpegtsdescriptor.html#gst-mpegts-descriptor-from-custom" title="gst_mpegts_descriptor_from_custom ()">gst_mpegts_descriptor_from_custom</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<a class="link" href="gst-plugins-bad-libs-gstmpegtsdescriptor.html#GstMpegtsDescriptor"><span class="returnvalue">GstMpegtsDescriptor</span></a> *
+</td>
+<td class="function_name">
+<a class="link" href="gst-plugins-bad-libs-gstmpegtsdescriptor.html#gst-mpegts-descriptor-from-registration" title="gst_mpegts_descriptor_from_registration ()">gst_mpegts_descriptor_from_registration</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
+</td>
+<td class="function_name">
+<a class="link" href="gst-plugins-bad-libs-gstmpegtsdescriptor.html#gst-mpegts-descriptor-parse-iso-639-language" title="gst_mpegts_descriptor_parse_iso_639_language ()">gst_mpegts_descriptor_parse_iso_639_language</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
+</td>
+<td class="function_name">
+<a class="link" href="gst-plugins-bad-libs-gstmpegtsdescriptor.html#gst-mpegts-descriptor-parse-iso-639-language-idx" title="gst_mpegts_descriptor_parse_iso_639_language_idx ()">gst_mpegts_descriptor_parse_iso_639_language_idx</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint"><span class="returnvalue">guint</span></a>
+</td>
+<td class="function_name">
+<a class="link" href="gst-plugins-bad-libs-gstmpegtsdescriptor.html#gst-mpegts-descriptor-parse-iso-639-language-nb" title="gst_mpegts_descriptor_parse_iso_639_language_nb ()">gst_mpegts_descriptor_parse_iso_639_language_nb</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<span class="returnvalue">void</span>
+</td>
+<td class="function_name">
+<a class="link" href="gst-plugins-bad-libs-gstmpegtsdescriptor.html#gst-mpegts-iso-639-language-descriptor-free" title="gst_mpegts_iso_639_language_descriptor_free ()">gst_mpegts_iso_639_language_descriptor_free</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
+</td>
+<td class="function_name">
+<a class="link" href="gst-plugins-bad-libs-gstmpegtsdescriptor.html#gst-mpegts-descriptor-parse-logical-channel" title="gst_mpegts_descriptor_parse_logical_channel ()">gst_mpegts_descriptor_parse_logical_channel</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<a name="GstMpegtsDescriptor"></a><div class="refsect1">
+<a name="gst-plugins-bad-libs-gstmpegtsdescriptor.other"></a><h2>Types and Values</h2>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
+<col width="150px" class="name">
+<col class="description">
+</colgroup>
+<tbody>
+<tr>
+<td class="datatype_keyword">struct</td>
+<td class="function_name"><a class="link" href="gst-plugins-bad-libs-gstmpegtsdescriptor.html#GstMpegtsDescriptor-struct" title="struct GstMpegtsDescriptor">GstMpegtsDescriptor</a></td>
+</tr>
+<tr>
+<td class="datatype_keyword">enum</td>
+<td class="function_name"><a class="link" href="gst-plugins-bad-libs-gstmpegtsdescriptor.html#GstMpegtsDescriptorType" title="enum GstMpegtsDescriptorType">GstMpegtsDescriptorType</a></td>
+</tr>
+<tr>
+<td class="datatype_keyword">enum</td>
+<td class="function_name"><a class="link" href="gst-plugins-bad-libs-gstmpegtsdescriptor.html#GstMpegtsMiscDescriptorType" title="enum GstMpegtsMiscDescriptorType">GstMpegtsMiscDescriptorType</a></td>
+</tr>
+<tr>
+<td class="datatype_keyword">struct</td>
+<td class="function_name"><a class="link" href="gst-plugins-bad-libs-gstmpegtsdescriptor.html#GstMpegtsISO639LanguageDescriptor" title="struct GstMpegtsISO639LanguageDescriptor">GstMpegtsISO639LanguageDescriptor</a></td>
+</tr>
+<tr>
+<td class="datatype_keyword">enum</td>
+<td class="function_name"><a class="link" href="gst-plugins-bad-libs-gstmpegtsdescriptor.html#GstMpegtsIso639AudioType" title="enum GstMpegtsIso639AudioType">GstMpegtsIso639AudioType</a></td>
+</tr>
+<tr>
+<td class="datatype_keyword">struct</td>
+<td class="function_name"><a class="link" href="gst-plugins-bad-libs-gstmpegtsdescriptor.html#GstMpegtsLogicalChannel" title="struct GstMpegtsLogicalChannel">GstMpegtsLogicalChannel</a></td>
+</tr>
+<tr>
+<td class="datatype_keyword">struct</td>
+<td class="function_name"><a class="link" href="gst-plugins-bad-libs-gstmpegtsdescriptor.html#GstMpegtsLogicalChannelDescriptor" title="struct GstMpegtsLogicalChannelDescriptor">GstMpegtsLogicalChannelDescriptor</a></td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<div class="refsect1">
+<a name="gst-plugins-bad-libs-gstmpegtsdescriptor.object-hierarchy"></a><h2>Object Hierarchy</h2>
+<pre class="screen"> <a href="https://developer.gnome.org/gobject/unstable/gobject-Boxed-Types.html">GBoxed</a>
+ <span class="lineart">╰──</span> GstMpegtsDescriptor
+ <a href="https://developer.gnome.org/gobject/unstable/gobject-Enumeration-and-Flag-Types.html">GEnum</a>
+ <span class="lineart">├──</span> GstMpegtsDescriptorType
+ <span class="lineart">╰──</span> GstMpegtsIso639AudioType
+</pre>
+</div>
+<div class="refsect1">
+<a name="gst-plugins-bad-libs-gstmpegtsdescriptor.description"></a><h2>Description</h2>
+</div>
+<div class="refsect1">
+<a name="gst-plugins-bad-libs-gstmpegtsdescriptor.functions_details"></a><h2>Functions</h2>
+<div class="refsect2">
+<a name="gst-mpegts-find-descriptor"></a><h3>gst_mpegts_find_descriptor ()</h3>
+<pre class="programlisting">const <a class="link" href="gst-plugins-bad-libs-gstmpegtsdescriptor.html#GstMpegtsDescriptor"><span class="returnvalue">GstMpegtsDescriptor</span></a> *
+gst_mpegts_find_descriptor (<em class="parameter"><code><a href="/usr/share/gtk-doc/html/glibglib-Pointer-Arrays.html#GPtrArray"><span class="type">GPtrArray</span></a> *descriptors</code></em>,
+ <em class="parameter"><code><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint8"><span class="type">guint8</span></a> tag</code></em>);</pre>
+</div>
+<hr>
+<div class="refsect2">
+<a name="gst-mpegts-parse-descriptors"></a><h3>gst_mpegts_parse_descriptors ()</h3>
+<pre class="programlisting"><a href="/usr/share/gtk-doc/html/glibglib-Pointer-Arrays.html#GPtrArray"><span class="returnvalue">GPtrArray</span></a> *
+gst_mpegts_parse_descriptors (<em class="parameter"><code><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint8"><span class="type">guint8</span></a> *buffer</code></em>,
+ <em class="parameter"><code><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gsize"><span class="type">gsize</span></a> buf_len</code></em>);</pre>
+</div>
+<hr>
+<div class="refsect2">
+<a name="gst-mpegts-descriptor-from-custom"></a><h3>gst_mpegts_descriptor_from_custom ()</h3>
+<pre class="programlisting"><a class="link" href="gst-plugins-bad-libs-gstmpegtsdescriptor.html#GstMpegtsDescriptor"><span class="returnvalue">GstMpegtsDescriptor</span></a> *
+gst_mpegts_descriptor_from_custom (<em class="parameter"><code><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint8"><span class="type">guint8</span></a> tag</code></em>,
+ <em class="parameter"><code>const <a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint8"><span class="type">guint8</span></a> *data</code></em>,
+ <em class="parameter"><code><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gsize"><span class="type">gsize</span></a> length</code></em>);</pre>
+</div>
+<hr>
+<div class="refsect2">
+<a name="gst-mpegts-descriptor-from-registration"></a><h3>gst_mpegts_descriptor_from_registration ()</h3>
+<pre class="programlisting"><a class="link" href="gst-plugins-bad-libs-gstmpegtsdescriptor.html#GstMpegtsDescriptor"><span class="returnvalue">GstMpegtsDescriptor</span></a> *
+gst_mpegts_descriptor_from_registration
+ (<em class="parameter"><code>const <a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *format_identifier</code></em>,
+ <em class="parameter"><code><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint8"><span class="type">guint8</span></a> *additional_info</code></em>,
+ <em class="parameter"><code><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gsize"><span class="type">gsize</span></a> additional_info_length</code></em>);</pre>
+</div>
+<hr>
+<div class="refsect2">
+<a name="gst-mpegts-descriptor-parse-iso-639-language"></a><h3>gst_mpegts_descriptor_parse_iso_639_language ()</h3>
+<pre class="programlisting"><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
+gst_mpegts_descriptor_parse_iso_639_language
+ (<em class="parameter"><code>const <a class="link" href="gst-plugins-bad-libs-gstmpegtsdescriptor.html#GstMpegtsDescriptor"><span class="type">GstMpegtsDescriptor</span></a> *descriptor</code></em>,
+ <em class="parameter"><code><a class="link" href="gst-plugins-bad-libs-gstmpegtsdescriptor.html#GstMpegtsISO639LanguageDescriptor" title="struct GstMpegtsISO639LanguageDescriptor"><span class="type">GstMpegtsISO639LanguageDescriptor</span></a> **res</code></em>);</pre>
+</div>
+<hr>
+<div class="refsect2">
+<a name="gst-mpegts-descriptor-parse-iso-639-language-idx"></a><h3>gst_mpegts_descriptor_parse_iso_639_language_idx ()</h3>
+<pre class="programlisting"><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
+gst_mpegts_descriptor_parse_iso_639_language_idx
+ (<em class="parameter"><code>const <a class="link" href="gst-plugins-bad-libs-gstmpegtsdescriptor.html#GstMpegtsDescriptor"><span class="type">GstMpegtsDescriptor</span></a> *descriptor</code></em>,
+ <em class="parameter"><code><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint"><span class="type">guint</span></a> idx</code></em>,
+ <em class="parameter"><code><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gchar"><span class="type">gchar</span></a> **lang</code></em>,
+ <em class="parameter"><code><a class="link" href="gst-plugins-bad-libs-gstmpegtsdescriptor.html#GstMpegtsIso639AudioType" title="enum GstMpegtsIso639AudioType"><span class="type">GstMpegtsIso639AudioType</span></a> *audio_type</code></em>);</pre>
+</div>
+<hr>
+<div class="refsect2">
+<a name="gst-mpegts-descriptor-parse-iso-639-language-nb"></a><h3>gst_mpegts_descriptor_parse_iso_639_language_nb ()</h3>
+<pre class="programlisting"><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint"><span class="returnvalue">guint</span></a>
+gst_mpegts_descriptor_parse_iso_639_language_nb
+ (<em class="parameter"><code>const <a class="link" href="gst-plugins-bad-libs-gstmpegtsdescriptor.html#GstMpegtsDescriptor"><span class="type">GstMpegtsDescriptor</span></a> *descriptor</code></em>);</pre>
+</div>
+<hr>
+<div class="refsect2">
+<a name="gst-mpegts-iso-639-language-descriptor-free"></a><h3>gst_mpegts_iso_639_language_descriptor_free ()</h3>
+<pre class="programlisting"><span class="returnvalue">void</span>
+gst_mpegts_iso_639_language_descriptor_free
+ (<em class="parameter"><code><a class="link" href="gst-plugins-bad-libs-gstmpegtsdescriptor.html#GstMpegtsISO639LanguageDescriptor" title="struct GstMpegtsISO639LanguageDescriptor"><span class="type">GstMpegtsISO639LanguageDescriptor</span></a> *desc</code></em>);</pre>
+</div>
+<hr>
+<div class="refsect2">
+<a name="gst-mpegts-descriptor-parse-logical-channel"></a><h3>gst_mpegts_descriptor_parse_logical_channel ()</h3>
+<pre class="programlisting"><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
+gst_mpegts_descriptor_parse_logical_channel
+ (<em class="parameter"><code>const <a class="link" href="gst-plugins-bad-libs-gstmpegtsdescriptor.html#GstMpegtsDescriptor"><span class="type">GstMpegtsDescriptor</span></a> *descriptor</code></em>,
+ <em class="parameter"><code><a class="link" href="gst-plugins-bad-libs-gstmpegtsdescriptor.html#GstMpegtsLogicalChannelDescriptor" title="struct GstMpegtsLogicalChannelDescriptor"><span class="type">GstMpegtsLogicalChannelDescriptor</span></a> *res</code></em>);</pre>
+</div>
+</div>
+<div class="refsect1">
+<a name="gst-plugins-bad-libs-gstmpegtsdescriptor.other_details"></a><h2>Types and Values</h2>
+<div class="refsect2">
+<a name="GstMpegtsDescriptor-struct"></a><h3>struct GstMpegtsDescriptor</h3>
+<pre class="programlisting">struct GstMpegtsDescriptor {
+ guint8 tag;
+ guint8 tag_extension;
+ guint8 length;
+ guint8 *data;
+};
+</pre>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstMpegtsDescriptorType"></a><h3>enum GstMpegtsDescriptorType</h3>
+<div class="refsect3">
+<a name="GstMpegtsDescriptorType.members"></a><h4>Members</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
+<col width="300px" class="enum_members_name">
+<col class="enum_members_description">
+<col width="200px" class="enum_members_annotations">
+</colgroup>
+<tbody>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MTS-DESC-RESERVED-00:CAPS"></a>GST_MTS_DESC_RESERVED_00</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MTS-DESC-RESERVED-01:CAPS"></a>GST_MTS_DESC_RESERVED_01</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MTS-DESC-VIDEO-STREAM:CAPS"></a>GST_MTS_DESC_VIDEO_STREAM</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MTS-DESC-AUDIO-STREAM:CAPS"></a>GST_MTS_DESC_AUDIO_STREAM</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MTS-DESC-HIERARCHY:CAPS"></a>GST_MTS_DESC_HIERARCHY</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MTS-DESC-REGISTRATION:CAPS"></a>GST_MTS_DESC_REGISTRATION</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MTS-DESC-DATA-STREAM-ALIGNMENT:CAPS"></a>GST_MTS_DESC_DATA_STREAM_ALIGNMENT</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MTS-DESC-TARGET-BACKGROUND-GRID:CAPS"></a>GST_MTS_DESC_TARGET_BACKGROUND_GRID</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MTS-DESC-VIDEO-WINDOW:CAPS"></a>GST_MTS_DESC_VIDEO_WINDOW</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MTS-DESC-CA:CAPS"></a>GST_MTS_DESC_CA</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MTS-DESC-ISO-639-LANGUAGE:CAPS"></a>GST_MTS_DESC_ISO_639_LANGUAGE</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MTS-DESC-SYSTEM-CLOCK:CAPS"></a>GST_MTS_DESC_SYSTEM_CLOCK</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MTS-DESC-MULTIPLEX-BUFFER-UTILISATION:CAPS"></a>GST_MTS_DESC_MULTIPLEX_BUFFER_UTILISATION</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MTS-DESC-COPYRIGHT:CAPS"></a>GST_MTS_DESC_COPYRIGHT</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MTS-DESC-MAXIMUM-BITRATE:CAPS"></a>GST_MTS_DESC_MAXIMUM_BITRATE</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MTS-DESC-PRIVATE-DATA-INDICATOR:CAPS"></a>GST_MTS_DESC_PRIVATE_DATA_INDICATOR</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MTS-DESC-SMOOTHING-BUFFER:CAPS"></a>GST_MTS_DESC_SMOOTHING_BUFFER</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MTS-DESC-STD:CAPS"></a>GST_MTS_DESC_STD</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MTS-DESC-IBP:CAPS"></a>GST_MTS_DESC_IBP</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MTS-DESC-DSMCC-CAROUSEL-IDENTIFIER:CAPS"></a>GST_MTS_DESC_DSMCC_CAROUSEL_IDENTIFIER</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MTS-DESC-DSMCC-ASSOCIATION-TAG:CAPS"></a>GST_MTS_DESC_DSMCC_ASSOCIATION_TAG</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MTS-DESC-DSMCC-DEFERRED-ASSOCIATION-TAG:CAPS"></a>GST_MTS_DESC_DSMCC_DEFERRED_ASSOCIATION_TAG</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MTS-DESC-DSMCC-NPT-REFERENCE:CAPS"></a>GST_MTS_DESC_DSMCC_NPT_REFERENCE</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MTS-DESC-DSMCC-NPT-ENDPOINT:CAPS"></a>GST_MTS_DESC_DSMCC_NPT_ENDPOINT</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MTS-DESC-DSMCC-STREAM-MODE:CAPS"></a>GST_MTS_DESC_DSMCC_STREAM_MODE</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MTS-DESC-DSMCC-STREAM-EVENT:CAPS"></a>GST_MTS_DESC_DSMCC_STREAM_EVENT</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MTS-DESC-MPEG4-VIDEO:CAPS"></a>GST_MTS_DESC_MPEG4_VIDEO</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MTS-DESC-MPEG4-AUDIO:CAPS"></a>GST_MTS_DESC_MPEG4_AUDIO</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MTS-DESC-IOD:CAPS"></a>GST_MTS_DESC_IOD</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MTS-DESC-SL:CAPS"></a>GST_MTS_DESC_SL</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MTS-DESC-FMC:CAPS"></a>GST_MTS_DESC_FMC</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MTS-DESC-EXTERNAL-ES-ID:CAPS"></a>GST_MTS_DESC_EXTERNAL_ES_ID</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MTS-DESC-MUX-CODE:CAPS"></a>GST_MTS_DESC_MUX_CODE</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MTS-DESC-FMX-BUFFER-SIZE:CAPS"></a>GST_MTS_DESC_FMX_BUFFER_SIZE</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MTS-DESC-MULTIPLEX-BUFFER:CAPS"></a>GST_MTS_DESC_MULTIPLEX_BUFFER</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MTS-DESC-CONTENT-LABELING:CAPS"></a>GST_MTS_DESC_CONTENT_LABELING</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MTS-DESC-METADATA-POINTER:CAPS"></a>GST_MTS_DESC_METADATA_POINTER</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MTS-DESC-METADATA:CAPS"></a>GST_MTS_DESC_METADATA</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MTS-DESC-METADATA-STD:CAPS"></a>GST_MTS_DESC_METADATA_STD</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MTS-DESC-AVC-VIDEO:CAPS"></a>GST_MTS_DESC_AVC_VIDEO</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MTS-DESC-IPMP:CAPS"></a>GST_MTS_DESC_IPMP</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MTS-DESC-AVC-TIMING-AND-HRD:CAPS"></a>GST_MTS_DESC_AVC_TIMING_AND_HRD</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MTS-DESC-MPEG2-AAC-AUDIO:CAPS"></a>GST_MTS_DESC_MPEG2_AAC_AUDIO</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MTS-DESC-FLEX-MUX-TIMING:CAPS"></a>GST_MTS_DESC_FLEX_MUX_TIMING</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MTS-DESC-MPEG4-TEXT:CAPS"></a>GST_MTS_DESC_MPEG4_TEXT</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MTS-DESC-MPEG4-AUDIO-EXTENSION:CAPS"></a>GST_MTS_DESC_MPEG4_AUDIO_EXTENSION</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MTS-DESC-AUXILIARY-VIDEO-STREAM:CAPS"></a>GST_MTS_DESC_AUXILIARY_VIDEO_STREAM</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MTS-DESC-SVC-EXTENSION:CAPS"></a>GST_MTS_DESC_SVC_EXTENSION</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MTS-DESC-MVC-EXTENSION:CAPS"></a>GST_MTS_DESC_MVC_EXTENSION</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MTS-DESC-J2K-VIDEO:CAPS"></a>GST_MTS_DESC_J2K_VIDEO</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MTS-DESC-MVC-OPERATION-POINT:CAPS"></a>GST_MTS_DESC_MVC_OPERATION_POINT</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MTS-DESC-MPEG2-STEREOSCOPIC-VIDEO-FORMAT:CAPS"></a>GST_MTS_DESC_MPEG2_STEREOSCOPIC_VIDEO_FORMAT</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MTS-DESC-STEREOSCOPIC-PROGRAM-INFO:CAPS"></a>GST_MTS_DESC_STEREOSCOPIC_PROGRAM_INFO</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MTS-DESC-STEREOSCOPIC-VIDEO-INFO:CAPS"></a>GST_MTS_DESC_STEREOSCOPIC_VIDEO_INFO</p></td>
+<td> </td>
+<td> </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstMpegtsMiscDescriptorType"></a><h3>enum GstMpegtsMiscDescriptorType</h3>
+<div class="refsect3">
+<a name="GstMpegtsMiscDescriptorType.members"></a><h4>Members</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
+<col width="300px" class="enum_members_name">
+<col class="enum_members_description">
+<col width="200px" class="enum_members_annotations">
+</colgroup>
+<tbody>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MTS-DESC-AC3-AUDIO-STREAM:CAPS"></a>GST_MTS_DESC_AC3_AUDIO_STREAM</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MTS-DESC-DTG-LOGICAL-CHANNEL:CAPS"></a>GST_MTS_DESC_DTG_LOGICAL_CHANNEL</p></td>
+<td> </td>
+<td> </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstMpegtsISO639LanguageDescriptor"></a><h3>struct GstMpegtsISO639LanguageDescriptor</h3>
+<pre class="programlisting">struct GstMpegtsISO639LanguageDescriptor {
+ guint nb_language;
+ gchar *language[64];
+ GstMpegtsIso639AudioType audio_type[64];
+};
+</pre>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstMpegtsIso639AudioType"></a><h3>enum GstMpegtsIso639AudioType</h3>
+<div class="refsect3">
+<a name="GstMpegtsIso639AudioType.members"></a><h4>Members</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
+<col width="300px" class="enum_members_name">
+<col class="enum_members_description">
+<col width="200px" class="enum_members_annotations">
+</colgroup>
+<tbody>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MPEGTS-AUDIO-TYPE-UNDEFINED:CAPS"></a>GST_MPEGTS_AUDIO_TYPE_UNDEFINED</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MPEGTS-AUDIO-TYPE-CLEAN-EFFECTS:CAPS"></a>GST_MPEGTS_AUDIO_TYPE_CLEAN_EFFECTS</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MPEGTS-AUDIO-TYPE-HEARING-IMPAIRED:CAPS"></a>GST_MPEGTS_AUDIO_TYPE_HEARING_IMPAIRED</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MPEGTS-AUDIO-TYPE-VISUAL-IMPAIRED-COMMENTARY:CAPS"></a>GST_MPEGTS_AUDIO_TYPE_VISUAL_IMPAIRED_COMMENTARY</p></td>
+<td> </td>
+<td> </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstMpegtsLogicalChannel"></a><h3>struct GstMpegtsLogicalChannel</h3>
+<pre class="programlisting">struct GstMpegtsLogicalChannel {
+ guint16 service_id;
+ gboolean visible_service;
+ guint16 logical_channel_number;
+};
+</pre>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstMpegtsLogicalChannelDescriptor"></a><h3>struct GstMpegtsLogicalChannelDescriptor</h3>
+<pre class="programlisting">struct GstMpegtsLogicalChannelDescriptor {
+ guint nb_channels;
+ GstMpegtsLogicalChannel channels[64];
+};
+</pre>
+</div>
+</div>
+</div>
+<div class="footer">
+<hr>Generated by GTK-Doc V1.25</div>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/libs/html/gst-plugins-bad-libs-gstmpegtssection.html b/docs/libs/html/gst-plugins-bad-libs-gstmpegtssection.html
new file mode 100644
index 0000000..8af72cd
--- /dev/null
+++ b/docs/libs/html/gst-plugins-bad-libs-gstmpegtssection.html
@@ -0,0 +1,823 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>gstmpegtssection: GStreamer Bad Plugins 1.0 Library Reference Manual</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
+<link rel="home" href="index.html" title="GStreamer Bad Plugins 1.0 Library Reference Manual">
+<link rel="up" href="mpegts.html" title="Mpeg TS helper library">
+<link rel="prev" href="gst-plugins-bad-libs-gstmpegts.html" title="gstmpegts">
+<link rel="next" href="gst-plugins-bad-libs-gstmpegtsdescriptor.html" title="gstmpegtsdescriptor">
+<meta name="generator" content="GTK-Doc V1.25 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="5"><tr valign="middle">
+<td width="100%" align="left" class="shortcuts">
+<a href="#" class="shortcut">Top</a><span id="nav_description"> <span class="dim">|</span>
+ <a href="#gst-plugins-bad-libs-gstmpegtssection.description" class="shortcut">Description</a></span><span id="nav_hierarchy"> <span class="dim">|</span>
+ <a href="#gst-plugins-bad-libs-gstmpegtssection.object-hierarchy" class="shortcut">Object Hierarchy</a></span>
+</td>
+<td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
+<td><a accesskey="u" href="mpegts.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
+<td><a accesskey="p" href="gst-plugins-bad-libs-gstmpegts.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
+<td><a accesskey="n" href="gst-plugins-bad-libs-gstmpegtsdescriptor.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
+</tr></table>
+<div class="refentry">
+<a name="gst-plugins-bad-libs-gstmpegtssection"></a><div class="titlepage"></div>
+<div class="refnamediv"><table width="100%"><tr>
+<td valign="top">
+<h2><span class="refentrytitle"><a name="gst-plugins-bad-libs-gstmpegtssection.top_of_page"></a>gstmpegtssection</span></h2>
+<p>gstmpegtssection</p>
+</td>
+<td class="gallery_image" valign="top" align="right"></td>
+</tr></table></div>
+<div class="refsect1">
+<a name="gst-plugins-bad-libs-gstmpegtssection.functions"></a><h2>Functions</h2>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
+<col width="150px" class="functions_return">
+<col class="functions_name">
+</colgroup>
+<tbody>
+<tr>
+<td class="define_keyword">#define</td>
+<td class="function_name">
+<a class="link" href="gst-plugins-bad-libs-gstmpegtssection.html#GST-MPEGTS-SECTION-TYPE:CAPS" title="GST_MPEGTS_SECTION_TYPE()">GST_MPEGTS_SECTION_TYPE</a><span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<a href="/usr/share/gtk-doc/html/gstreamer-1.0GstMessage.html#GstMessage-struct"><span class="returnvalue">GstMessage</span></a> *
+</td>
+<td class="function_name">
+<a class="link" href="gst-plugins-bad-libs-gstmpegtssection.html#gst-message-new-mpegts-section" title="gst_message_new_mpegts_section ()">gst_message_new_mpegts_section</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<a class="link" href="gst-plugins-bad-libs-gstmpegtssection.html#GstMpegtsSection"><span class="returnvalue">GstMpegtsSection</span></a> *
+</td>
+<td class="function_name">
+<a class="link" href="gst-plugins-bad-libs-gstmpegtssection.html#gst-message-parse-mpegts-section" title="gst_message_parse_mpegts_section ()">gst_message_parse_mpegts_section</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
+</td>
+<td class="function_name">
+<a class="link" href="gst-plugins-bad-libs-gstmpegtssection.html#gst-mpegts-section-send-event" title="gst_mpegts_section_send_event ()">gst_mpegts_section_send_event</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<a class="link" href="gst-plugins-bad-libs-gstmpegtssection.html#GstMpegtsSection"><span class="returnvalue">GstMpegtsSection</span></a> *
+</td>
+<td class="function_name">
+<a class="link" href="gst-plugins-bad-libs-gstmpegtssection.html#gst-event-parse-mpegts-section" title="gst_event_parse_mpegts_section ()">gst_event_parse_mpegts_section</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint8"><span class="returnvalue">guint8</span></a> *
+</td>
+<td class="function_name">
+<a class="link" href="gst-plugins-bad-libs-gstmpegtssection.html#gst-mpegts-section-packetize" title="gst_mpegts_section_packetize ()">gst_mpegts_section_packetize</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<a class="link" href="gst-plugins-bad-libs-gstmpegtssection.html#GstMpegtsSection"><span class="returnvalue">GstMpegtsSection</span></a> *
+</td>
+<td class="function_name">
+<a class="link" href="gst-plugins-bad-libs-gstmpegtssection.html#gst-mpegts-section-new" title="gst_mpegts_section_new ()">gst_mpegts_section_new</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="define_keyword">#define</td>
+<td class="function_name">
+<a class="link" href="gst-plugins-bad-libs-gstmpegtssection.html#gst-mpegts-section-ref" title="gst_mpegts_section_ref()">gst_mpegts_section_ref</a><span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="define_keyword">#define</td>
+<td class="function_name">
+<a class="link" href="gst-plugins-bad-libs-gstmpegtssection.html#gst-mpegts-section-unref" title="gst_mpegts_section_unref()">gst_mpegts_section_unref</a><span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<a href="/usr/share/gtk-doc/html/glibglib-Pointer-Arrays.html#GPtrArray"><span class="returnvalue">GPtrArray</span></a> *
+</td>
+<td class="function_name">
+<a class="link" href="gst-plugins-bad-libs-gstmpegtssection.html#gst-mpegts-section-get-pat" title="gst_mpegts_section_get_pat ()">gst_mpegts_section_get_pat</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<a href="/usr/share/gtk-doc/html/glibglib-Pointer-Arrays.html#GPtrArray"><span class="returnvalue">GPtrArray</span></a> *
+</td>
+<td class="function_name">
+<a class="link" href="gst-plugins-bad-libs-gstmpegtssection.html#gst-mpegts-pat-new" title="gst_mpegts_pat_new ()">gst_mpegts_pat_new</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<a class="link" href="gst-plugins-bad-libs-gstmpegtssection.html#GstMpegtsPatProgram" title="struct GstMpegtsPatProgram"><span class="returnvalue">GstMpegtsPatProgram</span></a> *
+</td>
+<td class="function_name">
+<a class="link" href="gst-plugins-bad-libs-gstmpegtssection.html#gst-mpegts-pat-program-new" title="gst_mpegts_pat_program_new ()">gst_mpegts_pat_program_new</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<a class="link" href="gst-plugins-bad-libs-gstmpegtssection.html#GstMpegtsSection"><span class="returnvalue">GstMpegtsSection</span></a> *
+</td>
+<td class="function_name">
+<a class="link" href="gst-plugins-bad-libs-gstmpegtssection.html#gst-mpegts-section-from-pat" title="gst_mpegts_section_from_pat ()">gst_mpegts_section_from_pat</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">const <a class="link" href="gst-plugins-bad-libs-gstmpegtssection.html#GstMpegtsPMT" title="struct GstMpegtsPMT"><span class="returnvalue">GstMpegtsPMT</span></a> *
+</td>
+<td class="function_name">
+<a class="link" href="gst-plugins-bad-libs-gstmpegtssection.html#gst-mpegts-section-get-pmt" title="gst_mpegts_section_get_pmt ()">gst_mpegts_section_get_pmt</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<a class="link" href="gst-plugins-bad-libs-gstmpegtssection.html#GstMpegtsPMT" title="struct GstMpegtsPMT"><span class="returnvalue">GstMpegtsPMT</span></a> *
+</td>
+<td class="function_name">
+<a class="link" href="gst-plugins-bad-libs-gstmpegtssection.html#gst-mpegts-pmt-new" title="gst_mpegts_pmt_new ()">gst_mpegts_pmt_new</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<a class="link" href="gst-plugins-bad-libs-gstmpegtssection.html#GstMpegtsPMTStream" title="struct GstMpegtsPMTStream"><span class="returnvalue">GstMpegtsPMTStream</span></a> *
+</td>
+<td class="function_name">
+<a class="link" href="gst-plugins-bad-libs-gstmpegtssection.html#gst-mpegts-pmt-stream-new" title="gst_mpegts_pmt_stream_new ()">gst_mpegts_pmt_stream_new</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<a class="link" href="gst-plugins-bad-libs-gstmpegtssection.html#GstMpegtsSection"><span class="returnvalue">GstMpegtsSection</span></a> *
+</td>
+<td class="function_name">
+<a class="link" href="gst-plugins-bad-libs-gstmpegtssection.html#gst-mpegts-section-from-pmt" title="gst_mpegts_section_from_pmt ()">gst_mpegts_section_from_pmt</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<a href="/usr/share/gtk-doc/html/glibglib-Pointer-Arrays.html#GPtrArray"><span class="returnvalue">GPtrArray</span></a> *
+</td>
+<td class="function_name">
+<a class="link" href="gst-plugins-bad-libs-gstmpegtssection.html#gst-mpegts-section-get-tsdt" title="gst_mpegts_section_get_tsdt ()">gst_mpegts_section_get_tsdt</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<a href="/usr/share/gtk-doc/html/glibglib-Pointer-Arrays.html#GPtrArray"><span class="returnvalue">GPtrArray</span></a> *
+</td>
+<td class="function_name">
+<a class="link" href="gst-plugins-bad-libs-gstmpegtssection.html#gst-mpegts-section-get-cat" title="gst_mpegts_section_get_cat ()">gst_mpegts_section_get_cat</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<a name="GstMpegtsSection"></a><div class="refsect1">
+<a name="gst-plugins-bad-libs-gstmpegtssection.other"></a><h2>Types and Values</h2>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
+<col width="150px" class="name">
+<col class="description">
+</colgroup>
+<tbody>
+<tr>
+<td class="datatype_keyword">struct</td>
+<td class="function_name"><a class="link" href="gst-plugins-bad-libs-gstmpegtssection.html#GstMpegtsSection-struct" title="struct GstMpegtsSection">GstMpegtsSection</a></td>
+</tr>
+<tr>
+<td class="datatype_keyword">enum</td>
+<td class="function_name"><a class="link" href="gst-plugins-bad-libs-gstmpegtssection.html#GstMpegtsSectionTableID" title="enum GstMpegtsSectionTableID">GstMpegtsSectionTableID</a></td>
+</tr>
+<tr>
+<td class="datatype_keyword">enum</td>
+<td class="function_name"><a class="link" href="gst-plugins-bad-libs-gstmpegtssection.html#GstMpegtsSectionType" title="enum GstMpegtsSectionType">GstMpegtsSectionType</a></td>
+</tr>
+<tr>
+<td class="datatype_keyword">struct</td>
+<td class="function_name"><a class="link" href="gst-plugins-bad-libs-gstmpegtssection.html#GstMpegtsPatProgram" title="struct GstMpegtsPatProgram">GstMpegtsPatProgram</a></td>
+</tr>
+<tr>
+<td class="datatype_keyword">struct</td>
+<td class="function_name"><a class="link" href="gst-plugins-bad-libs-gstmpegtssection.html#GstMpegtsPMT" title="struct GstMpegtsPMT">GstMpegtsPMT</a></td>
+</tr>
+<tr>
+<td class="datatype_keyword">struct</td>
+<td class="function_name"><a class="link" href="gst-plugins-bad-libs-gstmpegtssection.html#GstMpegtsPMTStream" title="struct GstMpegtsPMTStream">GstMpegtsPMTStream</a></td>
+</tr>
+<tr>
+<td class="datatype_keyword">enum</td>
+<td class="function_name"><a class="link" href="gst-plugins-bad-libs-gstmpegtssection.html#GstMpegtsStreamType" title="enum GstMpegtsStreamType">GstMpegtsStreamType</a></td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<div class="refsect1">
+<a name="gst-plugins-bad-libs-gstmpegtssection.object-hierarchy"></a><h2>Object Hierarchy</h2>
+<pre class="screen"> <a href="https://developer.gnome.org/gobject/unstable/gobject-Boxed-Types.html">GBoxed</a>
+ <span class="lineart">╰──</span> GstMpegtsSection
+ <a href="https://developer.gnome.org/gobject/unstable/gobject-Enumeration-and-Flag-Types.html">GEnum</a>
+ <span class="lineart">├──</span> GstMpegtsSectionTableID
+ <span class="lineart">├──</span> GstMpegtsSectionType
+ <span class="lineart">╰──</span> GstMpegtsStreamType
+</pre>
+</div>
+<div class="refsect1">
+<a name="gst-plugins-bad-libs-gstmpegtssection.description"></a><h2>Description</h2>
+</div>
+<div class="refsect1">
+<a name="gst-plugins-bad-libs-gstmpegtssection.functions_details"></a><h2>Functions</h2>
+<div class="refsect2">
+<a name="GST-MPEGTS-SECTION-TYPE:CAPS"></a><h3>GST_MPEGTS_SECTION_TYPE()</h3>
+<pre class="programlisting">#define GST_MPEGTS_SECTION_TYPE(section) (GST_MPEGTS_SECTION (section)->section_type)
+</pre>
+</div>
+<hr>
+<div class="refsect2">
+<a name="gst-message-new-mpegts-section"></a><h3>gst_message_new_mpegts_section ()</h3>
+<pre class="programlisting"><a href="/usr/share/gtk-doc/html/gstreamer-1.0GstMessage.html#GstMessage-struct"><span class="returnvalue">GstMessage</span></a> *
+gst_message_new_mpegts_section (<em class="parameter"><code><a href="/usr/share/gtk-doc/html/gstreamer-1.0GstObject.html#GstObject-struct"><span class="type">GstObject</span></a> *parent</code></em>,
+ <em class="parameter"><code><a class="link" href="gst-plugins-bad-libs-gstmpegtssection.html#GstMpegtsSection"><span class="type">GstMpegtsSection</span></a> *section</code></em>);</pre>
+</div>
+<hr>
+<div class="refsect2">
+<a name="gst-message-parse-mpegts-section"></a><h3>gst_message_parse_mpegts_section ()</h3>
+<pre class="programlisting"><a class="link" href="gst-plugins-bad-libs-gstmpegtssection.html#GstMpegtsSection"><span class="returnvalue">GstMpegtsSection</span></a> *
+gst_message_parse_mpegts_section (<em class="parameter"><code><a href="/usr/share/gtk-doc/html/gstreamer-1.0GstMessage.html#GstMessage-struct"><span class="type">GstMessage</span></a> *message</code></em>);</pre>
+</div>
+<hr>
+<div class="refsect2">
+<a name="gst-mpegts-section-send-event"></a><h3>gst_mpegts_section_send_event ()</h3>
+<pre class="programlisting"><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
+gst_mpegts_section_send_event (<em class="parameter"><code><a class="link" href="gst-plugins-bad-libs-gstmpegtssection.html#GstMpegtsSection"><span class="type">GstMpegtsSection</span></a> *section</code></em>,
+ <em class="parameter"><code><a href="/usr/share/gtk-doc/html/gstreamer-1.0GstElement.html#GstElement-struct"><span class="type">GstElement</span></a> *element</code></em>);</pre>
+</div>
+<hr>
+<div class="refsect2">
+<a name="gst-event-parse-mpegts-section"></a><h3>gst_event_parse_mpegts_section ()</h3>
+<pre class="programlisting"><a class="link" href="gst-plugins-bad-libs-gstmpegtssection.html#GstMpegtsSection"><span class="returnvalue">GstMpegtsSection</span></a> *
+gst_event_parse_mpegts_section (<em class="parameter"><code><a href="/usr/share/gtk-doc/html/gstreamer-1.0GstEvent.html#GstEvent-struct"><span class="type">GstEvent</span></a> *event</code></em>);</pre>
+</div>
+<hr>
+<div class="refsect2">
+<a name="gst-mpegts-section-packetize"></a><h3>gst_mpegts_section_packetize ()</h3>
+<pre class="programlisting"><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint8"><span class="returnvalue">guint8</span></a> *
+gst_mpegts_section_packetize (<em class="parameter"><code><a class="link" href="gst-plugins-bad-libs-gstmpegtssection.html#GstMpegtsSection"><span class="type">GstMpegtsSection</span></a> *section</code></em>,
+ <em class="parameter"><code><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gsize"><span class="type">gsize</span></a> *output_size</code></em>);</pre>
+</div>
+<hr>
+<div class="refsect2">
+<a name="gst-mpegts-section-new"></a><h3>gst_mpegts_section_new ()</h3>
+<pre class="programlisting"><a class="link" href="gst-plugins-bad-libs-gstmpegtssection.html#GstMpegtsSection"><span class="returnvalue">GstMpegtsSection</span></a> *
+gst_mpegts_section_new (<em class="parameter"><code><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint16"><span class="type">guint16</span></a> pid</code></em>,
+ <em class="parameter"><code><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint8"><span class="type">guint8</span></a> *data</code></em>,
+ <em class="parameter"><code><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gsize"><span class="type">gsize</span></a> data_size</code></em>);</pre>
+</div>
+<hr>
+<div class="refsect2">
+<a name="gst-mpegts-section-ref"></a><h3>gst_mpegts_section_ref()</h3>
+<pre class="programlisting">#define gst_mpegts_section_ref(section) ((GstMpegtsSection*) gst_mini_object_ref (GST_MINI_OBJECT_CAST (section)))
+</pre>
+</div>
+<hr>
+<div class="refsect2">
+<a name="gst-mpegts-section-unref"></a><h3>gst_mpegts_section_unref()</h3>
+<pre class="programlisting">#define gst_mpegts_section_unref(section) (gst_mini_object_unref (GST_MINI_OBJECT_CAST (section)))
+</pre>
+</div>
+<hr>
+<div class="refsect2">
+<a name="gst-mpegts-section-get-pat"></a><h3>gst_mpegts_section_get_pat ()</h3>
+<pre class="programlisting"><a href="/usr/share/gtk-doc/html/glibglib-Pointer-Arrays.html#GPtrArray"><span class="returnvalue">GPtrArray</span></a> *
+gst_mpegts_section_get_pat (<em class="parameter"><code><a class="link" href="gst-plugins-bad-libs-gstmpegtssection.html#GstMpegtsSection"><span class="type">GstMpegtsSection</span></a> *section</code></em>);</pre>
+</div>
+<hr>
+<div class="refsect2">
+<a name="gst-mpegts-pat-new"></a><h3>gst_mpegts_pat_new ()</h3>
+<pre class="programlisting"><a href="/usr/share/gtk-doc/html/glibglib-Pointer-Arrays.html#GPtrArray"><span class="returnvalue">GPtrArray</span></a> *
+gst_mpegts_pat_new (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
+</div>
+<hr>
+<div class="refsect2">
+<a name="gst-mpegts-pat-program-new"></a><h3>gst_mpegts_pat_program_new ()</h3>
+<pre class="programlisting"><a class="link" href="gst-plugins-bad-libs-gstmpegtssection.html#GstMpegtsPatProgram" title="struct GstMpegtsPatProgram"><span class="returnvalue">GstMpegtsPatProgram</span></a> *
+gst_mpegts_pat_program_new (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
+</div>
+<hr>
+<div class="refsect2">
+<a name="gst-mpegts-section-from-pat"></a><h3>gst_mpegts_section_from_pat ()</h3>
+<pre class="programlisting"><a class="link" href="gst-plugins-bad-libs-gstmpegtssection.html#GstMpegtsSection"><span class="returnvalue">GstMpegtsSection</span></a> *
+gst_mpegts_section_from_pat (<em class="parameter"><code><a href="/usr/share/gtk-doc/html/glibglib-Pointer-Arrays.html#GPtrArray"><span class="type">GPtrArray</span></a> *programs</code></em>,
+ <em class="parameter"><code><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint16"><span class="type">guint16</span></a> ts_id</code></em>);</pre>
+</div>
+<hr>
+<div class="refsect2">
+<a name="gst-mpegts-section-get-pmt"></a><h3>gst_mpegts_section_get_pmt ()</h3>
+<pre class="programlisting">const <a class="link" href="gst-plugins-bad-libs-gstmpegtssection.html#GstMpegtsPMT" title="struct GstMpegtsPMT"><span class="returnvalue">GstMpegtsPMT</span></a> *
+gst_mpegts_section_get_pmt (<em class="parameter"><code><a class="link" href="gst-plugins-bad-libs-gstmpegtssection.html#GstMpegtsSection"><span class="type">GstMpegtsSection</span></a> *section</code></em>);</pre>
+</div>
+<hr>
+<div class="refsect2">
+<a name="gst-mpegts-pmt-new"></a><h3>gst_mpegts_pmt_new ()</h3>
+<pre class="programlisting"><a class="link" href="gst-plugins-bad-libs-gstmpegtssection.html#GstMpegtsPMT" title="struct GstMpegtsPMT"><span class="returnvalue">GstMpegtsPMT</span></a> *
+gst_mpegts_pmt_new (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
+</div>
+<hr>
+<div class="refsect2">
+<a name="gst-mpegts-pmt-stream-new"></a><h3>gst_mpegts_pmt_stream_new ()</h3>
+<pre class="programlisting"><a class="link" href="gst-plugins-bad-libs-gstmpegtssection.html#GstMpegtsPMTStream" title="struct GstMpegtsPMTStream"><span class="returnvalue">GstMpegtsPMTStream</span></a> *
+gst_mpegts_pmt_stream_new (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
+</div>
+<hr>
+<div class="refsect2">
+<a name="gst-mpegts-section-from-pmt"></a><h3>gst_mpegts_section_from_pmt ()</h3>
+<pre class="programlisting"><a class="link" href="gst-plugins-bad-libs-gstmpegtssection.html#GstMpegtsSection"><span class="returnvalue">GstMpegtsSection</span></a> *
+gst_mpegts_section_from_pmt (<em class="parameter"><code><a class="link" href="gst-plugins-bad-libs-gstmpegtssection.html#GstMpegtsPMT" title="struct GstMpegtsPMT"><span class="type">GstMpegtsPMT</span></a> *pmt</code></em>,
+ <em class="parameter"><code><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint16"><span class="type">guint16</span></a> pid</code></em>);</pre>
+</div>
+<hr>
+<div class="refsect2">
+<a name="gst-mpegts-section-get-tsdt"></a><h3>gst_mpegts_section_get_tsdt ()</h3>
+<pre class="programlisting"><a href="/usr/share/gtk-doc/html/glibglib-Pointer-Arrays.html#GPtrArray"><span class="returnvalue">GPtrArray</span></a> *
+gst_mpegts_section_get_tsdt (<em class="parameter"><code><a class="link" href="gst-plugins-bad-libs-gstmpegtssection.html#GstMpegtsSection"><span class="type">GstMpegtsSection</span></a> *section</code></em>);</pre>
+</div>
+<hr>
+<div class="refsect2">
+<a name="gst-mpegts-section-get-cat"></a><h3>gst_mpegts_section_get_cat ()</h3>
+<pre class="programlisting"><a href="/usr/share/gtk-doc/html/glibglib-Pointer-Arrays.html#GPtrArray"><span class="returnvalue">GPtrArray</span></a> *
+gst_mpegts_section_get_cat (<em class="parameter"><code><a class="link" href="gst-plugins-bad-libs-gstmpegtssection.html#GstMpegtsSection"><span class="type">GstMpegtsSection</span></a> *section</code></em>);</pre>
+</div>
+</div>
+<div class="refsect1">
+<a name="gst-plugins-bad-libs-gstmpegtssection.other_details"></a><h2>Types and Values</h2>
+<div class="refsect2">
+<a name="GstMpegtsSection-struct"></a><h3>struct GstMpegtsSection</h3>
+<pre class="programlisting">struct GstMpegtsSection {
+ GstMpegtsSectionType section_type;
+
+ guint16 pid;
+ guint8 table_id;
+
+ guint16 subtable_extension;
+ guint8 version_number;
+
+ gboolean current_next_indicator;
+
+ guint8 section_number;
+ guint8 last_section_number;
+
+ guint32 crc;
+};
+</pre>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstMpegtsSectionTableID"></a><h3>enum GstMpegtsSectionTableID</h3>
+<div class="refsect3">
+<a name="GstMpegtsSectionTableID.members"></a><h4>Members</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
+<col width="300px" class="enum_members_name">
+<col class="enum_members_description">
+<col width="200px" class="enum_members_annotations">
+</colgroup>
+<tbody>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MTS-TABLE-ID-PROGRAM-ASSOCIATION:CAPS"></a>GST_MTS_TABLE_ID_PROGRAM_ASSOCIATION</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MTS-TABLE-ID-CONDITIONAL-ACCESS:CAPS"></a>GST_MTS_TABLE_ID_CONDITIONAL_ACCESS</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MTS-TABLE-ID-TS-PROGRAM-MAP:CAPS"></a>GST_MTS_TABLE_ID_TS_PROGRAM_MAP</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MTS-TABLE-ID-TS-DESCRIPTION:CAPS"></a>GST_MTS_TABLE_ID_TS_DESCRIPTION</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MTS-TABLE-ID-14496-SCENE-DESCRIPTION:CAPS"></a>GST_MTS_TABLE_ID_14496_SCENE_DESCRIPTION</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MTS-TABLE-ID-14496-OBJET-DESCRIPTOR:CAPS"></a>GST_MTS_TABLE_ID_14496_OBJET_DESCRIPTOR</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MTS-TABLE-ID-METADATA:CAPS"></a>GST_MTS_TABLE_ID_METADATA</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MTS-TABLE-ID-IPMP-CONTROL-INFORMATION:CAPS"></a>GST_MTS_TABLE_ID_IPMP_CONTROL_INFORMATION</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MTS-TABLE-ID-DSM-CC-MULTIPROTO-ENCAPSULATED-DATA:CAPS"></a>GST_MTS_TABLE_ID_DSM_CC_MULTIPROTO_ENCAPSULATED_DATA</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MTS-TABLE-ID-DSM-CC-U-N-MESSAGES:CAPS"></a>GST_MTS_TABLE_ID_DSM_CC_U_N_MESSAGES</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MTS-TABLE-ID-DSM-CC-DOWNLOAD-DATA-MESSAGES:CAPS"></a>GST_MTS_TABLE_ID_DSM_CC_DOWNLOAD_DATA_MESSAGES</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MTS-TABLE-ID-DSM-CC-STREAM-DESCRIPTORS:CAPS"></a>GST_MTS_TABLE_ID_DSM_CC_STREAM_DESCRIPTORS</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MTS-TABLE-ID-DSM-CC-PRIVATE-DATA:CAPS"></a>GST_MTS_TABLE_ID_DSM_CC_PRIVATE_DATA</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MTS-TABLE-ID-DSM-CC-ADDRESSABLE-SECTIONS:CAPS"></a>GST_MTS_TABLE_ID_DSM_CC_ADDRESSABLE_SECTIONS</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MTS-TABLE-ID-UNSET:CAPS"></a>GST_MTS_TABLE_ID_UNSET</p></td>
+<td> </td>
+<td> </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstMpegtsSectionType"></a><h3>enum GstMpegtsSectionType</h3>
+<div class="refsect3">
+<a name="GstMpegtsSectionType.members"></a><h4>Members</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
+<col width="300px" class="enum_members_name">
+<col class="enum_members_description">
+<col width="200px" class="enum_members_annotations">
+</colgroup>
+<tbody>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MPEGTS-SECTION-UNKNOWN:CAPS"></a>GST_MPEGTS_SECTION_UNKNOWN</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MPEGTS-SECTION-PAT:CAPS"></a>GST_MPEGTS_SECTION_PAT</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MPEGTS-SECTION-PMT:CAPS"></a>GST_MPEGTS_SECTION_PMT</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MPEGTS-SECTION-CAT:CAPS"></a>GST_MPEGTS_SECTION_CAT</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MPEGTS-SECTION-TSDT:CAPS"></a>GST_MPEGTS_SECTION_TSDT</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MPEGTS-SECTION-EIT:CAPS"></a>GST_MPEGTS_SECTION_EIT</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MPEGTS-SECTION-NIT:CAPS"></a>GST_MPEGTS_SECTION_NIT</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MPEGTS-SECTION-BAT:CAPS"></a>GST_MPEGTS_SECTION_BAT</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MPEGTS-SECTION-SDT:CAPS"></a>GST_MPEGTS_SECTION_SDT</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MPEGTS-SECTION-TDT:CAPS"></a>GST_MPEGTS_SECTION_TDT</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MPEGTS-SECTION-TOT:CAPS"></a>GST_MPEGTS_SECTION_TOT</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MPEGTS-SECTION-ATSC-TVCT:CAPS"></a>GST_MPEGTS_SECTION_ATSC_TVCT</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MPEGTS-SECTION-ATSC-CVCT:CAPS"></a>GST_MPEGTS_SECTION_ATSC_CVCT</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MPEGTS-SECTION-ATSC-MGT:CAPS"></a>GST_MPEGTS_SECTION_ATSC_MGT</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MPEGTS-SECTION-ATSC-ETT:CAPS"></a>GST_MPEGTS_SECTION_ATSC_ETT</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MPEGTS-SECTION-ATSC-EIT:CAPS"></a>GST_MPEGTS_SECTION_ATSC_EIT</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MPEGTS-SECTION-ATSC-STT:CAPS"></a>GST_MPEGTS_SECTION_ATSC_STT</p></td>
+<td> </td>
+<td> </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstMpegtsPatProgram"></a><h3>struct GstMpegtsPatProgram</h3>
+<pre class="programlisting">struct GstMpegtsPatProgram {
+ guint16 program_number;
+ guint16 network_or_program_map_PID;
+};
+</pre>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstMpegtsPMT"></a><h3>struct GstMpegtsPMT</h3>
+<pre class="programlisting">struct GstMpegtsPMT {
+ guint16 pcr_pid;
+ guint16 program_number;
+
+ GPtrArray *descriptors;
+ GPtrArray *streams;
+};
+</pre>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstMpegtsPMTStream"></a><h3>struct GstMpegtsPMTStream</h3>
+<pre class="programlisting">struct GstMpegtsPMTStream {
+ guint8 stream_type;
+ guint16 pid;
+
+ GPtrArray *descriptors;
+};
+</pre>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstMpegtsStreamType"></a><h3>enum GstMpegtsStreamType</h3>
+<div class="refsect3">
+<a name="GstMpegtsStreamType.members"></a><h4>Members</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
+<col width="300px" class="enum_members_name">
+<col class="enum_members_description">
+<col width="200px" class="enum_members_annotations">
+</colgroup>
+<tbody>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MPEGTS-STREAM-TYPE-RESERVED-00:CAPS"></a>GST_MPEGTS_STREAM_TYPE_RESERVED_00</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MPEGTS-STREAM-TYPE-VIDEO-MPEG1:CAPS"></a>GST_MPEGTS_STREAM_TYPE_VIDEO_MPEG1</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MPEGTS-STREAM-TYPE-VIDEO-MPEG2:CAPS"></a>GST_MPEGTS_STREAM_TYPE_VIDEO_MPEG2</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MPEGTS-STREAM-TYPE-AUDIO-MPEG1:CAPS"></a>GST_MPEGTS_STREAM_TYPE_AUDIO_MPEG1</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MPEGTS-STREAM-TYPE-AUDIO-MPEG2:CAPS"></a>GST_MPEGTS_STREAM_TYPE_AUDIO_MPEG2</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MPEGTS-STREAM-TYPE-PRIVATE-SECTIONS:CAPS"></a>GST_MPEGTS_STREAM_TYPE_PRIVATE_SECTIONS</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MPEGTS-STREAM-TYPE-PRIVATE-PES-PACKETS:CAPS"></a>GST_MPEGTS_STREAM_TYPE_PRIVATE_PES_PACKETS</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MPEGTS-STREAM-TYPE-MHEG:CAPS"></a>GST_MPEGTS_STREAM_TYPE_MHEG</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MPEGTS-STREAM-TYPE-DSM-CC:CAPS"></a>GST_MPEGTS_STREAM_TYPE_DSM_CC</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MPEGTS-STREAM-TYPE-H-222-1:CAPS"></a>GST_MPEGTS_STREAM_TYPE_H_222_1</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MPEGTS-STREAM-TYPE-DSMCC-A:CAPS"></a>GST_MPEGTS_STREAM_TYPE_DSMCC_A</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MPEGTS-STREAM-TYPE-DSMCC-B:CAPS"></a>GST_MPEGTS_STREAM_TYPE_DSMCC_B</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MPEGTS-STREAM-TYPE-DSMCC-C:CAPS"></a>GST_MPEGTS_STREAM_TYPE_DSMCC_C</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MPEGTS-STREAM-TYPE-DSMCC-D:CAPS"></a>GST_MPEGTS_STREAM_TYPE_DSMCC_D</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MPEGTS-STREAM-TYPE-AUXILIARY:CAPS"></a>GST_MPEGTS_STREAM_TYPE_AUXILIARY</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MPEGTS-STREAM-TYPE-AUDIO-AAC-ADTS:CAPS"></a>GST_MPEGTS_STREAM_TYPE_AUDIO_AAC_ADTS</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MPEGTS-STREAM-TYPE-VIDEO-MPEG4:CAPS"></a>GST_MPEGTS_STREAM_TYPE_VIDEO_MPEG4</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MPEGTS-STREAM-TYPE-AUDIO-AAC-LATM:CAPS"></a>GST_MPEGTS_STREAM_TYPE_AUDIO_AAC_LATM</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MPEGTS-STREAM-TYPE-SL-FLEXMUX-PES-PACKETS:CAPS"></a>GST_MPEGTS_STREAM_TYPE_SL_FLEXMUX_PES_PACKETS</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MPEGTS-STREAM-TYPE-SL-FLEXMUX-SECTIONS:CAPS"></a>GST_MPEGTS_STREAM_TYPE_SL_FLEXMUX_SECTIONS</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MPEGTS-STREAM-TYPE-SYNCHRONIZED-DOWNLOAD:CAPS"></a>GST_MPEGTS_STREAM_TYPE_SYNCHRONIZED_DOWNLOAD</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MPEGTS-STREAM-TYPE-METADATA-PES-PACKETS:CAPS"></a>GST_MPEGTS_STREAM_TYPE_METADATA_PES_PACKETS</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MPEGTS-STREAM-TYPE-METADATA-SECTIONS:CAPS"></a>GST_MPEGTS_STREAM_TYPE_METADATA_SECTIONS</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MPEGTS-STREAM-TYPE-METADATA-DATA-CAROUSEL:CAPS"></a>GST_MPEGTS_STREAM_TYPE_METADATA_DATA_CAROUSEL</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MPEGTS-STREAM-TYPE-METADATA-OBJECT-CAROUSEL:CAPS"></a>GST_MPEGTS_STREAM_TYPE_METADATA_OBJECT_CAROUSEL</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MPEGTS-STREAM-TYPE-METADATA-SYNCHRONIZED-DOWNLOAD:CAPS"></a>GST_MPEGTS_STREAM_TYPE_METADATA_SYNCHRONIZED_DOWNLOAD</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MPEGTS-STREAM-TYPE-MPEG2-IPMP:CAPS"></a>GST_MPEGTS_STREAM_TYPE_MPEG2_IPMP</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MPEGTS-STREAM-TYPE-VIDEO-H264:CAPS"></a>GST_MPEGTS_STREAM_TYPE_VIDEO_H264</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MPEGTS-STREAM-TYPE-AUDIO-AAC-CLEAN:CAPS"></a>GST_MPEGTS_STREAM_TYPE_AUDIO_AAC_CLEAN</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MPEGTS-STREAM-TYPE-MPEG4-TIMED-TEXT:CAPS"></a>GST_MPEGTS_STREAM_TYPE_MPEG4_TIMED_TEXT</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MPEGTS-STREAM-TYPE-VIDEO-RVC:CAPS"></a>GST_MPEGTS_STREAM_TYPE_VIDEO_RVC</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MPEGTS-STREAM-TYPE-VIDEO-H264-SVC-SUB-BITSTREAM:CAPS"></a>GST_MPEGTS_STREAM_TYPE_VIDEO_H264_SVC_SUB_BITSTREAM</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MPEGTS-STREAM-TYPE-VIDEO-H264-MVC-SUB-BITSTREAM:CAPS"></a>GST_MPEGTS_STREAM_TYPE_VIDEO_H264_MVC_SUB_BITSTREAM</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MPEGTS-STREAM-TYPE-VIDEO-JP2K:CAPS"></a>GST_MPEGTS_STREAM_TYPE_VIDEO_JP2K</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MPEGTS-STREAM-TYPE-VIDEO-MPEG2-STEREO-ADDITIONAL-VIEW:CAPS"></a>GST_MPEGTS_STREAM_TYPE_VIDEO_MPEG2_STEREO_ADDITIONAL_VIEW</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MPEGTS-STREAM-TYPE-VIDEO-H264-STEREO-ADDITIONAL-VIEW:CAPS"></a>GST_MPEGTS_STREAM_TYPE_VIDEO_H264_STEREO_ADDITIONAL_VIEW</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MPEGTS-STREAM-TYPE-VIDEO-HEVC:CAPS"></a>GST_MPEGTS_STREAM_TYPE_VIDEO_HEVC</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MPEGTS-STREAM-TYPE-IPMP-STREAM:CAPS"></a>GST_MPEGTS_STREAM_TYPE_IPMP_STREAM</p></td>
+<td> </td>
+<td> </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+</div>
+</div>
+</div>
+<div class="footer">
+<hr>Generated by GTK-Doc V1.25</div>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/libs/html/gst-plugins-bad-libs-gstmpegvideometa.html b/docs/libs/html/gst-plugins-bad-libs-gstmpegvideometa.html
index 7dac93c..1e406a9 100644
--- a/docs/libs/html/gst-plugins-bad-libs-gstmpegvideometa.html
+++ b/docs/libs/html/gst-plugins-bad-libs-gstmpegvideometa.html
@@ -106,30 +106,6 @@
<em class="parameter"><code>const <a class="link" href="gst-plugins-bad-libs-mpegvideoparser.html#GstMpegVideoPictureHdr" title="struct GstMpegVideoPictureHdr"><span class="type">GstMpegVideoPictureHdr</span></a> *pic_hdr</code></em>,
<em class="parameter"><code>const <a class="link" href="gst-plugins-bad-libs-mpegvideoparser.html#GstMpegVideoPictureExt" title="struct GstMpegVideoPictureExt"><span class="type">GstMpegVideoPictureExt</span></a> *pic_ext</code></em>,
<em class="parameter"><code>const <a class="link" href="gst-plugins-bad-libs-mpegvideoparser.html#GstMpegVideoQuantMatrixExt" title="struct GstMpegVideoQuantMatrixExt"><span class="type">GstMpegVideoQuantMatrixExt</span></a> *quant_ext</code></em>);</pre>
-<p>Creates and adds a <a class="link" href="gst-plugins-bad-libs-gstmpegvideometa.html#GstMpegVideoMeta" title="struct GstMpegVideoMeta"><span class="type">GstMpegVideoMeta</span></a> to a <em class="parameter"><code>buffer</code></em>
-.</p>
-<p>Provided structures must either be <a href="/usr/share/gtk-doc/html/glibglib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a> or GSlice-allocated.</p>
-<div class="refsect3">
-<a name="gst-buffer-add-mpeg-video-meta.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody><tr>
-<td class="parameter_name"><p>buffer</p></td>
-<td class="parameter_description"><p>a <a href="/usr/share/gtk-doc/html/gstreamer-1.0GstBuffer.html#GstBuffer-struct"><span class="type">GstBuffer</span></a></p></td>
-<td class="parameter_annotations"> </td>
-</tr></tbody>
-</table></div>
-</div>
-<div class="refsect3">
-<a name="gst-buffer-add-mpeg-video-meta.returns"></a><h4>Returns</h4>
-<p> a newly created <a class="link" href="gst-plugins-bad-libs-gstmpegvideometa.html#GstMpegVideoMeta" title="struct GstMpegVideoMeta"><span class="type">GstMpegVideoMeta</span></a>. </p>
-<p><span class="annotation">[<acronym title="Free data after the code is done."><span class="acronym">transfer full</span></acronym>]</span></p>
-</div>
-<p class="since">Since: 1.2</p>
</div>
<hr>
<div class="refsect2">
@@ -174,70 +150,6 @@
gsize slice_offset;
};
</pre>
-<p>Extra buffer metadata describing the contents of a MPEG1/2 Video frame</p>
-<p>Can be used by elements (mainly decoders) to avoid having to parse
-Mpeg video 1/2 packets if it can be done upstream.</p>
-<p>The various fields are only valid during the lifetime of the <a class="link" href="gst-plugins-bad-libs-gstmpegvideometa.html#GstMpegVideoMeta" title="struct GstMpegVideoMeta"><span class="type">GstMpegVideoMeta</span></a>.
-If elements wish to use those for longer, they are required to make a copy.</p>
-<div class="refsect3">
-<a name="GstMpegVideoMeta.members"></a><h4>Members</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="300px" class="struct_members_name">
-<col class="struct_members_description">
-<col width="200px" class="struct_members_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/gstreamer-1.0gstreamer-GstMeta.html#GstMeta"><span class="type">GstMeta</span></a> <em class="structfield"><code><a name="GstMpegVideoMeta.meta"></a>meta</code></em>;</p></td>
-<td class="struct_member_description"><p>parent <a href="/usr/share/gtk-doc/html/gstreamer-1.0gstreamer-GstMeta.html#GstMeta"><span class="type">GstMeta</span></a></p></td>
-<td class="struct_member_annotations"> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a class="link" href="gst-plugins-bad-libs-mpegvideoparser.html#GstMpegVideoSequenceHdr" title="struct GstMpegVideoSequenceHdr"><span class="type">GstMpegVideoSequenceHdr</span></a> *<em class="structfield"><code><a name="GstMpegVideoMeta.sequencehdr"></a>sequencehdr</code></em>;</p></td>
-<td class="struct_member_description"><p>the <a class="link" href="gst-plugins-bad-libs-mpegvideoparser.html#GstMpegVideoSequenceHdr" title="struct GstMpegVideoSequenceHdr"><span class="type">GstMpegVideoSequenceHdr</span></a> if present in the buffer</p></td>
-<td class="struct_member_annotations"> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a class="link" href="gst-plugins-bad-libs-mpegvideoparser.html#GstMpegVideoSequenceExt" title="struct GstMpegVideoSequenceExt"><span class="type">GstMpegVideoSequenceExt</span></a> *<em class="structfield"><code><a name="GstMpegVideoMeta.sequenceext"></a>sequenceext</code></em>;</p></td>
-<td class="struct_member_description"><p>the <a class="link" href="gst-plugins-bad-libs-mpegvideoparser.html#GstMpegVideoSequenceExt" title="struct GstMpegVideoSequenceExt"><span class="type">GstMpegVideoSequenceExt</span></a> if present in the buffer</p></td>
-<td class="struct_member_annotations"> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><span class="type">GstMpegVideoSequenceDisplayExt</span> *<em class="structfield"><code><a name="GstMpegVideoMeta.sequencedispext"></a>sequencedispext</code></em>;</p></td>
-<td class="struct_member_description"><p>the <span class="type">GstMpegVideoSequenceDisplayExt</span> if present in the
-buffer.</p></td>
-<td class="struct_member_annotations"> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a class="link" href="gst-plugins-bad-libs-mpegvideoparser.html#GstMpegVideoPictureHdr" title="struct GstMpegVideoPictureHdr"><span class="type">GstMpegVideoPictureHdr</span></a> *<em class="structfield"><code><a name="GstMpegVideoMeta.pichdr"></a>pichdr</code></em>;</p></td>
-<td class="struct_member_description"><p>the <a class="link" href="gst-plugins-bad-libs-mpegvideoparser.html#GstMpegVideoPictureHdr" title="struct GstMpegVideoPictureHdr"><span class="type">GstMpegVideoPictureHdr</span></a> if present in the buffer.</p></td>
-<td class="struct_member_annotations"> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a class="link" href="gst-plugins-bad-libs-mpegvideoparser.html#GstMpegVideoPictureExt" title="struct GstMpegVideoPictureExt"><span class="type">GstMpegVideoPictureExt</span></a> *<em class="structfield"><code><a name="GstMpegVideoMeta.picext"></a>picext</code></em>;</p></td>
-<td class="struct_member_description"><p>the <a class="link" href="gst-plugins-bad-libs-mpegvideoparser.html#GstMpegVideoPictureExt" title="struct GstMpegVideoPictureExt"><span class="type">GstMpegVideoPictureExt</span></a> if present in the buffer.</p></td>
-<td class="struct_member_annotations"> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a class="link" href="gst-plugins-bad-libs-mpegvideoparser.html#GstMpegVideoQuantMatrixExt" title="struct GstMpegVideoQuantMatrixExt"><span class="type">GstMpegVideoQuantMatrixExt</span></a> *<em class="structfield"><code><a name="GstMpegVideoMeta.quantext"></a>quantext</code></em>;</p></td>
-<td class="struct_member_description"><p>the <a class="link" href="gst-plugins-bad-libs-mpegvideoparser.html#GstMpegVideoQuantMatrixExt" title="struct GstMpegVideoQuantMatrixExt"><span class="type">GstMpegVideoQuantMatrixExt</span></a> if present in the buffer</p></td>
-<td class="struct_member_annotations"> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint"><span class="type">guint</span></a> <em class="structfield"><code><a name="GstMpegVideoMeta.num-slices"></a>num_slices</code></em>;</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gsize"><span class="type">gsize</span></a> <em class="structfield"><code><a name="GstMpegVideoMeta.slice-offset"></a>slice_offset</code></em>;</p></td>
-<td> </td>
-<td> </td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<p class="since">Since: 1.2</p>
</div>
</div>
</div>
diff --git a/docs/libs/html/gst-plugins-bad-libs-gstplayer-gmaincontextsignaldispatcher.html b/docs/libs/html/gst-plugins-bad-libs-gstplayer-gmaincontextsignaldispatcher.html
index dcebcf9..7538a41 100644
--- a/docs/libs/html/gst-plugins-bad-libs-gstplayer-gmaincontextsignaldispatcher.html
+++ b/docs/libs/html/gst-plugins-bad-libs-gstplayer-gmaincontextsignaldispatcher.html
@@ -27,7 +27,7 @@
<div class="refnamediv"><table width="100%"><tr>
<td valign="top">
<h2><span class="refentrytitle"><a name="gst-plugins-bad-libs-gstplayer-gmaincontextsignaldispatcher.top_of_page"></a>gstplayer-gmaincontextsignaldispatcher</span></h2>
-<p>gstplayer-gmaincontextsignaldispatcher — Player GLib MainContext dispatcher</p>
+<p>gstplayer-gmaincontextsignaldispatcher</p>
</td>
<td class="gallery_image" valign="top" align="right"></td>
</tr></table></div>
@@ -58,29 +58,6 @@
<pre class="programlisting"><a class="link" href="gst-plugins-bad-libs-gstplayer.html#GstPlayerSignalDispatcher"><span class="returnvalue">GstPlayerSignalDispatcher</span></a> *
gst_player_g_main_context_signal_dispatcher_new
(<em class="parameter"><code><a href="/usr/share/gtk-doc/html/glibglib-The-Main-Event-Loop.html#GMainContext"><span class="type">GMainContext</span></a> *application_context</code></em>);</pre>
-<p>Creates a new GstPlayerSignalDispatcher that uses <em class="parameter"><code>application_context</code></em>
-,
-or the thread default one if <a href="/usr/share/gtk-doc/html/glibglib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a> is used. See <code class="function">gst_player_new_full()</code>.</p>
-<div class="refsect3">
-<a name="gst-player-g-main-context-signal-dispatcher-new.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody><tr>
-<td class="parameter_name"><p>application_context</p></td>
-<td class="parameter_description"><p> GMainContext to use or <a href="/usr/share/gtk-doc/html/glibglib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a>. </p></td>
-<td class="parameter_annotations"><span class="annotation">[<acronym title="NULL is OK, both for passing and for returning."><span class="acronym">allow-none</span></acronym>]</span></td>
-</tr></tbody>
-</table></div>
-</div>
-<div class="refsect3">
-<a name="gst-player-g-main-context-signal-dispatcher-new.returns"></a><h4>Returns</h4>
-<p> the new GstPlayerSignalDispatcher. </p>
-<p><span class="annotation">[<acronym title="Free data after the code is done."><span class="acronym">transfer full</span></acronym>]</span></p>
-</div>
</div>
</div>
<div class="refsect1">
diff --git a/docs/libs/html/gst-plugins-bad-libs-gstplayer-mediainfo.html b/docs/libs/html/gst-plugins-bad-libs-gstplayer-mediainfo.html
index 023f4c9..e809695 100644
--- a/docs/libs/html/gst-plugins-bad-libs-gstplayer-mediainfo.html
+++ b/docs/libs/html/gst-plugins-bad-libs-gstplayer-mediainfo.html
@@ -28,7 +28,7 @@
<div class="refnamediv"><table width="100%"><tr>
<td valign="top">
<h2><span class="refentrytitle"><a name="gst-plugins-bad-libs-gstplayer-mediainfo.top_of_page"></a>gstplayer-mediainfo</span></h2>
-<p>gstplayer-mediainfo — Player Media Information</p>
+<p>gstplayer-mediainfo</p>
</td>
<td class="gallery_image" valign="top" align="right"></td>
</tr></table></div>
@@ -79,6 +79,14 @@
</tr>
<tr>
<td class="function_type">
+<a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
+</td>
+<td class="function_name">
+<a class="link" href="gst-plugins-bad-libs-gstplayer-mediainfo.html#gst-player-media-info-is-live" title="gst_player_media_info_is_live ()">gst_player_media_info_is_live</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
<a href="/usr/share/gtk-doc/html/gstreamer-1.0GstSample.html#GstSample-struct"><span class="returnvalue">GstSample</span></a> *
</td>
<td class="function_name">
@@ -286,75 +294,18 @@
<a name="gst-player-media-info-get-uri"></a><h3>gst_player_media_info_get_uri ()</h3>
<pre class="programlisting">const <a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gchar"><span class="returnvalue">gchar</span></a> *
gst_player_media_info_get_uri (<em class="parameter"><code>const <a class="link" href="gst-plugins-bad-libs-gstplayer-mediainfo.html#GstPlayerMediaInfo"><span class="type">GstPlayerMediaInfo</span></a> *info</code></em>);</pre>
-<div class="refsect3">
-<a name="gst-player-media-info-get-uri.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody><tr>
-<td class="parameter_name"><p>info</p></td>
-<td class="parameter_description"><p>a <a class="link" href="gst-plugins-bad-libs-gstplayer-mediainfo.html#GstPlayerMediaInfo"><span class="type">GstPlayerMediaInfo</span></a></p></td>
-<td class="parameter_annotations"> </td>
-</tr></tbody>
-</table></div>
-</div>
-<div class="refsect3">
-<a name="gst-player-media-info-get-uri.returns"></a><h4>Returns</h4>
-<p> the URI associated with <a class="link" href="gst-plugins-bad-libs-gstplayer-mediainfo.html#GstPlayerMediaInfo"><span class="type">GstPlayerMediaInfo</span></a>.</p>
-</div>
</div>
<hr>
<div class="refsect2">
<a name="gst-player-media-info-get-duration"></a><h3>gst_player_media_info_get_duration ()</h3>
<pre class="programlisting"><a href="/usr/share/gtk-doc/html/gstreamer-1.0GstClock.html#GstClockTime"><span class="returnvalue">GstClockTime</span></a>
gst_player_media_info_get_duration (<em class="parameter"><code>const <a class="link" href="gst-plugins-bad-libs-gstplayer-mediainfo.html#GstPlayerMediaInfo"><span class="type">GstPlayerMediaInfo</span></a> *info</code></em>);</pre>
-<div class="refsect3">
-<a name="gst-player-media-info-get-duration.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody><tr>
-<td class="parameter_name"><p>info</p></td>
-<td class="parameter_description"><p>a <a class="link" href="gst-plugins-bad-libs-gstplayer-mediainfo.html#GstPlayerMediaInfo"><span class="type">GstPlayerMediaInfo</span></a></p></td>
-<td class="parameter_annotations"> </td>
-</tr></tbody>
-</table></div>
-</div>
-<div class="refsect3">
-<a name="gst-player-media-info-get-duration.returns"></a><h4>Returns</h4>
-<p> duration of the media.</p>
-</div>
</div>
<hr>
<div class="refsect2">
<a name="gst-player-media-info-get-title"></a><h3>gst_player_media_info_get_title ()</h3>
<pre class="programlisting">const <a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gchar"><span class="returnvalue">gchar</span></a> *
gst_player_media_info_get_title (<em class="parameter"><code>const <a class="link" href="gst-plugins-bad-libs-gstplayer-mediainfo.html#GstPlayerMediaInfo"><span class="type">GstPlayerMediaInfo</span></a> *info</code></em>);</pre>
-<div class="refsect3">
-<a name="gst-player-media-info-get-title.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody><tr>
-<td class="parameter_name"><p>info</p></td>
-<td class="parameter_description"><p>a <a class="link" href="gst-plugins-bad-libs-gstplayer-mediainfo.html#GstPlayerMediaInfo"><span class="type">GstPlayerMediaInfo</span></a></p></td>
-<td class="parameter_annotations"> </td>
-</tr></tbody>
-</table></div>
-</div>
-<div class="refsect3">
-<a name="gst-player-media-info-get-title.returns"></a><h4>Returns</h4>
-<p> the media title.</p>
-</div>
</div>
<hr>
<div class="refsect2">
@@ -362,50 +313,18 @@
<pre class="programlisting">const <a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gchar"><span class="returnvalue">gchar</span></a> *
gst_player_media_info_get_container_format
(<em class="parameter"><code>const <a class="link" href="gst-plugins-bad-libs-gstplayer-mediainfo.html#GstPlayerMediaInfo"><span class="type">GstPlayerMediaInfo</span></a> *info</code></em>);</pre>
-<div class="refsect3">
-<a name="gst-player-media-info-get-container-format.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody><tr>
-<td class="parameter_name"><p>info</p></td>
-<td class="parameter_description"><p>a <a class="link" href="gst-plugins-bad-libs-gstplayer-mediainfo.html#GstPlayerMediaInfo"><span class="type">GstPlayerMediaInfo</span></a></p></td>
-<td class="parameter_annotations"> </td>
-</tr></tbody>
-</table></div>
-</div>
-<div class="refsect3">
-<a name="gst-player-media-info-get-container-format.returns"></a><h4>Returns</h4>
-<p> the container format.</p>
-</div>
</div>
<hr>
<div class="refsect2">
<a name="gst-player-media-info-is-seekable"></a><h3>gst_player_media_info_is_seekable ()</h3>
<pre class="programlisting"><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
gst_player_media_info_is_seekable (<em class="parameter"><code>const <a class="link" href="gst-plugins-bad-libs-gstplayer-mediainfo.html#GstPlayerMediaInfo"><span class="type">GstPlayerMediaInfo</span></a> *info</code></em>);</pre>
-<div class="refsect3">
-<a name="gst-player-media-info-is-seekable.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody><tr>
-<td class="parameter_name"><p>info</p></td>
-<td class="parameter_description"><p>a <a class="link" href="gst-plugins-bad-libs-gstplayer-mediainfo.html#GstPlayerMediaInfo"><span class="type">GstPlayerMediaInfo</span></a></p></td>
-<td class="parameter_annotations"> </td>
-</tr></tbody>
-</table></div>
</div>
-<div class="refsect3">
-<a name="gst-player-media-info-is-seekable.returns"></a><h4>Returns</h4>
-<p> <a href="/usr/share/gtk-doc/html/glibglib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if the media is seekable.</p>
-</div>
+<hr>
+<div class="refsect2">
+<a name="gst-player-media-info-is-live"></a><h3>gst_player_media_info_is_live ()</h3>
+<pre class="programlisting"><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
+gst_player_media_info_is_live (<em class="parameter"><code>const <a class="link" href="gst-plugins-bad-libs-gstplayer-mediainfo.html#GstPlayerMediaInfo"><span class="type">GstPlayerMediaInfo</span></a> *info</code></em>);</pre>
</div>
<hr>
<div class="refsect2">
@@ -413,185 +332,42 @@
<pre class="programlisting"><a href="/usr/share/gtk-doc/html/gstreamer-1.0GstSample.html#GstSample-struct"><span class="returnvalue">GstSample</span></a> *
gst_player_media_info_get_image_sample
(<em class="parameter"><code>const <a class="link" href="gst-plugins-bad-libs-gstplayer-mediainfo.html#GstPlayerMediaInfo"><span class="type">GstPlayerMediaInfo</span></a> *info</code></em>);</pre>
-<p>Function to get the image (or preview-image) stored in taglist.
-Application can use gst_sample_*_() API's to get caps, buffer etc.</p>
-<div class="refsect3">
-<a name="gst-player-media-info-get-image-sample.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody><tr>
-<td class="parameter_name"><p>info</p></td>
-<td class="parameter_description"><p>a <a class="link" href="gst-plugins-bad-libs-gstplayer-mediainfo.html#GstPlayerMediaInfo"><span class="type">GstPlayerMediaInfo</span></a></p></td>
-<td class="parameter_annotations"> </td>
-</tr></tbody>
-</table></div>
-</div>
-<div class="refsect3">
-<a name="gst-player-media-info-get-image-sample.returns"></a><h4>Returns</h4>
-<p> GstSample or NULL. </p>
-<p><span class="annotation">[<acronym title="Don't free data after the code is done."><span class="acronym">transfer none</span></acronym>]</span></p>
-</div>
</div>
<hr>
<div class="refsect2">
<a name="gst-player-media-info-get-tags"></a><h3>gst_player_media_info_get_tags ()</h3>
<pre class="programlisting"><a href="/usr/share/gtk-doc/html/gstreamer-1.0GstTagList.html#GstTagList-struct"><span class="returnvalue">GstTagList</span></a> *
gst_player_media_info_get_tags (<em class="parameter"><code>const <a class="link" href="gst-plugins-bad-libs-gstplayer-mediainfo.html#GstPlayerMediaInfo"><span class="type">GstPlayerMediaInfo</span></a> *info</code></em>);</pre>
-<div class="refsect3">
-<a name="gst-player-media-info-get-tags.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody><tr>
-<td class="parameter_name"><p>info</p></td>
-<td class="parameter_description"><p>a <a class="link" href="gst-plugins-bad-libs-gstplayer-mediainfo.html#GstPlayerMediaInfo"><span class="type">GstPlayerMediaInfo</span></a></p></td>
-<td class="parameter_annotations"> </td>
-</tr></tbody>
-</table></div>
-</div>
-<div class="refsect3">
-<a name="gst-player-media-info-get-tags.returns"></a><h4>Returns</h4>
-<p> the tags contained in media info. </p>
-<p><span class="annotation">[<acronym title="Don't free data after the code is done."><span class="acronym">transfer none</span></acronym>]</span></p>
-</div>
</div>
<hr>
<div class="refsect2">
<a name="gst-player-media-info-get-stream-list"></a><h3>gst_player_media_info_get_stream_list ()</h3>
<pre class="programlisting"><a href="/usr/share/gtk-doc/html/glibglib-Doubly-Linked-Lists.html#GList"><span class="returnvalue">GList</span></a> *
gst_player_media_info_get_stream_list (<em class="parameter"><code>const <a class="link" href="gst-plugins-bad-libs-gstplayer-mediainfo.html#GstPlayerMediaInfo"><span class="type">GstPlayerMediaInfo</span></a> *info</code></em>);</pre>
-<div class="refsect3">
-<a name="gst-player-media-info-get-stream-list.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody><tr>
-<td class="parameter_name"><p>info</p></td>
-<td class="parameter_description"><p>a <a class="link" href="gst-plugins-bad-libs-gstplayer-mediainfo.html#GstPlayerMediaInfo"><span class="type">GstPlayerMediaInfo</span></a></p></td>
-<td class="parameter_annotations"> </td>
-</tr></tbody>
-</table></div>
-</div>
-<div class="refsect3">
-<a name="gst-player-media-info-get-stream-list.returns"></a><h4>Returns</h4>
-<p> A <a href="/usr/share/gtk-doc/html/glibglib-Doubly-Linked-Lists.html#GList"><span class="type">GList</span></a> of
-matching <a class="link" href="gst-plugins-bad-libs-gstplayer-mediainfo.html#GstPlayerStreamInfo"><span class="type">GstPlayerStreamInfo</span></a>. </p>
-<p><span class="annotation">[<acronym title="Don't free data after the code is done."><span class="acronym">transfer none</span></acronym>][<acronym title="Generics and defining elements of containers and arrays."><span class="acronym">element-type</span></acronym> GstPlayerStreamInfo]</span></p>
-</div>
</div>
<hr>
<div class="refsect2">
<a name="gst-player-stream-info-get-index"></a><h3>gst_player_stream_info_get_index ()</h3>
<pre class="programlisting"><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gint"><span class="returnvalue">gint</span></a>
gst_player_stream_info_get_index (<em class="parameter"><code>const <a class="link" href="gst-plugins-bad-libs-gstplayer-mediainfo.html#GstPlayerStreamInfo"><span class="type">GstPlayerStreamInfo</span></a> *info</code></em>);</pre>
-<p>Function to get stream index from <a class="link" href="gst-plugins-bad-libs-gstplayer-mediainfo.html#GstPlayerStreamInfo"><span class="type">GstPlayerStreamInfo</span></a> instance.</p>
-<div class="refsect3">
-<a name="gst-player-stream-info-get-index.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody><tr>
-<td class="parameter_name"><p>info</p></td>
-<td class="parameter_description"><p>a <a class="link" href="gst-plugins-bad-libs-gstplayer-mediainfo.html#GstPlayerStreamInfo"><span class="type">GstPlayerStreamInfo</span></a></p></td>
-<td class="parameter_annotations"> </td>
-</tr></tbody>
-</table></div>
-</div>
-<div class="refsect3">
-<a name="gst-player-stream-info-get-index.returns"></a><h4>Returns</h4>
-<p> the stream index of this stream.</p>
-</div>
</div>
<hr>
<div class="refsect2">
<a name="gst-player-stream-info-get-caps"></a><h3>gst_player_stream_info_get_caps ()</h3>
<pre class="programlisting"><a href="/usr/share/gtk-doc/html/gstreamer-1.0GstCaps.html#GstCaps-struct"><span class="returnvalue">GstCaps</span></a> *
gst_player_stream_info_get_caps (<em class="parameter"><code>const <a class="link" href="gst-plugins-bad-libs-gstplayer-mediainfo.html#GstPlayerStreamInfo"><span class="type">GstPlayerStreamInfo</span></a> *info</code></em>);</pre>
-<div class="refsect3">
-<a name="gst-player-stream-info-get-caps.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody><tr>
-<td class="parameter_name"><p>info</p></td>
-<td class="parameter_description"><p>a <a class="link" href="gst-plugins-bad-libs-gstplayer-mediainfo.html#GstPlayerStreamInfo"><span class="type">GstPlayerStreamInfo</span></a></p></td>
-<td class="parameter_annotations"> </td>
-</tr></tbody>
-</table></div>
-</div>
-<div class="refsect3">
-<a name="gst-player-stream-info-get-caps.returns"></a><h4>Returns</h4>
-<p> the <a href="/usr/share/gtk-doc/html/gstreamer-1.0GstCaps.html#GstCaps-struct"><span class="type">GstCaps</span></a> of the stream. </p>
-<p><span class="annotation">[<acronym title="Don't free data after the code is done."><span class="acronym">transfer none</span></acronym>]</span></p>
-</div>
</div>
<hr>
<div class="refsect2">
<a name="gst-player-stream-info-get-tags"></a><h3>gst_player_stream_info_get_tags ()</h3>
<pre class="programlisting"><a href="/usr/share/gtk-doc/html/gstreamer-1.0GstTagList.html#GstTagList-struct"><span class="returnvalue">GstTagList</span></a> *
gst_player_stream_info_get_tags (<em class="parameter"><code>const <a class="link" href="gst-plugins-bad-libs-gstplayer-mediainfo.html#GstPlayerStreamInfo"><span class="type">GstPlayerStreamInfo</span></a> *info</code></em>);</pre>
-<div class="refsect3">
-<a name="gst-player-stream-info-get-tags.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody><tr>
-<td class="parameter_name"><p>info</p></td>
-<td class="parameter_description"><p>a <a class="link" href="gst-plugins-bad-libs-gstplayer-mediainfo.html#GstPlayerStreamInfo"><span class="type">GstPlayerStreamInfo</span></a></p></td>
-<td class="parameter_annotations"> </td>
-</tr></tbody>
-</table></div>
-</div>
-<div class="refsect3">
-<a name="gst-player-stream-info-get-tags.returns"></a><h4>Returns</h4>
-<p> the tags contained in this stream. </p>
-<p><span class="annotation">[<acronym title="Don't free data after the code is done."><span class="acronym">transfer none</span></acronym>]</span></p>
-</div>
</div>
<hr>
<div class="refsect2">
<a name="gst-player-stream-info-get-codec"></a><h3>gst_player_stream_info_get_codec ()</h3>
<pre class="programlisting">const <a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gchar"><span class="returnvalue">gchar</span></a> *
gst_player_stream_info_get_codec (<em class="parameter"><code>const <a class="link" href="gst-plugins-bad-libs-gstplayer-mediainfo.html#GstPlayerStreamInfo"><span class="type">GstPlayerStreamInfo</span></a> *info</code></em>);</pre>
-<p>A string describing codec used in <a class="link" href="gst-plugins-bad-libs-gstplayer-mediainfo.html#GstPlayerStreamInfo"><span class="type">GstPlayerStreamInfo</span></a>.</p>
-<div class="refsect3">
-<a name="gst-player-stream-info-get-codec.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody><tr>
-<td class="parameter_name"><p>info</p></td>
-<td class="parameter_description"><p>a <a class="link" href="gst-plugins-bad-libs-gstplayer-mediainfo.html#GstPlayerStreamInfo"><span class="type">GstPlayerStreamInfo</span></a></p></td>
-<td class="parameter_annotations"> </td>
-</tr></tbody>
-</table></div>
-</div>
-<div class="refsect3">
-<a name="gst-player-stream-info-get-codec.returns"></a><h4>Returns</h4>
-<p> codec string or NULL on unknown.</p>
-</div>
</div>
<hr>
<div class="refsect2">
@@ -599,228 +375,54 @@
<pre class="programlisting">const <a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gchar"><span class="returnvalue">gchar</span></a> *
gst_player_stream_info_get_stream_type
(<em class="parameter"><code>const <a class="link" href="gst-plugins-bad-libs-gstplayer-mediainfo.html#GstPlayerStreamInfo"><span class="type">GstPlayerStreamInfo</span></a> *info</code></em>);</pre>
-<p>Function to return human readable name for the stream type
-of the given <em class="parameter"><code>info</code></em>
- (ex: "audio", "video", "subtitle")</p>
-<div class="refsect3">
-<a name="gst-player-stream-info-get-stream-type.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody><tr>
-<td class="parameter_name"><p>info</p></td>
-<td class="parameter_description"><p>a <a class="link" href="gst-plugins-bad-libs-gstplayer-mediainfo.html#GstPlayerStreamInfo"><span class="type">GstPlayerStreamInfo</span></a></p></td>
-<td class="parameter_annotations"> </td>
-</tr></tbody>
-</table></div>
-</div>
-<div class="refsect3">
-<a name="gst-player-stream-info-get-stream-type.returns"></a><h4>Returns</h4>
-<p> a human readable name</p>
-</div>
</div>
<hr>
<div class="refsect2">
<a name="gst-player-audio-info-get-bitrate"></a><h3>gst_player_audio_info_get_bitrate ()</h3>
<pre class="programlisting"><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gint"><span class="returnvalue">gint</span></a>
gst_player_audio_info_get_bitrate (<em class="parameter"><code>const <a class="link" href="gst-plugins-bad-libs-gstplayer-mediainfo.html#GstPlayerAudioInfo"><span class="type">GstPlayerAudioInfo</span></a> *info</code></em>);</pre>
-<div class="refsect3">
-<a name="gst-player-audio-info-get-bitrate.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody><tr>
-<td class="parameter_name"><p>info</p></td>
-<td class="parameter_description"><p>a <a class="link" href="gst-plugins-bad-libs-gstplayer-mediainfo.html#GstPlayerAudioInfo"><span class="type">GstPlayerAudioInfo</span></a></p></td>
-<td class="parameter_annotations"> </td>
-</tr></tbody>
-</table></div>
-</div>
-<div class="refsect3">
-<a name="gst-player-audio-info-get-bitrate.returns"></a><h4>Returns</h4>
-<p> the audio bitrate in <a class="link" href="gst-plugins-bad-libs-gstplayer-mediainfo.html#GstPlayerAudioInfo"><span class="type">GstPlayerAudioInfo</span></a>.</p>
-</div>
</div>
<hr>
<div class="refsect2">
<a name="gst-player-audio-info-get-channels"></a><h3>gst_player_audio_info_get_channels ()</h3>
<pre class="programlisting"><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gint"><span class="returnvalue">gint</span></a>
gst_player_audio_info_get_channels (<em class="parameter"><code>const <a class="link" href="gst-plugins-bad-libs-gstplayer-mediainfo.html#GstPlayerAudioInfo"><span class="type">GstPlayerAudioInfo</span></a> *info</code></em>);</pre>
-<div class="refsect3">
-<a name="gst-player-audio-info-get-channels.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody><tr>
-<td class="parameter_name"><p>info</p></td>
-<td class="parameter_description"><p>a <a class="link" href="gst-plugins-bad-libs-gstplayer-mediainfo.html#GstPlayerAudioInfo"><span class="type">GstPlayerAudioInfo</span></a></p></td>
-<td class="parameter_annotations"> </td>
-</tr></tbody>
-</table></div>
-</div>
-<div class="refsect3">
-<a name="gst-player-audio-info-get-channels.returns"></a><h4>Returns</h4>
-<p> the number of audio channels in <a class="link" href="gst-plugins-bad-libs-gstplayer-mediainfo.html#GstPlayerAudioInfo"><span class="type">GstPlayerAudioInfo</span></a>.</p>
-</div>
</div>
<hr>
<div class="refsect2">
<a name="gst-player-audio-info-get-language"></a><h3>gst_player_audio_info_get_language ()</h3>
<pre class="programlisting">const <a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gchar"><span class="returnvalue">gchar</span></a> *
gst_player_audio_info_get_language (<em class="parameter"><code>const <a class="link" href="gst-plugins-bad-libs-gstplayer-mediainfo.html#GstPlayerAudioInfo"><span class="type">GstPlayerAudioInfo</span></a> *info</code></em>);</pre>
-<div class="refsect3">
-<a name="gst-player-audio-info-get-language.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody><tr>
-<td class="parameter_name"><p>info</p></td>
-<td class="parameter_description"><p>a <a class="link" href="gst-plugins-bad-libs-gstplayer-mediainfo.html#GstPlayerAudioInfo"><span class="type">GstPlayerAudioInfo</span></a></p></td>
-<td class="parameter_annotations"> </td>
-</tr></tbody>
-</table></div>
-</div>
-<div class="refsect3">
-<a name="gst-player-audio-info-get-language.returns"></a><h4>Returns</h4>
-<p> the language of the stream, or NULL if unknown.</p>
-</div>
</div>
<hr>
<div class="refsect2">
<a name="gst-player-audio-info-get-max-bitrate"></a><h3>gst_player_audio_info_get_max_bitrate ()</h3>
<pre class="programlisting"><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gint"><span class="returnvalue">gint</span></a>
gst_player_audio_info_get_max_bitrate (<em class="parameter"><code>const <a class="link" href="gst-plugins-bad-libs-gstplayer-mediainfo.html#GstPlayerAudioInfo"><span class="type">GstPlayerAudioInfo</span></a> *info</code></em>);</pre>
-<div class="refsect3">
-<a name="gst-player-audio-info-get-max-bitrate.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody><tr>
-<td class="parameter_name"><p>info</p></td>
-<td class="parameter_description"><p>a <a class="link" href="gst-plugins-bad-libs-gstplayer-mediainfo.html#GstPlayerAudioInfo"><span class="type">GstPlayerAudioInfo</span></a></p></td>
-<td class="parameter_annotations"> </td>
-</tr></tbody>
-</table></div>
-</div>
-<div class="refsect3">
-<a name="gst-player-audio-info-get-max-bitrate.returns"></a><h4>Returns</h4>
-<p> the audio maximum bitrate in <a class="link" href="gst-plugins-bad-libs-gstplayer-mediainfo.html#GstPlayerAudioInfo"><span class="type">GstPlayerAudioInfo</span></a>.</p>
-</div>
</div>
<hr>
<div class="refsect2">
<a name="gst-player-audio-info-get-sample-rate"></a><h3>gst_player_audio_info_get_sample_rate ()</h3>
<pre class="programlisting"><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gint"><span class="returnvalue">gint</span></a>
gst_player_audio_info_get_sample_rate (<em class="parameter"><code>const <a class="link" href="gst-plugins-bad-libs-gstplayer-mediainfo.html#GstPlayerAudioInfo"><span class="type">GstPlayerAudioInfo</span></a> *info</code></em>);</pre>
-<div class="refsect3">
-<a name="gst-player-audio-info-get-sample-rate.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody><tr>
-<td class="parameter_name"><p>info</p></td>
-<td class="parameter_description"><p>a <a class="link" href="gst-plugins-bad-libs-gstplayer-mediainfo.html#GstPlayerAudioInfo"><span class="type">GstPlayerAudioInfo</span></a></p></td>
-<td class="parameter_annotations"> </td>
-</tr></tbody>
-</table></div>
-</div>
-<div class="refsect3">
-<a name="gst-player-audio-info-get-sample-rate.returns"></a><h4>Returns</h4>
-<p> the audio sample rate in <a class="link" href="gst-plugins-bad-libs-gstplayer-mediainfo.html#GstPlayerAudioInfo"><span class="type">GstPlayerAudioInfo</span></a>.</p>
-</div>
</div>
<hr>
<div class="refsect2">
<a name="gst-player-video-info-get-bitrate"></a><h3>gst_player_video_info_get_bitrate ()</h3>
<pre class="programlisting"><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gint"><span class="returnvalue">gint</span></a>
gst_player_video_info_get_bitrate (<em class="parameter"><code>const <a class="link" href="gst-plugins-bad-libs-gstplayer-mediainfo.html#GstPlayerVideoInfo"><span class="type">GstPlayerVideoInfo</span></a> *info</code></em>);</pre>
-<div class="refsect3">
-<a name="gst-player-video-info-get-bitrate.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody><tr>
-<td class="parameter_name"><p>info</p></td>
-<td class="parameter_description"><p>a <a class="link" href="gst-plugins-bad-libs-gstplayer-mediainfo.html#GstPlayerVideoInfo"><span class="type">GstPlayerVideoInfo</span></a></p></td>
-<td class="parameter_annotations"> </td>
-</tr></tbody>
-</table></div>
-</div>
-<div class="refsect3">
-<a name="gst-player-video-info-get-bitrate.returns"></a><h4>Returns</h4>
-<p> the current bitrate of video in <a class="link" href="gst-plugins-bad-libs-gstplayer-mediainfo.html#GstPlayerVideoInfo"><span class="type">GstPlayerVideoInfo</span></a>.</p>
-</div>
</div>
<hr>
<div class="refsect2">
<a name="gst-player-video-info-get-height"></a><h3>gst_player_video_info_get_height ()</h3>
<pre class="programlisting"><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gint"><span class="returnvalue">gint</span></a>
gst_player_video_info_get_height (<em class="parameter"><code>const <a class="link" href="gst-plugins-bad-libs-gstplayer-mediainfo.html#GstPlayerVideoInfo"><span class="type">GstPlayerVideoInfo</span></a> *info</code></em>);</pre>
-<div class="refsect3">
-<a name="gst-player-video-info-get-height.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody><tr>
-<td class="parameter_name"><p>info</p></td>
-<td class="parameter_description"><p>a <a class="link" href="gst-plugins-bad-libs-gstplayer-mediainfo.html#GstPlayerVideoInfo"><span class="type">GstPlayerVideoInfo</span></a></p></td>
-<td class="parameter_annotations"> </td>
-</tr></tbody>
-</table></div>
-</div>
-<div class="refsect3">
-<a name="gst-player-video-info-get-height.returns"></a><h4>Returns</h4>
-<p> the height of video in <a class="link" href="gst-plugins-bad-libs-gstplayer-mediainfo.html#GstPlayerVideoInfo"><span class="type">GstPlayerVideoInfo</span></a>.</p>
-</div>
</div>
<hr>
<div class="refsect2">
<a name="gst-player-video-info-get-width"></a><h3>gst_player_video_info_get_width ()</h3>
<pre class="programlisting"><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gint"><span class="returnvalue">gint</span></a>
gst_player_video_info_get_width (<em class="parameter"><code>const <a class="link" href="gst-plugins-bad-libs-gstplayer-mediainfo.html#GstPlayerVideoInfo"><span class="type">GstPlayerVideoInfo</span></a> *info</code></em>);</pre>
-<div class="refsect3">
-<a name="gst-player-video-info-get-width.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody><tr>
-<td class="parameter_name"><p>info</p></td>
-<td class="parameter_description"><p>a <a class="link" href="gst-plugins-bad-libs-gstplayer-mediainfo.html#GstPlayerVideoInfo"><span class="type">GstPlayerVideoInfo</span></a></p></td>
-<td class="parameter_annotations"> </td>
-</tr></tbody>
-</table></div>
-</div>
-<div class="refsect3">
-<a name="gst-player-video-info-get-width.returns"></a><h4>Returns</h4>
-<p> the width of video in <a class="link" href="gst-plugins-bad-libs-gstplayer-mediainfo.html#GstPlayerVideoInfo"><span class="type">GstPlayerVideoInfo</span></a>.</p>
-</div>
</div>
<hr>
<div class="refsect2">
@@ -829,58 +431,12 @@
gst_player_video_info_get_framerate (<em class="parameter"><code>const <a class="link" href="gst-plugins-bad-libs-gstplayer-mediainfo.html#GstPlayerVideoInfo"><span class="type">GstPlayerVideoInfo</span></a> *info</code></em>,
<em class="parameter"><code><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gint"><span class="type">gint</span></a> *fps_n</code></em>,
<em class="parameter"><code><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gint"><span class="type">gint</span></a> *fps_d</code></em>);</pre>
-<div class="refsect3">
-<a name="gst-player-video-info-get-framerate.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="parameter_name"><p>info</p></td>
-<td class="parameter_description"><p>a <a class="link" href="gst-plugins-bad-libs-gstplayer-mediainfo.html#GstPlayerVideoInfo"><span class="type">GstPlayerVideoInfo</span></a></p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>fps_n</p></td>
-<td class="parameter_description"><p> Numerator of frame rate. </p></td>
-<td class="parameter_annotations"><span class="annotation">[<acronym title="Parameter for returning results. Default is transfer full."><span class="acronym">out</span></acronym>]</span></td>
-</tr>
-<tr>
-<td class="parameter_name"><p>fps_d</p></td>
-<td class="parameter_description"><p> Denominator of frame rate. </p></td>
-<td class="parameter_annotations"><span class="annotation">[<acronym title="Parameter for returning results. Default is transfer full."><span class="acronym">out</span></acronym>]</span></td>
-</tr>
-</tbody>
-</table></div>
-</div>
</div>
<hr>
<div class="refsect2">
<a name="gst-player-video-info-get-max-bitrate"></a><h3>gst_player_video_info_get_max_bitrate ()</h3>
<pre class="programlisting"><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gint"><span class="returnvalue">gint</span></a>
gst_player_video_info_get_max_bitrate (<em class="parameter"><code>const <a class="link" href="gst-plugins-bad-libs-gstplayer-mediainfo.html#GstPlayerVideoInfo"><span class="type">GstPlayerVideoInfo</span></a> *info</code></em>);</pre>
-<div class="refsect3">
-<a name="gst-player-video-info-get-max-bitrate.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody><tr>
-<td class="parameter_name"><p>info</p></td>
-<td class="parameter_description"><p>a <a class="link" href="gst-plugins-bad-libs-gstplayer-mediainfo.html#GstPlayerVideoInfo"><span class="type">GstPlayerVideoInfo</span></a></p></td>
-<td class="parameter_annotations"> </td>
-</tr></tbody>
-</table></div>
-</div>
-<div class="refsect3">
-<a name="gst-player-video-info-get-max-bitrate.returns"></a><h4>Returns</h4>
-<p> the maximum bitrate of video in <a class="link" href="gst-plugins-bad-libs-gstplayer-mediainfo.html#GstPlayerVideoInfo"><span class="type">GstPlayerVideoInfo</span></a>.</p>
-</div>
</div>
<hr>
<div class="refsect2">
@@ -890,61 +446,12 @@
(<em class="parameter"><code>const <a class="link" href="gst-plugins-bad-libs-gstplayer-mediainfo.html#GstPlayerVideoInfo"><span class="type">GstPlayerVideoInfo</span></a> *info</code></em>,
<em class="parameter"><code><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint"><span class="type">guint</span></a> *par_n</code></em>,
<em class="parameter"><code><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint"><span class="type">guint</span></a> *par_d</code></em>);</pre>
-<p>Returns the pixel aspect ratio in <em class="parameter"><code>par_n</code></em>
- and <em class="parameter"><code>par_d</code></em>
-</p>
-<div class="refsect3">
-<a name="gst-player-video-info-get-pixel-aspect-ratio.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="parameter_name"><p>info</p></td>
-<td class="parameter_description"><p>a <a class="link" href="gst-plugins-bad-libs-gstplayer-mediainfo.html#GstPlayerVideoInfo"><span class="type">GstPlayerVideoInfo</span></a></p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>par_n</p></td>
-<td class="parameter_description"><p> numerator. </p></td>
-<td class="parameter_annotations"><span class="annotation">[<acronym title="Parameter for returning results. Default is transfer full."><span class="acronym">out</span></acronym>]</span></td>
-</tr>
-<tr>
-<td class="parameter_name"><p>par_d</p></td>
-<td class="parameter_description"><p> denominator. </p></td>
-<td class="parameter_annotations"><span class="annotation">[<acronym title="Parameter for returning results. Default is transfer full."><span class="acronym">out</span></acronym>]</span></td>
-</tr>
-</tbody>
-</table></div>
-</div>
</div>
<hr>
<div class="refsect2">
<a name="gst-player-subtitle-info-get-language"></a><h3>gst_player_subtitle_info_get_language ()</h3>
<pre class="programlisting">const <a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gchar"><span class="returnvalue">gchar</span></a> *
gst_player_subtitle_info_get_language (<em class="parameter"><code>const <a class="link" href="gst-plugins-bad-libs-gstplayer-mediainfo.html#GstPlayerSubtitleInfo"><span class="type">GstPlayerSubtitleInfo</span></a> *info</code></em>);</pre>
-<div class="refsect3">
-<a name="gst-player-subtitle-info-get-language.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody><tr>
-<td class="parameter_name"><p>info</p></td>
-<td class="parameter_description"><p>a <a class="link" href="gst-plugins-bad-libs-gstplayer-mediainfo.html#GstPlayerSubtitleInfo"><span class="type">GstPlayerSubtitleInfo</span></a></p></td>
-<td class="parameter_annotations"> </td>
-</tr></tbody>
-</table></div>
-</div>
-<div class="refsect3">
-<a name="gst-player-subtitle-info-get-language.returns"></a><h4>Returns</h4>
-<p> the language of the stream, or NULL if unknown.</p>
-</div>
</div>
</div>
<div class="refsect1">
@@ -952,33 +459,26 @@
<div class="refsect2">
<a name="GstPlayerMediaInfo-struct"></a><h3>GstPlayerMediaInfo</h3>
<pre class="programlisting">typedef struct _GstPlayerMediaInfo GstPlayerMediaInfo;</pre>
-<p>Structure containing the media information of a URI.</p>
</div>
<hr>
<div class="refsect2">
<a name="GstPlayerStreamInfo-struct"></a><h3>GstPlayerStreamInfo</h3>
<pre class="programlisting">typedef struct _GstPlayerStreamInfo GstPlayerStreamInfo;</pre>
-<p>Base structure for information concering a media stream. Depending on
-the stream type, one can find more media-specific information in
-<a class="link" href="gst-plugins-bad-libs-gstplayer-mediainfo.html#GstPlayerVideoInfo"><span class="type">GstPlayerVideoInfo</span></a>, <a class="link" href="gst-plugins-bad-libs-gstplayer-mediainfo.html#GstPlayerAudioInfo"><span class="type">GstPlayerAudioInfo</span></a>, <a class="link" href="gst-plugins-bad-libs-gstplayer-mediainfo.html#GstPlayerSubtitleInfo"><span class="type">GstPlayerSubtitleInfo</span></a>.</p>
</div>
<hr>
<div class="refsect2">
<a name="GstPlayerAudioInfo-struct"></a><h3>GstPlayerAudioInfo</h3>
<pre class="programlisting">typedef struct _GstPlayerAudioInfo GstPlayerAudioInfo;</pre>
-<p><a class="link" href="gst-plugins-bad-libs-gstplayer-mediainfo.html#GstPlayerStreamInfo"><span class="type">GstPlayerStreamInfo</span></a> specific to audio streams.</p>
</div>
<hr>
<div class="refsect2">
<a name="GstPlayerVideoInfo-struct"></a><h3>GstPlayerVideoInfo</h3>
<pre class="programlisting">typedef struct _GstPlayerVideoInfo GstPlayerVideoInfo;</pre>
-<p><a class="link" href="gst-plugins-bad-libs-gstplayer-mediainfo.html#GstPlayerStreamInfo"><span class="type">GstPlayerStreamInfo</span></a> specific to video streams.</p>
</div>
<hr>
<div class="refsect2">
<a name="GstPlayerSubtitleInfo-struct"></a><h3>GstPlayerSubtitleInfo</h3>
<pre class="programlisting">typedef struct _GstPlayerSubtitleInfo GstPlayerSubtitleInfo;</pre>
-<p><a class="link" href="gst-plugins-bad-libs-gstplayer-mediainfo.html#GstPlayerStreamInfo"><span class="type">GstPlayerStreamInfo</span></a> specific to subtitle streams.</p>
</div>
</div>
</div>
diff --git a/docs/libs/html/gst-plugins-bad-libs-gstplayer-videooverlayvideorenderer.html b/docs/libs/html/gst-plugins-bad-libs-gstplayer-videooverlayvideorenderer.html
index 8bf557d..b673335 100644
--- a/docs/libs/html/gst-plugins-bad-libs-gstplayer-videooverlayvideorenderer.html
+++ b/docs/libs/html/gst-plugins-bad-libs-gstplayer-videooverlayvideorenderer.html
@@ -27,7 +27,7 @@
<div class="refnamediv"><table width="100%"><tr>
<td valign="top">
<h2><span class="refentrytitle"><a name="gst-plugins-bad-libs-gstplayer-videooverlayvideorenderer.top_of_page"></a>gstplayer-videooverlayvideorenderer</span></h2>
-<p>gstplayer-videooverlayvideorenderer — Player Video Overlay Video Renderer</p>
+<p>gstplayer-videooverlayvideorenderer</p>
</td>
<td class="gallery_image" valign="top" align="right"></td>
</tr></table></div>
@@ -100,26 +100,6 @@
<pre class="programlisting"><a class="link" href="gst-plugins-bad-libs-gstplayer.html#GstPlayerVideoRenderer"><span class="returnvalue">GstPlayerVideoRenderer</span></a> *
gst_player_video_overlay_video_renderer_new
(<em class="parameter"><code><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a> window_handle</code></em>);</pre>
-<div class="refsect3">
-<a name="gst-player-video-overlay-video-renderer-new.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody><tr>
-<td class="parameter_name"><p>window_handle</p></td>
-<td class="parameter_description"><p> Window handle to use or <a href="/usr/share/gtk-doc/html/glibglib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a>. </p></td>
-<td class="parameter_annotations"><span class="annotation">[<acronym title="NULL is OK, both for passing and for returning."><span class="acronym">allow-none</span></acronym>]</span></td>
-</tr></tbody>
-</table></div>
-</div>
-<div class="refsect3">
-<a name="gst-player-video-overlay-video-renderer-new.returns"></a><h4>Returns</h4>
-<p>. </p>
-<p><span class="annotation">[<acronym title="Free data after the code is done."><span class="acronym">transfer full</span></acronym>]</span></p>
-</div>
</div>
<hr>
<div class="refsect2">
@@ -127,27 +107,6 @@
<pre class="programlisting"><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gpointer"><span class="returnvalue">gpointer</span></a>
gst_player_video_overlay_video_renderer_get_window_handle
(<em class="parameter"><code><span class="type">GstPlayerVideoOverlayVideoRenderer</span> *self</code></em>);</pre>
-<div class="refsect3">
-<a name="gst-player-video-overlay-video-renderer-get-window-handle.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody><tr>
-<td class="parameter_name"><p>self</p></td>
-<td class="parameter_description"><p><a class="link" href="gst-plugins-bad-libs-gstplayer.html#GstPlayerVideoRenderer"><span class="type">GstPlayerVideoRenderer</span></a> instance</p></td>
-<td class="parameter_annotations"> </td>
-</tr></tbody>
-</table></div>
-</div>
-<div class="refsect3">
-<a name="gst-player-video-overlay-video-renderer-get-window-handle.returns"></a><h4>Returns</h4>
-<p> The currently set, platform specific window
-handle. </p>
-<p><span class="annotation">[<acronym title="Don't free data after the code is done."><span class="acronym">transfer none</span></acronym>]</span></p>
-</div>
</div>
<hr>
<div class="refsect2">
@@ -156,30 +115,6 @@
gst_player_video_overlay_video_renderer_set_window_handle
(<em class="parameter"><code><span class="type">GstPlayerVideoOverlayVideoRenderer</span> *self</code></em>,
<em class="parameter"><code><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a> window_handle</code></em>);</pre>
-<p>Sets the platform specific window handle into which the video
-should be rendered</p>
-<div class="refsect3">
-<a name="gst-player-video-overlay-video-renderer-set-window-handle.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="parameter_name"><p>self</p></td>
-<td class="parameter_description"><p><a class="link" href="gst-plugins-bad-libs-gstplayer.html#GstPlayerVideoRenderer"><span class="type">GstPlayerVideoRenderer</span></a> instance</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>window_handle</p></td>
-<td class="parameter_description"><p>handle referencing to the platform specific window</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-</tbody>
-</table></div>
-</div>
</div>
<hr>
<div class="refsect2">
@@ -187,23 +122,6 @@
<pre class="programlisting"><span class="returnvalue">void</span>
gst_player_video_overlay_video_renderer_expose
(<em class="parameter"><code><span class="type">GstPlayerVideoOverlayVideoRenderer</span> *self</code></em>);</pre>
-<p>Tell an overlay that it has been exposed. This will redraw the current frame
-in the drawable even if the pipeline is PAUSED.</p>
-<div class="refsect3">
-<a name="gst-player-video-overlay-video-renderer-expose.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody><tr>
-<td class="parameter_name"><p>self</p></td>
-<td class="parameter_description"><p>a <span class="type">GstPlayerVideoOverlayVideoRenderer</span> instance.</p></td>
-<td class="parameter_annotations"> </td>
-</tr></tbody>
-</table></div>
-</div>
</div>
<hr>
<div class="refsect2">
@@ -215,45 +133,6 @@
<em class="parameter"><code><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gint"><span class="type">gint</span></a> *y</code></em>,
<em class="parameter"><code><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gint"><span class="type">gint</span></a> *width</code></em>,
<em class="parameter"><code><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gint"><span class="type">gint</span></a> *height</code></em>);</pre>
-<p>Return the currently configured render rectangle. See <a class="link" href="gst-plugins-bad-libs-gstplayer-videooverlayvideorenderer.html#gst-player-video-overlay-video-renderer-set-render-rectangle" title="gst_player_video_overlay_video_renderer_set_render_rectangle ()"><code class="function">gst_player_video_overlay_video_renderer_set_render_rectangle()</code></a>
-for details.</p>
-<div class="refsect3">
-<a name="gst-player-video-overlay-video-renderer-get-render-rectangle.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="parameter_name"><p>self</p></td>
-<td class="parameter_description"><p>a <span class="type">GstPlayerVideoOverlayVideoRenderer</span> instance</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>x</p></td>
-<td class="parameter_description"><p> the horizontal offset of the render area inside the window. </p></td>
-<td class="parameter_annotations"><span class="annotation">[<acronym title="Parameter for returning results. Default is transfer full."><span class="acronym">out</span></acronym>][<acronym title="NULL is OK, both for passing and for returning."><span class="acronym">allow-none</span></acronym>]</span></td>
-</tr>
-<tr>
-<td class="parameter_name"><p>y</p></td>
-<td class="parameter_description"><p> the vertical offset of the render area inside the window. </p></td>
-<td class="parameter_annotations"><span class="annotation">[<acronym title="Parameter for returning results. Default is transfer full."><span class="acronym">out</span></acronym>][<acronym title="NULL is OK, both for passing and for returning."><span class="acronym">allow-none</span></acronym>]</span></td>
-</tr>
-<tr>
-<td class="parameter_name"><p>width</p></td>
-<td class="parameter_description"><p> the width of the render area inside the window. </p></td>
-<td class="parameter_annotations"><span class="annotation">[<acronym title="Parameter for returning results. Default is transfer full."><span class="acronym">out</span></acronym>][<acronym title="NULL is OK, both for passing and for returning."><span class="acronym">allow-none</span></acronym>]</span></td>
-</tr>
-<tr>
-<td class="parameter_name"><p>height</p></td>
-<td class="parameter_description"><p> the height of the render area inside the window. </p></td>
-<td class="parameter_annotations"><span class="annotation">[<acronym title="Parameter for returning results. Default is transfer full."><span class="acronym">out</span></acronym>][<acronym title="NULL is OK, both for passing and for returning."><span class="acronym">allow-none</span></acronym>]</span></td>
-</tr>
-</tbody>
-</table></div>
-</div>
</div>
<hr>
<div class="refsect2">
@@ -265,54 +144,6 @@
<em class="parameter"><code><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gint"><span class="type">gint</span></a> y</code></em>,
<em class="parameter"><code><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gint"><span class="type">gint</span></a> width</code></em>,
<em class="parameter"><code><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gint"><span class="type">gint</span></a> height</code></em>);</pre>
-<p>Configure a subregion as a video target within the window set by
-<a class="link" href="gst-plugins-bad-libs-gstplayer-videooverlayvideorenderer.html#gst-player-video-overlay-video-renderer-set-window-handle" title="gst_player_video_overlay_video_renderer_set_window_handle ()"><code class="function">gst_player_video_overlay_video_renderer_set_window_handle()</code></a>. If this is not
-used or not supported the video will fill the area of the window set as the
-overlay to 100%. By specifying the rectangle, the video can be overlayed to
-a specific region of that window only. After setting the new rectangle one
-should call <a class="link" href="gst-plugins-bad-libs-gstplayer-videooverlayvideorenderer.html#gst-player-video-overlay-video-renderer-expose" title="gst_player_video_overlay_video_renderer_expose ()"><code class="function">gst_player_video_overlay_video_renderer_expose()</code></a> to force a
-redraw. To unset the region pass -1 for the <em class="parameter"><code>width</code></em>
- and <em class="parameter"><code>height</code></em>
- parameters.</p>
-<p>This method is needed for non fullscreen video overlay in UI toolkits that
-do not support subwindows.</p>
-<div class="refsect3">
-<a name="gst-player-video-overlay-video-renderer-set-render-rectangle.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="parameter_name"><p>self</p></td>
-<td class="parameter_description"><p>a <span class="type">GstPlayerVideoOverlayVideoRenderer</span> instance</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>x</p></td>
-<td class="parameter_description"><p>the horizontal offset of the render area inside the window</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>y</p></td>
-<td class="parameter_description"><p>the vertical offset of the render area inside the window</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>width</p></td>
-<td class="parameter_description"><p>the width of the render area inside the window</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>height</p></td>
-<td class="parameter_description"><p>the height of the render area inside the window</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-</tbody>
-</table></div>
-</div>
</div>
</div>
<div class="refsect1">
diff --git a/docs/libs/html/gst-plugins-bad-libs-gstplayer-visualization.html b/docs/libs/html/gst-plugins-bad-libs-gstplayer-visualization.html
index 557c3ef..89f1675 100644
--- a/docs/libs/html/gst-plugins-bad-libs-gstplayer-visualization.html
+++ b/docs/libs/html/gst-plugins-bad-libs-gstplayer-visualization.html
@@ -28,7 +28,7 @@
<div class="refnamediv"><table width="100%"><tr>
<td valign="top">
<h2><span class="refentrytitle"><a name="gst-plugins-bad-libs-gstplayer-visualization.top_of_page"></a>gstplayer-visualization</span></h2>
-<p>gstplayer-visualization — Player Visualization</p>
+<p>gstplayer-visualization</p>
</td>
<td class="gallery_image" valign="top" align="right"></td>
</tr></table></div>
@@ -103,86 +103,24 @@
<a name="gst-player-visualizations-get"></a><h3>gst_player_visualizations_get ()</h3>
<pre class="programlisting"><a class="link" href="gst-plugins-bad-libs-gstplayer-visualization.html#GstPlayerVisualization"><span class="returnvalue">GstPlayerVisualization</span></a> **
gst_player_visualizations_get (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
-<div class="refsect3">
-<a name="gst-player-visualizations-get.returns"></a><h4>Returns</h4>
-<p> a <a href="/usr/share/gtk-doc/html/glibglib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a> terminated array containing all available
-visualizations. Use <a class="link" href="gst-plugins-bad-libs-gstplayer-visualization.html#gst-player-visualizations-free" title="gst_player_visualizations_free ()"><code class="function">gst_player_visualizations_free()</code></a> after
-usage. </p>
-<p><span class="annotation">[<acronym title="Free data after the code is done."><span class="acronym">transfer full</span></acronym>][<acronym title="Parameter points to an array of items."><span class="acronym">array</span></acronym> zero-terminated=1][<acronym title="Generics and defining elements of containers and arrays."><span class="acronym">element-type</span></acronym> GstPlayerVisualization]</span></p>
-</div>
</div>
<hr>
<div class="refsect2">
<a name="gst-player-visualizations-free"></a><h3>gst_player_visualizations_free ()</h3>
<pre class="programlisting"><span class="returnvalue">void</span>
gst_player_visualizations_free (<em class="parameter"><code><a class="link" href="gst-plugins-bad-libs-gstplayer-visualization.html#GstPlayerVisualization"><span class="type">GstPlayerVisualization</span></a> **viss</code></em>);</pre>
-<p>Frees a <a href="/usr/share/gtk-doc/html/glibglib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a> terminated array of <a class="link" href="gst-plugins-bad-libs-gstplayer-visualization.html#GstPlayerVisualization"><span class="type">GstPlayerVisualization</span></a>.</p>
-<div class="refsect3">
-<a name="gst-player-visualizations-free.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody><tr>
-<td class="parameter_name"><p>viss</p></td>
-<td class="parameter_description"><p>a <a href="/usr/share/gtk-doc/html/glibglib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a> terminated array of <a class="link" href="gst-plugins-bad-libs-gstplayer-visualization.html#GstPlayerVisualization"><span class="type">GstPlayerVisualization</span></a> to free</p></td>
-<td class="parameter_annotations"> </td>
-</tr></tbody>
-</table></div>
-</div>
</div>
<hr>
<div class="refsect2">
<a name="gst-player-visualization-copy"></a><h3>gst_player_visualization_copy ()</h3>
<pre class="programlisting"><a class="link" href="gst-plugins-bad-libs-gstplayer-visualization.html#GstPlayerVisualization"><span class="returnvalue">GstPlayerVisualization</span></a> *
gst_player_visualization_copy (<em class="parameter"><code>const <a class="link" href="gst-plugins-bad-libs-gstplayer-visualization.html#GstPlayerVisualization"><span class="type">GstPlayerVisualization</span></a> *vis</code></em>);</pre>
-<p>Makes a copy of the <a class="link" href="gst-plugins-bad-libs-gstplayer-visualization.html#GstPlayerVisualization"><span class="type">GstPlayerVisualization</span></a>. The result must be
-freed using <a class="link" href="gst-plugins-bad-libs-gstplayer-visualization.html#gst-player-visualization-free" title="gst_player_visualization_free ()"><code class="function">gst_player_visualization_free()</code></a>.</p>
-<div class="refsect3">
-<a name="gst-player-visualization-copy.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody><tr>
-<td class="parameter_name"><p>vis</p></td>
-<td class="parameter_description"><p><a class="link" href="gst-plugins-bad-libs-gstplayer-visualization.html#GstPlayerVisualization"><span class="type">GstPlayerVisualization</span></a> instance</p></td>
-<td class="parameter_annotations"> </td>
-</tr></tbody>
-</table></div>
-</div>
-<div class="refsect3">
-<a name="gst-player-visualization-copy.returns"></a><h4>Returns</h4>
-<p> an allocated copy of <em class="parameter"><code>vis</code></em>
-. </p>
-<p><span class="annotation">[<acronym title="Free data after the code is done."><span class="acronym">transfer full</span></acronym>]</span></p>
-</div>
</div>
<hr>
<div class="refsect2">
<a name="gst-player-visualization-free"></a><h3>gst_player_visualization_free ()</h3>
<pre class="programlisting"><span class="returnvalue">void</span>
gst_player_visualization_free (<em class="parameter"><code><a class="link" href="gst-plugins-bad-libs-gstplayer-visualization.html#GstPlayerVisualization"><span class="type">GstPlayerVisualization</span></a> *vis</code></em>);</pre>
-<p>Frees a <a class="link" href="gst-plugins-bad-libs-gstplayer-visualization.html#GstPlayerVisualization"><span class="type">GstPlayerVisualization</span></a>.</p>
-<div class="refsect3">
-<a name="gst-player-visualization-free.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody><tr>
-<td class="parameter_name"><p>vis</p></td>
-<td class="parameter_description"><p><a class="link" href="gst-plugins-bad-libs-gstplayer-visualization.html#GstPlayerVisualization"><span class="type">GstPlayerVisualization</span></a> instance</p></td>
-<td class="parameter_annotations"> </td>
-</tr></tbody>
-</table></div>
-</div>
</div>
</div>
<div class="refsect1">
@@ -194,29 +132,6 @@
gchar *description;
};
</pre>
-<p>A <a class="link" href="gst-plugins-bad-libs-gstplayer-visualization.html#GstPlayerVisualization"><span class="type">GstPlayerVisualization</span></a> descriptor.</p>
-<div class="refsect3">
-<a name="GstPlayerVisualization.members"></a><h4>Members</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="300px" class="struct_members_name">
-<col class="struct_members_description">
-<col width="200px" class="struct_members_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *<em class="structfield"><code><a name="GstPlayerVisualization-struct.name"></a>name</code></em>;</p></td>
-<td class="struct_member_description"><p>name of the visualization.</p></td>
-<td class="struct_member_annotations"> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *<em class="structfield"><code><a name="GstPlayerVisualization-struct.description"></a>description</code></em>;</p></td>
-<td class="struct_member_description"><p>description of the visualization.</p></td>
-<td class="struct_member_annotations"> </td>
-</tr>
-</tbody>
-</table></div>
-</div>
</div>
</div>
</div>
diff --git a/docs/libs/html/gst-plugins-bad-libs-gstplayer.html b/docs/libs/html/gst-plugins-bad-libs-gstplayer.html
index 97ee382..7c38c8c 100644
--- a/docs/libs/html/gst-plugins-bad-libs-gstplayer.html
+++ b/docs/libs/html/gst-plugins-bad-libs-gstplayer.html
@@ -32,7 +32,7 @@
<div class="refnamediv"><table width="100%"><tr>
<td valign="top">
<h2><span class="refentrytitle"><a name="gst-plugins-bad-libs-gstplayer.top_of_page"></a>gstplayer</span></h2>
-<p>gstplayer — Player</p>
+<p>gstplayer</p>
</td>
<td class="gallery_image" valign="top" align="right"></td>
</tr></table></div>
@@ -363,6 +363,54 @@
</tr>
<tr>
<td class="function_type">
+<a href="/usr/share/gtk-doc/html/gst-plugins-base-libs-1.0gst-plugins-base-libs-gstvideo.html#GstVideoMultiviewMode"><span class="returnvalue">GstVideoMultiviewMode</span></a>
+</td>
+<td class="function_name">
+<a class="link" href="gst-plugins-bad-libs-gstplayer.html#gst-player-get-multiview-mode" title="gst_player_get_multiview_mode ()">gst_player_get_multiview_mode</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<span class="returnvalue">void</span>
+</td>
+<td class="function_name">
+<a class="link" href="gst-plugins-bad-libs-gstplayer.html#gst-player-set-multiview-mode" title="gst_player_set_multiview_mode ()">gst_player_set_multiview_mode</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<a href="/usr/share/gtk-doc/html/gst-plugins-base-libs-1.0gst-plugins-base-libs-gstvideo.html#GstVideoMultiviewFlags"><span class="returnvalue">GstVideoMultiviewFlags</span></a>
+</td>
+<td class="function_name">
+<a class="link" href="gst-plugins-bad-libs-gstplayer.html#gst-player-get-multiview-flags" title="gst_player_get_multiview_flags ()">gst_player_get_multiview_flags</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<span class="returnvalue">void</span>
+</td>
+<td class="function_name">
+<a class="link" href="gst-plugins-bad-libs-gstplayer.html#gst-player-set-multiview-flags" title="gst_player_set_multiview_flags ()">gst_player_set_multiview_flags</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gint64"><span class="returnvalue">gint64</span></a>
+</td>
+<td class="function_name">
+<a class="link" href="gst-plugins-bad-libs-gstplayer.html#gst-player-get-audio-video-offset" title="gst_player_get_audio_video_offset ()">gst_player_get_audio_video_offset</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
+<span class="returnvalue">void</span>
+</td>
+<td class="function_name">
+<a class="link" href="gst-plugins-bad-libs-gstplayer.html#gst-player-set-audio-video-offset" title="gst_player_set_audio_video_offset ()">gst_player_set_audio_video_offset</a> <span class="c_punctuation">()</span>
+</td>
+</tr>
+<tr>
+<td class="function_type">
<a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gdouble"><span class="returnvalue">gdouble</span></a>
</td>
<td class="function_name">
@@ -390,6 +438,11 @@
</colgroup>
<tbody>
<tr>
+<td class="property_type"><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gint64"><span class="type">gint64</span></a></td>
+<td class="property_name"><a class="link" href="gst-plugins-bad-libs-gstplayer.html#GstPlayer--audio-video-offset" title="The “audio-video-offset” property">audio-video-offset</a></td>
+<td class="property_flags">Read / Write</td>
+</tr>
+<tr>
<td class="property_type">
<a class="link" href="gst-plugins-bad-libs-gstplayer-mediainfo.html#GstPlayerAudioInfo"><span class="type">GstPlayerAudioInfo</span></a> *</td>
<td class="property_name"><a class="link" href="gst-plugins-bad-libs-gstplayer.html#GstPlayer--current-audio-track" title="The “current-audio-track” property">current-audio-track</a></td>
@@ -463,6 +516,16 @@
<td class="property_flags">Read / Write</td>
</tr>
<tr>
+<td class="property_type"><a href="/usr/share/gtk-doc/html/gst-plugins-base-libs-1.0gst-plugins-base-libs-gstvideo.html#GstVideoMultiviewFlags"><span class="type">GstVideoMultiviewFlags</span></a></td>
+<td class="property_name"><a class="link" href="gst-plugins-bad-libs-gstplayer.html#GstPlayer--video-multiview-flags" title="The “video-multiview-flags” property">video-multiview-flags</a></td>
+<td class="property_flags">Read / Write</td>
+</tr>
+<tr>
+<td class="property_type"><a href="/usr/share/gtk-doc/html/gst-plugins-base-libs-1.0gst-plugins-base-libs-gstvideo.html#GstVideoMultiviewFramePacking"><span class="type">GstVideoMultiviewFramePacking</span></a></td>
+<td class="property_name"><a class="link" href="gst-plugins-bad-libs-gstplayer.html#GstPlayer--video-multiview-mode" title="The “video-multiview-mode” property">video-multiview-mode</a></td>
+<td class="property_flags">Read / Write</td>
+</tr>
+<tr>
<td class="property_type">
<a class="link" href="gst-plugins-bad-libs-gstplayer.html#GstPlayerVideoRenderer"><span class="type">GstPlayerVideoRenderer</span></a> *</td>
<td class="property_name"><a class="link" href="gst-plugins-bad-libs-gstplayer.html#GstPlayer--video-renderer" title="The “video-renderer” property">video-renderer</a></td>
@@ -532,6 +595,11 @@
</tr>
<tr>
<td class="signal_type"><span class="returnvalue">void</span></td>
+<td class="signal_name"><a class="link" href="gst-plugins-bad-libs-gstplayer.html#GstPlayer-uri-loaded" title="The “uri-loaded” signal">uri-loaded</a></td>
+<td class="signal_flags"><a href="/usr/share/gtk-doc/html/gobjectgobject-Signals.html#G-SIGNAL-NO-HOOKS:CAPS">No Hooks</a></td>
+</tr>
+<tr>
+<td class="signal_type"><span class="returnvalue">void</span></td>
<td class="signal_name"><a class="link" href="gst-plugins-bad-libs-gstplayer.html#GstPlayer-video-dimensions-changed" title="The “video-dimensions-changed” signal">video-dimensions-changed</a></td>
<td class="signal_flags"><a href="/usr/share/gtk-doc/html/gobjectgobject-Signals.html#G-SIGNAL-NO-HOOKS:CAPS">No Hooks</a></td>
</tr>
@@ -635,107 +703,24 @@
<pre class="programlisting"><a class="link" href="gst-plugins-bad-libs-gstplayer.html#GstPlayer"><span class="returnvalue">GstPlayer</span></a> *
gst_player_new (<em class="parameter"><code><a class="link" href="gst-plugins-bad-libs-gstplayer.html#GstPlayerVideoRenderer"><span class="type">GstPlayerVideoRenderer</span></a> *video_renderer</code></em>,
<em class="parameter"><code><a class="link" href="gst-plugins-bad-libs-gstplayer.html#GstPlayerSignalDispatcher"><span class="type">GstPlayerSignalDispatcher</span></a> *signal_dispatcher</code></em>);</pre>
-<p>Creates a new <a class="link" href="gst-plugins-bad-libs-gstplayer.html#GstPlayer"><span class="type">GstPlayer</span></a> instance that uses <em class="parameter"><code>signal_dispatcher</code></em>
- to dispatch
-signals to some event loop system, or emits signals directly if NULL is
-passed. See <a class="link" href="gst-plugins-bad-libs-gstplayer-gmaincontextsignaldispatcher.html#gst-player-g-main-context-signal-dispatcher-new" title="gst_player_g_main_context_signal_dispatcher_new ()"><code class="function">gst_player_g_main_context_signal_dispatcher_new()</code></a>.</p>
-<p>Video is going to be rendered by <em class="parameter"><code>video_renderer</code></em>
-, or if <a href="/usr/share/gtk-doc/html/glibglib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a> is provided
-no special video set up will be done and some default handling will be
-performed.</p>
-<div class="refsect3">
-<a name="gst-player-new.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="parameter_name"><p>video_renderer</p></td>
-<td class="parameter_description"><p> GstPlayerVideoRenderer to use. </p></td>
-<td class="parameter_annotations"><span class="annotation">[<acronym title="Free data after the code is done."><span class="acronym">transfer full</span></acronym>][<acronym title="NULL is OK, both for passing and for returning."><span class="acronym">allow-none</span></acronym>]</span></td>
-</tr>
-<tr>
-<td class="parameter_name"><p>signal_dispatcher</p></td>
-<td class="parameter_description"><p> GstPlayerSignalDispatcher to use. </p></td>
-<td class="parameter_annotations"><span class="annotation">[<acronym title="Free data after the code is done."><span class="acronym">transfer full</span></acronym>][<acronym title="NULL is OK, both for passing and for returning."><span class="acronym">allow-none</span></acronym>]</span></td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<div class="refsect3">
-<a name="gst-player-new.returns"></a><h4>Returns</h4>
-<p> a new <a class="link" href="gst-plugins-bad-libs-gstplayer.html#GstPlayer"><span class="type">GstPlayer</span></a> instance</p>
-</div>
</div>
<hr>
<div class="refsect2">
<a name="gst-player-play"></a><h3>gst_player_play ()</h3>
<pre class="programlisting"><span class="returnvalue">void</span>
gst_player_play (<em class="parameter"><code><a class="link" href="gst-plugins-bad-libs-gstplayer.html#GstPlayer"><span class="type">GstPlayer</span></a> *player</code></em>);</pre>
-<p>Request to play the loaded stream.</p>
-<div class="refsect3">
-<a name="gst-player-play.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody><tr>
-<td class="parameter_name"><p>player</p></td>
-<td class="parameter_description"><p><a class="link" href="gst-plugins-bad-libs-gstplayer.html#GstPlayer"><span class="type">GstPlayer</span></a> instance</p></td>
-<td class="parameter_annotations"> </td>
-</tr></tbody>
-</table></div>
-</div>
</div>
<hr>
<div class="refsect2">
<a name="gst-player-pause"></a><h3>gst_player_pause ()</h3>
<pre class="programlisting"><span class="returnvalue">void</span>
gst_player_pause (<em class="parameter"><code><a class="link" href="gst-plugins-bad-libs-gstplayer.html#GstPlayer"><span class="type">GstPlayer</span></a> *player</code></em>);</pre>
-<p>Pauses the current stream.</p>
-<div class="refsect3">
-<a name="gst-player-pause.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody><tr>
-<td class="parameter_name"><p>player</p></td>
-<td class="parameter_description"><p><a class="link" href="gst-plugins-bad-libs-gstplayer.html#GstPlayer"><span class="type">GstPlayer</span></a> instance</p></td>
-<td class="parameter_annotations"> </td>
-</tr></tbody>
-</table></div>
-</div>
</div>
<hr>
<div class="refsect2">
<a name="gst-player-stop"></a><h3>gst_player_stop ()</h3>
<pre class="programlisting"><span class="returnvalue">void</span>
gst_player_stop (<em class="parameter"><code><a class="link" href="gst-plugins-bad-libs-gstplayer.html#GstPlayer"><span class="type">GstPlayer</span></a> *player</code></em>);</pre>
-<p>Stops playing the current stream and resets to the first position
-in the stream.</p>
-<div class="refsect3">
-<a name="gst-player-stop.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody><tr>
-<td class="parameter_name"><p>player</p></td>
-<td class="parameter_description"><p><a class="link" href="gst-plugins-bad-libs-gstplayer.html#GstPlayer"><span class="type">GstPlayer</span></a> instance</p></td>
-<td class="parameter_annotations"> </td>
-</tr></tbody>
-</table></div>
-</div>
</div>
<hr>
<div class="refsect2">
@@ -743,31 +728,6 @@
<pre class="programlisting"><span class="returnvalue">void</span>
gst_player_seek (<em class="parameter"><code><a class="link" href="gst-plugins-bad-libs-gstplayer.html#GstPlayer"><span class="type">GstPlayer</span></a> *player</code></em>,
<em class="parameter"><code><a href="/usr/share/gtk-doc/html/gstreamer-1.0GstClock.html#GstClockTime"><span class="type">GstClockTime</span></a> position</code></em>);</pre>
-<p>Seeks the currently-playing stream to the absolute <em class="parameter"><code>position</code></em>
- time
-in nanoseconds.</p>
-<div class="refsect3">
-<a name="gst-player-seek.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="parameter_name"><p>player</p></td>
-<td class="parameter_description"><p><a class="link" href="gst-plugins-bad-libs-gstplayer.html#GstPlayer"><span class="type">GstPlayer</span></a> instance</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>position</p></td>
-<td class="parameter_description"><p>position to seek in nanoseconds</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-</tbody>
-</table></div>
-</div>
</div>
<hr>
<div class="refsect2">
@@ -775,110 +735,24 @@
<pre class="programlisting"><span class="returnvalue">void</span>
gst_player_set_uri (<em class="parameter"><code><a class="link" href="gst-plugins-bad-libs-gstplayer.html#GstPlayer"><span class="type">GstPlayer</span></a> *player</code></em>,
<em class="parameter"><code>const <a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *uri</code></em>);</pre>
-<p>Sets the next URI to play.</p>
-<div class="refsect3">
-<a name="gst-player-set-uri.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="parameter_name"><p>player</p></td>
-<td class="parameter_description"><p><a class="link" href="gst-plugins-bad-libs-gstplayer.html#GstPlayer"><span class="type">GstPlayer</span></a> instance</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>uri</p></td>
-<td class="parameter_description"><p>next URI to play.</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-</tbody>
-</table></div>
-</div>
</div>
<hr>
<div class="refsect2">
<a name="gst-player-get-uri"></a><h3>gst_player_get_uri ()</h3>
<pre class="programlisting"><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gchar"><span class="returnvalue">gchar</span></a> *
gst_player_get_uri (<em class="parameter"><code><a class="link" href="gst-plugins-bad-libs-gstplayer.html#GstPlayer"><span class="type">GstPlayer</span></a> *player</code></em>);</pre>
-<p>Gets the URI of the currently-playing stream.</p>
-<div class="refsect3">
-<a name="gst-player-get-uri.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody><tr>
-<td class="parameter_name"><p>player</p></td>
-<td class="parameter_description"><p><a class="link" href="gst-plugins-bad-libs-gstplayer.html#GstPlayer"><span class="type">GstPlayer</span></a> instance</p></td>
-<td class="parameter_annotations"> </td>
-</tr></tbody>
-</table></div>
-</div>
-<div class="refsect3">
-<a name="gst-player-get-uri.returns"></a><h4>Returns</h4>
-<p> a string containing the URI of the
-currently-playing stream. <a href="/usr/share/gtk-doc/html/glibglib-Memory-Allocation.html#g-free"><code class="function">g_free()</code></a> after usage. </p>
-<p><span class="annotation">[<acronym title="Free data after the code is done."><span class="acronym">transfer full</span></acronym>]</span></p>
-</div>
</div>
<hr>
<div class="refsect2">
<a name="gst-player-get-duration"></a><h3>gst_player_get_duration ()</h3>
<pre class="programlisting"><a href="/usr/share/gtk-doc/html/gstreamer-1.0GstClock.html#GstClockTime"><span class="returnvalue">GstClockTime</span></a>
gst_player_get_duration (<em class="parameter"><code><a class="link" href="gst-plugins-bad-libs-gstplayer.html#GstPlayer"><span class="type">GstPlayer</span></a> *player</code></em>);</pre>
-<p>Retrieves the duration of the media stream that self represents.</p>
-<div class="refsect3">
-<a name="gst-player-get-duration.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody><tr>
-<td class="parameter_name"><p>player</p></td>
-<td class="parameter_description"><p><a class="link" href="gst-plugins-bad-libs-gstplayer.html#GstPlayer"><span class="type">GstPlayer</span></a> instance</p></td>
-<td class="parameter_annotations"> </td>
-</tr></tbody>
-</table></div>
-</div>
-<div class="refsect3">
-<a name="gst-player-get-duration.returns"></a><h4>Returns</h4>
-<p> the duration of the currently-playing media stream, in
-nanoseconds.</p>
-</div>
</div>
<hr>
<div class="refsect2">
<a name="gst-player-get-position"></a><h3>gst_player_get_position ()</h3>
<pre class="programlisting"><a href="/usr/share/gtk-doc/html/gstreamer-1.0GstClock.html#GstClockTime"><span class="returnvalue">GstClockTime</span></a>
gst_player_get_position (<em class="parameter"><code><a class="link" href="gst-plugins-bad-libs-gstplayer.html#GstPlayer"><span class="type">GstPlayer</span></a> *player</code></em>);</pre>
-<div class="refsect3">
-<a name="gst-player-get-position.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody><tr>
-<td class="parameter_name"><p>player</p></td>
-<td class="parameter_description"><p><a class="link" href="gst-plugins-bad-libs-gstplayer.html#GstPlayer"><span class="type">GstPlayer</span></a> instance</p></td>
-<td class="parameter_annotations"> </td>
-</tr></tbody>
-</table></div>
-</div>
-<div class="refsect3">
-<a name="gst-player-get-position.returns"></a><h4>Returns</h4>
-<p> the absolute position time, in nanoseconds, of the
-currently-playing stream.</p>
-</div>
</div>
<hr>
<div class="refsect2">
@@ -886,29 +760,6 @@
<pre class="programlisting"><span class="returnvalue">void</span>
gst_player_set_volume (<em class="parameter"><code><a class="link" href="gst-plugins-bad-libs-gstplayer.html#GstPlayer"><span class="type">GstPlayer</span></a> *player</code></em>,
<em class="parameter"><code><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gdouble"><span class="type">gdouble</span></a> val</code></em>);</pre>
-<p>Sets the volume level of the stream as a percentage between 0 and 1.</p>
-<div class="refsect3">
-<a name="gst-player-set-volume.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="parameter_name"><p>player</p></td>
-<td class="parameter_description"><p><a class="link" href="gst-plugins-bad-libs-gstplayer.html#GstPlayer"><span class="type">GstPlayer</span></a> instance</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>val</p></td>
-<td class="parameter_description"><p>the new volume level, as a percentage between 0 and 1</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-</tbody>
-</table></div>
-</div>
</div>
<hr>
<div class="refsect2">
@@ -916,106 +767,24 @@
<pre class="programlisting"><span class="returnvalue">void</span>
gst_player_set_mute (<em class="parameter"><code><a class="link" href="gst-plugins-bad-libs-gstplayer.html#GstPlayer"><span class="type">GstPlayer</span></a> *player</code></em>,
<em class="parameter"><code><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a> val</code></em>);</pre>
-<p><a href="/usr/share/gtk-doc/html/glibglib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if the currently-playing stream should be muted.</p>
-<div class="refsect3">
-<a name="gst-player-set-mute.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="parameter_name"><p>player</p></td>
-<td class="parameter_description"><p><a class="link" href="gst-plugins-bad-libs-gstplayer.html#GstPlayer"><span class="type">GstPlayer</span></a> instance</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>val</p></td>
-<td class="parameter_description"><p>Mute state the should be set</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-</tbody>
-</table></div>
-</div>
</div>
<hr>
<div class="refsect2">
<a name="gst-player-get-volume"></a><h3>gst_player_get_volume ()</h3>
<pre class="programlisting"><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gdouble"><span class="returnvalue">gdouble</span></a>
gst_player_get_volume (<em class="parameter"><code><a class="link" href="gst-plugins-bad-libs-gstplayer.html#GstPlayer"><span class="type">GstPlayer</span></a> *player</code></em>);</pre>
-<p>Returns the current volume level, as a percentage between 0 and 1.</p>
-<div class="refsect3">
-<a name="gst-player-get-volume.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody><tr>
-<td class="parameter_name"><p>player</p></td>
-<td class="parameter_description"><p><a class="link" href="gst-plugins-bad-libs-gstplayer.html#GstPlayer"><span class="type">GstPlayer</span></a> instance</p></td>
-<td class="parameter_annotations"> </td>
-</tr></tbody>
-</table></div>
-</div>
-<div class="refsect3">
-<a name="gst-player-get-volume.returns"></a><h4>Returns</h4>
-<p> the volume as percentage between 0 and 1.</p>
-</div>
</div>
<hr>
<div class="refsect2">
<a name="gst-player-get-mute"></a><h3>gst_player_get_mute ()</h3>
<pre class="programlisting"><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
gst_player_get_mute (<em class="parameter"><code><a class="link" href="gst-plugins-bad-libs-gstplayer.html#GstPlayer"><span class="type">GstPlayer</span></a> *player</code></em>);</pre>
-<div class="refsect3">
-<a name="gst-player-get-mute.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody><tr>
-<td class="parameter_name"><p>player</p></td>
-<td class="parameter_description"><p><a class="link" href="gst-plugins-bad-libs-gstplayer.html#GstPlayer"><span class="type">GstPlayer</span></a> instance</p></td>
-<td class="parameter_annotations"> </td>
-</tr></tbody>
-</table></div>
-</div>
-<div class="refsect3">
-<a name="gst-player-get-mute.returns"></a><h4>Returns</h4>
-<p> <a href="/usr/share/gtk-doc/html/glibglib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if the currently-playing stream is muted.</p>
-</div>
</div>
<hr>
<div class="refsect2">
<a name="gst-player-get-pipeline"></a><h3>gst_player_get_pipeline ()</h3>
<pre class="programlisting"><a href="/usr/share/gtk-doc/html/gstreamer-1.0GstElement.html#GstElement-struct"><span class="returnvalue">GstElement</span></a> *
gst_player_get_pipeline (<em class="parameter"><code><a class="link" href="gst-plugins-bad-libs-gstplayer.html#GstPlayer"><span class="type">GstPlayer</span></a> *player</code></em>);</pre>
-<div class="refsect3">
-<a name="gst-player-get-pipeline.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody><tr>
-<td class="parameter_name"><p>player</p></td>
-<td class="parameter_description"><p><a class="link" href="gst-plugins-bad-libs-gstplayer.html#GstPlayer"><span class="type">GstPlayer</span></a> instance</p></td>
-<td class="parameter_annotations"> </td>
-</tr></tbody>
-</table></div>
-</div>
-<div class="refsect3">
-<a name="gst-player-get-pipeline.returns"></a><h4>Returns</h4>
-<p> The internal playbin instance. </p>
-<p><span class="annotation">[<acronym title="Free data after the code is done."><span class="acronym">transfer full</span></acronym>]</span></p>
-</div>
</div>
<hr>
<div class="refsect2">
@@ -1024,30 +793,6 @@
gst_player_set_position_update_interval
(<em class="parameter"><code><a class="link" href="gst-plugins-bad-libs-gstplayer.html#GstPlayer"><span class="type">GstPlayer</span></a> *player</code></em>,
<em class="parameter"><code><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint"><span class="type">guint</span></a> interval</code></em>);</pre>
-<p>Set interval in milliseconds between two position-updated signals.
-Pass 0 to stop updating the position.</p>
-<div class="refsect3">
-<a name="gst-player-set-position-update-interval.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="parameter_name"><p>player</p></td>
-<td class="parameter_description"><p><a class="link" href="gst-plugins-bad-libs-gstplayer.html#GstPlayer"><span class="type">GstPlayer</span></a> instance</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>interval</p></td>
-<td class="parameter_description"><p>interval in ms</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-</tbody>
-</table></div>
-</div>
</div>
<hr>
<div class="refsect2">
@@ -1055,188 +800,42 @@
<pre class="programlisting"><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint"><span class="returnvalue">guint</span></a>
gst_player_get_position_update_interval
(<em class="parameter"><code><a class="link" href="gst-plugins-bad-libs-gstplayer.html#GstPlayer"><span class="type">GstPlayer</span></a> *player</code></em>);</pre>
-<div class="refsect3">
-<a name="gst-player-get-position-update-interval.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody><tr>
-<td class="parameter_name"><p>player</p></td>
-<td class="parameter_description"><p><a class="link" href="gst-plugins-bad-libs-gstplayer.html#GstPlayer"><span class="type">GstPlayer</span></a> instance</p></td>
-<td class="parameter_annotations"> </td>
-</tr></tbody>
-</table></div>
-</div>
-<div class="refsect3">
-<a name="gst-player-get-position-update-interval.returns"></a><h4>Returns</h4>
-<p> current position update interval in milliseconds</p>
-</div>
</div>
<hr>
<div class="refsect2">
<a name="gst-player-state-get-name"></a><h3>gst_player_state_get_name ()</h3>
<pre class="programlisting">const <a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gchar"><span class="returnvalue">gchar</span></a> *
gst_player_state_get_name (<em class="parameter"><code><a class="link" href="gst-plugins-bad-libs-gstplayer.html#GstPlayerState" title="enum GstPlayerState"><span class="type">GstPlayerState</span></a> state</code></em>);</pre>
-<p>Gets a string representing the given state.</p>
-<div class="refsect3">
-<a name="gst-player-state-get-name.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody><tr>
-<td class="parameter_name"><p>state</p></td>
-<td class="parameter_description"><p>a <a class="link" href="gst-plugins-bad-libs-gstplayer.html#GstPlayerState" title="enum GstPlayerState"><span class="type">GstPlayerState</span></a></p></td>
-<td class="parameter_annotations"> </td>
-</tr></tbody>
-</table></div>
-</div>
-<div class="refsect3">
-<a name="gst-player-state-get-name.returns"></a><h4>Returns</h4>
-<p> a string with the name of the state. </p>
-<p><span class="annotation">[<acronym title="Don't free data after the code is done."><span class="acronym">transfer none</span></acronym>]</span></p>
-</div>
</div>
<hr>
<div class="refsect2">
<a name="gst-player-error-get-name"></a><h3>gst_player_error_get_name ()</h3>
<pre class="programlisting">const <a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gchar"><span class="returnvalue">gchar</span></a> *
gst_player_error_get_name (<em class="parameter"><code><a class="link" href="gst-plugins-bad-libs-gstplayer.html#GstPlayerError" title="enum GstPlayerError"><span class="type">GstPlayerError</span></a> error</code></em>);</pre>
-<p>Gets a string representing the given error.</p>
-<div class="refsect3">
-<a name="gst-player-error-get-name.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody><tr>
-<td class="parameter_name"><p>error</p></td>
-<td class="parameter_description"><p>a <a class="link" href="gst-plugins-bad-libs-gstplayer.html#GstPlayerError" title="enum GstPlayerError"><span class="type">GstPlayerError</span></a></p></td>
-<td class="parameter_annotations"> </td>
-</tr></tbody>
-</table></div>
-</div>
-<div class="refsect3">
-<a name="gst-player-error-get-name.returns"></a><h4>Returns</h4>
-<p> a string with the given error. </p>
-<p><span class="annotation">[<acronym title="Don't free data after the code is done."><span class="acronym">transfer none</span></acronym>]</span></p>
-</div>
</div>
<hr>
<div class="refsect2">
<a name="gst-player-get-media-info"></a><h3>gst_player_get_media_info ()</h3>
<pre class="programlisting"><a class="link" href="gst-plugins-bad-libs-gstplayer-mediainfo.html#GstPlayerMediaInfo"><span class="returnvalue">GstPlayerMediaInfo</span></a> *
gst_player_get_media_info (<em class="parameter"><code><a class="link" href="gst-plugins-bad-libs-gstplayer.html#GstPlayer"><span class="type">GstPlayer</span></a> *player</code></em>);</pre>
-<p>A Function to get the current media info <a class="link" href="gst-plugins-bad-libs-gstplayer-mediainfo.html#GstPlayerMediaInfo"><span class="type">GstPlayerMediaInfo</span></a> instance.</p>
-<div class="refsect3">
-<a name="gst-player-get-media-info.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody><tr>
-<td class="parameter_name"><p>player</p></td>
-<td class="parameter_description"><p><a class="link" href="gst-plugins-bad-libs-gstplayer.html#GstPlayer"><span class="type">GstPlayer</span></a> instance</p></td>
-<td class="parameter_annotations"> </td>
-</tr></tbody>
-</table></div>
-</div>
-<div class="refsect3">
-<a name="gst-player-get-media-info.returns"></a><h4>Returns</h4>
-<p> media info instance.</p>
-<p>The caller should free it with <a href="/usr/share/gtk-doc/html/gobjectgobject-The-Base-Object-Type.html#g-object-unref"><code class="function">g_object_unref()</code></a>. </p>
-<p><span class="annotation">[<acronym title="Free data after the code is done."><span class="acronym">transfer full</span></acronym>]</span></p>
-</div>
</div>
<hr>
<div class="refsect2">
<a name="gst-player-get-audio-streams"></a><h3>gst_player_get_audio_streams ()</h3>
<pre class="programlisting"><a href="/usr/share/gtk-doc/html/glibglib-Doubly-Linked-Lists.html#GList"><span class="returnvalue">GList</span></a> *
gst_player_get_audio_streams (<em class="parameter"><code>const <a class="link" href="gst-plugins-bad-libs-gstplayer-mediainfo.html#GstPlayerMediaInfo"><span class="type">GstPlayerMediaInfo</span></a> *info</code></em>);</pre>
-<div class="refsect3">
-<a name="gst-player-get-audio-streams.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody><tr>
-<td class="parameter_name"><p>info</p></td>
-<td class="parameter_description"><p>a <a class="link" href="gst-plugins-bad-libs-gstplayer-mediainfo.html#GstPlayerMediaInfo"><span class="type">GstPlayerMediaInfo</span></a></p></td>
-<td class="parameter_annotations"> </td>
-</tr></tbody>
-</table></div>
-</div>
-<div class="refsect3">
-<a name="gst-player-get-audio-streams.returns"></a><h4>Returns</h4>
-<p> A <a href="/usr/share/gtk-doc/html/glibglib-Doubly-Linked-Lists.html#GList"><span class="type">GList</span></a> of
-matching <a class="link" href="gst-plugins-bad-libs-gstplayer-mediainfo.html#GstPlayerAudioInfo"><span class="type">GstPlayerAudioInfo</span></a>. </p>
-<p><span class="annotation">[<acronym title="Don't free data after the code is done."><span class="acronym">transfer none</span></acronym>][<acronym title="Generics and defining elements of containers and arrays."><span class="acronym">element-type</span></acronym> GstPlayerAudioInfo]</span></p>
-</div>
</div>
<hr>
<div class="refsect2">
<a name="gst-player-get-video-streams"></a><h3>gst_player_get_video_streams ()</h3>
<pre class="programlisting"><a href="/usr/share/gtk-doc/html/glibglib-Doubly-Linked-Lists.html#GList"><span class="returnvalue">GList</span></a> *
gst_player_get_video_streams (<em class="parameter"><code>const <a class="link" href="gst-plugins-bad-libs-gstplayer-mediainfo.html#GstPlayerMediaInfo"><span class="type">GstPlayerMediaInfo</span></a> *info</code></em>);</pre>
-<div class="refsect3">
-<a name="gst-player-get-video-streams.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody><tr>
-<td class="parameter_name"><p>info</p></td>
-<td class="parameter_description"><p>a <a class="link" href="gst-plugins-bad-libs-gstplayer-mediainfo.html#GstPlayerMediaInfo"><span class="type">GstPlayerMediaInfo</span></a></p></td>
-<td class="parameter_annotations"> </td>
-</tr></tbody>
-</table></div>
-</div>
-<div class="refsect3">
-<a name="gst-player-get-video-streams.returns"></a><h4>Returns</h4>
-<p> A <a href="/usr/share/gtk-doc/html/glibglib-Doubly-Linked-Lists.html#GList"><span class="type">GList</span></a> of
-matching <a class="link" href="gst-plugins-bad-libs-gstplayer-mediainfo.html#GstPlayerVideoInfo"><span class="type">GstPlayerVideoInfo</span></a>. </p>
-<p><span class="annotation">[<acronym title="Don't free data after the code is done."><span class="acronym">transfer none</span></acronym>][<acronym title="Generics and defining elements of containers and arrays."><span class="acronym">element-type</span></acronym> GstPlayerVideoInfo]</span></p>
-</div>
</div>
<hr>
<div class="refsect2">
<a name="gst-player-get-subtitle-streams"></a><h3>gst_player_get_subtitle_streams ()</h3>
<pre class="programlisting"><a href="/usr/share/gtk-doc/html/glibglib-Doubly-Linked-Lists.html#GList"><span class="returnvalue">GList</span></a> *
gst_player_get_subtitle_streams (<em class="parameter"><code>const <a class="link" href="gst-plugins-bad-libs-gstplayer-mediainfo.html#GstPlayerMediaInfo"><span class="type">GstPlayerMediaInfo</span></a> *info</code></em>);</pre>
-<div class="refsect3">
-<a name="gst-player-get-subtitle-streams.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody><tr>
-<td class="parameter_name"><p>info</p></td>
-<td class="parameter_description"><p>a <a class="link" href="gst-plugins-bad-libs-gstplayer-mediainfo.html#GstPlayerMediaInfo"><span class="type">GstPlayerMediaInfo</span></a></p></td>
-<td class="parameter_annotations"> </td>
-</tr></tbody>
-</table></div>
-</div>
-<div class="refsect3">
-<a name="gst-player-get-subtitle-streams.returns"></a><h4>Returns</h4>
-<p> A <a href="/usr/share/gtk-doc/html/glibglib-Doubly-Linked-Lists.html#GList"><span class="type">GList</span></a> of
-matching <a class="link" href="gst-plugins-bad-libs-gstplayer-mediainfo.html#GstPlayerSubtitleInfo"><span class="type">GstPlayerSubtitleInfo</span></a>. </p>
-<p><span class="annotation">[<acronym title="Don't free data after the code is done."><span class="acronym">transfer none</span></acronym>][<acronym title="Generics and defining elements of containers and arrays."><span class="acronym">element-type</span></acronym> GstPlayerSubtitleInfo]</span></p>
-</div>
</div>
<hr>
<div class="refsect2">
@@ -1244,34 +843,6 @@
<pre class="programlisting"><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
gst_player_set_audio_track (<em class="parameter"><code><a class="link" href="gst-plugins-bad-libs-gstplayer.html#GstPlayer"><span class="type">GstPlayer</span></a> *player</code></em>,
<em class="parameter"><code><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gint"><span class="type">gint</span></a> stream_index</code></em>);</pre>
-<div class="refsect3">
-<a name="gst-player-set-audio-track.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="parameter_name"><p>player</p></td>
-<td class="parameter_description"><p><a class="link" href="gst-plugins-bad-libs-gstplayer.html#GstPlayer"><span class="type">GstPlayer</span></a> instance</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>stream_index</p></td>
-<td class="parameter_description"><p>stream index</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<div class="refsect3">
-<a name="gst-player-set-audio-track.returns"></a><h4>Returns</h4>
-<p> <a href="/usr/share/gtk-doc/html/glibglib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> or <a href="/usr/share/gtk-doc/html/glibglib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a></p>
-<p>Sets the audio track <em class="parameter"><code>stream_idex</code></em>
-.</p>
-</div>
</div>
<hr>
<div class="refsect2">
@@ -1279,34 +850,6 @@
<pre class="programlisting"><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
gst_player_set_video_track (<em class="parameter"><code><a class="link" href="gst-plugins-bad-libs-gstplayer.html#GstPlayer"><span class="type">GstPlayer</span></a> *player</code></em>,
<em class="parameter"><code><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gint"><span class="type">gint</span></a> stream_index</code></em>);</pre>
-<div class="refsect3">
-<a name="gst-player-set-video-track.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="parameter_name"><p>player</p></td>
-<td class="parameter_description"><p><a class="link" href="gst-plugins-bad-libs-gstplayer.html#GstPlayer"><span class="type">GstPlayer</span></a> instance</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>stream_index</p></td>
-<td class="parameter_description"><p>stream index</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<div class="refsect3">
-<a name="gst-player-set-video-track.returns"></a><h4>Returns</h4>
-<p> <a href="/usr/share/gtk-doc/html/glibglib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> or <a href="/usr/share/gtk-doc/html/glibglib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a></p>
-<p>Sets the video track <em class="parameter"><code>stream_index</code></em>
-.</p>
-</div>
</div>
<hr>
<div class="refsect2">
@@ -1314,118 +857,24 @@
<pre class="programlisting"><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
gst_player_set_subtitle_track (<em class="parameter"><code><a class="link" href="gst-plugins-bad-libs-gstplayer.html#GstPlayer"><span class="type">GstPlayer</span></a> *player</code></em>,
<em class="parameter"><code><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gint"><span class="type">gint</span></a> stream_index</code></em>);</pre>
-<div class="refsect3">
-<a name="gst-player-set-subtitle-track.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="parameter_name"><p>player</p></td>
-<td class="parameter_description"><p><a class="link" href="gst-plugins-bad-libs-gstplayer.html#GstPlayer"><span class="type">GstPlayer</span></a> instance</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>stream_index</p></td>
-<td class="parameter_description"><p>stream index</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<div class="refsect3">
-<a name="gst-player-set-subtitle-track.returns"></a><h4>Returns</h4>
-<p> <a href="/usr/share/gtk-doc/html/glibglib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> or <a href="/usr/share/gtk-doc/html/glibglib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a></p>
-<p>Sets the subtitle strack <em class="parameter"><code>stream_index</code></em>
-.</p>
-</div>
</div>
<hr>
<div class="refsect2">
<a name="gst-player-get-current-audio-track"></a><h3>gst_player_get_current_audio_track ()</h3>
<pre class="programlisting"><a class="link" href="gst-plugins-bad-libs-gstplayer-mediainfo.html#GstPlayerAudioInfo"><span class="returnvalue">GstPlayerAudioInfo</span></a> *
gst_player_get_current_audio_track (<em class="parameter"><code><a class="link" href="gst-plugins-bad-libs-gstplayer.html#GstPlayer"><span class="type">GstPlayer</span></a> *player</code></em>);</pre>
-<p>A Function to get current audio <a class="link" href="gst-plugins-bad-libs-gstplayer-mediainfo.html#GstPlayerAudioInfo"><span class="type">GstPlayerAudioInfo</span></a> instance.</p>
-<div class="refsect3">
-<a name="gst-player-get-current-audio-track.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody><tr>
-<td class="parameter_name"><p>player</p></td>
-<td class="parameter_description"><p><a class="link" href="gst-plugins-bad-libs-gstplayer.html#GstPlayer"><span class="type">GstPlayer</span></a> instance</p></td>
-<td class="parameter_annotations"> </td>
-</tr></tbody>
-</table></div>
-</div>
-<div class="refsect3">
-<a name="gst-player-get-current-audio-track.returns"></a><h4>Returns</h4>
-<p> current audio track.</p>
-<p>The caller should free it with <a href="/usr/share/gtk-doc/html/gobjectgobject-The-Base-Object-Type.html#g-object-unref"><code class="function">g_object_unref()</code></a>. </p>
-<p><span class="annotation">[<acronym title="Free data after the code is done."><span class="acronym">transfer full</span></acronym>]</span></p>
-</div>
</div>
<hr>
<div class="refsect2">
<a name="gst-player-get-current-video-track"></a><h3>gst_player_get_current_video_track ()</h3>
<pre class="programlisting"><a class="link" href="gst-plugins-bad-libs-gstplayer-mediainfo.html#GstPlayerVideoInfo"><span class="returnvalue">GstPlayerVideoInfo</span></a> *
gst_player_get_current_video_track (<em class="parameter"><code><a class="link" href="gst-plugins-bad-libs-gstplayer.html#GstPlayer"><span class="type">GstPlayer</span></a> *player</code></em>);</pre>
-<p>A Function to get current video <a class="link" href="gst-plugins-bad-libs-gstplayer-mediainfo.html#GstPlayerVideoInfo"><span class="type">GstPlayerVideoInfo</span></a> instance.</p>
-<div class="refsect3">
-<a name="gst-player-get-current-video-track.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody><tr>
-<td class="parameter_name"><p>player</p></td>
-<td class="parameter_description"><p><a class="link" href="gst-plugins-bad-libs-gstplayer.html#GstPlayer"><span class="type">GstPlayer</span></a> instance</p></td>
-<td class="parameter_annotations"> </td>
-</tr></tbody>
-</table></div>
-</div>
-<div class="refsect3">
-<a name="gst-player-get-current-video-track.returns"></a><h4>Returns</h4>
-<p> current video track.</p>
-<p>The caller should free it with <a href="/usr/share/gtk-doc/html/gobjectgobject-The-Base-Object-Type.html#g-object-unref"><code class="function">g_object_unref()</code></a>. </p>
-<p><span class="annotation">[<acronym title="Free data after the code is done."><span class="acronym">transfer full</span></acronym>]</span></p>
-</div>
</div>
<hr>
<div class="refsect2">
<a name="gst-player-get-current-subtitle-track"></a><h3>gst_player_get_current_subtitle_track ()</h3>
<pre class="programlisting"><a class="link" href="gst-plugins-bad-libs-gstplayer-mediainfo.html#GstPlayerSubtitleInfo"><span class="returnvalue">GstPlayerSubtitleInfo</span></a> *
gst_player_get_current_subtitle_track (<em class="parameter"><code><a class="link" href="gst-plugins-bad-libs-gstplayer.html#GstPlayer"><span class="type">GstPlayer</span></a> *player</code></em>);</pre>
-<p>A Function to get current subtitle <a class="link" href="gst-plugins-bad-libs-gstplayer-mediainfo.html#GstPlayerSubtitleInfo"><span class="type">GstPlayerSubtitleInfo</span></a> instance.</p>
-<div class="refsect3">
-<a name="gst-player-get-current-subtitle-track.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody><tr>
-<td class="parameter_name"><p>player</p></td>
-<td class="parameter_description"><p><a class="link" href="gst-plugins-bad-libs-gstplayer.html#GstPlayer"><span class="type">GstPlayer</span></a> instance</p></td>
-<td class="parameter_annotations"> </td>
-</tr></tbody>
-</table></div>
-</div>
-<div class="refsect3">
-<a name="gst-player-get-current-subtitle-track.returns"></a><h4>Returns</h4>
-<p> current subtitle track.</p>
-<p>The caller should free it with <a href="/usr/share/gtk-doc/html/gobjectgobject-The-Base-Object-Type.html#g-object-unref"><code class="function">g_object_unref()</code></a>. </p>
-<p><span class="annotation">[<acronym title="Don't free data after the code is done."><span class="acronym">transfer none</span></acronym>]</span></p>
-</div>
</div>
<hr>
<div class="refsect2">
@@ -1433,29 +882,6 @@
<pre class="programlisting"><span class="returnvalue">void</span>
gst_player_set_audio_track_enabled (<em class="parameter"><code><a class="link" href="gst-plugins-bad-libs-gstplayer.html#GstPlayer"><span class="type">GstPlayer</span></a> *player</code></em>,
<em class="parameter"><code><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a> enabled</code></em>);</pre>
-<p>Enable or disable the current audio track.</p>
-<div class="refsect3">
-<a name="gst-player-set-audio-track-enabled.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="parameter_name"><p>player</p></td>
-<td class="parameter_description"><p><a class="link" href="gst-plugins-bad-libs-gstplayer.html#GstPlayer"><span class="type">GstPlayer</span></a> instance</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>enabled</p></td>
-<td class="parameter_description"><p>TRUE or FALSE</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-</tbody>
-</table></div>
-</div>
</div>
<hr>
<div class="refsect2">
@@ -1463,29 +889,6 @@
<pre class="programlisting"><span class="returnvalue">void</span>
gst_player_set_video_track_enabled (<em class="parameter"><code><a class="link" href="gst-plugins-bad-libs-gstplayer.html#GstPlayer"><span class="type">GstPlayer</span></a> *player</code></em>,
<em class="parameter"><code><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a> enabled</code></em>);</pre>
-<p>Enable or disable the current video track.</p>
-<div class="refsect3">
-<a name="gst-player-set-video-track-enabled.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="parameter_name"><p>player</p></td>
-<td class="parameter_description"><p><a class="link" href="gst-plugins-bad-libs-gstplayer.html#GstPlayer"><span class="type">GstPlayer</span></a> instance</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>enabled</p></td>
-<td class="parameter_description"><p>TRUE or FALSE</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-</tbody>
-</table></div>
-</div>
</div>
<hr>
<div class="refsect2">
@@ -1493,29 +896,6 @@
<pre class="programlisting"><span class="returnvalue">void</span>
gst_player_set_subtitle_track_enabled (<em class="parameter"><code><a class="link" href="gst-plugins-bad-libs-gstplayer.html#GstPlayer"><span class="type">GstPlayer</span></a> *player</code></em>,
<em class="parameter"><code><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a> enabled</code></em>);</pre>
-<p>Enable or disable the current subtitle track.</p>
-<div class="refsect3">
-<a name="gst-player-set-subtitle-track-enabled.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="parameter_name"><p>player</p></td>
-<td class="parameter_description"><p><a class="link" href="gst-plugins-bad-libs-gstplayer.html#GstPlayer"><span class="type">GstPlayer</span></a> instance</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>enabled</p></td>
-<td class="parameter_description"><p>TRUE or FALSE</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-</tbody>
-</table></div>
-</div>
</div>
<hr>
<div class="refsect2">
@@ -1523,61 +903,12 @@
<pre class="programlisting"><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
gst_player_set_subtitle_uri (<em class="parameter"><code><a class="link" href="gst-plugins-bad-libs-gstplayer.html#GstPlayer"><span class="type">GstPlayer</span></a> *player</code></em>,
<em class="parameter"><code>const <a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *uri</code></em>);</pre>
-<div class="refsect3">
-<a name="gst-player-set-subtitle-uri.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="parameter_name"><p>player</p></td>
-<td class="parameter_description"><p><a class="link" href="gst-plugins-bad-libs-gstplayer.html#GstPlayer"><span class="type">GstPlayer</span></a> instance</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>uri</p></td>
-<td class="parameter_description"><p>subtitle URI</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<div class="refsect3">
-<a name="gst-player-set-subtitle-uri.returns"></a><h4>Returns</h4>
-<p> <a href="/usr/share/gtk-doc/html/glibglib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> or <a href="/usr/share/gtk-doc/html/glibglib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a></p>
-<p>Sets the external subtitle URI.</p>
-</div>
</div>
<hr>
<div class="refsect2">
<a name="gst-player-get-subtitle-uri"></a><h3>gst_player_get_subtitle_uri ()</h3>
<pre class="programlisting"><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gchar"><span class="returnvalue">gchar</span></a> *
gst_player_get_subtitle_uri (<em class="parameter"><code><a class="link" href="gst-plugins-bad-libs-gstplayer.html#GstPlayer"><span class="type">GstPlayer</span></a> *player</code></em>);</pre>
-<p>current subtitle URI</p>
-<div class="refsect3">
-<a name="gst-player-get-subtitle-uri.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody><tr>
-<td class="parameter_name"><p>player</p></td>
-<td class="parameter_description"><p><a class="link" href="gst-plugins-bad-libs-gstplayer.html#GstPlayer"><span class="type">GstPlayer</span></a> instance</p></td>
-<td class="parameter_annotations"> </td>
-</tr></tbody>
-</table></div>
-</div>
-<div class="refsect3">
-<a name="gst-player-get-subtitle-uri.returns"></a><h4>Returns</h4>
-<p> URI of the current external subtitle.
-<a href="/usr/share/gtk-doc/html/glibglib-Memory-Allocation.html#g-free"><code class="function">g_free()</code></a> after usage. </p>
-<p><span class="annotation">[<acronym title="Free data after the code is done."><span class="acronym">transfer full</span></acronym>]</span></p>
-</div>
</div>
<hr>
<div class="refsect2">
@@ -1585,34 +916,6 @@
<pre class="programlisting"><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
gst_player_set_visualization (<em class="parameter"><code><a class="link" href="gst-plugins-bad-libs-gstplayer.html#GstPlayer"><span class="type">GstPlayer</span></a> *player</code></em>,
<em class="parameter"><code>const <a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *name</code></em>);</pre>
-<div class="refsect3">
-<a name="gst-player-set-visualization.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="parameter_name"><p>player</p></td>
-<td class="parameter_description"><p><a class="link" href="gst-plugins-bad-libs-gstplayer.html#GstPlayer"><span class="type">GstPlayer</span></a> instance</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>name</p></td>
-<td class="parameter_description"><p>visualization element obtained from
-<a class="link" href="gst-plugins-bad-libs-gstplayer-visualization.html#gst-player-visualizations-get" title="gst_player_visualizations_get ()"><code class="function">gst_player_visualizations_get()</code></a></p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<div class="refsect3">
-<a name="gst-player-set-visualization.returns"></a><h4>Returns</h4>
-<p> <a href="/usr/share/gtk-doc/html/glibglib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if the visualizations was set correctly. Otherwise,
-<a href="/usr/share/gtk-doc/html/glibglib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a>.</p>
-</div>
</div>
<hr>
<div class="refsect2">
@@ -1620,56 +923,12 @@
<pre class="programlisting"><span class="returnvalue">void</span>
gst_player_set_visualization_enabled (<em class="parameter"><code><a class="link" href="gst-plugins-bad-libs-gstplayer.html#GstPlayer"><span class="type">GstPlayer</span></a> *player</code></em>,
<em class="parameter"><code><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a> enabled</code></em>);</pre>
-<p>Enable or disable the visualization.</p>
-<div class="refsect3">
-<a name="gst-player-set-visualization-enabled.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="parameter_name"><p>player</p></td>
-<td class="parameter_description"><p><a class="link" href="gst-plugins-bad-libs-gstplayer.html#GstPlayer"><span class="type">GstPlayer</span></a> instance</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>enabled</p></td>
-<td class="parameter_description"><p>TRUE or FALSE</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-</tbody>
-</table></div>
-</div>
</div>
<hr>
<div class="refsect2">
<a name="gst-player-get-current-visualization"></a><h3>gst_player_get_current_visualization ()</h3>
<pre class="programlisting"><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gchar"><span class="returnvalue">gchar</span></a> *
gst_player_get_current_visualization (<em class="parameter"><code><a class="link" href="gst-plugins-bad-libs-gstplayer.html#GstPlayer"><span class="type">GstPlayer</span></a> *player</code></em>);</pre>
-<div class="refsect3">
-<a name="gst-player-get-current-visualization.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody><tr>
-<td class="parameter_name"><p>player</p></td>
-<td class="parameter_description"><p><a class="link" href="gst-plugins-bad-libs-gstplayer.html#GstPlayer"><span class="type">GstPlayer</span></a> instance</p></td>
-<td class="parameter_annotations"> </td>
-</tr></tbody>
-</table></div>
-</div>
-<div class="refsect3">
-<a name="gst-player-get-current-visualization.returns"></a><h4>Returns</h4>
-<p> Name of the currently enabled visualization.
-<a href="/usr/share/gtk-doc/html/glibglib-Memory-Allocation.html#g-free"><code class="function">g_free()</code></a> after usage. </p>
-<p><span class="annotation">[<acronym title="Free data after the code is done."><span class="acronym">transfer full</span></acronym>]</span></p>
-</div>
</div>
<hr>
<div class="refsect2">
@@ -1677,57 +936,12 @@
<pre class="programlisting">const <a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gchar"><span class="returnvalue">gchar</span></a> *
gst_player_color_balance_type_get_name
(<em class="parameter"><code><a class="link" href="gst-plugins-bad-libs-gstplayer.html#GstPlayerColorBalanceType" title="enum GstPlayerColorBalanceType"><span class="type">GstPlayerColorBalanceType</span></a> type</code></em>);</pre>
-<p>Gets a string representing the given color balance type.</p>
-<div class="refsect3">
-<a name="gst-player-color-balance-type-get-name.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody><tr>
-<td class="parameter_name"><p>type</p></td>
-<td class="parameter_description"><p>a <a class="link" href="gst-plugins-bad-libs-gstplayer.html#GstPlayerColorBalanceType" title="enum GstPlayerColorBalanceType"><span class="type">GstPlayerColorBalanceType</span></a></p></td>
-<td class="parameter_annotations"> </td>
-</tr></tbody>
-</table></div>
-</div>
-<div class="refsect3">
-<a name="gst-player-color-balance-type-get-name.returns"></a><h4>Returns</h4>
-<p> a string with the name of the color
-balance type. </p>
-<p><span class="annotation">[<acronym title="Don't free data after the code is done."><span class="acronym">transfer none</span></acronym>]</span></p>
-</div>
</div>
<hr>
<div class="refsect2">
<a name="gst-player-has-color-balance"></a><h3>gst_player_has_color_balance ()</h3>
<pre class="programlisting"><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
gst_player_has_color_balance (<em class="parameter"><code><a class="link" href="gst-plugins-bad-libs-gstplayer.html#GstPlayer"><span class="type">GstPlayer</span></a> *player</code></em>);</pre>
-<p>Checks whether the <em class="parameter"><code>player</code></em>
- has color balance support available.</p>
-<div class="refsect3">
-<a name="gst-player-has-color-balance.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody><tr>
-<td class="parameter_name"><p>player</p></td>
-<td class="parameter_description"><p><a class="link" href="gst-plugins-bad-libs-gstplayer.html#GstPlayer"><span class="type">GstPlayer</span></a> instance</p></td>
-<td class="parameter_annotations"> </td>
-</tr></tbody>
-</table></div>
-</div>
-<div class="refsect3">
-<a name="gst-player-has-color-balance.returns"></a><h4>Returns</h4>
-<p> <a href="/usr/share/gtk-doc/html/glibglib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if <em class="parameter"><code>player</code></em>
-has color balance support. Otherwise,
-<a href="/usr/share/gtk-doc/html/glibglib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a>.</p>
-</div>
</div>
<hr>
<div class="refsect2">
@@ -1736,37 +950,6 @@
gst_player_set_color_balance (<em class="parameter"><code><a class="link" href="gst-plugins-bad-libs-gstplayer.html#GstPlayer"><span class="type">GstPlayer</span></a> *player</code></em>,
<em class="parameter"><code><a class="link" href="gst-plugins-bad-libs-gstplayer.html#GstPlayerColorBalanceType" title="enum GstPlayerColorBalanceType"><span class="type">GstPlayerColorBalanceType</span></a> type</code></em>,
<em class="parameter"><code><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gdouble"><span class="type">gdouble</span></a> value</code></em>);</pre>
-<p>Sets the current value of the indicated channel <em class="parameter"><code>type</code></em>
- to the passed
-value.</p>
-<div class="refsect3">
-<a name="gst-player-set-color-balance.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="parameter_name"><p>player</p></td>
-<td class="parameter_description"><p><a class="link" href="gst-plugins-bad-libs-gstplayer.html#GstPlayer"><span class="type">GstPlayer</span></a> instance</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>type</p></td>
-<td class="parameter_description"><p><a class="link" href="gst-plugins-bad-libs-gstplayer.html#GstPlayerColorBalanceType" title="enum GstPlayerColorBalanceType"><span class="type">GstPlayerColorBalanceType</span></a></p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>value</p></td>
-<td class="parameter_description"><p>The new value for the <em class="parameter"><code>type</code></em>
-, ranged [0,1]</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-</tbody>
-</table></div>
-</div>
</div>
<hr>
<div class="refsect2">
@@ -1774,61 +957,51 @@
<pre class="programlisting"><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gdouble"><span class="returnvalue">gdouble</span></a>
gst_player_get_color_balance (<em class="parameter"><code><a class="link" href="gst-plugins-bad-libs-gstplayer.html#GstPlayer"><span class="type">GstPlayer</span></a> *player</code></em>,
<em class="parameter"><code><a class="link" href="gst-plugins-bad-libs-gstplayer.html#GstPlayerColorBalanceType" title="enum GstPlayerColorBalanceType"><span class="type">GstPlayerColorBalanceType</span></a> type</code></em>);</pre>
-<p>Retrieve the current value of the indicated <em class="parameter"><code>type</code></em>
-.</p>
-<div class="refsect3">
-<a name="gst-player-get-color-balance.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="parameter_name"><p>player</p></td>
-<td class="parameter_description"><p><a class="link" href="gst-plugins-bad-libs-gstplayer.html#GstPlayer"><span class="type">GstPlayer</span></a> instance</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>type</p></td>
-<td class="parameter_description"><p><a class="link" href="gst-plugins-bad-libs-gstplayer.html#GstPlayerColorBalanceType" title="enum GstPlayerColorBalanceType"><span class="type">GstPlayerColorBalanceType</span></a></p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-</tbody>
-</table></div>
</div>
-<div class="refsect3">
-<a name="gst-player-get-color-balance.returns"></a><h4>Returns</h4>
-<p> The current value of <em class="parameter"><code>type</code></em>
-, between [0,1]. In case of
-error -1 is returned.</p>
+<hr>
+<div class="refsect2">
+<a name="gst-player-get-multiview-mode"></a><h3>gst_player_get_multiview_mode ()</h3>
+<pre class="programlisting"><a href="/usr/share/gtk-doc/html/gst-plugins-base-libs-1.0gst-plugins-base-libs-gstvideo.html#GstVideoMultiviewMode"><span class="returnvalue">GstVideoMultiviewMode</span></a>
+gst_player_get_multiview_mode (<em class="parameter"><code><a class="link" href="gst-plugins-bad-libs-gstplayer.html#GstPlayer"><span class="type">GstPlayer</span></a> *player</code></em>);</pre>
</div>
+<hr>
+<div class="refsect2">
+<a name="gst-player-set-multiview-mode"></a><h3>gst_player_set_multiview_mode ()</h3>
+<pre class="programlisting"><span class="returnvalue">void</span>
+gst_player_set_multiview_mode (<em class="parameter"><code><a class="link" href="gst-plugins-bad-libs-gstplayer.html#GstPlayer"><span class="type">GstPlayer</span></a> *player</code></em>,
+ <em class="parameter"><code><a href="/usr/share/gtk-doc/html/gst-plugins-base-libs-1.0gst-plugins-base-libs-gstvideo.html#GstVideoMultiviewMode"><span class="type">GstVideoMultiviewMode</span></a> mode</code></em>);</pre>
+</div>
+<hr>
+<div class="refsect2">
+<a name="gst-player-get-multiview-flags"></a><h3>gst_player_get_multiview_flags ()</h3>
+<pre class="programlisting"><a href="/usr/share/gtk-doc/html/gst-plugins-base-libs-1.0gst-plugins-base-libs-gstvideo.html#GstVideoMultiviewFlags"><span class="returnvalue">GstVideoMultiviewFlags</span></a>
+gst_player_get_multiview_flags (<em class="parameter"><code><a class="link" href="gst-plugins-bad-libs-gstplayer.html#GstPlayer"><span class="type">GstPlayer</span></a> *player</code></em>);</pre>
+</div>
+<hr>
+<div class="refsect2">
+<a name="gst-player-set-multiview-flags"></a><h3>gst_player_set_multiview_flags ()</h3>
+<pre class="programlisting"><span class="returnvalue">void</span>
+gst_player_set_multiview_flags (<em class="parameter"><code><a class="link" href="gst-plugins-bad-libs-gstplayer.html#GstPlayer"><span class="type">GstPlayer</span></a> *player</code></em>,
+ <em class="parameter"><code><a href="/usr/share/gtk-doc/html/gst-plugins-base-libs-1.0gst-plugins-base-libs-gstvideo.html#GstVideoMultiviewFlags"><span class="type">GstVideoMultiviewFlags</span></a> flags</code></em>);</pre>
+</div>
+<hr>
+<div class="refsect2">
+<a name="gst-player-get-audio-video-offset"></a><h3>gst_player_get_audio_video_offset ()</h3>
+<pre class="programlisting"><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gint64"><span class="returnvalue">gint64</span></a>
+gst_player_get_audio_video_offset (<em class="parameter"><code><a class="link" href="gst-plugins-bad-libs-gstplayer.html#GstPlayer"><span class="type">GstPlayer</span></a> *player</code></em>);</pre>
+</div>
+<hr>
+<div class="refsect2">
+<a name="gst-player-set-audio-video-offset"></a><h3>gst_player_set_audio_video_offset ()</h3>
+<pre class="programlisting"><span class="returnvalue">void</span>
+gst_player_set_audio_video_offset (<em class="parameter"><code><a class="link" href="gst-plugins-bad-libs-gstplayer.html#GstPlayer"><span class="type">GstPlayer</span></a> *player</code></em>,
+ <em class="parameter"><code><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gint64"><span class="type">gint64</span></a> offset</code></em>);</pre>
</div>
<hr>
<div class="refsect2">
<a name="gst-player-get-rate"></a><h3>gst_player_get_rate ()</h3>
<pre class="programlisting"><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gdouble"><span class="returnvalue">gdouble</span></a>
gst_player_get_rate (<em class="parameter"><code><a class="link" href="gst-plugins-bad-libs-gstplayer.html#GstPlayer"><span class="type">GstPlayer</span></a> *player</code></em>);</pre>
-<div class="refsect3">
-<a name="gst-player-get-rate.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody><tr>
-<td class="parameter_name"><p>player</p></td>
-<td class="parameter_description"><p><a class="link" href="gst-plugins-bad-libs-gstplayer.html#GstPlayer"><span class="type">GstPlayer</span></a> instance</p></td>
-<td class="parameter_annotations"> </td>
-</tr></tbody>
-</table></div>
-</div>
-<div class="refsect3">
-<a name="gst-player-get-rate.returns"></a><h4>Returns</h4>
-<p> current playback rate</p>
-</div>
</div>
<hr>
<div class="refsect2">
@@ -1836,29 +1009,6 @@
<pre class="programlisting"><span class="returnvalue">void</span>
gst_player_set_rate (<em class="parameter"><code><a class="link" href="gst-plugins-bad-libs-gstplayer.html#GstPlayer"><span class="type">GstPlayer</span></a> *player</code></em>,
<em class="parameter"><code><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gdouble"><span class="type">gdouble</span></a> rate</code></em>);</pre>
-<p>Playback at specified rate</p>
-<div class="refsect3">
-<a name="gst-player-set-rate.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="parameter_name"><p>player</p></td>
-<td class="parameter_description"><p><a class="link" href="gst-plugins-bad-libs-gstplayer.html#GstPlayer"><span class="type">GstPlayer</span></a> instance</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>rate</p></td>
-<td class="parameter_description"><p>playback rate</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-</tbody>
-</table></div>
-</div>
</div>
</div>
<div class="refsect1">
@@ -1881,32 +1031,23 @@
<tbody>
<tr>
<td class="enum_member_name"><p><a name="GST-PLAYER-STATE-STOPPED:CAPS"></a>GST_PLAYER_STATE_STOPPED</p></td>
-<td class="enum_member_description">
-<p>the player is stopped.</p>
-</td>
-<td class="enum_member_annotations"> </td>
+<td> </td>
+<td> </td>
</tr>
<tr>
<td class="enum_member_name"><p><a name="GST-PLAYER-STATE-BUFFERING:CAPS"></a>GST_PLAYER_STATE_BUFFERING</p></td>
-<td class="enum_member_description">
-<p>the player is buffering.</p>
-</td>
-<td class="enum_member_annotations"> </td>
+<td> </td>
+<td> </td>
</tr>
<tr>
<td class="enum_member_name"><p><a name="GST-PLAYER-STATE-PAUSED:CAPS"></a>GST_PLAYER_STATE_PAUSED</p></td>
-<td class="enum_member_description">
-<p>the player is paused.</p>
-</td>
-<td class="enum_member_annotations"> </td>
+<td> </td>
+<td> </td>
</tr>
<tr>
<td class="enum_member_name"><p><a name="GST-PLAYER-STATE-PLAYING:CAPS"></a>GST_PLAYER_STATE_PLAYING</p></td>
-<td class="enum_member_description">
-<p>the player is currently playing a
-stream.</p>
-</td>
-<td class="enum_member_annotations"> </td>
+<td> </td>
+<td> </td>
</tr>
</tbody>
</table></div>
@@ -1931,10 +1072,8 @@
</colgroup>
<tbody><tr>
<td class="enum_member_name"><p><a name="GST-PLAYER-ERROR-FAILED:CAPS"></a>GST_PLAYER_ERROR_FAILED</p></td>
-<td class="enum_member_description">
-<p>generic error.</p>
-</td>
-<td class="enum_member_annotations"> </td>
+<td> </td>
+<td> </td>
</tr></tbody>
</table></div>
</div>
@@ -1953,32 +1092,23 @@
<tbody>
<tr>
<td class="enum_member_name"><p><a name="GST-PLAYER-COLOR-BALANCE-BRIGHTNESS:CAPS"></a>GST_PLAYER_COLOR_BALANCE_BRIGHTNESS</p></td>
-<td class="enum_member_description">
-<p>brightness or black level.</p>
-</td>
-<td class="enum_member_annotations"> </td>
+<td> </td>
+<td> </td>
</tr>
<tr>
<td class="enum_member_name"><p><a name="GST-PLAYER-COLOR-BALANCE-CONTRAST:CAPS"></a>GST_PLAYER_COLOR_BALANCE_CONTRAST</p></td>
-<td class="enum_member_description">
-<p>contrast or luma gain.</p>
-</td>
-<td class="enum_member_annotations"> </td>
+<td> </td>
+<td> </td>
</tr>
<tr>
<td class="enum_member_name"><p><a name="GST-PLAYER-COLOR-BALANCE-SATURATION:CAPS"></a>GST_PLAYER_COLOR_BALANCE_SATURATION</p></td>
-<td class="enum_member_description">
-<p>color saturation or chroma
-gain.</p>
-</td>
-<td class="enum_member_annotations"> </td>
+<td> </td>
+<td> </td>
</tr>
<tr>
<td class="enum_member_name"><p><a name="GST-PLAYER-COLOR-BALANCE-HUE:CAPS"></a>GST_PLAYER_COLOR_BALANCE_HUE</p></td>
-<td class="enum_member_description">
-<p>hue or color balance.</p>
-</td>
-<td class="enum_member_annotations"> </td>
+<td> </td>
+<td> </td>
</tr>
</tbody>
</table></div>
@@ -2022,6 +1152,14 @@
<div class="refsect1">
<a name="gst-plugins-bad-libs-gstplayer.property-details"></a><h2>Property Details</h2>
<div class="refsect2">
+<a name="GstPlayer--audio-video-offset"></a><h3>The <code class="literal">“audio-video-offset”</code> property</h3>
+<pre class="programlisting"> “audio-video-offset” <a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gint64"><span class="type">gint64</span></a></pre>
+<p>The synchronisation offset between audio and video in nanoseconds.</p>
+<p>Flags: Read / Write</p>
+<p>Default value: 0</p>
+</div>
+<hr>
+<div class="refsect2">
<a name="GstPlayer--current-audio-track"></a><h3>The <code class="literal">“current-audio-track”</code> property</h3>
<pre class="programlisting"> “current-audio-track” <a class="link" href="gst-plugins-bad-libs-gstplayer-mediainfo.html#GstPlayerAudioInfo"><span class="type">GstPlayerAudioInfo</span></a> *</pre>
<p>Current audio track information.</p>
@@ -2122,6 +1260,21 @@
</div>
<hr>
<div class="refsect2">
+<a name="GstPlayer--video-multiview-flags"></a><h3>The <code class="literal">“video-multiview-flags”</code> property</h3>
+<pre class="programlisting"> “video-multiview-flags” <a href="/usr/share/gtk-doc/html/gst-plugins-base-libs-1.0gst-plugins-base-libs-gstvideo.html#GstVideoMultiviewFlags"><span class="type">GstVideoMultiviewFlags</span></a></pre>
+<p>Override details of the multiview frame layout.</p>
+<p>Flags: Read / Write</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstPlayer--video-multiview-mode"></a><h3>The <code class="literal">“video-multiview-mode”</code> property</h3>
+<pre class="programlisting"> “video-multiview-mode” <a href="/usr/share/gtk-doc/html/gst-plugins-base-libs-1.0gst-plugins-base-libs-gstvideo.html#GstVideoMultiviewFramePacking"><span class="type">GstVideoMultiviewFramePacking</span></a></pre>
+<p>Re-interpret a video stream as one of several frame-packed stereoscopic modes.</p>
+<p>Flags: Read / Write</p>
+<p>Default value: GST_VIDEO_MULTIVIEW_FRAME_PACKING_NONE</p>
+</div>
+<hr>
+<div class="refsect2">
<a name="GstPlayer--video-renderer"></a><h3>The <code class="literal">“video-renderer”</code> property</h3>
<pre class="programlisting"> “video-renderer” <a class="link" href="gst-plugins-bad-libs-gstplayer.html#GstPlayerVideoRenderer"><span class="type">GstPlayerVideoRenderer</span></a> *</pre>
<p>Video renderer to use for rendering videos.</p>
@@ -2219,6 +1372,15 @@
</div>
<hr>
<div class="refsect2">
+<a name="GstPlayer-uri-loaded"></a><h3>The <code class="literal">“uri-loaded”</code> signal</h3>
+<pre class="programlisting"><span class="returnvalue">void</span>
+user_function (<a class="link" href="gst-plugins-bad-libs-gstplayer.html#GstPlayer"><span class="type">GstPlayer</span></a> *gstplayer,
+ <a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *arg1,
+ <a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a> user_data)</pre>
+<p>Flags: <a href="/usr/share/gtk-doc/html/gobjectgobject-Signals.html#G-SIGNAL-NO-HOOKS:CAPS">No Hooks</a></p>
+</div>
+<hr>
+<div class="refsect2">
<a name="GstPlayer-video-dimensions-changed"></a><h3>The <code class="literal">“video-dimensions-changed”</code> signal</h3>
<pre class="programlisting"><span class="returnvalue">void</span>
user_function (<a class="link" href="gst-plugins-bad-libs-gstplayer.html#GstPlayer"><span class="type">GstPlayer</span></a> *gstplayer,
diff --git a/docs/libs/html/gst-plugins-bad-libs-h264parser.html b/docs/libs/html/gst-plugins-bad-libs-h264parser.html
index 404dc52..fa74876 100644
--- a/docs/libs/html/gst-plugins-bad-libs-h264parser.html
+++ b/docs/libs/html/gst-plugins-bad-libs-h264parser.html
@@ -27,8 +27,7 @@
<div class="refnamediv"><table width="100%"><tr>
<td valign="top">
<h2><span class="refentrytitle"><a name="gst-plugins-bad-libs-h264parser.top_of_page"></a>h264parser</span></h2>
-<p>h264parser — Convenience library for h264 video
-bitstream parsing.</p>
+<p>h264parser</p>
</td>
<td class="gallery_image" valign="top" align="right"></td>
</tr></table></div>
@@ -311,48 +310,6 @@
</div>
<div class="refsect1">
<a name="gst-plugins-bad-libs-h264parser.description"></a><h2>Description</h2>
-<p>It offers you bitstream parsing in AVC mode or not. To identify Nals in a bitstream and
-parse its headers, you should call:</p>
-<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
-<li class="listitem">
-<a class="link" href="gst-plugins-bad-libs-h264parser.html#gst-h264-parser-identify-nalu" title="gst_h264_parser_identify_nalu ()"><span class="type">gst_h264_parser_identify_nalu</span></a> to identify the following nalu in not AVC bitstreams
- </li>
-<li class="listitem">
-<a class="link" href="gst-plugins-bad-libs-h264parser.html#gst-h264-parser-identify-nalu-avc" title="gst_h264_parser_identify_nalu_avc ()"><span class="type">gst_h264_parser_identify_nalu_avc</span></a> to identify the nalu in AVC bitstreams
- </li>
-</ul></div>
-<p>Then, depending on the <a class="link" href="gst-plugins-bad-libs-h264parser.html#GstH264NalUnitType" title="enum GstH264NalUnitType"><span class="type">GstH264NalUnitType</span></a> of the newly parsed <a class="link" href="gst-plugins-bad-libs-h264parser.html#GstH264NalUnit" title="struct GstH264NalUnit"><span class="type">GstH264NalUnit</span></a>, you should
-call the differents functions to parse the structure:</p>
-<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
-<li class="listitem">
- From <a class="link" href="gst-plugins-bad-libs-h264parser.html#GST-H264-NAL-SLICE:CAPS"><span class="type">GST_H264_NAL_SLICE</span></a> to <a class="link" href="gst-plugins-bad-libs-h264parser.html#GST-H264-NAL-SLICE-IDR:CAPS"><span class="type">GST_H264_NAL_SLICE_IDR</span></a>: <a class="link" href="gst-plugins-bad-libs-h264parser.html#gst-h264-parser-parse-slice-hdr" title="gst_h264_parser_parse_slice_hdr ()"><span class="type">gst_h264_parser_parse_slice_hdr</span></a>
-</li>
-<li class="listitem">
-<a class="link" href="gst-plugins-bad-libs-h264parser.html#GST-H264-NAL-SEI:CAPS"><span class="type">GST_H264_NAL_SEI</span></a>: <a class="link" href="gst-plugins-bad-libs-h264parser.html#gst-h264-parser-parse-sei" title="gst_h264_parser_parse_sei ()"><span class="type">gst_h264_parser_parse_sei</span></a>
-</li>
-<li class="listitem">
-<a class="link" href="gst-plugins-bad-libs-h264parser.html#GST-H264-NAL-SPS:CAPS"><span class="type">GST_H264_NAL_SPS</span></a>: <a class="link" href="gst-plugins-bad-libs-h264parser.html#gst-h264-parser-parse-sps" title="gst_h264_parser_parse_sps ()"><span class="type">gst_h264_parser_parse_sps</span></a>
-</li>
-<li class="listitem">
-<a class="link" href="gst-plugins-bad-libs-h264parser.html#GST-H264-NAL-PPS:CAPS"><span class="type">GST_H264_NAL_PPS</span></a>: <a class="link" href="gst-plugins-bad-libs-h264parser.html#gst-h264-parser-parse-pps" title="gst_h264_parser_parse_pps ()"><span class="type">gst_h264_parser_parse_pps</span></a>
-</li>
-<li class="listitem">
- Any other: <a class="link" href="gst-plugins-bad-libs-h264parser.html#gst-h264-parser-parse-nal" title="gst_h264_parser_parse_nal ()"><span class="type">gst_h264_parser_parse_nal</span></a>
-</li>
-</ul></div>
-<p>Note: You should always call gst_h264_parser_parse_nal if you don't actually need
-<a class="link" href="gst-plugins-bad-libs-h264parser.html#GstH264NalUnitType" title="enum GstH264NalUnitType"><span class="type">GstH264NalUnitType</span></a> to be parsed for your personnal use, in order to guarantee that the
-<a class="link" href="gst-plugins-bad-libs-h264parser.html#GstH264NalParser" title="struct GstH264NalParser"><span class="type">GstH264NalParser</span></a> is always up to date.</p>
-<p>For more details about the structures, look at the ITU-T H.264 and ISO/IEC 14496-10 – MPEG-4
-Part 10 specifications, you can download them from:</p>
-<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
-<li class="listitem">
- ITU-T H.264: http://www.itu.int/rec/T-REC-H.264
- </li>
-<li class="listitem">
- ISO/IEC 14496-10: http://www.iso.org/iso/iso_catalogue/catalogue_tc/catalogue_detail.htm?csnumber=56538
- </li>
-</ul></div>
</div>
<div class="refsect1">
<a name="gst-plugins-bad-libs-h264parser.functions_details"></a><h2>Functions</h2>
@@ -394,53 +351,6 @@
<em class="parameter"><code><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint"><span class="type">guint</span></a> offset</code></em>,
<em class="parameter"><code><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gsize"><span class="type">gsize</span></a> size</code></em>,
<em class="parameter"><code><a class="link" href="gst-plugins-bad-libs-h264parser.html#GstH264NalUnit" title="struct GstH264NalUnit"><span class="type">GstH264NalUnit</span></a> *nalu</code></em>);</pre>
-<p>Parses <em class="parameter"><code>data</code></em>
- and fills <em class="parameter"><code>nalu</code></em>
- from the next nalu data from <em class="parameter"><code>data</code></em>
-</p>
-<div class="refsect3">
-<a name="gst-h264-parser-identify-nalu.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="parameter_name"><p>nalparser</p></td>
-<td class="parameter_description"><p>a <a class="link" href="gst-plugins-bad-libs-h264parser.html#GstH264NalParser" title="struct GstH264NalParser"><span class="type">GstH264NalParser</span></a></p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>data</p></td>
-<td class="parameter_description"><p>The data to parse</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>offset</p></td>
-<td class="parameter_description"><p>the offset from which to parse <em class="parameter"><code>data</code></em>
-</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>size</p></td>
-<td class="parameter_description"><p>the size of <em class="parameter"><code>data</code></em>
-</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>nalu</p></td>
-<td class="parameter_description"><p>The <a class="link" href="gst-plugins-bad-libs-h264parser.html#GstH264NalUnit" title="struct GstH264NalUnit"><span class="type">GstH264NalUnit</span></a> where to store parsed nal headers</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<div class="refsect3">
-<a name="gst-h264-parser-identify-nalu.returns"></a><h4>Returns</h4>
-<p> a <a class="link" href="gst-plugins-bad-libs-h264parser.html#GstH264ParserResult" title="enum GstH264ParserResult"><span class="type">GstH264ParserResult</span></a></p>
-</div>
</div>
<hr>
<div class="refsect2">
@@ -452,57 +362,6 @@
<em class="parameter"><code><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gsize"><span class="type">gsize</span></a> size</code></em>,
<em class="parameter"><code><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint8"><span class="type">guint8</span></a> nal_length_size</code></em>,
<em class="parameter"><code><a class="link" href="gst-plugins-bad-libs-h264parser.html#GstH264NalUnit" title="struct GstH264NalUnit"><span class="type">GstH264NalUnit</span></a> *nalu</code></em>);</pre>
-<p>Parses <em class="parameter"><code>data</code></em>
- and sets <em class="parameter"><code>nalu</code></em>
-.</p>
-<div class="refsect3">
-<a name="gst-h264-parser-identify-nalu-avc.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="parameter_name"><p>nalparser</p></td>
-<td class="parameter_description"><p>a <a class="link" href="gst-plugins-bad-libs-h264parser.html#GstH264NalParser" title="struct GstH264NalParser"><span class="type">GstH264NalParser</span></a></p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>data</p></td>
-<td class="parameter_description"><p>The data to parse, must be the beging of the Nal unit</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>offset</p></td>
-<td class="parameter_description"><p>the offset from which to parse <em class="parameter"><code>data</code></em>
-</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>size</p></td>
-<td class="parameter_description"><p>the size of <em class="parameter"><code>data</code></em>
-</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>nal_length_size</p></td>
-<td class="parameter_description"><p>the size in bytes of the AVC nal length prefix.</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>nalu</p></td>
-<td class="parameter_description"><p>The <a class="link" href="gst-plugins-bad-libs-h264parser.html#GstH264NalUnit" title="struct GstH264NalUnit"><span class="type">GstH264NalUnit</span></a> where to store parsed nal headers</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<div class="refsect3">
-<a name="gst-h264-parser-identify-nalu-avc.returns"></a><h4>Returns</h4>
-<p> a <a class="link" href="gst-plugins-bad-libs-h264parser.html#GstH264ParserResult" title="enum GstH264ParserResult"><span class="type">GstH264ParserResult</span></a></p>
-</div>
</div>
<hr>
<div class="refsect2">
@@ -510,36 +369,6 @@
<pre class="programlisting"><a class="link" href="gst-plugins-bad-libs-h264parser.html#GstH264ParserResult" title="enum GstH264ParserResult"><span class="returnvalue">GstH264ParserResult</span></a>
gst_h264_parser_parse_nal (<em class="parameter"><code><a class="link" href="gst-plugins-bad-libs-h264parser.html#GstH264NalParser" title="struct GstH264NalParser"><span class="type">GstH264NalParser</span></a> *nalparser</code></em>,
<em class="parameter"><code><a class="link" href="gst-plugins-bad-libs-h264parser.html#GstH264NalUnit" title="struct GstH264NalUnit"><span class="type">GstH264NalUnit</span></a> *nalu</code></em>);</pre>
-<p>This function should be called in the case one doesn't need to
-parse a specific structure. It is necessary to do so to make
-sure <em class="parameter"><code>nalparser</code></em>
- is up to date.</p>
-<div class="refsect3">
-<a name="gst-h264-parser-parse-nal.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="parameter_name"><p>nalparser</p></td>
-<td class="parameter_description"><p>a <a class="link" href="gst-plugins-bad-libs-h264parser.html#GstH264NalParser" title="struct GstH264NalParser"><span class="type">GstH264NalParser</span></a></p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>nalu</p></td>
-<td class="parameter_description"><p>The <a class="link" href="gst-plugins-bad-libs-h264parser.html#GstH264NalUnit" title="struct GstH264NalUnit"><span class="type">GstH264NalUnit</span></a> to parse</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<div class="refsect3">
-<a name="gst-h264-parser-parse-nal.returns"></a><h4>Returns</h4>
-<p> a <a class="link" href="gst-plugins-bad-libs-h264parser.html#GstH264ParserResult" title="enum GstH264ParserResult"><span class="type">GstH264ParserResult</span></a></p>
-</div>
</div>
<hr>
<div class="refsect2">
@@ -550,50 +379,6 @@
<em class="parameter"><code><a class="link" href="gst-plugins-bad-libs-h264parser.html#GstH264SliceHdr" title="struct GstH264SliceHdr"><span class="type">GstH264SliceHdr</span></a> *slice</code></em>,
<em class="parameter"><code><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a> parse_pred_weight_table</code></em>,
<em class="parameter"><code><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a> parse_dec_ref_pic_marking</code></em>);</pre>
-<p>Parses <em class="parameter"><code>data</code></em>
-, and fills the <em class="parameter"><code>slice</code></em>
- structure.</p>
-<div class="refsect3">
-<a name="gst-h264-parser-parse-slice-hdr.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="parameter_name"><p>nalparser</p></td>
-<td class="parameter_description"><p>a <a class="link" href="gst-plugins-bad-libs-h264parser.html#GstH264NalParser" title="struct GstH264NalParser"><span class="type">GstH264NalParser</span></a></p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>nalu</p></td>
-<td class="parameter_description"><p>The <a class="link" href="gst-plugins-bad-libs-h264parser.html#GST-H264-NAL-SLICE:CAPS"><span class="type">GST_H264_NAL_SLICE</span></a> <a class="link" href="gst-plugins-bad-libs-h264parser.html#GstH264NalUnit" title="struct GstH264NalUnit"><span class="type">GstH264NalUnit</span></a> to parse</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>slice</p></td>
-<td class="parameter_description"><p>The <a class="link" href="gst-plugins-bad-libs-h264parser.html#GstH264SliceHdr" title="struct GstH264SliceHdr"><span class="type">GstH264SliceHdr</span></a> to fill.</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>parse_pred_weight_table</p></td>
-<td class="parameter_description"><p>Whether to parse the pred_weight_table or not</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>parse_dec_ref_pic_marking</p></td>
-<td class="parameter_description"><p>Whether to parse the dec_ref_pic_marking or not</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<div class="refsect3">
-<a name="gst-h264-parser-parse-slice-hdr.returns"></a><h4>Returns</h4>
-<p> a <a class="link" href="gst-plugins-bad-libs-h264parser.html#GstH264ParserResult" title="enum GstH264ParserResult"><span class="type">GstH264ParserResult</span></a></p>
-</div>
</div>
<hr>
<div class="refsect2">
@@ -603,45 +388,6 @@
<em class="parameter"><code><a class="link" href="gst-plugins-bad-libs-h264parser.html#GstH264NalUnit" title="struct GstH264NalUnit"><span class="type">GstH264NalUnit</span></a> *nalu</code></em>,
<em class="parameter"><code><a class="link" href="gst-plugins-bad-libs-h264parser.html#GstH264SPS" title="struct GstH264SPS"><span class="type">GstH264SPS</span></a> *sps</code></em>,
<em class="parameter"><code><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a> parse_vui_params</code></em>);</pre>
-<p>Parses <em class="parameter"><code>data</code></em>
-, and fills the <em class="parameter"><code>sps</code></em>
- structure.</p>
-<div class="refsect3">
-<a name="gst-h264-parser-parse-sps.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="parameter_name"><p>nalparser</p></td>
-<td class="parameter_description"><p>a <a class="link" href="gst-plugins-bad-libs-h264parser.html#GstH264NalParser" title="struct GstH264NalParser"><span class="type">GstH264NalParser</span></a></p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>nalu</p></td>
-<td class="parameter_description"><p>The <a class="link" href="gst-plugins-bad-libs-h264parser.html#GST-H264-NAL-SPS:CAPS"><span class="type">GST_H264_NAL_SPS</span></a> <a class="link" href="gst-plugins-bad-libs-h264parser.html#GstH264NalUnit" title="struct GstH264NalUnit"><span class="type">GstH264NalUnit</span></a> to parse</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>sps</p></td>
-<td class="parameter_description"><p>The <a class="link" href="gst-plugins-bad-libs-h264parser.html#GstH264SPS" title="struct GstH264SPS"><span class="type">GstH264SPS</span></a> to fill.</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>parse_vui_params</p></td>
-<td class="parameter_description"><p>Whether to parse the vui_params or not</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<div class="refsect3">
-<a name="gst-h264-parser-parse-sps.returns"></a><h4>Returns</h4>
-<p> a <a class="link" href="gst-plugins-bad-libs-h264parser.html#GstH264ParserResult" title="enum GstH264ParserResult"><span class="type">GstH264ParserResult</span></a></p>
-</div>
</div>
<hr>
<div class="refsect2">
@@ -650,44 +396,6 @@
gst_h264_parser_parse_pps (<em class="parameter"><code><a class="link" href="gst-plugins-bad-libs-h264parser.html#GstH264NalParser" title="struct GstH264NalParser"><span class="type">GstH264NalParser</span></a> *nalparser</code></em>,
<em class="parameter"><code><a class="link" href="gst-plugins-bad-libs-h264parser.html#GstH264NalUnit" title="struct GstH264NalUnit"><span class="type">GstH264NalUnit</span></a> *nalu</code></em>,
<em class="parameter"><code><a class="link" href="gst-plugins-bad-libs-h264parser.html#GstH264PPS" title="struct GstH264PPS"><span class="type">GstH264PPS</span></a> *pps</code></em>);</pre>
-<p>Parses <em class="parameter"><code>data</code></em>
-, and fills the <em class="parameter"><code>pps</code></em>
- structure.</p>
-<p>The resulting <em class="parameter"><code>pps</code></em>
- data structure shall be deallocated with the
-<a class="link" href="gst-plugins-bad-libs-h264parser.html#gst-h264-pps-clear" title="gst_h264_pps_clear ()"><code class="function">gst_h264_pps_clear()</code></a> function when it is no longer needed, or prior
-to parsing a new PPS NAL unit.</p>
-<div class="refsect3">
-<a name="gst-h264-parser-parse-pps.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="parameter_name"><p>nalparser</p></td>
-<td class="parameter_description"><p>a <a class="link" href="gst-plugins-bad-libs-h264parser.html#GstH264NalParser" title="struct GstH264NalParser"><span class="type">GstH264NalParser</span></a></p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>nalu</p></td>
-<td class="parameter_description"><p>The <a class="link" href="gst-plugins-bad-libs-h264parser.html#GST-H264-NAL-PPS:CAPS"><span class="type">GST_H264_NAL_PPS</span></a> <a class="link" href="gst-plugins-bad-libs-h264parser.html#GstH264NalUnit" title="struct GstH264NalUnit"><span class="type">GstH264NalUnit</span></a> to parse</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>pps</p></td>
-<td class="parameter_description"><p>The <a class="link" href="gst-plugins-bad-libs-h264parser.html#GstH264PPS" title="struct GstH264PPS"><span class="type">GstH264PPS</span></a> to fill.</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<div class="refsect3">
-<a name="gst-h264-parser-parse-pps.returns"></a><h4>Returns</h4>
-<p> a <a class="link" href="gst-plugins-bad-libs-h264parser.html#GstH264ParserResult" title="enum GstH264ParserResult"><span class="type">GstH264ParserResult</span></a></p>
-</div>
</div>
<hr>
<div class="refsect2">
@@ -696,75 +404,18 @@
gst_h264_parser_parse_sei (<em class="parameter"><code><a class="link" href="gst-plugins-bad-libs-h264parser.html#GstH264NalParser" title="struct GstH264NalParser"><span class="type">GstH264NalParser</span></a> *nalparser</code></em>,
<em class="parameter"><code><a class="link" href="gst-plugins-bad-libs-h264parser.html#GstH264NalUnit" title="struct GstH264NalUnit"><span class="type">GstH264NalUnit</span></a> *nalu</code></em>,
<em class="parameter"><code><a href="/usr/share/gtk-doc/html/glibglib-Arrays.html#GArray"><span class="type">GArray</span></a> **messages</code></em>);</pre>
-<p>Parses <em class="parameter"><code>data</code></em>
-, create and fills the <em class="parameter"><code>messages</code></em>
- array.</p>
-<div class="refsect3">
-<a name="gst-h264-parser-parse-sei.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="parameter_name"><p>nalparser</p></td>
-<td class="parameter_description"><p>a <a class="link" href="gst-plugins-bad-libs-h264parser.html#GstH264NalParser" title="struct GstH264NalParser"><span class="type">GstH264NalParser</span></a></p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>nalu</p></td>
-<td class="parameter_description"><p>The <a class="link" href="gst-plugins-bad-libs-h264parser.html#GST-H264-NAL-SEI:CAPS"><span class="type">GST_H264_NAL_SEI</span></a> <a class="link" href="gst-plugins-bad-libs-h264parser.html#GstH264NalUnit" title="struct GstH264NalUnit"><span class="type">GstH264NalUnit</span></a> to parse</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>messages</p></td>
-<td class="parameter_description"><p>The GArray of <a class="link" href="gst-plugins-bad-libs-h264parser.html#GstH264SEIMessage" title="struct GstH264SEIMessage"><span class="type">GstH264SEIMessage</span></a> to fill. The caller must free it when done.</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<div class="refsect3">
-<a name="gst-h264-parser-parse-sei.returns"></a><h4>Returns</h4>
-<p> a <a class="link" href="gst-plugins-bad-libs-h264parser.html#GstH264ParserResult" title="enum GstH264ParserResult"><span class="type">GstH264ParserResult</span></a></p>
-</div>
</div>
<hr>
<div class="refsect2">
<a name="gst-h264-nal-parser-new"></a><h3>gst_h264_nal_parser_new ()</h3>
<pre class="programlisting"><a class="link" href="gst-plugins-bad-libs-h264parser.html#GstH264NalParser" title="struct GstH264NalParser"><span class="returnvalue">GstH264NalParser</span></a> *
gst_h264_nal_parser_new (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
-<p>Creates a new <a class="link" href="gst-plugins-bad-libs-h264parser.html#GstH264NalParser" title="struct GstH264NalParser"><span class="type">GstH264NalParser</span></a>. It should be freed with
-gst_h264_nal_parser_free after use.</p>
-<div class="refsect3">
-<a name="gst-h264-nal-parser-new.returns"></a><h4>Returns</h4>
-<p> a new <a class="link" href="gst-plugins-bad-libs-h264parser.html#GstH264NalParser" title="struct GstH264NalParser"><span class="type">GstH264NalParser</span></a></p>
-</div>
</div>
<hr>
<div class="refsect2">
<a name="gst-h264-nal-parser-free"></a><h3>gst_h264_nal_parser_free ()</h3>
<pre class="programlisting"><span class="returnvalue">void</span>
gst_h264_nal_parser_free (<em class="parameter"><code><a class="link" href="gst-plugins-bad-libs-h264parser.html#GstH264NalParser" title="struct GstH264NalParser"><span class="type">GstH264NalParser</span></a> *nalparser</code></em>);</pre>
-<p>Frees <em class="parameter"><code>nalparser</code></em>
- and sets it to <a href="/usr/share/gtk-doc/html/glibglib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a></p>
-<div class="refsect3">
-<a name="gst-h264-nal-parser-free.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody><tr>
-<td class="parameter_name"><p>nalparser</p></td>
-<td class="parameter_description"><p>the <a class="link" href="gst-plugins-bad-libs-h264parser.html#GstH264NalParser" title="struct GstH264NalParser"><span class="type">GstH264NalParser</span></a> to free</p></td>
-<td class="parameter_annotations"> </td>
-</tr></tbody>
-</table></div>
-</div>
</div>
<hr>
<div class="refsect2">
@@ -773,40 +424,6 @@
gst_h264_parse_sps (<em class="parameter"><code><a class="link" href="gst-plugins-bad-libs-h264parser.html#GstH264NalUnit" title="struct GstH264NalUnit"><span class="type">GstH264NalUnit</span></a> *nalu</code></em>,
<em class="parameter"><code><a class="link" href="gst-plugins-bad-libs-h264parser.html#GstH264SPS" title="struct GstH264SPS"><span class="type">GstH264SPS</span></a> *sps</code></em>,
<em class="parameter"><code><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a> parse_vui_params</code></em>);</pre>
-<p>Parses <em class="parameter"><code>data</code></em>
-, and fills the <em class="parameter"><code>sps</code></em>
- structure.</p>
-<div class="refsect3">
-<a name="gst-h264-parse-sps.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="parameter_name"><p>nalu</p></td>
-<td class="parameter_description"><p>The <a class="link" href="gst-plugins-bad-libs-h264parser.html#GST-H264-NAL-SPS:CAPS"><span class="type">GST_H264_NAL_SPS</span></a> <a class="link" href="gst-plugins-bad-libs-h264parser.html#GstH264NalUnit" title="struct GstH264NalUnit"><span class="type">GstH264NalUnit</span></a> to parse</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>sps</p></td>
-<td class="parameter_description"><p>The <a class="link" href="gst-plugins-bad-libs-h264parser.html#GstH264SPS" title="struct GstH264SPS"><span class="type">GstH264SPS</span></a> to fill.</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>parse_vui_params</p></td>
-<td class="parameter_description"><p>Whether to parse the vui_params or not</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<div class="refsect3">
-<a name="gst-h264-parse-sps.returns"></a><h4>Returns</h4>
-<p> a <a class="link" href="gst-plugins-bad-libs-h264parser.html#GstH264ParserResult" title="enum GstH264ParserResult"><span class="type">GstH264ParserResult</span></a></p>
-</div>
</div>
<hr>
<div class="refsect2">
@@ -815,68 +432,12 @@
gst_h264_parse_pps (<em class="parameter"><code><a class="link" href="gst-plugins-bad-libs-h264parser.html#GstH264NalParser" title="struct GstH264NalParser"><span class="type">GstH264NalParser</span></a> *nalparser</code></em>,
<em class="parameter"><code><a class="link" href="gst-plugins-bad-libs-h264parser.html#GstH264NalUnit" title="struct GstH264NalUnit"><span class="type">GstH264NalUnit</span></a> *nalu</code></em>,
<em class="parameter"><code><a class="link" href="gst-plugins-bad-libs-h264parser.html#GstH264PPS" title="struct GstH264PPS"><span class="type">GstH264PPS</span></a> *pps</code></em>);</pre>
-<p>Parses <em class="parameter"><code>data</code></em>
-, and fills the <em class="parameter"><code>pps</code></em>
- structure.</p>
-<p>The resulting <em class="parameter"><code>pps</code></em>
- data structure shall be deallocated with the
-<a class="link" href="gst-plugins-bad-libs-h264parser.html#gst-h264-pps-clear" title="gst_h264_pps_clear ()"><code class="function">gst_h264_pps_clear()</code></a> function when it is no longer needed, or prior
-to parsing a new PPS NAL unit.</p>
-<div class="refsect3">
-<a name="gst-h264-parse-pps.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="parameter_name"><p>nalparser</p></td>
-<td class="parameter_description"><p>a <a class="link" href="gst-plugins-bad-libs-h264parser.html#GstH264NalParser" title="struct GstH264NalParser"><span class="type">GstH264NalParser</span></a></p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>nalu</p></td>
-<td class="parameter_description"><p>The <a class="link" href="gst-plugins-bad-libs-h264parser.html#GST-H264-NAL-PPS:CAPS"><span class="type">GST_H264_NAL_PPS</span></a> <a class="link" href="gst-plugins-bad-libs-h264parser.html#GstH264NalUnit" title="struct GstH264NalUnit"><span class="type">GstH264NalUnit</span></a> to parse</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>pps</p></td>
-<td class="parameter_description"><p>The <a class="link" href="gst-plugins-bad-libs-h264parser.html#GstH264PPS" title="struct GstH264PPS"><span class="type">GstH264PPS</span></a> to fill.</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<div class="refsect3">
-<a name="gst-h264-parse-pps.returns"></a><h4>Returns</h4>
-<p> a <a class="link" href="gst-plugins-bad-libs-h264parser.html#GstH264ParserResult" title="enum GstH264ParserResult"><span class="type">GstH264ParserResult</span></a></p>
-</div>
</div>
<hr>
<div class="refsect2">
<a name="gst-h264-pps-clear"></a><h3>gst_h264_pps_clear ()</h3>
<pre class="programlisting"><span class="returnvalue">void</span>
gst_h264_pps_clear (<em class="parameter"><code><a class="link" href="gst-plugins-bad-libs-h264parser.html#GstH264PPS" title="struct GstH264PPS"><span class="type">GstH264PPS</span></a> *pps</code></em>);</pre>
-<p>Clears all <em class="parameter"><code>pps</code></em>
- internal resources.</p>
-<div class="refsect3">
-<a name="gst-h264-pps-clear.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody><tr>
-<td class="parameter_name"><p>pps</p></td>
-<td class="parameter_description"><p>The <a class="link" href="gst-plugins-bad-libs-h264parser.html#GstH264PPS" title="struct GstH264PPS"><span class="type">GstH264PPS</span></a> to free</p></td>
-<td class="parameter_annotations"> </td>
-</tr></tbody>
-</table></div>
-</div>
-<p class="since">Since: 1.4</p>
</div>
<hr>
<div class="refsect2">
@@ -885,37 +446,6 @@
gst_h264_quant_matrix_8x8_get_zigzag_from_raster
(<em class="parameter"><code><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint8"><span class="type">guint8</span></a> out_quant[64]</code></em>,
<em class="parameter"><code>const <a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint8"><span class="type">guint8</span></a> quant[64]</code></em>);</pre>
-<p>Converts quantization matrix <em class="parameter"><code>quant</code></em>
- from raster scan order to
-zigzag scan order and store the resulting factors into <em class="parameter"><code>out_quant</code></em>
-.</p>
-<p>Note: it is an error to pass the same table in both <em class="parameter"><code>quant</code></em>
- and
-<em class="parameter"><code>out_quant</code></em>
- arguments.</p>
-<div class="refsect3">
-<a name="gst-h264-quant-matrix-8x8-get-zigzag-from-raster.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="parameter_name"><p>out_quant</p></td>
-<td class="parameter_description"><p> The resulting quantization matrix. </p></td>
-<td class="parameter_annotations"><span class="annotation">[<acronym title="Parameter for returning results. Default is transfer full."><span class="acronym">out</span></acronym>]</span></td>
-</tr>
-<tr>
-<td class="parameter_name"><p>quant</p></td>
-<td class="parameter_description"><p>The source quantization matrix</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<p class="since">Since: 1.4</p>
</div>
<hr>
<div class="refsect2">
@@ -924,37 +454,6 @@
gst_h264_quant_matrix_8x8_get_raster_from_zigzag
(<em class="parameter"><code><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint8"><span class="type">guint8</span></a> out_quant[64]</code></em>,
<em class="parameter"><code>const <a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint8"><span class="type">guint8</span></a> quant[64]</code></em>);</pre>
-<p>Converts quantization matrix <em class="parameter"><code>quant</code></em>
- from zigzag scan order to
-raster scan order and store the resulting factors into <em class="parameter"><code>out_quant</code></em>
-.</p>
-<p>Note: it is an error to pass the same table in both <em class="parameter"><code>quant</code></em>
- and
-<em class="parameter"><code>out_quant</code></em>
- arguments.</p>
-<div class="refsect3">
-<a name="gst-h264-quant-matrix-8x8-get-raster-from-zigzag.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="parameter_name"><p>out_quant</p></td>
-<td class="parameter_description"><p> The resulting quantization matrix. </p></td>
-<td class="parameter_annotations"><span class="annotation">[<acronym title="Parameter for returning results. Default is transfer full."><span class="acronym">out</span></acronym>]</span></td>
-</tr>
-<tr>
-<td class="parameter_name"><p>quant</p></td>
-<td class="parameter_description"><p>The source quantization matrix</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<p class="since">Since: 1.4</p>
</div>
<hr>
<div class="refsect2">
@@ -963,37 +462,6 @@
gst_h264_quant_matrix_4x4_get_zigzag_from_raster
(<em class="parameter"><code><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint8"><span class="type">guint8</span></a> out_quant[16]</code></em>,
<em class="parameter"><code>const <a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint8"><span class="type">guint8</span></a> quant[16]</code></em>);</pre>
-<p>Converts quantization matrix <em class="parameter"><code>quant</code></em>
- from raster scan order to
-zigzag scan order and store the resulting factors into <em class="parameter"><code>out_quant</code></em>
-.</p>
-<p>Note: it is an error to pass the same table in both <em class="parameter"><code>quant</code></em>
- and
-<em class="parameter"><code>out_quant</code></em>
- arguments.</p>
-<div class="refsect3">
-<a name="gst-h264-quant-matrix-4x4-get-zigzag-from-raster.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="parameter_name"><p>out_quant</p></td>
-<td class="parameter_description"><p> The resulting quantization matrix. </p></td>
-<td class="parameter_annotations"><span class="annotation">[<acronym title="Parameter for returning results. Default is transfer full."><span class="acronym">out</span></acronym>]</span></td>
-</tr>
-<tr>
-<td class="parameter_name"><p>quant</p></td>
-<td class="parameter_description"><p>The source quantization matrix</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<p class="since">Since: 1.4</p>
</div>
<hr>
<div class="refsect2">
@@ -1002,37 +470,6 @@
gst_h264_quant_matrix_4x4_get_raster_from_zigzag
(<em class="parameter"><code><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint8"><span class="type">guint8</span></a> out_quant[16]</code></em>,
<em class="parameter"><code>const <a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint8"><span class="type">guint8</span></a> quant[16]</code></em>);</pre>
-<p>Converts quantization matrix <em class="parameter"><code>quant</code></em>
- from zigzag scan order to
-raster scan order and store the resulting factors into <em class="parameter"><code>out_quant</code></em>
-.</p>
-<p>Note: it is an error to pass the same table in both <em class="parameter"><code>quant</code></em>
- and
-<em class="parameter"><code>out_quant</code></em>
- arguments.</p>
-<div class="refsect3">
-<a name="gst-h264-quant-matrix-4x4-get-raster-from-zigzag.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="parameter_name"><p>out_quant</p></td>
-<td class="parameter_description"><p> The resulting quantization matrix. </p></td>
-<td class="parameter_annotations"><span class="annotation">[<acronym title="Parameter for returning results. Default is transfer full."><span class="acronym">out</span></acronym>]</span></td>
-</tr>
-<tr>
-<td class="parameter_name"><p>quant</p></td>
-<td class="parameter_description"><p>The source quantization matrix</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<p class="since">Since: 1.4</p>
</div>
<hr>
<div class="refsect2">
@@ -1043,55 +480,6 @@
<em class="parameter"><code><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint"><span class="type">guint</span></a> pic_struct</code></em>,
<em class="parameter"><code><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gint"><span class="type">gint</span></a> *fps_num</code></em>,
<em class="parameter"><code><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gint"><span class="type">gint</span></a> *fps_den</code></em>);</pre>
-<p>Calculate framerate of a video sequence using <em class="parameter"><code>sps</code></em>
- VUI information,
-<em class="parameter"><code>field_pic_flag</code></em>
- from a slice header and <em class="parameter"><code>pic_struct</code></em>
- from <a class="link" href="gst-plugins-bad-libs-h264parser.html#GstH264PicTiming" title="struct GstH264PicTiming"><span class="type">GstH264PicTiming</span></a> SEI
-message.</p>
-<p>If framerate is variable or can't be determined, <em class="parameter"><code>fps_num</code></em>
- will be set to 0
-and <em class="parameter"><code>fps_den</code></em>
- to 1.</p>
-<div class="refsect3">
-<a name="gst-h264-video-calculate-framerate.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="parameter_name"><p>sps</p></td>
-<td class="parameter_description"><p>Current Sequence Parameter Set</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>field_pic_flag</p></td>
-<td class="parameter_description"><p>Current <em class="parameter"><code>field_pic_flag</code></em>
-, obtained from latest slice header</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>pic_struct</p></td>
-<td class="parameter_description"><p><em class="parameter"><code>pic_struct</code></em>
-value if available, 0 otherwise</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>fps_num</p></td>
-<td class="parameter_description"><p> The resulting fps numerator. </p></td>
-<td class="parameter_annotations"><span class="annotation">[<acronym title="Parameter for returning results. Default is transfer full."><span class="acronym">out</span></acronym>]</span></td>
-</tr>
-<tr>
-<td class="parameter_name"><p>fps_den</p></td>
-<td class="parameter_description"><p> The resulting fps denominator. </p></td>
-<td class="parameter_annotations"><span class="annotation">[<acronym title="Parameter for returning results. Default is transfer full."><span class="acronym">out</span></acronym>]</span></td>
-</tr>
-</tbody>
-</table></div>
-</div>
</div>
</div>
<div class="refsect1">
@@ -1110,7 +498,6 @@
<hr>
<div class="refsect2">
<a name="GstH264NalUnitType"></a><h3>enum GstH264NalUnitType</h3>
-<p>Indicates the type of H264 Nal Units</p>
<div class="refsect3">
<a name="GstH264NalUnitType.members"></a><h4>Members</h4>
<div class="informaltable"><table class="informaltable" width="100%" border="0">
@@ -1122,143 +509,103 @@
<tbody>
<tr>
<td class="enum_member_name"><p><a name="GST-H264-NAL-UNKNOWN:CAPS"></a>GST_H264_NAL_UNKNOWN</p></td>
-<td class="enum_member_description">
-<p>Unknown nal type</p>
-</td>
-<td class="enum_member_annotations"> </td>
+<td> </td>
+<td> </td>
</tr>
<tr>
<td class="enum_member_name"><p><a name="GST-H264-NAL-SLICE:CAPS"></a>GST_H264_NAL_SLICE</p></td>
-<td class="enum_member_description">
-<p>Slice nal</p>
-</td>
-<td class="enum_member_annotations"> </td>
+<td> </td>
+<td> </td>
</tr>
<tr>
<td class="enum_member_name"><p><a name="GST-H264-NAL-SLICE-DPA:CAPS"></a>GST_H264_NAL_SLICE_DPA</p></td>
-<td class="enum_member_description">
-<p>DPA slice nal</p>
-</td>
-<td class="enum_member_annotations"> </td>
+<td> </td>
+<td> </td>
</tr>
<tr>
<td class="enum_member_name"><p><a name="GST-H264-NAL-SLICE-DPB:CAPS"></a>GST_H264_NAL_SLICE_DPB</p></td>
-<td class="enum_member_description">
-<p>DPB slice nal</p>
-</td>
-<td class="enum_member_annotations"> </td>
+<td> </td>
+<td> </td>
</tr>
<tr>
<td class="enum_member_name"><p><a name="GST-H264-NAL-SLICE-DPC:CAPS"></a>GST_H264_NAL_SLICE_DPC</p></td>
-<td class="enum_member_description">
-<p>DPC slice nal</p>
-</td>
-<td class="enum_member_annotations"> </td>
+<td> </td>
+<td> </td>
</tr>
<tr>
<td class="enum_member_name"><p><a name="GST-H264-NAL-SLICE-IDR:CAPS"></a>GST_H264_NAL_SLICE_IDR</p></td>
-<td class="enum_member_description">
-<p>DPR slice nal</p>
-</td>
-<td class="enum_member_annotations"> </td>
+<td> </td>
+<td> </td>
</tr>
<tr>
<td class="enum_member_name"><p><a name="GST-H264-NAL-SEI:CAPS"></a>GST_H264_NAL_SEI</p></td>
-<td class="enum_member_description">
-<p>Supplemental enhancement information (SEI) nal unit</p>
-</td>
-<td class="enum_member_annotations"> </td>
+<td> </td>
+<td> </td>
</tr>
<tr>
<td class="enum_member_name"><p><a name="GST-H264-NAL-SPS:CAPS"></a>GST_H264_NAL_SPS</p></td>
-<td class="enum_member_description">
-<p>Sequence parameter set (SPS) nal unit</p>
-</td>
-<td class="enum_member_annotations"> </td>
+<td> </td>
+<td> </td>
</tr>
<tr>
<td class="enum_member_name"><p><a name="GST-H264-NAL-PPS:CAPS"></a>GST_H264_NAL_PPS</p></td>
-<td class="enum_member_description">
-<p>Picture parameter set (PPS) nal unit</p>
-</td>
-<td class="enum_member_annotations"> </td>
+<td> </td>
+<td> </td>
</tr>
<tr>
<td class="enum_member_name"><p><a name="GST-H264-NAL-AU-DELIMITER:CAPS"></a>GST_H264_NAL_AU_DELIMITER</p></td>
-<td class="enum_member_description">
-<p>Access unit (AU) delimiter nal unit</p>
-</td>
-<td class="enum_member_annotations"> </td>
+<td> </td>
+<td> </td>
</tr>
<tr>
<td class="enum_member_name"><p><a name="GST-H264-NAL-SEQ-END:CAPS"></a>GST_H264_NAL_SEQ_END</p></td>
-<td class="enum_member_description">
-<p>End of sequence nal unit</p>
-</td>
-<td class="enum_member_annotations"> </td>
+<td> </td>
+<td> </td>
</tr>
<tr>
<td class="enum_member_name"><p><a name="GST-H264-NAL-STREAM-END:CAPS"></a>GST_H264_NAL_STREAM_END</p></td>
-<td class="enum_member_description">
-<p>End of stream nal unit</p>
-</td>
-<td class="enum_member_annotations"> </td>
+<td> </td>
+<td> </td>
</tr>
<tr>
<td class="enum_member_name"><p><a name="GST-H264-NAL-FILLER-DATA:CAPS"></a>GST_H264_NAL_FILLER_DATA</p></td>
-<td class="enum_member_description">
-<p>Filler data nal lunit</p>
-</td>
-<td class="enum_member_annotations"> </td>
+<td> </td>
+<td> </td>
</tr>
<tr>
<td class="enum_member_name"><p><a name="GST-H264-NAL-SPS-EXT:CAPS"></a>GST_H264_NAL_SPS_EXT</p></td>
-<td class="enum_member_description">
-<p>Sequence parameter set (SPS) extension NAL unit</p>
-</td>
-<td class="enum_member_annotations"> </td>
+<td> </td>
+<td> </td>
</tr>
<tr>
<td class="enum_member_name"><p><a name="GST-H264-NAL-PREFIX-UNIT:CAPS"></a>GST_H264_NAL_PREFIX_UNIT</p></td>
-<td class="enum_member_description">
-<p>Prefix NAL unit</p>
-</td>
-<td class="enum_member_annotations"> </td>
+<td> </td>
+<td> </td>
</tr>
<tr>
<td class="enum_member_name"><p><a name="GST-H264-NAL-SUBSET-SPS:CAPS"></a>GST_H264_NAL_SUBSET_SPS</p></td>
-<td class="enum_member_description">
-<p>Subset sequence parameter set (SSPS) NAL unit</p>
-</td>
-<td class="enum_member_annotations"> </td>
+<td> </td>
+<td> </td>
</tr>
<tr>
<td class="enum_member_name"><p><a name="GST-H264-NAL-DEPTH-SPS:CAPS"></a>GST_H264_NAL_DEPTH_SPS</p></td>
-<td class="enum_member_description">
-<p>Depth parameter set (DPS) NAL unit</p>
-</td>
-<td class="enum_member_annotations"> </td>
+<td> </td>
+<td> </td>
</tr>
<tr>
<td class="enum_member_name"><p><a name="GST-H264-NAL-SLICE-AUX:CAPS"></a>GST_H264_NAL_SLICE_AUX</p></td>
-<td class="enum_member_description">
-<p>Auxiliary coded picture without partitioning NAL unit</p>
-</td>
-<td class="enum_member_annotations"> </td>
+<td> </td>
+<td> </td>
</tr>
<tr>
<td class="enum_member_name"><p><a name="GST-H264-NAL-SLICE-EXT:CAPS"></a>GST_H264_NAL_SLICE_EXT</p></td>
-<td class="enum_member_description">
-<p>Coded slice extension NAL unit</p>
-</td>
-<td class="enum_member_annotations"> </td>
+<td> </td>
+<td> </td>
</tr>
<tr>
<td class="enum_member_name"><p><a name="GST-H264-NAL-SLICE-DEPTH:CAPS"></a>GST_H264_NAL_SLICE_DEPTH</p></td>
-<td class="enum_member_description">
-<p>Coded slice extension for depth or 3D-AVC texture view</p>
-</td>
-<td class="enum_member_annotations"> </td>
+<td> </td>
+<td> </td>
</tr>
</tbody>
</table></div>
@@ -1267,7 +614,6 @@
<hr>
<div class="refsect2">
<a name="GstH264ParserResult"></a><h3>enum GstH264ParserResult</h3>
-<p>The result of parsing H264 data.</p>
<div class="refsect3">
<a name="GstH264ParserResult.members"></a><h4>Members</h4>
<div class="informaltable"><table class="informaltable" width="100%" border="0">
@@ -1279,45 +625,33 @@
<tbody>
<tr>
<td class="enum_member_name"><p><a name="GST-H264-PARSER-OK:CAPS"></a>GST_H264_PARSER_OK</p></td>
-<td class="enum_member_description">
-<p>The parsing succeded</p>
-</td>
-<td class="enum_member_annotations"> </td>
+<td> </td>
+<td> </td>
</tr>
<tr>
<td class="enum_member_name"><p><a name="GST-H264-PARSER-BROKEN-DATA:CAPS"></a>GST_H264_PARSER_BROKEN_DATA</p></td>
-<td class="enum_member_description">
-<p>The data to parse is broken</p>
-</td>
-<td class="enum_member_annotations"> </td>
+<td> </td>
+<td> </td>
</tr>
<tr>
<td class="enum_member_name"><p><a name="GST-H264-PARSER-BROKEN-LINK:CAPS"></a>GST_H264_PARSER_BROKEN_LINK</p></td>
-<td class="enum_member_description">
-<p>The link to structure needed for the parsing couldn't be found</p>
-</td>
-<td class="enum_member_annotations"> </td>
+<td> </td>
+<td> </td>
</tr>
<tr>
<td class="enum_member_name"><p><a name="GST-H264-PARSER-ERROR:CAPS"></a>GST_H264_PARSER_ERROR</p></td>
-<td class="enum_member_description">
-<p>An error occured when parsing</p>
-</td>
-<td class="enum_member_annotations"> </td>
+<td> </td>
+<td> </td>
</tr>
<tr>
<td class="enum_member_name"><p><a name="GST-H264-PARSER-NO-NAL:CAPS"></a>GST_H264_PARSER_NO_NAL</p></td>
-<td class="enum_member_description">
-<p>No nal found during the parsing</p>
-</td>
-<td class="enum_member_annotations"> </td>
+<td> </td>
+<td> </td>
</tr>
<tr>
<td class="enum_member_name"><p><a name="GST-H264-PARSER-NO-NAL-END:CAPS"></a>GST_H264_PARSER_NO_NAL_END</p></td>
-<td class="enum_member_description">
-<p>Start of the nal found, but not the end.</p>
-</td>
-<td class="enum_member_annotations"> </td>
+<td> </td>
+<td> </td>
</tr>
</tbody>
</table></div>
@@ -1326,7 +660,6 @@
<hr>
<div class="refsect2">
<a name="GstH264SEIPayloadType"></a><h3>enum GstH264SEIPayloadType</h3>
-<p>The type of SEI message.</p>
<div class="refsect3">
<a name="GstH264SEIPayloadType.members"></a><h4>Members</h4>
<div class="informaltable"><table class="informaltable" width="100%" border="0">
@@ -1338,40 +671,28 @@
<tbody>
<tr>
<td class="enum_member_name"><p><a name="GST-H264-SEI-BUF-PERIOD:CAPS"></a>GST_H264_SEI_BUF_PERIOD</p></td>
-<td class="enum_member_description">
-<p>Buffering Period SEI Message</p>
-</td>
-<td class="enum_member_annotations"> </td>
+<td> </td>
+<td> </td>
</tr>
<tr>
<td class="enum_member_name"><p><a name="GST-H264-SEI-PIC-TIMING:CAPS"></a>GST_H264_SEI_PIC_TIMING</p></td>
-<td class="enum_member_description">
-<p>Picture Timing SEI Message</p>
-</td>
-<td class="enum_member_annotations"> </td>
+<td> </td>
+<td> </td>
</tr>
<tr>
<td class="enum_member_name"><p><a name="GST-H264-SEI-RECOVERY-POINT:CAPS"></a>GST_H264_SEI_RECOVERY_POINT</p></td>
-<td class="enum_member_description">
-<p>Recovery Point SEI Message (D.2.7)</p>
-</td>
-<td class="enum_member_annotations"> </td>
+<td> </td>
+<td> </td>
</tr>
<tr>
<td class="enum_member_name"><p><a name="GST-H264-SEI-STEREO-VIDEO-INFO:CAPS"></a>GST_H264_SEI_STEREO_VIDEO_INFO</p></td>
-<td class="enum_member_description">
-<p>stereo video info SEI message (Since: 1.6)</p>
-</td>
-<td class="enum_member_annotations"> </td>
+<td> </td>
+<td> </td>
</tr>
<tr>
<td class="enum_member_name"><p><a name="GST-H264-SEI-FRAME-PACKING:CAPS"></a>GST_H264_SEI_FRAME_PACKING</p></td>
-<td class="enum_member_description">
-<p>Frame Packing Arrangement (FPA) message that
- contains the 3D arrangement for stereoscopic 3D video (Since: 1.6)
-...</p>
-</td>
-<td class="enum_member_annotations"> </td>
+<td> </td>
+<td> </td>
</tr>
</tbody>
</table></div>
@@ -1380,7 +701,6 @@
<hr>
<div class="refsect2">
<a name="GstH264SEIPicStructType"></a><h3>enum GstH264SEIPicStructType</h3>
-<p>SEI pic_struct type</p>
<div class="refsect3">
<a name="GstH264SEIPicStructType.members"></a><h4>Members</h4>
<div class="informaltable"><table class="informaltable" width="100%" border="0">
@@ -1392,68 +712,48 @@
<tbody>
<tr>
<td class="enum_member_name"><p><a name="GST-H264-SEI-PIC-STRUCT-FRAME:CAPS"></a>GST_H264_SEI_PIC_STRUCT_FRAME</p></td>
-<td class="enum_member_description">
-<p>Picture is a frame</p>
-</td>
-<td class="enum_member_annotations"> </td>
+<td> </td>
+<td> </td>
</tr>
<tr>
<td class="enum_member_name"><p><a name="GST-H264-SEI-PIC-STRUCT-TOP-FIELD:CAPS"></a>GST_H264_SEI_PIC_STRUCT_TOP_FIELD</p></td>
-<td class="enum_member_description">
-<p>Top field of frame</p>
-</td>
-<td class="enum_member_annotations"> </td>
+<td> </td>
+<td> </td>
</tr>
<tr>
<td class="enum_member_name"><p><a name="GST-H264-SEI-PIC-STRUCT-BOTTOM-FIELD:CAPS"></a>GST_H264_SEI_PIC_STRUCT_BOTTOM_FIELD</p></td>
-<td class="enum_member_description">
-<p>Botom field of frame</p>
-</td>
-<td class="enum_member_annotations"> </td>
+<td> </td>
+<td> </td>
</tr>
<tr>
<td class="enum_member_name"><p><a name="GST-H264-SEI-PIC-STRUCT-TOP-BOTTOM:CAPS"></a>GST_H264_SEI_PIC_STRUCT_TOP_BOTTOM</p></td>
-<td class="enum_member_description">
-<p>Top bottom field of frame</p>
-</td>
-<td class="enum_member_annotations"> </td>
+<td> </td>
+<td> </td>
</tr>
<tr>
<td class="enum_member_name"><p><a name="GST-H264-SEI-PIC-STRUCT-BOTTOM-TOP:CAPS"></a>GST_H264_SEI_PIC_STRUCT_BOTTOM_TOP</p></td>
-<td class="enum_member_description">
-<p>bottom top field of frame</p>
-</td>
-<td class="enum_member_annotations"> </td>
+<td> </td>
+<td> </td>
</tr>
<tr>
<td class="enum_member_name"><p><a name="GST-H264-SEI-PIC-STRUCT-TOP-BOTTOM-TOP:CAPS"></a>GST_H264_SEI_PIC_STRUCT_TOP_BOTTOM_TOP</p></td>
-<td class="enum_member_description">
-<p>top bottom top field of frame</p>
-</td>
-<td class="enum_member_annotations"> </td>
+<td> </td>
+<td> </td>
</tr>
<tr>
<td class="enum_member_name"><p><a name="GST-H264-SEI-PIC-STRUCT-BOTTOM-TOP-BOTTOM:CAPS"></a>GST_H264_SEI_PIC_STRUCT_BOTTOM_TOP_BOTTOM</p></td>
-<td class="enum_member_description">
-<p>bottom top bottom field of frame</p>
-</td>
-<td class="enum_member_annotations"> </td>
+<td> </td>
+<td> </td>
</tr>
<tr>
<td class="enum_member_name"><p><a name="GST-H264-SEI-PIC-STRUCT-FRAME-DOUBLING:CAPS"></a>GST_H264_SEI_PIC_STRUCT_FRAME_DOUBLING</p></td>
-<td class="enum_member_description">
-<p>indicates that the frame should
- be displayed two times consecutively</p>
-</td>
-<td class="enum_member_annotations"> </td>
+<td> </td>
+<td> </td>
</tr>
<tr>
<td class="enum_member_name"><p><a name="GST-H264-SEI-PIC-STRUCT-FRAME-TRIPLING:CAPS"></a>GST_H264_SEI_PIC_STRUCT_FRAME_TRIPLING</p></td>
-<td class="enum_member_description">
-<p>indicates that the frame should be
- displayed three times consecutively</p>
-</td>
-<td class="enum_member_annotations"> </td>
+<td> </td>
+<td> </td>
</tr>
</tbody>
</table></div>
@@ -1462,7 +762,6 @@
<hr>
<div class="refsect2">
<a name="GstH264SliceType"></a><h3>enum GstH264SliceType</h3>
-<p>Type of Picture slice</p>
<div class="refsect3">
<a name="GstH264SliceType.members"></a><h4>Members</h4>
<div class="informaltable"><table class="informaltable" width="100%" border="0">
@@ -1532,7 +831,6 @@
<pre class="programlisting">struct GstH264NalParser {
};
</pre>
-<p>H264 NAL Parser (opaque structure).</p>
</div>
<hr>
<div class="refsect2">
@@ -1557,79 +855,6 @@
} extension;
};
</pre>
-<p>Structure defining the Nal unit headers</p>
-<div class="refsect3">
-<a name="GstH264NalUnit.members"></a><h4>Members</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="300px" class="struct_members_name">
-<col class="struct_members_description">
-<col width="200px" class="struct_members_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint16"><span class="type">guint16</span></a> <em class="structfield"><code><a name="GstH264NalUnit.ref-idc"></a>ref_idc</code></em>;</p></td>
-<td class="struct_member_description"><p>not equal to 0 specifies that the content of the NAL unit
-contains a sequence parameter set, a sequence parameter set
-extension, a subset sequence parameter set, a picture parameter
-set, a slice of a reference picture, a slice data partition of a
-reference picture, or a prefix NAL unit preceding a slice of a
-reference picture.</p></td>
-<td class="struct_member_annotations"> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint16"><span class="type">guint16</span></a> <em class="structfield"><code><a name="GstH264NalUnit.type"></a>type</code></em>;</p></td>
-<td class="struct_member_description"><p>A <a class="link" href="gst-plugins-bad-libs-h264parser.html#GstH264NalUnitType" title="enum GstH264NalUnitType"><span class="type">GstH264NalUnitType</span></a></p></td>
-<td class="struct_member_annotations"> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint8"><span class="type">guint8</span></a> <em class="structfield"><code><a name="GstH264NalUnit.idr-pic-flag"></a>idr_pic_flag</code></em>;</p></td>
-<td class="struct_member_description"><p>calculated idr_pic_flag</p></td>
-<td class="struct_member_annotations"> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint"><span class="type">guint</span></a> <em class="structfield"><code><a name="GstH264NalUnit.size"></a>size</code></em>;</p></td>
-<td class="struct_member_description"><p>The size of the nal unit starting from <em class="parameter"><code>offset</code></em>
-, thus
-including the header bytes. e.g. <em class="parameter"><code>type</code></em>
-(nal_unit_type)</p></td>
-<td class="struct_member_annotations"> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint"><span class="type">guint</span></a> <em class="structfield"><code><a name="GstH264NalUnit.offset"></a>offset</code></em>;</p></td>
-<td class="struct_member_description"><p>The offset of the actual start of the nal unit, thus
-including the header bytes</p></td>
-<td class="struct_member_annotations"> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint"><span class="type">guint</span></a> <em class="structfield"><code><a name="GstH264NalUnit.sc-offset"></a>sc_offset</code></em>;</p></td>
-<td class="struct_member_description"><p>The offset of the start code of the nal unit</p></td>
-<td class="struct_member_annotations"> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a> <em class="structfield"><code><a name="GstH264NalUnit.valid"></a>valid</code></em>;</p></td>
-<td class="struct_member_description"><p>If the nal unit is valid, which means it has
-already been parsed</p></td>
-<td class="struct_member_annotations"> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint8"><span class="type">guint8</span></a> *<em class="structfield"><code><a name="GstH264NalUnit.data"></a>data</code></em>;</p></td>
-<td class="struct_member_description"><p>The data from which the Nalu has been parsed</p></td>
-<td class="struct_member_annotations"> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint8"><span class="type">guint8</span></a> <em class="structfield"><code><a name="GstH264NalUnit.header-bytes"></a>header_bytes</code></em>;</p></td>
-<td class="struct_member_description"><p>The size of the NALU header in bytes (Since 1.6)</p></td>
-<td class="struct_member_annotations"> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint8"><span class="type">guint8</span></a> <em class="structfield"><code><a name="GstH264NalUnit.extension-type"></a>extension_type</code></em>;</p></td>
-<td class="struct_member_description"><p>the extension type (Since 1.6)</p></td>
-<td class="struct_member_annotations"> </td>
-</tr>
-</tbody>
-</table></div>
-</div>
</div>
<hr>
<div class="refsect2">
@@ -1697,7 +922,7 @@
gint width, height;
gint crop_rect_width, crop_rect_height;
gint crop_rect_x, crop_rect_y;
- gint fps_num, fps_den;
+ gint fps_num_removed, fps_den_removed; /* FIXME: remove */
gboolean valid;
/* Subset SPS extensions */
@@ -1707,274 +932,6 @@
} extension;
};
</pre>
-<p>H264 Sequence Parameter Set (SPS)</p>
-<div class="refsect3">
-<a name="GstH264SPS.members"></a><h4>Members</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="300px" class="struct_members_name">
-<col class="struct_members_description">
-<col width="200px" class="struct_members_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gint"><span class="type">gint</span></a> <em class="structfield"><code><a name="GstH264SPS.id"></a>id</code></em>;</p></td>
-<td class="struct_member_description"><p>The ID of the sequence parameter set</p></td>
-<td class="struct_member_annotations"> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint8"><span class="type">guint8</span></a> <em class="structfield"><code><a name="GstH264SPS.profile-idc"></a>profile_idc</code></em>;</p></td>
-<td class="struct_member_description"><p>indicate the profile to which the coded video sequence conforms</p></td>
-<td class="struct_member_annotations"> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint8"><span class="type">guint8</span></a> <em class="structfield"><code><a name="GstH264SPS.constraint-set0-flag"></a>constraint_set0_flag</code></em>;</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint8"><span class="type">guint8</span></a> <em class="structfield"><code><a name="GstH264SPS.constraint-set1-flag"></a>constraint_set1_flag</code></em>;</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint8"><span class="type">guint8</span></a> <em class="structfield"><code><a name="GstH264SPS.constraint-set2-flag"></a>constraint_set2_flag</code></em>;</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint8"><span class="type">guint8</span></a> <em class="structfield"><code><a name="GstH264SPS.constraint-set3-flag"></a>constraint_set3_flag</code></em>;</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint8"><span class="type">guint8</span></a> <em class="structfield"><code><a name="GstH264SPS.constraint-set4-flag"></a>constraint_set4_flag</code></em>;</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint8"><span class="type">guint8</span></a> <em class="structfield"><code><a name="GstH264SPS.constraint-set5-flag"></a>constraint_set5_flag</code></em>;</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint8"><span class="type">guint8</span></a> <em class="structfield"><code><a name="GstH264SPS.level-idc"></a>level_idc</code></em>;</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint8"><span class="type">guint8</span></a> <em class="structfield"><code><a name="GstH264SPS.chroma-format-idc"></a>chroma_format_idc</code></em>;</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint8"><span class="type">guint8</span></a> <em class="structfield"><code><a name="GstH264SPS.separate-colour-plane-flag"></a>separate_colour_plane_flag</code></em>;</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint8"><span class="type">guint8</span></a> <em class="structfield"><code><a name="GstH264SPS.bit-depth-luma-minus8"></a>bit_depth_luma_minus8</code></em>;</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint8"><span class="type">guint8</span></a> <em class="structfield"><code><a name="GstH264SPS.bit-depth-chroma-minus8"></a>bit_depth_chroma_minus8</code></em>;</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint8"><span class="type">guint8</span></a> <em class="structfield"><code><a name="GstH264SPS.qpprime-y-zero-transform-bypass-flag"></a>qpprime_y_zero_transform_bypass_flag</code></em>;</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint8"><span class="type">guint8</span></a> <em class="structfield"><code><a name="GstH264SPS.scaling-matrix-present-flag"></a>scaling_matrix_present_flag</code></em>;</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint8"><span class="type">guint8</span></a> <em class="structfield"><code><a name="GstH264SPS.scaling-lists-4x4"></a>scaling_lists_4x4</code></em>[6][16];</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint8"><span class="type">guint8</span></a> <em class="structfield"><code><a name="GstH264SPS.scaling-lists-8x8"></a>scaling_lists_8x8</code></em>[6][64];</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint8"><span class="type">guint8</span></a> <em class="structfield"><code><a name="GstH264SPS.log2-max-frame-num-minus4"></a>log2_max_frame_num_minus4</code></em>;</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint8"><span class="type">guint8</span></a> <em class="structfield"><code><a name="GstH264SPS.pic-order-cnt-type"></a>pic_order_cnt_type</code></em>;</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint8"><span class="type">guint8</span></a> <em class="structfield"><code><a name="GstH264SPS.log2-max-pic-order-cnt-lsb-minus4"></a>log2_max_pic_order_cnt_lsb_minus4</code></em>;</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint8"><span class="type">guint8</span></a> <em class="structfield"><code><a name="GstH264SPS.delta-pic-order-always-zero-flag"></a>delta_pic_order_always_zero_flag</code></em>;</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gint32"><span class="type">gint32</span></a> <em class="structfield"><code><a name="GstH264SPS.offset-for-non-ref-pic"></a>offset_for_non_ref_pic</code></em>;</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gint32"><span class="type">gint32</span></a> <em class="structfield"><code><a name="GstH264SPS.offset-for-top-to-bottom-field"></a>offset_for_top_to_bottom_field</code></em>;</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint8"><span class="type">guint8</span></a> <em class="structfield"><code><a name="GstH264SPS.num-ref-frames-in-pic-order-cnt-cycle"></a>num_ref_frames_in_pic_order_cnt_cycle</code></em>;</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gint32"><span class="type">gint32</span></a> <em class="structfield"><code><a name="GstH264SPS.offset-for-ref-frame"></a>offset_for_ref_frame</code></em>[255];</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint32"><span class="type">guint32</span></a> <em class="structfield"><code><a name="GstH264SPS.num-ref-frames"></a>num_ref_frames</code></em>;</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint8"><span class="type">guint8</span></a> <em class="structfield"><code><a name="GstH264SPS.gaps-in-frame-num-value-allowed-flag"></a>gaps_in_frame_num_value_allowed_flag</code></em>;</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint32"><span class="type">guint32</span></a> <em class="structfield"><code><a name="GstH264SPS.pic-width-in-mbs-minus1"></a>pic_width_in_mbs_minus1</code></em>;</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint32"><span class="type">guint32</span></a> <em class="structfield"><code><a name="GstH264SPS.pic-height-in-map-units-minus1"></a>pic_height_in_map_units_minus1</code></em>;</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint8"><span class="type">guint8</span></a> <em class="structfield"><code><a name="GstH264SPS.frame-mbs-only-flag"></a>frame_mbs_only_flag</code></em>;</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint8"><span class="type">guint8</span></a> <em class="structfield"><code><a name="GstH264SPS.mb-adaptive-frame-field-flag"></a>mb_adaptive_frame_field_flag</code></em>;</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint8"><span class="type">guint8</span></a> <em class="structfield"><code><a name="GstH264SPS.direct-8x8-inference-flag"></a>direct_8x8_inference_flag</code></em>;</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint8"><span class="type">guint8</span></a> <em class="structfield"><code><a name="GstH264SPS.frame-cropping-flag"></a>frame_cropping_flag</code></em>;</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint32"><span class="type">guint32</span></a> <em class="structfield"><code><a name="GstH264SPS.frame-crop-left-offset"></a>frame_crop_left_offset</code></em>;</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint32"><span class="type">guint32</span></a> <em class="structfield"><code><a name="GstH264SPS.frame-crop-right-offset"></a>frame_crop_right_offset</code></em>;</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint32"><span class="type">guint32</span></a> <em class="structfield"><code><a name="GstH264SPS.frame-crop-top-offset"></a>frame_crop_top_offset</code></em>;</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint32"><span class="type">guint32</span></a> <em class="structfield"><code><a name="GstH264SPS.frame-crop-bottom-offset"></a>frame_crop_bottom_offset</code></em>;</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint8"><span class="type">guint8</span></a> <em class="structfield"><code><a name="GstH264SPS.vui-parameters-present-flag"></a>vui_parameters_present_flag</code></em>;</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a class="link" href="gst-plugins-bad-libs-h264parser.html#GstH264VUIParams" title="struct GstH264VUIParams"><span class="type">GstH264VUIParams</span></a> <em class="structfield"><code><a name="GstH264SPS.vui-parameters"></a>vui_parameters</code></em>;</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint8"><span class="type">guint8</span></a> <em class="structfield"><code><a name="GstH264SPS.chroma-array-type"></a>chroma_array_type</code></em>;</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint32"><span class="type">guint32</span></a> <em class="structfield"><code><a name="GstH264SPS.max-frame-num"></a>max_frame_num</code></em>;</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gint"><span class="type">gint</span></a> <em class="structfield"><code><a name="GstH264SPS.width"></a>width</code></em>;</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gint"><span class="type">gint</span></a> <em class="structfield"><code><a name="GstH264SPS.height"></a>height</code></em>;</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gint"><span class="type">gint</span></a> <em class="structfield"><code><a name="GstH264SPS.crop-rect-width"></a>crop_rect_width</code></em>;</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gint"><span class="type">gint</span></a> <em class="structfield"><code><a name="GstH264SPS.crop-rect-height"></a>crop_rect_height</code></em>;</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gint"><span class="type">gint</span></a> <em class="structfield"><code><a name="GstH264SPS.crop-rect-x"></a>crop_rect_x</code></em>;</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gint"><span class="type">gint</span></a> <em class="structfield"><code><a name="GstH264SPS.crop-rect-y"></a>crop_rect_y</code></em>;</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gint"><span class="type">gint</span></a> <em class="structfield"><code><a name="GstH264SPS.fps-num"></a>fps_num</code></em>;</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gint"><span class="type">gint</span></a> <em class="structfield"><code><a name="GstH264SPS.fps-den"></a>fps_den</code></em>;</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a> <em class="structfield"><code><a name="GstH264SPS.valid"></a>valid</code></em>;</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint8"><span class="type">guint8</span></a> <em class="structfield"><code><a name="GstH264SPS.extension-type"></a>extension_type</code></em>;</p></td>
-<td> </td>
-<td> </td>
-</tr>
-</tbody>
-</table></div>
-</div>
</div>
<hr>
<div class="refsect2">
@@ -2024,7 +981,6 @@
gboolean valid;
};
</pre>
-<p>H264 Picture Parameter Set</p>
</div>
<hr>
<div class="refsect2">
@@ -2044,78 +1000,6 @@
guint8 time_offset_length;
};
</pre>
-<p>Defines the HRD parameters</p>
-<div class="refsect3">
-<a name="GstH264HRDParams.members"></a><h4>Members</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="300px" class="struct_members_name">
-<col class="struct_members_description">
-<col width="200px" class="struct_members_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint8"><span class="type">guint8</span></a> <em class="structfield"><code><a name="GstH264HRDParams.cpb-cnt-minus1"></a>cpb_cnt_minus1</code></em>;</p></td>
-<td class="struct_member_description"><p>plus 1 specifies the number of alternative
-CPB specifications in the bitstream</p></td>
-<td class="struct_member_annotations"> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint8"><span class="type">guint8</span></a> <em class="structfield"><code><a name="GstH264HRDParams.bit-rate-scale"></a>bit_rate_scale</code></em>;</p></td>
-<td class="struct_member_description"><p>specifies the maximum input bit rate of the
-SchedSelIdx-th CPB</p></td>
-<td class="struct_member_annotations"> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint8"><span class="type">guint8</span></a> <em class="structfield"><code><a name="GstH264HRDParams.cpb-size-scale"></a>cpb_size_scale</code></em>;</p></td>
-<td class="struct_member_description"><p>specifies the CPB size of the SchedSelIdx-th CPB
-<em class="parameter"><code>guint32</code></em>
-bit_rate_value_minus1: specifies the maximum input bit rate for the
-SchedSelIdx-th CPB</p></td>
-<td class="struct_member_annotations"> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint32"><span class="type">guint32</span></a> <em class="structfield"><code><a name="GstH264HRDParams.bit-rate-value-minus1"></a>bit_rate_value_minus1</code></em>[32];</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint32"><span class="type">guint32</span></a> <em class="structfield"><code><a name="GstH264HRDParams.cpb-size-value-minus1"></a>cpb_size_value_minus1</code></em>[32];</p></td>
-<td class="struct_member_description"><p>is used together with cpb_size_scale to specify the
-SchedSelIdx-th CPB size</p></td>
-<td class="struct_member_annotations"> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint8"><span class="type">guint8</span></a> <em class="structfield"><code><a name="GstH264HRDParams.cbr-flag"></a>cbr_flag</code></em>[32];</p></td>
-<td class="struct_member_description"><p>Specifies if running in itermediate bitrate mode or constant</p></td>
-<td class="struct_member_annotations"> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint8"><span class="type">guint8</span></a> <em class="structfield"><code><a name="GstH264HRDParams.initial-cpb-removal-delay-length-minus1"></a>initial_cpb_removal_delay_length_minus1</code></em>;</p></td>
-<td class="struct_member_description"><p>specifies the length in bits of
-the cpb_removal_delay syntax element</p></td>
-<td class="struct_member_annotations"> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint8"><span class="type">guint8</span></a> <em class="structfield"><code><a name="GstH264HRDParams.cpb-removal-delay-length-minus1"></a>cpb_removal_delay_length_minus1</code></em>;</p></td>
-<td class="struct_member_description"><p>specifies the length in bits of the
-dpb_output_delay syntax element</p></td>
-<td class="struct_member_annotations"> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint8"><span class="type">guint8</span></a> <em class="structfield"><code><a name="GstH264HRDParams.dpb-output-delay-length-minus1"></a>dpb_output_delay_length_minus1</code></em>;</p></td>
-<td class="struct_member_description"><div class="blockquote"><blockquote class="blockquote"><p>0 specifies the length in bits of the time_offset syntax element.
-=0 specifies that the time_offset syntax element is not present</p></blockquote></div></td>
-<td class="struct_member_annotations"> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint8"><span class="type">guint8</span></a> <em class="structfield"><code><a name="GstH264HRDParams.time-offset-length"></a>time_offset_length</code></em>;</p></td>
-<td class="struct_member_description"><p>Length of the time offset</p></td>
-<td class="struct_member_annotations"> </td>
-</tr>
-</tbody>
-</table></div>
-</div>
</div>
<hr>
<div class="refsect2">
@@ -2175,225 +1059,6 @@
guint par_d;
};
</pre>
-<p>The structure representing the VUI parameters.</p>
-<div class="refsect3">
-<a name="GstH264VUIParams.members"></a><h4>Members</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="300px" class="struct_members_name">
-<col class="struct_members_description">
-<col width="200px" class="struct_members_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint8"><span class="type">guint8</span></a> <em class="structfield"><code><a name="GstH264VUIParams.aspect-ratio-info-present-flag"></a>aspect_ratio_info_present_flag</code></em>;</p></td>
-<td class="struct_member_description"><p><a href="/usr/share/gtk-doc/html/glibglib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> specifies that aspect_ratio_idc is present.
-<a href="/usr/share/gtk-doc/html/glibglib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a> specifies that aspect_ratio_idc is not present
-<em class="parameter"><code>aspect_ratio_idc</code></em>
-specifies the value of the sample aspect ratio of the luma samples
-<em class="parameter"><code>sar_width</code></em>
-indicates the horizontal size of the sample aspect ratio
-<em class="parameter"><code>sar_height</code></em>
-indicates the vertical size of the sample aspect ratio</p></td>
-<td class="struct_member_annotations"> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint8"><span class="type">guint8</span></a> <em class="structfield"><code><a name="GstH264VUIParams.aspect-ratio-idc"></a>aspect_ratio_idc</code></em>;</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint16"><span class="type">guint16</span></a> <em class="structfield"><code><a name="GstH264VUIParams.sar-width"></a>sar_width</code></em>;</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint16"><span class="type">guint16</span></a> <em class="structfield"><code><a name="GstH264VUIParams.sar-height"></a>sar_height</code></em>;</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint8"><span class="type">guint8</span></a> <em class="structfield"><code><a name="GstH264VUIParams.overscan-info-present-flag"></a>overscan_info_present_flag</code></em>;</p></td>
-<td class="struct_member_description"><p><a href="/usr/share/gtk-doc/html/glibglib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> overscan_appropriate_flag is present <a href="/usr/share/gtk-doc/html/glibglib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a> otherwize</p></td>
-<td class="struct_member_annotations"> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint8"><span class="type">guint8</span></a> <em class="structfield"><code><a name="GstH264VUIParams.overscan-appropriate-flag"></a>overscan_appropriate_flag</code></em>;</p></td>
-<td class="struct_member_description"><p><a href="/usr/share/gtk-doc/html/glibglib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> indicates that the cropped decoded pictures
-output are suitable for display using overscan. <a href="/usr/share/gtk-doc/html/glibglib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a> the cropped decoded pictures
-output contain visually important information</p></td>
-<td class="struct_member_annotations"> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint8"><span class="type">guint8</span></a> <em class="structfield"><code><a name="GstH264VUIParams.video-signal-type-present-flag"></a>video_signal_type_present_flag</code></em>;</p></td>
-<td class="struct_member_description"><p><a href="/usr/share/gtk-doc/html/glibglib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> specifies that video_format, video_full_range_flag and
-colour_description_present_flag are present.</p></td>
-<td class="struct_member_annotations"> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint8"><span class="type">guint8</span></a> <em class="structfield"><code><a name="GstH264VUIParams.video-format"></a>video_format</code></em>;</p></td>
-<td class="struct_member_description"><p>indicates the representation of the picture</p></td>
-<td class="struct_member_annotations"> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint8"><span class="type">guint8</span></a> <em class="structfield"><code><a name="GstH264VUIParams.video-full-range-flag"></a>video_full_range_flag</code></em>;</p></td>
-<td class="struct_member_description"><p>indicates the black level and range of the luma and chroma signals</p></td>
-<td class="struct_member_annotations"> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint8"><span class="type">guint8</span></a> <em class="structfield"><code><a name="GstH264VUIParams.colour-description-present-flag"></a>colour_description_present_flag</code></em>;</p></td>
-<td class="struct_member_description"><p><a href="/usr/share/gtk-doc/html/glibglib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> specifies that colour_primaries,
-transfer_characteristics and matrix_coefficients are present</p></td>
-<td class="struct_member_annotations"> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint8"><span class="type">guint8</span></a> <em class="structfield"><code><a name="GstH264VUIParams.colour-primaries"></a>colour_primaries</code></em>;</p></td>
-<td class="struct_member_description"><p>indicates the chromaticity coordinates of the source primaries</p></td>
-<td class="struct_member_annotations"> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint8"><span class="type">guint8</span></a> <em class="structfield"><code><a name="GstH264VUIParams.transfer-characteristics"></a>transfer_characteristics</code></em>;</p></td>
-<td class="struct_member_description"><p>indicates the opto-electronic transfer characteristic</p></td>
-<td class="struct_member_annotations"> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint8"><span class="type">guint8</span></a> <em class="structfield"><code><a name="GstH264VUIParams.matrix-coefficients"></a>matrix_coefficients</code></em>;</p></td>
-<td class="struct_member_description"><p>describes the matrix coefficients used in deriving luma and chroma signals</p></td>
-<td class="struct_member_annotations"> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint8"><span class="type">guint8</span></a> <em class="structfield"><code><a name="GstH264VUIParams.chroma-loc-info-present-flag"></a>chroma_loc_info_present_flag</code></em>;</p></td>
-<td class="struct_member_description"><p><a href="/usr/share/gtk-doc/html/glibglib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> specifies that chroma_sample_loc_type_top_field and
-chroma_sample_loc_type_bottom_field are present, <a href="/usr/share/gtk-doc/html/glibglib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a> otherwize</p></td>
-<td class="struct_member_annotations"> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint8"><span class="type">guint8</span></a> <em class="structfield"><code><a name="GstH264VUIParams.chroma-sample-loc-type-top-field"></a>chroma_sample_loc_type_top_field</code></em>;</p></td>
-<td class="struct_member_description"><p>specify the location of chroma for top field
-<em class="parameter"><code>chroma_sample_loc_type_bottom_field</code></em>
-specify the location of chroma for bottom field</p></td>
-<td class="struct_member_annotations"> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint8"><span class="type">guint8</span></a> <em class="structfield"><code><a name="GstH264VUIParams.chroma-sample-loc-type-bottom-field"></a>chroma_sample_loc_type_bottom_field</code></em>;</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint8"><span class="type">guint8</span></a> <em class="structfield"><code><a name="GstH264VUIParams.timing-info-present-flag"></a>timing_info_present_flag</code></em>;</p></td>
-<td class="struct_member_description"><p><a href="/usr/share/gtk-doc/html/glibglib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> specifies that num_units_in_tick,
-time_scale and fixed_frame_rate_flag are present in the bitstream</p></td>
-<td class="struct_member_annotations"> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint32"><span class="type">guint32</span></a> <em class="structfield"><code><a name="GstH264VUIParams.num-units-in-tick"></a>num_units_in_tick</code></em>;</p></td>
-<td class="struct_member_description"><p>is the number of time units of a clock operating at the frequency time_scale Hz
-time_scale: is the number of time units that pass in one second</p></td>
-<td class="struct_member_annotations"> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint32"><span class="type">guint32</span></a> <em class="structfield"><code><a name="GstH264VUIParams.time-scale"></a>time_scale</code></em>;</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint8"><span class="type">guint8</span></a> <em class="structfield"><code><a name="GstH264VUIParams.fixed-frame-rate-flag"></a>fixed_frame_rate_flag</code></em>;</p></td>
-<td class="struct_member_description"><p><a href="/usr/share/gtk-doc/html/glibglib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> indicates that the temporal distance between the HRD output times
-of any two consecutive pictures in output order is constrained as specified in the spec, <a href="/usr/share/gtk-doc/html/glibglib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a>
-otherwize.</p></td>
-<td class="struct_member_annotations"> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint8"><span class="type">guint8</span></a> <em class="structfield"><code><a name="GstH264VUIParams.nal-hrd-parameters-present-flag"></a>nal_hrd_parameters_present_flag</code></em>;</p></td>
-<td class="struct_member_description"><p><a href="/usr/share/gtk-doc/html/glibglib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if nal hrd parameters present in the bitstream</p></td>
-<td class="struct_member_annotations"> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a class="link" href="gst-plugins-bad-libs-h264parser.html#GstH264HRDParams" title="struct GstH264HRDParams"><span class="type">GstH264HRDParams</span></a> <em class="structfield"><code><a name="GstH264VUIParams.nal-hrd-parameters"></a>nal_hrd_parameters</code></em>;</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint8"><span class="type">guint8</span></a> <em class="structfield"><code><a name="GstH264VUIParams.vcl-hrd-parameters-present-flag"></a>vcl_hrd_parameters_present_flag</code></em>;</p></td>
-<td class="struct_member_description"><p><a href="/usr/share/gtk-doc/html/glibglib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if nal vlc hrd parameters present in the bitstream</p></td>
-<td class="struct_member_annotations"> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a class="link" href="gst-plugins-bad-libs-h264parser.html#GstH264HRDParams" title="struct GstH264HRDParams"><span class="type">GstH264HRDParams</span></a> <em class="structfield"><code><a name="GstH264VUIParams.vcl-hrd-parameters"></a>vcl_hrd_parameters</code></em>;</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint8"><span class="type">guint8</span></a> <em class="structfield"><code><a name="GstH264VUIParams.low-delay-hrd-flag"></a>low_delay_hrd_flag</code></em>;</p></td>
-<td class="struct_member_description"><p>specifies the HRD operational mode</p></td>
-<td class="struct_member_annotations"> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint8"><span class="type">guint8</span></a> <em class="structfield"><code><a name="GstH264VUIParams.pic-struct-present-flag"></a>pic_struct_present_flag</code></em>;</p></td>
-<td class="struct_member_description"><p><a href="/usr/share/gtk-doc/html/glibglib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> specifies that picture timing SEI messages are present or not</p></td>
-<td class="struct_member_annotations"> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint8"><span class="type">guint8</span></a> <em class="structfield"><code><a name="GstH264VUIParams.bitstream-restriction-flag"></a>bitstream_restriction_flag</code></em>;</p></td>
-<td class="struct_member_description"><p><a href="/usr/share/gtk-doc/html/glibglib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> specifies that the following coded video sequence bitstream restriction
-parameters are present</p></td>
-<td class="struct_member_annotations"> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint8"><span class="type">guint8</span></a> <em class="structfield"><code><a name="GstH264VUIParams.motion-vectors-over-pic-boundaries-flag"></a>motion_vectors_over_pic_boundaries_flag</code></em>;</p></td>
-<td class="struct_member_description"><p><a href="/usr/share/gtk-doc/html/glibglib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a> indicates that no sample outside the
-picture boundaries and no sample at a fractional sample position, <a href="/usr/share/gtk-doc/html/glibglib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> indicates that one or more
-samples outside picture boundaries may be used in inter prediction</p></td>
-<td class="struct_member_annotations"> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint32"><span class="type">guint32</span></a> <em class="structfield"><code><a name="GstH264VUIParams.max-bytes-per-pic-denom"></a>max_bytes_per_pic_denom</code></em>;</p></td>
-<td class="struct_member_description"><p>indicates a number of bytes not exceeded by the sum of the sizes of
-the VCL NAL units associated with any coded picture in the coded video sequence.</p></td>
-<td class="struct_member_annotations"> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint32"><span class="type">guint32</span></a> <em class="structfield"><code><a name="GstH264VUIParams.max-bits-per-mb-denom"></a>max_bits_per_mb_denom</code></em>;</p></td>
-<td class="struct_member_description"><p>indicates the maximum number of coded bits of macroblock_layer</p></td>
-<td class="struct_member_annotations"> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint32"><span class="type">guint32</span></a> <em class="structfield"><code><a name="GstH264VUIParams.log2-max-mv-length-horizontal"></a>log2_max_mv_length_horizontal</code></em>;</p></td>
-<td class="struct_member_description"><p>indicate the maximum absolute value of a decoded horizontal
-motion vector component</p></td>
-<td class="struct_member_annotations"> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint32"><span class="type">guint32</span></a> <em class="structfield"><code><a name="GstH264VUIParams.log2-max-mv-length-vertical"></a>log2_max_mv_length_vertical</code></em>;</p></td>
-<td class="struct_member_description"><p>indicate the maximum absolute value of a decoded vertical
-motion vector component</p></td>
-<td class="struct_member_annotations"> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint32"><span class="type">guint32</span></a> <em class="structfield"><code><a name="GstH264VUIParams.num-reorder-frames"></a>num_reorder_frames</code></em>;</p></td>
-<td class="struct_member_description"><p>indicates the maximum number of frames, complementary field pairs,
-or non-paired fields that precede any frame,</p></td>
-<td class="struct_member_annotations"> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint32"><span class="type">guint32</span></a> <em class="structfield"><code><a name="GstH264VUIParams.max-dec-frame-buffering"></a>max_dec_frame_buffering</code></em>;</p></td>
-<td class="struct_member_description"><p>specifies the required size of the HRD decoded picture buffer in
-units of frame buffers.</p></td>
-<td class="struct_member_annotations"> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint"><span class="type">guint</span></a> <em class="structfield"><code><a name="GstH264VUIParams.par-n"></a>par_n</code></em>;</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint"><span class="type">guint</span></a> <em class="structfield"><code><a name="GstH264VUIParams.par-d"></a>par_d</code></em>;</p></td>
-<td> </td>
-<td> </td>
-</tr>
-</tbody>
-</table></div>
-</div>
</div>
<hr>
<div class="refsect2">
diff --git a/docs/libs/html/gst-plugins-bad-libs-jpegparser.html b/docs/libs/html/gst-plugins-bad-libs-jpegparser.html
index d74b3a0..d76b4c7 100644
--- a/docs/libs/html/gst-plugins-bad-libs-jpegparser.html
+++ b/docs/libs/html/gst-plugins-bad-libs-jpegparser.html
@@ -27,7 +27,7 @@
<div class="refnamediv"><table width="100%"><tr>
<td valign="top">
<h2><span class="refentrytitle"><a name="gst-plugins-bad-libs-jpegparser.top_of_page"></a>jpegparser</span></h2>
-<p>jpegparser — Convenience library for JPEG bitstream parsing.</p>
+<p>jpegparser</p>
</td>
<td class="gallery_image" valign="top" align="right"></td>
</tr></table></div>
@@ -200,11 +200,6 @@
</div>
<div class="refsect1">
<a name="gst-plugins-bad-libs-jpegparser.description"></a><h2>Description</h2>
-<div class="refsect2">
-<a name="id-1.2.4.4.6.2"></a><p>
-Provides useful functions for parsing JPEG images
-</p>
-</div>
</div>
<div class="refsect1">
<a name="gst-plugins-bad-libs-jpegparser.functions_details"></a><h2>Functions</h2>
@@ -215,50 +210,6 @@
<em class="parameter"><code>const <a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint8"><span class="type">guint8</span></a> *data</code></em>,
<em class="parameter"><code><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gsize"><span class="type">gsize</span></a> size</code></em>,
<em class="parameter"><code><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint"><span class="type">guint</span></a> offset</code></em>);</pre>
-<p>Parses the JPEG bitstream contained in <em class="parameter"><code>data</code></em>
-, and returns the
-detected segment as a <a class="link" href="gst-plugins-bad-libs-jpegparser.html#GstJpegSegment" title="struct GstJpegSegment"><span class="type">GstJpegSegment</span></a>.</p>
-<p>Note that a valid segment may be returned with a length that exceeds
-the available data. It is up to the caller to make sure there's enough
-data available when parsing the segment.</p>
-<div class="refsect3">
-<a name="gst-jpeg-parse.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="parameter_name"><p>segment</p></td>
-<td class="parameter_description"><p> pointer to a <a class="link" href="gst-plugins-bad-libs-jpegparser.html#GstJpegSegment" title="struct GstJpegSegment"><span class="type">GstJpegSegment</span></a> structure to fill in. </p></td>
-<td class="parameter_annotations"><span class="annotation">[<acronym title="Parameter for returning results. Default is transfer full."><span class="acronym">out</span></acronym>]</span></td>
-</tr>
-<tr>
-<td class="parameter_name"><p>data</p></td>
-<td class="parameter_description"><p>The data to parse</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>size</p></td>
-<td class="parameter_description"><p>The size of <em class="parameter"><code>data</code></em>
-</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>offset</p></td>
-<td class="parameter_description"><p>The offset from which to start parsing</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<div class="refsect3">
-<a name="gst-jpeg-parse.returns"></a><h4>Returns</h4>
-<p> TRUE if a packet start code was found.</p>
-</div>
-<p class="since">Since: 1.6</p>
</div>
<hr>
<div class="refsect2">
@@ -266,38 +217,6 @@
<pre class="programlisting"><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
gst_jpeg_segment_parse_frame_header (<em class="parameter"><code>const <a class="link" href="gst-plugins-bad-libs-jpegparser.html#GstJpegSegment" title="struct GstJpegSegment"><span class="type">GstJpegSegment</span></a> *segment</code></em>,
<em class="parameter"><code><a class="link" href="gst-plugins-bad-libs-jpegparser.html#GstJpegFrameHdr" title="struct GstJpegFrameHdr"><span class="type">GstJpegFrameHdr</span></a> *frame_hdr</code></em>);</pre>
-<p>Parses the <em class="parameter"><code>frame_hdr</code></em>
- JPEG frame header structure members from <em class="parameter"><code>segment</code></em>
-.</p>
-<p>The caller must make sure there is enough data for the whole segment
-available.</p>
-<div class="refsect3">
-<a name="gst-jpeg-segment-parse-frame-header.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="parameter_name"><p>segment</p></td>
-<td class="parameter_description"><p>the JPEG segment</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>frame_hdr</p></td>
-<td class="parameter_description"><p> The <a class="link" href="gst-plugins-bad-libs-jpegparser.html#GstJpegFrameHdr" title="struct GstJpegFrameHdr"><span class="type">GstJpegFrameHdr</span></a> structure to fill in. </p></td>
-<td class="parameter_annotations"><span class="annotation">[<acronym title="Parameter for returning results. Default is transfer full."><span class="acronym">out</span></acronym>]</span></td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<div class="refsect3">
-<a name="gst-jpeg-segment-parse-frame-header.returns"></a><h4>Returns</h4>
-<p> TRUE if the frame header was correctly parsed.</p>
-</div>
-<p class="since">Since: 1.6</p>
</div>
<hr>
<div class="refsect2">
@@ -305,38 +224,6 @@
<pre class="programlisting"><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
gst_jpeg_segment_parse_scan_header (<em class="parameter"><code>const <a class="link" href="gst-plugins-bad-libs-jpegparser.html#GstJpegSegment" title="struct GstJpegSegment"><span class="type">GstJpegSegment</span></a> *segment</code></em>,
<em class="parameter"><code><a class="link" href="gst-plugins-bad-libs-jpegparser.html#GstJpegScanHdr" title="struct GstJpegScanHdr"><span class="type">GstJpegScanHdr</span></a> *scan_hdr</code></em>);</pre>
-<p>Parses the <em class="parameter"><code>scan_hdr</code></em>
- JPEG scan header structure members from <em class="parameter"><code>segment</code></em>
-.</p>
-<p>The caller must make sure there is enough data for the whole segment
-available.</p>
-<div class="refsect3">
-<a name="gst-jpeg-segment-parse-scan-header.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="parameter_name"><p>segment</p></td>
-<td class="parameter_description"><p>the JPEG segment</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>scan_hdr</p></td>
-<td class="parameter_description"><p> The <a class="link" href="gst-plugins-bad-libs-jpegparser.html#GstJpegScanHdr" title="struct GstJpegScanHdr"><span class="type">GstJpegScanHdr</span></a> structure to fill in. </p></td>
-<td class="parameter_annotations"><span class="annotation">[<acronym title="Parameter for returning results. Default is transfer full."><span class="acronym">out</span></acronym>]</span></td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<div class="refsect3">
-<a name="gst-jpeg-segment-parse-scan-header.returns"></a><h4>Returns</h4>
-<p> TRUE if the scan header was correctly parsed</p>
-</div>
-<p class="since">Since: 1.6</p>
</div>
<hr>
<div class="refsect2">
@@ -344,44 +231,6 @@
<pre class="programlisting"><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
gst_jpeg_segment_parse_huffman_table (<em class="parameter"><code>const <a class="link" href="gst-plugins-bad-libs-jpegparser.html#GstJpegSegment" title="struct GstJpegSegment"><span class="type">GstJpegSegment</span></a> *segment</code></em>,
<em class="parameter"><code><a class="link" href="gst-plugins-bad-libs-jpegparser.html#GstJpegHuffmanTables" title="struct GstJpegHuffmanTables"><span class="type">GstJpegHuffmanTables</span></a> *huff_tables</code></em>);</pre>
-<p>Parses the JPEG Huffman table structure members from <em class="parameter"><code>segment</code></em>
-.</p>
-<p>The caller must make sure there is enough data for the whole segment
-available.</p>
-<p>Note: <em class="parameter"><code>huf_tables</code></em>
- represents the complete set of possible Huffman
-tables. However, the parser will only write to the Huffman table
-specified by the table destination identifier (Th). While doing so,
-the <em class="parameter"><code>valid</code></em>
- flag of the specified Huffman table will also be set to
-<a href="/usr/share/gtk-doc/html/glibglib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a>;</p>
-<div class="refsect3">
-<a name="gst-jpeg-segment-parse-huffman-table.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="parameter_name"><p>segment</p></td>
-<td class="parameter_description"><p>the JPEG segment</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>huff_tables</p></td>
-<td class="parameter_description"><p> The <a class="link" href="gst-plugins-bad-libs-jpegparser.html#GstJpegHuffmanTables" title="struct GstJpegHuffmanTables"><span class="type">GstJpegHuffmanTables</span></a> structure to fill in. </p></td>
-<td class="parameter_annotations"><span class="annotation">[<acronym title="Parameter for returning results. Default is transfer full."><span class="acronym">out</span></acronym>]</span></td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<div class="refsect3">
-<a name="gst-jpeg-segment-parse-huffman-table.returns"></a><h4>Returns</h4>
-<p> TRUE if the Huffman table was correctly parsed.</p>
-</div>
-<p class="since">Since: 1.6</p>
</div>
<hr>
<div class="refsect2">
@@ -390,44 +239,6 @@
gst_jpeg_segment_parse_quantization_table
(<em class="parameter"><code>const <a class="link" href="gst-plugins-bad-libs-jpegparser.html#GstJpegSegment" title="struct GstJpegSegment"><span class="type">GstJpegSegment</span></a> *segment</code></em>,
<em class="parameter"><code><a href="gst-plugins-bad-libs-jpegparser.html#GstJpegQuantTable"><span class="type">GstJpegQuantTables</span></a> *quant_tables</code></em>);</pre>
-<p>Parses the JPEG quantization table structure members from <em class="parameter"><code>segment</code></em>
-.</p>
-<p>The caller must make sure there is enough data for the whole segment
-available.</p>
-<p>Note: <em class="parameter"><code>quant_tables</code></em>
- represents the complete set of possible
-quantization tables. However, the parser will only write to the
-quantization table specified by the table destination identifier
-(Tq). While doing so, the <em class="parameter"><code>valid</code></em>
- flag of the specified quantization
-table will also be set to <a href="/usr/share/gtk-doc/html/glibglib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a>.</p>
-<div class="refsect3">
-<a name="gst-jpeg-segment-parse-quantization-table.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="parameter_name"><p>segment</p></td>
-<td class="parameter_description"><p>the JPEG segment</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>quant_tables</p></td>
-<td class="parameter_description"><p> The <a href="gst-plugins-bad-libs-jpegparser.html#GstJpegQuantTable"><span class="type">GstJpegQuantTables</span></a> structure to fill in. </p></td>
-<td class="parameter_annotations"><span class="annotation">[<acronym title="Parameter for returning results. Default is transfer full."><span class="acronym">out</span></acronym>]</span></td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<div class="refsect3">
-<a name="gst-jpeg-segment-parse-quantization-table.returns"></a><h4>Returns</h4>
-<p> TRUE if the quantization table was correctly parsed.</p>
-</div>
-<p class="since">Since: 1.6</p>
</div>
<hr>
<div class="refsect2">
@@ -436,35 +247,6 @@
gst_jpeg_segment_parse_restart_interval
(<em class="parameter"><code>const <a class="link" href="gst-plugins-bad-libs-jpegparser.html#GstJpegSegment" title="struct GstJpegSegment"><span class="type">GstJpegSegment</span></a> *segment</code></em>,
<em class="parameter"><code><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint"><span class="type">guint</span></a> *interval</code></em>);</pre>
-<p>The caller must make sure there is enough data for the whole segment
-available.</p>
-<div class="refsect3">
-<a name="gst-jpeg-segment-parse-restart-interval.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="parameter_name"><p>segment</p></td>
-<td class="parameter_description"><p>the JPEG segment</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>interval</p></td>
-<td class="parameter_description"><p> The parsed restart interval value. </p></td>
-<td class="parameter_annotations"><span class="annotation">[<acronym title="Parameter for returning results. Default is transfer full."><span class="acronym">out</span></acronym>]</span></td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<div class="refsect3">
-<a name="gst-jpeg-segment-parse-restart-interval.returns"></a><h4>Returns</h4>
-<p> TRUE if the restart interval value was correctly parsed.</p>
-</div>
-<p class="since">Since: 1.6</p>
</div>
<hr>
<div class="refsect2">
@@ -478,25 +260,6 @@
<a name="gst-jpeg-get-default-huffman-tables"></a><h3>gst_jpeg_get_default_huffman_tables ()</h3>
<pre class="programlisting"><span class="returnvalue">void</span>
gst_jpeg_get_default_huffman_tables (<em class="parameter"><code><a class="link" href="gst-plugins-bad-libs-jpegparser.html#GstJpegHuffmanTables" title="struct GstJpegHuffmanTables"><span class="type">GstJpegHuffmanTables</span></a> *huff_tables</code></em>);</pre>
-<p>Fills in <em class="parameter"><code>huf_tables</code></em>
- with the default AC/DC Huffman tables, as
-specified by the JPEG standard.</p>
-<div class="refsect3">
-<a name="gst-jpeg-get-default-huffman-tables.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody><tr>
-<td class="parameter_name"><p>huf_tables</p></td>
-<td class="parameter_description"><p> The default DC/AC Huffman tables to fill in. </p></td>
-<td class="parameter_annotations"><span class="annotation">[<acronym title="Parameter for returning results. Default is transfer full."><span class="acronym">out</span></acronym>]</span></td>
-</tr></tbody>
-</table></div>
-</div>
-<p class="since">Since: 1.6</p>
</div>
</div>
<div class="refsect1">
@@ -505,24 +268,18 @@
<a name="GST-JPEG-MAX-FRAME-COMPONENTS:CAPS"></a><h3>GST_JPEG_MAX_FRAME_COMPONENTS</h3>
<pre class="programlisting">#define GST_JPEG_MAX_FRAME_COMPONENTS 256
</pre>
-<p>Maximum number of image components in a frame (Nf).</p>
-<p class="since">Since: 1.6</p>
</div>
<hr>
<div class="refsect2">
<a name="GST-JPEG-MAX-SCAN-COMPONENTS:CAPS"></a><h3>GST_JPEG_MAX_SCAN_COMPONENTS</h3>
<pre class="programlisting">#define GST_JPEG_MAX_SCAN_COMPONENTS 4
</pre>
-<p>Maximum number of image components in a scan (Ns).</p>
-<p class="since">Since: 1.6</p>
</div>
<hr>
<div class="refsect2">
<a name="GST-JPEG-MAX-QUANT-ELEMENTS:CAPS"></a><h3>GST_JPEG_MAX_QUANT_ELEMENTS</h3>
<pre class="programlisting">#define GST_JPEG_MAX_QUANT_ELEMENTS 64
</pre>
-<p>Number of elements in the quantization table.</p>
-<p class="since">Since: 1.6</p>
</div>
<hr>
<div class="refsect2">
@@ -563,7 +320,6 @@
<hr>
<div class="refsect2">
<a name="GstJpegEntropyCodingMode"></a><h3>enum GstJpegEntropyCodingMode</h3>
-<p>JPEG entropy coding mode.</p>
<div class="refsect3">
<a name="GstJpegEntropyCodingMode.members"></a><h4>Members</h4>
<div class="informaltable"><table class="informaltable" width="100%" border="0">
@@ -575,27 +331,21 @@
<tbody>
<tr>
<td class="enum_member_name"><p><a name="GST-JPEG-ENTROPY-CODING-HUFFMAN:CAPS"></a>GST_JPEG_ENTROPY_CODING_HUFFMAN</p></td>
-<td class="enum_member_description">
-<p>Huffman coding</p>
-</td>
-<td class="enum_member_annotations"> </td>
+<td> </td>
+<td> </td>
</tr>
<tr>
<td class="enum_member_name"><p><a name="GST-JPEG-ENTROPY-CODING-ARITHMETIC:CAPS"></a>GST_JPEG_ENTROPY_CODING_ARITHMETIC</p></td>
-<td class="enum_member_description">
-<p>arithmetic coding</p>
-</td>
-<td class="enum_member_annotations"> </td>
+<td> </td>
+<td> </td>
</tr>
</tbody>
</table></div>
</div>
-<p class="since">Since: 1.6</p>
</div>
<hr>
<div class="refsect2">
<a name="GstJpegProfile"></a><h3>enum GstJpegProfile</h3>
-<p>JPEG encoding processes.</p>
<div class="refsect3">
<a name="GstJpegProfile.members"></a><h4>Members</h4>
<div class="informaltable"><table class="informaltable" width="100%" border="0">
@@ -607,36 +357,27 @@
<tbody>
<tr>
<td class="enum_member_name"><p><a name="GST-JPEG-PROFILE-BASELINE:CAPS"></a>GST_JPEG_PROFILE_BASELINE</p></td>
-<td class="enum_member_description">
-<p>Baseline DCT</p>
-</td>
-<td class="enum_member_annotations"> </td>
+<td> </td>
+<td> </td>
</tr>
<tr>
<td class="enum_member_name"><p><a name="GST-JPEG-PROFILE-EXTENDED:CAPS"></a>GST_JPEG_PROFILE_EXTENDED</p></td>
-<td class="enum_member_description">
-<p>Extended sequential DCT</p>
-</td>
-<td class="enum_member_annotations"> </td>
+<td> </td>
+<td> </td>
</tr>
<tr>
<td class="enum_member_name"><p><a name="GST-JPEG-PROFILE-PROGRESSIVE:CAPS"></a>GST_JPEG_PROFILE_PROGRESSIVE</p></td>
-<td class="enum_member_description">
-<p>Progressive DCT</p>
-</td>
-<td class="enum_member_annotations"> </td>
+<td> </td>
+<td> </td>
</tr>
<tr>
<td class="enum_member_name"><p><a name="GST-JPEG-PROFILE-LOSSLESS:CAPS"></a>GST_JPEG_PROFILE_LOSSLESS</p></td>
-<td class="enum_member_description">
-<p>Lossless (sequential)</p>
-</td>
-<td class="enum_member_annotations"> </td>
+<td> </td>
+<td> </td>
</tr>
</tbody>
</table></div>
</div>
-<p class="since">Since: 1.6</p>
</div>
<hr>
<div class="refsect2">
@@ -648,45 +389,6 @@
gssize size;
};
</pre>
-<p>A structure that contains the type of a segment, its offset and its size.</p>
-<div class="refsect3">
-<a name="GstJpegSegment.members"></a><h4>Members</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="300px" class="struct_members_name">
-<col class="struct_members_description">
-<col width="200px" class="struct_members_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="struct_member_name"><p><span class="type">GstJpegMarker</span> <em class="structfield"><code><a name="GstJpegSegment.marker"></a>marker</code></em>;</p></td>
-<td class="struct_member_description"><p>The type of the segment that starts at <em class="parameter"><code>offset</code></em>
-</p></td>
-<td class="struct_member_annotations"> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p>const <a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint8"><span class="type">guint8</span></a> *<em class="structfield"><code><a name="GstJpegSegment.data"></a>data</code></em>;</p></td>
-<td class="struct_member_description"><p>the data containing the jpeg segment starting at <em class="parameter"><code>offset</code></em>
-</p></td>
-<td class="struct_member_annotations"> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint"><span class="type">guint</span></a> <em class="structfield"><code><a name="GstJpegSegment.offset"></a>offset</code></em>;</p></td>
-<td class="struct_member_description"><p>The offset to the segment start in bytes. This is the
-exact start of the segment, no marker code included</p></td>
-<td class="struct_member_annotations"> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gssize"><span class="type">gssize</span></a> <em class="structfield"><code><a name="GstJpegSegment.size"></a>size</code></em>;</p></td>
-<td class="struct_member_description"><p>The size of the segment in bytes, or -1 if the end was not
-found. It is the exact size of the segment, without the sync byte and
-marker code but including any length bytes.</p></td>
-<td class="struct_member_annotations"> </td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<p class="since">Since: 1.6</p>
</div>
<hr>
<div class="refsect2">
@@ -699,45 +401,6 @@
GstJpegFrameComponent components[GST_JPEG_MAX_FRAME_COMPONENTS];
};
</pre>
-<p>Frame header.</p>
-<div class="refsect3">
-<a name="GstJpegFrameHdr.members"></a><h4>Members</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="300px" class="struct_members_name">
-<col class="struct_members_description">
-<col width="200px" class="struct_members_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint8"><span class="type">guint8</span></a> <em class="structfield"><code><a name="GstJpegFrameHdr.sample-precision"></a>sample_precision</code></em>;</p></td>
-<td class="struct_member_description"><p>Sample precision (P)</p></td>
-<td class="struct_member_annotations"> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint16"><span class="type">guint16</span></a> <em class="structfield"><code><a name="GstJpegFrameHdr.width"></a>width</code></em>;</p></td>
-<td class="struct_member_description"><p>Number of samples per line (X)</p></td>
-<td class="struct_member_annotations"> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint16"><span class="type">guint16</span></a> <em class="structfield"><code><a name="GstJpegFrameHdr.height"></a>height</code></em>;</p></td>
-<td class="struct_member_description"><p>Number of lines (Y)</p></td>
-<td class="struct_member_annotations"> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint8"><span class="type">guint8</span></a> <em class="structfield"><code><a name="GstJpegFrameHdr.num-components"></a>num_components</code></em>;</p></td>
-<td class="struct_member_description"><p>Number of image components in frame (Nf)</p></td>
-<td class="struct_member_annotations"> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a class="link" href="gst-plugins-bad-libs-jpegparser.html#GstJpegFrameComponent" title="struct GstJpegFrameComponent"><span class="type">GstJpegFrameComponent</span></a> <em class="structfield"><code><a name="GstJpegFrameHdr.components"></a>components</code></em>[GST_JPEG_MAX_FRAME_COMPONENTS];</p></td>
-<td class="struct_member_description"><p>Image components</p></td>
-<td class="struct_member_annotations"> </td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<p class="since">Since: 1.6</p>
</div>
<hr>
<div class="refsect2">
@@ -749,40 +412,6 @@
guint8 quant_table_selector; /* 0 .. 3 */
};
</pre>
-<p>Component-specification parameters.</p>
-<div class="refsect3">
-<a name="GstJpegFrameComponent.members"></a><h4>Members</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="300px" class="struct_members_name">
-<col class="struct_members_description">
-<col width="200px" class="struct_members_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint8"><span class="type">guint8</span></a> <em class="structfield"><code><a name="GstJpegFrameComponent.identifier"></a>identifier</code></em>;</p></td>
-<td class="struct_member_description"><p>Component identifier (Ci)</p></td>
-<td class="struct_member_annotations"> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint8"><span class="type">guint8</span></a> <em class="structfield"><code><a name="GstJpegFrameComponent.horizontal-factor"></a>horizontal_factor</code></em>;</p></td>
-<td class="struct_member_description"><p>Horizontal sampling factor (Hi)</p></td>
-<td class="struct_member_annotations"> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint8"><span class="type">guint8</span></a> <em class="structfield"><code><a name="GstJpegFrameComponent.vertical-factor"></a>vertical_factor</code></em>;</p></td>
-<td class="struct_member_description"><p>Vertical sampling factor (Vi)</p></td>
-<td class="struct_member_annotations"> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint8"><span class="type">guint8</span></a> <em class="structfield"><code><a name="GstJpegFrameComponent.quant-table-selector"></a>quant_table_selector</code></em>;</p></td>
-<td class="struct_member_description"><p>Quantization table destination selector (Tqi)</p></td>
-<td class="struct_member_annotations"> </td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<p class="since">Since: 1.6</p>
</div>
<hr>
<div class="refsect2">
@@ -792,30 +421,6 @@
GstJpegScanComponent components[GST_JPEG_MAX_SCAN_COMPONENTS];
};
</pre>
-<p>Scan header.</p>
-<div class="refsect3">
-<a name="GstJpegScanHdr.members"></a><h4>Members</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="300px" class="struct_members_name">
-<col class="struct_members_description">
-<col width="200px" class="struct_members_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint8"><span class="type">guint8</span></a> <em class="structfield"><code><a name="GstJpegScanHdr.num-components"></a>num_components</code></em>;</p></td>
-<td class="struct_member_description"><p>Number of image components in scan (Ns)</p></td>
-<td class="struct_member_annotations"> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a class="link" href="gst-plugins-bad-libs-jpegparser.html#GstJpegScanComponent" title="struct GstJpegScanComponent"><span class="type">GstJpegScanComponent</span></a> <em class="structfield"><code><a name="GstJpegScanHdr.components"></a>components</code></em>[GST_JPEG_MAX_SCAN_COMPONENTS];</p></td>
-<td class="struct_member_description"><p>Image components</p></td>
-<td class="struct_member_annotations"> </td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<p class="since">Since: 1.6</p>
</div>
<hr>
<div class="refsect2">
@@ -826,35 +431,6 @@
guint8 ac_selector; /* 0 .. 3 */
};
</pre>
-<p>Component-specification parameters.</p>
-<div class="refsect3">
-<a name="GstJpegScanComponent.members"></a><h4>Members</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="300px" class="struct_members_name">
-<col class="struct_members_description">
-<col width="200px" class="struct_members_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint8"><span class="type">guint8</span></a> <em class="structfield"><code><a name="GstJpegScanComponent.component-selector"></a>component_selector</code></em>;</p></td>
-<td class="struct_member_description"><p>Scan component selector (Csj)</p></td>
-<td class="struct_member_annotations"> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint8"><span class="type">guint8</span></a> <em class="structfield"><code><a name="GstJpegScanComponent.dc-selector"></a>dc_selector</code></em>;</p></td>
-<td class="struct_member_description"><p>DC entropy coding table destination selector (Tdj)</p></td>
-<td class="struct_member_annotations"> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint8"><span class="type">guint8</span></a> <em class="structfield"><code><a name="GstJpegScanComponent.ac-selector"></a>ac_selector</code></em>;</p></td>
-<td class="struct_member_description"><p>AC entropy coding table destination selector (Taj)</p></td>
-<td class="struct_member_annotations"> </td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<p class="since">Since: 1.6</p>
</div>
<hr>
<div class="refsect2">
@@ -864,31 +440,6 @@
GstJpegHuffmanTable ac_tables[GST_JPEG_MAX_SCAN_COMPONENTS];
};
</pre>
-<p>Helper data structure that holds all AC/DC Huffman tables used to
-decode an image.</p>
-<div class="refsect3">
-<a name="GstJpegHuffmanTables.members"></a><h4>Members</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="300px" class="struct_members_name">
-<col class="struct_members_description">
-<col width="200px" class="struct_members_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="struct_member_name"><p><a class="link" href="gst-plugins-bad-libs-jpegparser.html#GstJpegHuffmanTable" title="struct GstJpegHuffmanTable"><span class="type">GstJpegHuffmanTable</span></a> <em class="structfield"><code><a name="GstJpegHuffmanTables.dc-tables"></a>dc_tables</code></em>[GST_JPEG_MAX_SCAN_COMPONENTS];</p></td>
-<td class="struct_member_description"><p>DC Huffman tables</p></td>
-<td class="struct_member_annotations"> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a class="link" href="gst-plugins-bad-libs-jpegparser.html#GstJpegHuffmanTable" title="struct GstJpegHuffmanTable"><span class="type">GstJpegHuffmanTable</span></a> <em class="structfield"><code><a name="GstJpegHuffmanTables.ac-tables"></a>ac_tables</code></em>[GST_JPEG_MAX_SCAN_COMPONENTS];</p></td>
-<td class="struct_member_description"><p>AC Huffman tables</p></td>
-<td class="struct_member_annotations"> </td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<p class="since">Since: 1.6</p>
</div>
<hr>
<div class="refsect2">
@@ -899,36 +450,6 @@
gboolean valid;
};
</pre>
-<p>Huffman table.</p>
-<div class="refsect3">
-<a name="GstJpegHuffmanTable.members"></a><h4>Members</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="300px" class="struct_members_name">
-<col class="struct_members_description">
-<col width="200px" class="struct_members_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint8"><span class="type">guint8</span></a> <em class="structfield"><code><a name="GstJpegHuffmanTable.huf-bits"></a>huf_bits</code></em>[16];</p></td>
-<td class="struct_member_description"><p>Number of Huffman codes of length i + 1 (Li)</p></td>
-<td class="struct_member_annotations"> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint8"><span class="type">guint8</span></a> <em class="structfield"><code><a name="GstJpegHuffmanTable.huf-values"></a>huf_values</code></em>[256];</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a> <em class="structfield"><code><a name="GstJpegHuffmanTable.valid"></a>valid</code></em>;</p></td>
-<td class="struct_member_description"><p>If the Huffman table is valid, which means it has already
-been parsed</p></td>
-<td class="struct_member_annotations"> </td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<p class="since">Since: 1.6</p>
</div>
<hr>
<div class="refsect2">
@@ -939,36 +460,6 @@
gboolean valid;
};
</pre>
-<p>Quantization table.</p>
-<div class="refsect3">
-<a name="GstJpegQuantTable.members"></a><h4>Members</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="300px" class="struct_members_name">
-<col class="struct_members_description">
-<col width="200px" class="struct_members_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint8"><span class="type">guint8</span></a> <em class="structfield"><code><a name="GstJpegQuantTable.quant-precision"></a>quant_precision</code></em>;</p></td>
-<td class="struct_member_description"><p>Quantization table element precision (Pq)</p></td>
-<td class="struct_member_annotations"> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint16"><span class="type">guint16</span></a> <em class="structfield"><code><a name="GstJpegQuantTable.quant-table"></a>quant_table</code></em>[GST_JPEG_MAX_QUANT_ELEMENTS];</p></td>
-<td class="struct_member_description"><p>Quantization table elements (Qk)</p></td>
-<td class="struct_member_annotations"> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a> <em class="structfield"><code><a name="GstJpegQuantTable.valid"></a>valid</code></em>;</p></td>
-<td class="struct_member_description"><p>If the quantization table is valid, which means it has
-already been parsed</p></td>
-<td class="struct_member_annotations"> </td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<p class="since">Since: 1.6</p>
</div>
</div>
</div>
diff --git a/docs/libs/html/gst-plugins-bad-libs-mpeg4parser.html b/docs/libs/html/gst-plugins-bad-libs-mpeg4parser.html
index f1f03f6..a8d0536 100644
--- a/docs/libs/html/gst-plugins-bad-libs-mpeg4parser.html
+++ b/docs/libs/html/gst-plugins-bad-libs-mpeg4parser.html
@@ -27,8 +27,7 @@
<div class="refnamediv"><table width="100%"><tr>
<td valign="top">
<h2><span class="refentrytitle"><a name="gst-plugins-bad-libs-mpeg4parser.top_of_page"></a>mpeg4parser</span></h2>
-<p>mpeg4parser — Convenience library for parsing mpeg4 part 2 video
-bitstream.</p>
+<p>mpeg4parser</p>
</td>
<td class="gallery_image" valign="top" align="right"></td>
</tr></table></div>
@@ -197,8 +196,6 @@
</div>
<div class="refsect1">
<a name="gst-plugins-bad-libs-mpeg4parser.description"></a><h2>Description</h2>
-<p>For more details about the structures, you can refer to the
-specifications: ISO-IEC-14496-2_2004_MPEG4_VISUAL.pdf</p>
</div>
<div class="refsect1">
<a name="gst-plugins-bad-libs-mpeg4parser.functions_details"></a><h2>Functions</h2>
@@ -211,58 +208,6 @@
<em class="parameter"><code>const <a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint8"><span class="type">guint8</span></a> *data</code></em>,
<em class="parameter"><code><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint"><span class="type">guint</span></a> offset</code></em>,
<em class="parameter"><code><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gsize"><span class="type">gsize</span></a> size</code></em>);</pre>
-<p>Parses <em class="parameter"><code>data</code></em>
- and fills <em class="parameter"><code>packet</code></em>
- with the information of the next packet
-found.</p>
-<div class="refsect3">
-<a name="gst-mpeg4-parse.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="parameter_name"><p>packet</p></td>
-<td class="parameter_description"><p>The <a class="link" href="gst-plugins-bad-libs-mpeg4parser.html#GstMpeg4Packet" title="struct GstMpeg4Packet"><span class="type">GstMpeg4Packet</span></a> to fill</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>skip_user_data</p></td>
-<td class="parameter_description"><p><a href="/usr/share/gtk-doc/html/glibglib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> to skip user data packet <a href="/usr/share/gtk-doc/html/glibglib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a> otherwize</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>vop</p></td>
-<td class="parameter_description"><p>The last parsed <a class="link" href="gst-plugins-bad-libs-mpeg4parser.html#GstMpeg4VideoObjectPlane" title="struct GstMpeg4VideoObjectPlane"><span class="type">GstMpeg4VideoObjectPlane</span></a> or <a href="/usr/share/gtk-doc/html/glibglib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a> if you do
-not need to detect the resync codes.</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>offset</p></td>
-<td class="parameter_description"><p>offset from which to start the parsing</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>data</p></td>
-<td class="parameter_description"><p>The data to parse</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>size</p></td>
-<td class="parameter_description"><p>The size of the <em class="parameter"><code>data</code></em>
-to parse</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<div class="refsect3">
-<a name="gst-mpeg4-parse.returns"></a><h4>Returns</h4>
-<p> a <a class="link" href="gst-plugins-bad-libs-mpeg4parser.html#GstMpeg4ParseResult" title="enum GstMpeg4ParseResult"><span class="type">GstMpeg4ParseResult</span></a></p>
-</div>
</div>
<hr>
<div class="refsect2">
@@ -273,52 +218,6 @@
<em class="parameter"><code><a class="link" href="gst-plugins-bad-libs-mpeg4parser.html#GstMpeg4VideoObjectLayer" title="struct GstMpeg4VideoObjectLayer"><span class="type">GstMpeg4VideoObjectLayer</span></a> *vol</code></em>,
<em class="parameter"><code>const <a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint8"><span class="type">guint8</span></a> *data</code></em>,
<em class="parameter"><code><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gsize"><span class="type">gsize</span></a> size</code></em>);</pre>
-<p>Parses <em class="parameter"><code>data</code></em>
- containing the video object plane packet, and fills the <em class="parameter"><code>vol</code></em>
-
-structure.</p>
-<div class="refsect3">
-<a name="gst-mpeg4-parse-video-object-plane.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="parameter_name"><p>vop</p></td>
-<td class="parameter_description"><p>The <a class="link" href="gst-plugins-bad-libs-mpeg4parser.html#GstMpeg4VideoObjectPlane" title="struct GstMpeg4VideoObjectPlane"><span class="type">GstMpeg4VideoObjectPlane</span></a> currently being parsed</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>sprite_trajectory</p></td>
-<td class="parameter_description"><p>A <a class="link" href="gst-plugins-bad-libs-mpeg4parser.html#GstMpeg4SpriteTrajectory" title="struct GstMpeg4SpriteTrajectory"><span class="type">GstMpeg4SpriteTrajectory</span></a> to fill or <a href="/usr/share/gtk-doc/html/glibglib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a></p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>vol</p></td>
-<td class="parameter_description"><p>The <a class="link" href="gst-plugins-bad-libs-mpeg4parser.html#GstMpeg4VideoObjectLayer" title="struct GstMpeg4VideoObjectLayer"><span class="type">GstMpeg4VideoObjectLayer</span></a> structure to fill</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>data</p></td>
-<td class="parameter_description"><p>The data to parse</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>size</p></td>
-<td class="parameter_description"><p>The size of the <em class="parameter"><code>data</code></em>
-to parse</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<div class="refsect3">
-<a name="gst-mpeg4-parse-video-object-plane.returns"></a><h4>Returns</h4>
-<p> a <a class="link" href="gst-plugins-bad-libs-mpeg4parser.html#GstMpeg4ParseResult" title="enum GstMpeg4ParseResult"><span class="type">GstMpeg4ParseResult</span></a></p>
-</div>
</div>
<hr>
<div class="refsect2">
@@ -327,42 +226,6 @@
gst_mpeg4_parse_group_of_vop (<em class="parameter"><code><a class="link" href="gst-plugins-bad-libs-mpeg4parser.html#GstMpeg4GroupOfVOP" title="struct GstMpeg4GroupOfVOP"><span class="type">GstMpeg4GroupOfVOP</span></a> *gov</code></em>,
<em class="parameter"><code>const <a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint8"><span class="type">guint8</span></a> *data</code></em>,
<em class="parameter"><code><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gsize"><span class="type">gsize</span></a> size</code></em>);</pre>
-<p>Parses <em class="parameter"><code>data</code></em>
- containing the group of video object plane packet, and fills
-the <em class="parameter"><code>gov</code></em>
- structure.</p>
-<div class="refsect3">
-<a name="gst-mpeg4-parse-group-of-vop.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="parameter_name"><p>gov</p></td>
-<td class="parameter_description"><p>The <a class="link" href="gst-plugins-bad-libs-mpeg4parser.html#GstMpeg4GroupOfVOP" title="struct GstMpeg4GroupOfVOP"><span class="type">GstMpeg4GroupOfVOP</span></a> structure to fill</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>data</p></td>
-<td class="parameter_description"><p>The data to parse</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>size</p></td>
-<td class="parameter_description"><p>The size of the <em class="parameter"><code>data</code></em>
-to parse</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<div class="refsect3">
-<a name="gst-mpeg4-parse-group-of-vop.returns"></a><h4>Returns</h4>
-<p> a <a class="link" href="gst-plugins-bad-libs-mpeg4parser.html#GstMpeg4ParseResult" title="enum GstMpeg4ParseResult"><span class="type">GstMpeg4ParseResult</span></a></p>
-</div>
</div>
<hr>
<div class="refsect2">
@@ -372,47 +235,6 @@
<em class="parameter"><code><a class="link" href="gst-plugins-bad-libs-mpeg4parser.html#GstMpeg4VisualObject" title="struct GstMpeg4VisualObject"><span class="type">GstMpeg4VisualObject</span></a> *vo</code></em>,
<em class="parameter"><code>const <a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint8"><span class="type">guint8</span></a> *data</code></em>,
<em class="parameter"><code><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gsize"><span class="type">gsize</span></a> size</code></em>);</pre>
-<p>Parses <em class="parameter"><code>data</code></em>
- containing the video object layer packet, and fills
-the <em class="parameter"><code>vol</code></em>
- structure.</p>
-<div class="refsect3">
-<a name="gst-mpeg4-parse-video-object-layer.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="parameter_name"><p>vol</p></td>
-<td class="parameter_description"><p>The <a class="link" href="gst-plugins-bad-libs-mpeg4parser.html#GstMpeg4VideoObjectLayer" title="struct GstMpeg4VideoObjectLayer"><span class="type">GstMpeg4VideoObjectLayer</span></a> structure to fill</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>vo</p></td>
-<td class="parameter_description"><p>The <a class="link" href="gst-plugins-bad-libs-mpeg4parser.html#GstMpeg4VisualObject" title="struct GstMpeg4VisualObject"><span class="type">GstMpeg4VisualObject</span></a> currently being parsed or <a href="/usr/share/gtk-doc/html/glibglib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a></p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>data</p></td>
-<td class="parameter_description"><p>The data to parse</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>size</p></td>
-<td class="parameter_description"><p>The size of the <em class="parameter"><code>data</code></em>
-to parse</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<div class="refsect3">
-<a name="gst-mpeg4-parse-video-object-layer.returns"></a><h4>Returns</h4>
-<p> a <a class="link" href="gst-plugins-bad-libs-mpeg4parser.html#GstMpeg4ParseResult" title="enum GstMpeg4ParseResult"><span class="type">GstMpeg4ParseResult</span></a></p>
-</div>
</div>
<hr>
<div class="refsect2">
@@ -422,48 +244,6 @@
<em class="parameter"><code><a class="link" href="gst-plugins-bad-libs-mpeg4parser.html#GstMpeg4VideoSignalType" title="struct GstMpeg4VideoSignalType"><span class="type">GstMpeg4VideoSignalType</span></a> *signal_type</code></em>,
<em class="parameter"><code>const <a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint8"><span class="type">guint8</span></a> *data</code></em>,
<em class="parameter"><code><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gsize"><span class="type">gsize</span></a> size</code></em>);</pre>
-<p>Parses <em class="parameter"><code>data</code></em>
- containing the visual object packet, and fills
-the <em class="parameter"><code>vo</code></em>
- structure.</p>
-<div class="refsect3">
-<a name="gst-mpeg4-parse-visual-object.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="parameter_name"><p>vo</p></td>
-<td class="parameter_description"><p>The <a class="link" href="gst-plugins-bad-libs-mpeg4parser.html#GstMpeg4VisualObject" title="struct GstMpeg4VisualObject"><span class="type">GstMpeg4VisualObject</span></a> structure to fill</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>signal_type</p></td>
-<td class="parameter_description"><p>The <a class="link" href="gst-plugins-bad-libs-mpeg4parser.html#GstMpeg4VideoSignalType" title="struct GstMpeg4VideoSignalType"><span class="type">GstMpeg4VideoSignalType</span></a> to fill or <a href="/usr/share/gtk-doc/html/glibglib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a></p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>data</p></td>
-<td class="parameter_description"><p>The data to parse, should contain the vo_start_code
-but not the start code prefix</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>size</p></td>
-<td class="parameter_description"><p>The size of the <em class="parameter"><code>data</code></em>
-to parse</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<div class="refsect3">
-<a name="gst-mpeg4-parse-visual-object.returns"></a><h4>Returns</h4>
-<p> a <a class="link" href="gst-plugins-bad-libs-mpeg4parser.html#GstMpeg4ParseResult" title="enum GstMpeg4ParseResult"><span class="type">GstMpeg4ParseResult</span></a></p>
-</div>
</div>
<hr>
<div class="refsect2">
@@ -473,43 +253,6 @@
(<em class="parameter"><code><a class="link" href="gst-plugins-bad-libs-mpeg4parser.html#GstMpeg4VisualObjectSequence" title="struct GstMpeg4VisualObjectSequence"><span class="type">GstMpeg4VisualObjectSequence</span></a> *vos</code></em>,
<em class="parameter"><code>const <a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint8"><span class="type">guint8</span></a> *data</code></em>,
<em class="parameter"><code><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gsize"><span class="type">gsize</span></a> size</code></em>);</pre>
-<p>Parses <em class="parameter"><code>data</code></em>
- containing the visual object sequence packet, and fills
-the <em class="parameter"><code>vos</code></em>
- structure.</p>
-<div class="refsect3">
-<a name="gst-mpeg4-parse-visual-object-sequence.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="parameter_name"><p>vos</p></td>
-<td class="parameter_description"><p>The <a class="link" href="gst-plugins-bad-libs-mpeg4parser.html#GstMpeg4VisualObjectSequence" title="struct GstMpeg4VisualObjectSequence"><span class="type">GstMpeg4VisualObjectSequence</span></a> structure to fill</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>data</p></td>
-<td class="parameter_description"><p>The data to parse, should contain the visual_object_sequence_start_code
-but not the start code prefix</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>size</p></td>
-<td class="parameter_description"><p>The size of the <em class="parameter"><code>data</code></em>
-to parse</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<div class="refsect3">
-<a name="gst-mpeg4-parse-visual-object-sequence.returns"></a><h4>Returns</h4>
-<p> a <a class="link" href="gst-plugins-bad-libs-mpeg4parser.html#GstMpeg4ParseResult" title="enum GstMpeg4ParseResult"><span class="type">GstMpeg4ParseResult</span></a></p>
-</div>
</div>
<hr>
<div class="refsect2">
@@ -521,63 +264,12 @@
<em class="parameter"><code><a class="link" href="gst-plugins-bad-libs-mpeg4parser.html#GstMpeg4SpriteTrajectory" title="struct GstMpeg4SpriteTrajectory"><span class="type">GstMpeg4SpriteTrajectory</span></a> *sprite_trajectory</code></em>,
<em class="parameter"><code>const <a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint8"><span class="type">guint8</span></a> *data</code></em>,
<em class="parameter"><code><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gsize"><span class="type">gsize</span></a> size</code></em>);</pre>
-<p>Parsers <em class="parameter"><code>data</code></em>
- containing the video packet header
-and fills the <em class="parameter"><code>videopackethdr</code></em>
- structure</p>
-<div class="refsect3">
-<a name="gst-mpeg4-parse-video-packet-header.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="parameter_name"><p>videopackethdr</p></td>
-<td class="parameter_description"><p>The <a class="link" href="gst-plugins-bad-libs-mpeg4parser.html#GstMpeg4VideoPacketHdr" title="struct GstMpeg4VideoPacketHdr"><span class="type">GstMpeg4VideoPacketHdr</span></a> structure to fill</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>vol</p></td>
-<td class="parameter_description"><p>The last parsed <a class="link" href="gst-plugins-bad-libs-mpeg4parser.html#GstMpeg4VideoObjectLayer" title="struct GstMpeg4VideoObjectLayer"><span class="type">GstMpeg4VideoObjectLayer</span></a>, will be updated
-with the informations found during the parsing</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>vop</p></td>
-<td class="parameter_description"><p>The last parsed <a class="link" href="gst-plugins-bad-libs-mpeg4parser.html#GstMpeg4VideoObjectPlane" title="struct GstMpeg4VideoObjectPlane"><span class="type">GstMpeg4VideoObjectPlane</span></a>, will be updated
-with the informations found during the parsing</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>sprite_trajectory</p></td>
-<td class="parameter_description"><p>A <a class="link" href="gst-plugins-bad-libs-mpeg4parser.html#GstMpeg4SpriteTrajectory" title="struct GstMpeg4SpriteTrajectory"><span class="type">GstMpeg4SpriteTrajectory</span></a> to fill or <a href="/usr/share/gtk-doc/html/glibglib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a>
-with the informations found during the parsing</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>data</p></td>
-<td class="parameter_description"><p>The data to parse, should be set after the resync marker.</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>size</p></td>
-<td class="parameter_description"><p>The size of the data to parse</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-</tbody>
-</table></div>
-</div>
</div>
</div>
<div class="refsect1">
<a name="gst-plugins-bad-libs-mpeg4parser.other_details"></a><h2>Types and Values</h2>
<div class="refsect2">
<a name="GstMpeg4StartCode"></a><h3>enum GstMpeg4StartCode</h3>
-<p>Defines the different startcodes present in the bitstream as
-defined in: Table 6-3 — Start code values</p>
<div class="refsect3">
<a name="GstMpeg4StartCode.members"></a><h4>Members</h4>
<div class="informaltable"><table class="informaltable" width="100%" border="0">
@@ -714,8 +406,6 @@
<hr>
<div class="refsect2">
<a name="GstMpeg4VisualObjectType"></a><h3>enum GstMpeg4VisualObjectType</h3>
-<p>Defines the different visual object types as
-defined in: Table 6-5 -- Meaning of visual object type</p>
<div class="refsect3">
<a name="GstMpeg4VisualObjectType.members"></a><h4>Members</h4>
<div class="informaltable"><table class="informaltable" width="100%" border="0">
@@ -757,8 +447,6 @@
<hr>
<div class="refsect2">
<a name="GstMpeg4AspectRatioInfo"></a><h3>enum GstMpeg4AspectRatioInfo</h3>
-<p>Defines the different pixel aspect ratios as
-defined in: Table 6-12 -- Meaning of pixel aspect ratio</p>
<div class="refsect3">
<a name="GstMpeg4AspectRatioInfo.members"></a><h4>Members</h4>
<div class="informaltable"><table class="informaltable" width="100%" border="0">
@@ -770,45 +458,33 @@
<tbody>
<tr>
<td class="enum_member_name"><p><a name="GST-MPEG4-SQUARE:CAPS"></a>GST_MPEG4_SQUARE</p></td>
-<td class="enum_member_description">
-<p>1:1 square</p>
-</td>
-<td class="enum_member_annotations"> </td>
+<td> </td>
+<td> </td>
</tr>
<tr>
<td class="enum_member_name"><p><a name="GST-MPEG4-625-TYPE-4-3:CAPS"></a>GST_MPEG4_625_TYPE_4_3</p></td>
-<td class="enum_member_description">
-<p>12:11 (625-type for 4:3 picture)</p>
-</td>
-<td class="enum_member_annotations"> </td>
+<td> </td>
+<td> </td>
</tr>
<tr>
<td class="enum_member_name"><p><a name="GST-MPEG4-525-TYPE-4-3:CAPS"></a>GST_MPEG4_525_TYPE_4_3</p></td>
-<td class="enum_member_description">
-<p>10:11 (525-type for 4:3 picture)</p>
-</td>
-<td class="enum_member_annotations"> </td>
+<td> </td>
+<td> </td>
</tr>
<tr>
<td class="enum_member_name"><p><a name="GST-MPEG4-625-TYPE-16-9:CAPS"></a>GST_MPEG4_625_TYPE_16_9</p></td>
-<td class="enum_member_description">
-<p>16:11 (625-type stretched for 16:9 picture)</p>
-</td>
-<td class="enum_member_annotations"> </td>
+<td> </td>
+<td> </td>
</tr>
<tr>
<td class="enum_member_name"><p><a name="GST-MPEG4-525-TYPE-16-9:CAPS"></a>GST_MPEG4_525_TYPE_16_9</p></td>
-<td class="enum_member_description">
-<p>40:33 (525-type stretched for 16:9 picture)</p>
-</td>
-<td class="enum_member_annotations"> </td>
+<td> </td>
+<td> </td>
</tr>
<tr>
<td class="enum_member_name"><p><a name="GST-MPEG4-EXTENDED-PAR:CAPS"></a>GST_MPEG4_EXTENDED_PAR</p></td>
-<td class="enum_member_description">
-<p>Extended par</p>
-</td>
-<td class="enum_member_annotations"> </td>
+<td> </td>
+<td> </td>
</tr>
</tbody>
</table></div>
@@ -817,7 +493,6 @@
<hr>
<div class="refsect2">
<a name="GstMpeg4ParseResult"></a><h3>enum GstMpeg4ParseResult</h3>
-<p>Result type of any parsing function.</p>
<div class="refsect3">
<a name="GstMpeg4ParseResult.members"></a><h4>Members</h4>
<div class="informaltable"><table class="informaltable" width="100%" border="0">
@@ -829,31 +504,23 @@
<tbody>
<tr>
<td class="enum_member_name"><p><a name="GST-MPEG4-PARSER-OK:CAPS"></a>GST_MPEG4_PARSER_OK</p></td>
-<td class="enum_member_description">
-<p>The parsing went well</p>
-</td>
-<td class="enum_member_annotations"> </td>
+<td> </td>
+<td> </td>
</tr>
<tr>
<td class="enum_member_name"><p><a name="GST-MPEG4-PARSER-BROKEN-DATA:CAPS"></a>GST_MPEG4_PARSER_BROKEN_DATA</p></td>
-<td class="enum_member_description">
-<p>The bitstream was broken</p>
-</td>
-<td class="enum_member_annotations"> </td>
+<td> </td>
+<td> </td>
</tr>
<tr>
<td class="enum_member_name"><p><a name="GST-MPEG4-PARSER-NO-PACKET:CAPS"></a>GST_MPEG4_PARSER_NO_PACKET</p></td>
-<td class="enum_member_description">
-<p>There was no packet in the buffer</p>
-</td>
-<td class="enum_member_annotations"> </td>
+<td> </td>
+<td> </td>
</tr>
<tr>
<td class="enum_member_name"><p><a name="GST-MPEG4-PARSER-NO-PACKET-END:CAPS"></a>GST_MPEG4_PARSER_NO_PACKET_END</p></td>
-<td class="enum_member_description">
-<p>There was no packet end in the buffer</p>
-</td>
-<td class="enum_member_annotations"> </td>
+<td> </td>
+<td> </td>
</tr>
<tr>
<td class="enum_member_name"><p><a name="GST-MPEG4-PARSER-ERROR:CAPS"></a>GST_MPEG4_PARSER_ERROR</p></td>
@@ -867,8 +534,6 @@
<hr>
<div class="refsect2">
<a name="GstMpeg4VideoObjectCodingType"></a><h3>enum GstMpeg4VideoObjectCodingType</h3>
-<p>The vop coding types as defined in:
-Table 6-20 -- Meaning of vop_coding_type</p>
<div class="refsect3">
<a name="GstMpeg4VideoObjectCodingType.members"></a><h4>Members</h4>
<div class="informaltable"><table class="informaltable" width="100%" border="0">
@@ -880,31 +545,23 @@
<tbody>
<tr>
<td class="enum_member_name"><p><a name="GST-MPEG4-I-VOP:CAPS"></a>GST_MPEG4_I_VOP</p></td>
-<td class="enum_member_description">
-<p>intra-coded (I)</p>
-</td>
-<td class="enum_member_annotations"> </td>
+<td> </td>
+<td> </td>
</tr>
<tr>
<td class="enum_member_name"><p><a name="GST-MPEG4-P-VOP:CAPS"></a>GST_MPEG4_P_VOP</p></td>
-<td class="enum_member_description">
-<p>predictive-coded (P)</p>
-</td>
-<td class="enum_member_annotations"> </td>
+<td> </td>
+<td> </td>
</tr>
<tr>
<td class="enum_member_name"><p><a name="GST-MPEG4-B-VOP:CAPS"></a>GST_MPEG4_B_VOP</p></td>
-<td class="enum_member_description">
-<p>bidirectionally-predictive-coded (B)</p>
-</td>
-<td class="enum_member_annotations"> </td>
+<td> </td>
+<td> </td>
</tr>
<tr>
<td class="enum_member_name"><p><a name="GST-MPEG4-S-VOP:CAPS"></a>GST_MPEG4_S_VOP</p></td>
-<td class="enum_member_description">
-<p>sprite (S)</p>
-</td>
-<td class="enum_member_annotations"> </td>
+<td> </td>
+<td> </td>
</tr>
</tbody>
</table></div>
@@ -913,8 +570,6 @@
<hr>
<div class="refsect2">
<a name="GstMpeg4ChromaFormat"></a><h3>enum GstMpeg4ChromaFormat</h3>
-<p>The chroma format in use as
-defined in: Table 6-13 -- Meaning of chroma_format</p>
<div class="refsect3">
<a name="GstMpeg4ChromaFormat.members"></a><h4>Members</h4>
<div class="informaltable"><table class="informaltable" width="100%" border="0">
@@ -934,8 +589,6 @@
<hr>
<div class="refsect2">
<a name="GstMpeg4VideoObjectLayerShape"></a><h3>enum GstMpeg4VideoObjectLayerShape</h3>
-<p>The different video object layer shapes as defined in:
-Table 6-16 — Video Object Layer shape type</p>
<div class="refsect3">
<a name="GstMpeg4VideoObjectLayerShape.members"></a><h4>Members</h4>
<div class="informaltable"><table class="informaltable" width="100%" border="0">
@@ -972,9 +625,6 @@
<hr>
<div class="refsect2">
<a name="GstMpeg4SpriteEnable"></a><h3>enum GstMpeg4SpriteEnable</h3>
-<p>Indicates the usage of static sprite coding
-or global motion compensation (GMC) as defined in:
-Table V2 - 2 -- Meaning of sprite_enable codewords</p>
<div class="refsect3">
<a name="GstMpeg4SpriteEnable.members"></a><h4>Members</h4>
<div class="informaltable"><table class="informaltable" width="100%" border="0">
@@ -1006,10 +656,6 @@
<hr>
<div class="refsect2">
<a name="GstMpeg4Profile"></a><h3>enum GstMpeg4Profile</h3>
-<p>Different defined profiles as defined in:
-9- Profiles and levels</p>
-<p>It is computed using:
-Table G.1 — FLC table for profile_and_level_indication</p>
<div class="refsect3">
<a name="GstMpeg4Profile.members"></a><h4>Members</h4>
<div class="informaltable"><table class="informaltable" width="100%" border="0">
@@ -1126,10 +772,6 @@
<hr>
<div class="refsect2">
<a name="GstMpeg4Level"></a><h3>enum GstMpeg4Level</h3>
-<p>Different levels as defined in:
-9- Profiles and levels</p>
-<p>It is computed using:
-Table G.1 — FLC table for profile_and_level_indication</p>
<div class="refsect3">
<a name="GstMpeg4Level.members"></a><h4>Members</h4>
<div class="informaltable"><table class="informaltable" width="100%" border="0">
@@ -1195,8 +837,6 @@
GstMpeg4Profile profile;
};
</pre>
-<p>The visual object sequence structure as defined in:
-6.2.2 Visual Object Sequence and Visual Object</p>
</div>
<hr>
<div class="refsect2">
@@ -1210,8 +850,6 @@
GstMpeg4VisualObjectType type;
};
</pre>
-<p>The visual object structure as defined in:
-6.2.2 Visual Object Sequence and Visual Object</p>
</div>
<hr>
<div class="refsect2">
@@ -1227,8 +865,6 @@
guint8 matrix_coefficients;
};
</pre>
-<p>The video signal type structure as defined in:
-6.2.2 Visual Object Sequence and Visual Object.</p>
</div>
<hr>
<div class="refsect2">
@@ -1263,8 +899,6 @@
guint size;
};
</pre>
-<p>The video plane short header structure as defined in:
-6.2.5.2 Video Plane with Short Header</p>
</div>
<hr>
<div class="refsect2">
@@ -1362,8 +996,6 @@
GstMpeg4VideoPlaneShortHdr short_hdr;
};
</pre>
-<p>The video object layer structure as defined in:
-6.2.3 Video Object Layer</p>
</div>
<hr>
<div class="refsect2">
@@ -1373,9 +1005,6 @@
guint16 sprite_ref_points[63]; /* Defined as "dv" in 6.2.5.4 */
};
</pre>
-<p>The sprite trajectory structure as defined in:
-7.8.4 Sprite reference point decoding and
-6.2.5.4 Sprite coding</p>
</div>
<hr>
<div class="refsect2">
@@ -1389,8 +1018,6 @@
guint8 broken_link;
};
</pre>
-<p>The group of video object plane structure as defined in:
-6.2.4 Group of Video Object Plane</p>
</div>
<hr>
<div class="refsect2">
@@ -1444,8 +1071,6 @@
guint size;
};
</pre>
-<p>The Video object plane structure as defined in:
-6.2.5 Video Object Plane and Video Plane with Short Header</p>
</div>
<hr>
<div class="refsect2">
@@ -1459,47 +1084,6 @@
GstMpeg4StartCode type;
};
</pre>
-<p>A structure that contains the type of a packet, its offset and its size</p>
-<div class="refsect3">
-<a name="GstMpeg4Packet.members"></a><h4>Members</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="300px" class="struct_members_name">
-<col class="struct_members_description">
-<col width="200px" class="struct_members_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="struct_member_name"><p>const <a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint8"><span class="type">guint8</span></a> *<em class="structfield"><code><a name="GstMpeg4Packet.data"></a>data</code></em>;</p></td>
-<td class="struct_member_description"><p>the data containing packet starting at <em class="parameter"><code>offset</code></em>
-</p></td>
-<td class="struct_member_annotations"> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint"><span class="type">guint</span></a> <em class="structfield"><code><a name="GstMpeg4Packet.offset"></a>offset</code></em>;</p></td>
-<td class="struct_member_description"><p>offset of the start of the packet (without the 3 bytes startcode), but
-including the <a class="link" href="gst-plugins-bad-libs-mpeg4parser.html#GstMpeg4StartCode" title="enum GstMpeg4StartCode"><span class="type">GstMpeg4StartCode</span></a> byte.</p></td>
-<td class="struct_member_annotations"> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gsize"><span class="type">gsize</span></a> <em class="structfield"><code><a name="GstMpeg4Packet.size"></a>size</code></em>;</p></td>
-<td class="struct_member_description"><p>The size in bytes of the packet or <a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#G-MAXUINT:CAPS"><code class="literal">G_MAXUINT</code></a> if the end wasn't found.</p></td>
-<td class="struct_member_annotations"> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint"><span class="type">guint</span></a> <em class="structfield"><code><a name="GstMpeg4Packet.marker-size"></a>marker_size</code></em>;</p></td>
-<td class="struct_member_description"><p>The size in bit of the resync marker.</p></td>
-<td class="struct_member_annotations"> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a class="link" href="gst-plugins-bad-libs-mpeg4parser.html#GstMpeg4StartCode" title="enum GstMpeg4StartCode"><span class="type">GstMpeg4StartCode</span></a> <em class="structfield"><code><a name="GstMpeg4Packet.type"></a>type</code></em>;</p></td>
-<td class="struct_member_description"><p>the type of the packet that start at <em class="parameter"><code>offset</code></em>
-</p></td>
-<td class="struct_member_annotations"> </td>
-</tr>
-</tbody>
-</table></div>
-</div>
</div>
<hr>
<div class="refsect2">
@@ -1511,40 +1095,6 @@
guint size;
};
</pre>
-<p>The video packet header structure as defined in:
-6.2.5.2 Video Plane with Short Header</p>
-<div class="refsect3">
-<a name="GstMpeg4VideoPacketHdr.members"></a><h4>Members</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="300px" class="struct_members_name">
-<col class="struct_members_description">
-<col width="200px" class="struct_members_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint8"><span class="type">guint8</span></a> <em class="structfield"><code><a name="GstMpeg4VideoPacketHdr.header-extension-code"></a>header_extension_code</code></em>;</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint16"><span class="type">guint16</span></a> <em class="structfield"><code><a name="GstMpeg4VideoPacketHdr.macroblock-number"></a>macroblock_number</code></em>;</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint16"><span class="type">guint16</span></a> <em class="structfield"><code><a name="GstMpeg4VideoPacketHdr.quant-scale"></a>quant_scale</code></em>;</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint"><span class="type">guint</span></a> <em class="structfield"><code><a name="GstMpeg4VideoPacketHdr.size"></a>size</code></em>;</p></td>
-<td class="struct_member_description"><p>Size of the header in bit.</p></td>
-<td class="struct_member_annotations"> </td>
-</tr>
-</tbody>
-</table></div>
-</div>
</div>
</div>
</div>
diff --git a/docs/libs/html/gst-plugins-bad-libs-mpegvideoparser.html b/docs/libs/html/gst-plugins-bad-libs-mpegvideoparser.html
index 6e731a1..84f946b 100644
--- a/docs/libs/html/gst-plugins-bad-libs-mpegvideoparser.html
+++ b/docs/libs/html/gst-plugins-bad-libs-mpegvideoparser.html
@@ -27,8 +27,7 @@
<div class="refnamediv"><table width="100%"><tr>
<td valign="top">
<h2><span class="refentrytitle"><a name="gst-plugins-bad-libs-mpegvideoparser.top_of_page"></a>mpegvideoparser</span></h2>
-<p>mpegvideoparser — Convenience library for mpeg1 and 2 video
-bitstream parsing.</p>
+<p>mpegvideoparser</p>
</td>
<td class="gallery_image" valign="top" align="right"></td>
</tr></table></div>
@@ -197,11 +196,6 @@
</div>
<div class="refsect1">
<a name="gst-plugins-bad-libs-mpegvideoparser.description"></a><h2>Description</h2>
-<div class="refsect2">
-<a name="id-1.2.4.5.6.2"></a><p>
-Provides useful functions for mpeg videos bitstream parsing.
-</p>
-</div>
</div>
<div class="refsect1">
<a name="gst-plugins-bad-libs-mpegvideoparser.functions_details"></a><h2>Functions</h2>
@@ -212,49 +206,6 @@
<em class="parameter"><code>const <a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint8"><span class="type">guint8</span></a> *data</code></em>,
<em class="parameter"><code><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gsize"><span class="type">gsize</span></a> size</code></em>,
<em class="parameter"><code><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint"><span class="type">guint</span></a> offset</code></em>);</pre>
-<p>Parses the MPEG 1/2 video bitstream contained in <em class="parameter"><code>data</code></em>
-, and returns the
-offset, and if known also the size, in <em class="parameter"><code>packet</code></em>
-. This function will scan
-the data to find the next packet if needed.</p>
-<div class="refsect3">
-<a name="gst-mpeg-video-parse.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="parameter_name"><p>packet</p></td>
-<td class="parameter_description"><p>a <span class="type">GstMpegVideoPacket</span> to fill with the data and offset of the
-next packet found</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>data</p></td>
-<td class="parameter_description"><p>The data to parse</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>size</p></td>
-<td class="parameter_description"><p>The size of <em class="parameter"><code>data</code></em>
-</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>offset</p></td>
-<td class="parameter_description"><p>The offset from which to start parsing</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<div class="refsect3">
-<a name="gst-mpeg-video-parse.returns"></a><h4>Returns</h4>
-<p> TRUE if a packet start code was found, otherwise FALSE.</p>
-</div>
</div>
<hr>
<div class="refsect2">
@@ -264,51 +215,7 @@
<em class="parameter"><code>const <a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint8"><span class="type">guint8</span></a> *data</code></em>,
<em class="parameter"><code><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gsize"><span class="type">gsize</span></a> size</code></em>,
<em class="parameter"><code><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint"><span class="type">guint</span></a> offset</code></em>);</pre>
-<div class="warning">
-<p><code class="literal">gst_mpeg_video_parse_sequence_header</code> is deprecated and should not be used in newly-written code.</p>
-<p>Use <code class="function">gst_mpeg_video_packet_parse_sequence_header()</code> instead.</p>
-</div>
-<p>Parses the <em class="parameter"><code>seqhdr</code></em>
- Mpeg Video Sequence Header structure members from <em class="parameter"><code>data</code></em>
-</p>
-<div class="refsect3">
-<a name="gst-mpeg-video-parse-sequence-header.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="parameter_name"><p>seqhdr</p></td>
-<td class="parameter_description"><p> The <a class="link" href="gst-plugins-bad-libs-mpegvideoparser.html#GstMpegVideoSequenceHdr" title="struct GstMpegVideoSequenceHdr"><span class="type">GstMpegVideoSequenceHdr</span></a> structure to fill. </p></td>
-<td class="parameter_annotations"><span class="annotation">[<acronym title="Parameter for returning results. Default is transfer full."><span class="acronym">out</span></acronym>]</span></td>
-</tr>
-<tr>
-<td class="parameter_name"><p>data</p></td>
-<td class="parameter_description"><p>The data from which to parse the sequence header</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>size</p></td>
-<td class="parameter_description"><p>The size of <em class="parameter"><code>data</code></em>
-</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>offset</p></td>
-<td class="parameter_description"><p>The offset in byte from which to start parsing <em class="parameter"><code>data</code></em>
-</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<div class="refsect3">
-<a name="gst-mpeg-video-parse-sequence-header.returns"></a><h4>Returns</h4>
-<p> <a href="/usr/share/gtk-doc/html/glibglib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if the seqhdr could be parsed correctly, <a href="/usr/share/gtk-doc/html/glibglib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a> otherwize.</p>
-</div>
+<div class="warning"><p><code class="literal">gst_mpeg_video_parse_sequence_header</code> is deprecated and should not be used in newly-written code.</p></div>
</div>
<hr>
<div class="refsect2">
@@ -318,51 +225,7 @@
<em class="parameter"><code>const <a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint8"><span class="type">guint8</span></a> *data</code></em>,
<em class="parameter"><code><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gsize"><span class="type">gsize</span></a> size</code></em>,
<em class="parameter"><code><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint"><span class="type">guint</span></a> offset</code></em>);</pre>
-<div class="warning">
-<p><code class="literal">gst_mpeg_video_parse_picture_header</code> is deprecated and should not be used in newly-written code.</p>
-<p>Use <code class="function">gst_mpeg_video_packet_parse_picture_header()</code> instead.</p>
-</div>
-<p>Parsers the <em class="parameter"><code>hdr</code></em>
- Mpeg Video Picture Header structure members from <em class="parameter"><code>data</code></em>
-</p>
-<div class="refsect3">
-<a name="gst-mpeg-video-parse-picture-header.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="parameter_name"><p>hdr</p></td>
-<td class="parameter_description"><p> The <a class="link" href="gst-plugins-bad-libs-mpegvideoparser.html#GstMpegVideoPictureHdr" title="struct GstMpegVideoPictureHdr"><span class="type">GstMpegVideoPictureHdr</span></a> structure to fill. </p></td>
-<td class="parameter_annotations"><span class="annotation">[<acronym title="Parameter for returning results. Default is transfer full."><span class="acronym">out</span></acronym>]</span></td>
-</tr>
-<tr>
-<td class="parameter_name"><p>data</p></td>
-<td class="parameter_description"><p>The data from which to parse the picture header</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>size</p></td>
-<td class="parameter_description"><p>The size of <em class="parameter"><code>data</code></em>
-</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>offset</p></td>
-<td class="parameter_description"><p>The offset in byte from which to start the parsing</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<div class="refsect3">
-<a name="gst-mpeg-video-parse-picture-header.returns"></a><h4>Returns</h4>
-<p> <a href="/usr/share/gtk-doc/html/glibglib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if the picture sequence could be parsed correctly, <a href="/usr/share/gtk-doc/html/glibglib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a>
-otherwize.</p>
-</div>
+<div class="warning"><p><code class="literal">gst_mpeg_video_parse_picture_header</code> is deprecated and should not be used in newly-written code.</p></div>
</div>
<hr>
<div class="refsect2">
@@ -373,51 +236,7 @@
<em class="parameter"><code>const <a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint8"><span class="type">guint8</span></a> *data</code></em>,
<em class="parameter"><code><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gsize"><span class="type">gsize</span></a> size</code></em>,
<em class="parameter"><code><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint"><span class="type">guint</span></a> offset</code></em>);</pre>
-<div class="warning">
-<p><code class="literal">gst_mpeg_video_parse_picture_extension</code> is deprecated and should not be used in newly-written code.</p>
-<p>Use <code class="function">gst_mpeg_video_packet_parse_picture_extension()</code> instead.</p>
-</div>
-<p>Parse the <em class="parameter"><code>ext</code></em>
- Mpeg Video Picture Extension structure members from <em class="parameter"><code>data</code></em>
-</p>
-<div class="refsect3">
-<a name="gst-mpeg-video-parse-picture-extension.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="parameter_name"><p>ext</p></td>
-<td class="parameter_description"><p> The <a class="link" href="gst-plugins-bad-libs-mpegvideoparser.html#GstMpegVideoPictureExt" title="struct GstMpegVideoPictureExt"><span class="type">GstMpegVideoPictureExt</span></a> structure to fill. </p></td>
-<td class="parameter_annotations"><span class="annotation">[<acronym title="Parameter for returning results. Default is transfer full."><span class="acronym">out</span></acronym>]</span></td>
-</tr>
-<tr>
-<td class="parameter_name"><p>data</p></td>
-<td class="parameter_description"><p>The data from which to parse the picture extension</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>size</p></td>
-<td class="parameter_description"><p>The size of <em class="parameter"><code>data</code></em>
-</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>offset</p></td>
-<td class="parameter_description"><p>The offset in byte from which to start the parsing</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<div class="refsect3">
-<a name="gst-mpeg-video-parse-picture-extension.returns"></a><h4>Returns</h4>
-<p> <a href="/usr/share/gtk-doc/html/glibglib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if the picture extension could be parsed correctly,
-<a href="/usr/share/gtk-doc/html/glibglib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a> otherwize.</p>
-</div>
+<div class="warning"><p><code class="literal">gst_mpeg_video_parse_picture_extension</code> is deprecated and should not be used in newly-written code.</p></div>
</div>
<hr>
<div class="refsect2">
@@ -427,50 +246,7 @@
<em class="parameter"><code>const <a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint8"><span class="type">guint8</span></a> *data</code></em>,
<em class="parameter"><code><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gsize"><span class="type">gsize</span></a> size</code></em>,
<em class="parameter"><code><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint"><span class="type">guint</span></a> offset</code></em>);</pre>
-<div class="warning">
-<p><code class="literal">gst_mpeg_video_parse_gop</code> is deprecated and should not be used in newly-written code.</p>
-<p>Use <code class="function">gst_mpeg_video_packet_parse_gop()</code> instead.</p>
-</div>
-<p>Parses the <em class="parameter"><code>gop</code></em>
- Mpeg Video Group of Picture structure members from <em class="parameter"><code>data</code></em>
-</p>
-<div class="refsect3">
-<a name="gst-mpeg-video-parse-gop.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="parameter_name"><p>gop</p></td>
-<td class="parameter_description"><p> The <a class="link" href="gst-plugins-bad-libs-mpegvideoparser.html#GstMpegVideoGop" title="struct GstMpegVideoGop"><span class="type">GstMpegVideoGop</span></a> structure to fill. </p></td>
-<td class="parameter_annotations"><span class="annotation">[<acronym title="Parameter for returning results. Default is transfer full."><span class="acronym">out</span></acronym>]</span></td>
-</tr>
-<tr>
-<td class="parameter_name"><p>data</p></td>
-<td class="parameter_description"><p>The data from which to parse the gop</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>size</p></td>
-<td class="parameter_description"><p>The size of <em class="parameter"><code>data</code></em>
-</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>offset</p></td>
-<td class="parameter_description"><p>The offset in byte from which to start the parsing</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<div class="refsect3">
-<a name="gst-mpeg-video-parse-gop.returns"></a><h4>Returns</h4>
-<p> <a href="/usr/share/gtk-doc/html/glibglib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if the gop could be parsed correctly, <a href="/usr/share/gtk-doc/html/glibglib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a> otherwize.</p>
-</div>
+<div class="warning"><p><code class="literal">gst_mpeg_video_parse_gop</code> is deprecated and should not be used in newly-written code.</p></div>
</div>
<hr>
<div class="refsect2">
@@ -481,51 +257,7 @@
<em class="parameter"><code>const <a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint8"><span class="type">guint8</span></a> *data</code></em>,
<em class="parameter"><code><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gsize"><span class="type">gsize</span></a> size</code></em>,
<em class="parameter"><code><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint"><span class="type">guint</span></a> offset</code></em>);</pre>
-<div class="warning">
-<p><code class="literal">gst_mpeg_video_parse_sequence_extension</code> is deprecated and should not be used in newly-written code.</p>
-<p>Use <code class="function">gst_mpeg_video_packet_parse_sequence_extension()</code> instead.</p>
-</div>
-<p>Parses the <em class="parameter"><code>seqext</code></em>
- Mpeg Video Sequence Extension structure members from <em class="parameter"><code>data</code></em>
-</p>
-<div class="refsect3">
-<a name="gst-mpeg-video-parse-sequence-extension.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="parameter_name"><p>seqext</p></td>
-<td class="parameter_description"><p> The <a class="link" href="gst-plugins-bad-libs-mpegvideoparser.html#GstMpegVideoSequenceExt" title="struct GstMpegVideoSequenceExt"><span class="type">GstMpegVideoSequenceExt</span></a> structure to fill. </p></td>
-<td class="parameter_annotations"><span class="annotation">[<acronym title="Parameter for returning results. Default is transfer full."><span class="acronym">out</span></acronym>]</span></td>
-</tr>
-<tr>
-<td class="parameter_name"><p>data</p></td>
-<td class="parameter_description"><p>The data from which to parse the sequence extension</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>size</p></td>
-<td class="parameter_description"><p>The size of <em class="parameter"><code>data</code></em>
-</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>offset</p></td>
-<td class="parameter_description"><p>The offset in byte from which to start parsing <em class="parameter"><code>data</code></em>
-</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<div class="refsect3">
-<a name="gst-mpeg-video-parse-sequence-extension.returns"></a><h4>Returns</h4>
-<p> <a href="/usr/share/gtk-doc/html/glibglib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if the seqext could be parsed correctly, <a href="/usr/share/gtk-doc/html/glibglib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a> otherwize.</p>
-</div>
+<div class="warning"><p><code class="literal">gst_mpeg_video_parse_sequence_extension</code> is deprecated and should not be used in newly-written code.</p></div>
</div>
<hr>
<div class="refsect2">
@@ -547,52 +279,7 @@
<em class="parameter"><code>const <a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint8"><span class="type">guint8</span></a> *data</code></em>,
<em class="parameter"><code><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gsize"><span class="type">gsize</span></a> size</code></em>,
<em class="parameter"><code><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint"><span class="type">guint</span></a> offset</code></em>);</pre>
-<div class="warning">
-<p><code class="literal">gst_mpeg_video_parse_quant_matrix_extension</code> is deprecated and should not be used in newly-written code.</p>
-<p>Use <code class="function">gst_mpeg_video_packet_parse_quant_matrix_extension()</code> instead.</p>
-</div>
-<p>Parses the <em class="parameter"><code>quant</code></em>
- Mpeg Video Quant Matrix Extension structure members from
-<em class="parameter"><code>data</code></em>
-</p>
-<div class="refsect3">
-<a name="gst-mpeg-video-parse-quant-matrix-extension.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="parameter_name"><p>quant</p></td>
-<td class="parameter_description"><p> The <a class="link" href="gst-plugins-bad-libs-mpegvideoparser.html#GstMpegVideoQuantMatrixExt" title="struct GstMpegVideoQuantMatrixExt"><span class="type">GstMpegVideoQuantMatrixExt</span></a> structure to fill. </p></td>
-<td class="parameter_annotations"><span class="annotation">[<acronym title="Parameter for returning results. Default is transfer full."><span class="acronym">out</span></acronym>]</span></td>
-</tr>
-<tr>
-<td class="parameter_name"><p>data</p></td>
-<td class="parameter_description"><p>The data from which to parse the Quantization Matrix extension</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>size</p></td>
-<td class="parameter_description"><p>The size of <em class="parameter"><code>data</code></em>
-</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>offset</p></td>
-<td class="parameter_description"><p>The offset in byte from which to start the parsing</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<div class="refsect3">
-<a name="gst-mpeg-video-parse-quant-matrix-extension.returns"></a><h4>Returns</h4>
-<p> <a href="/usr/share/gtk-doc/html/glibglib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if the quant matrix extension could be parsed correctly,
-<a href="/usr/share/gtk-doc/html/glibglib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a> otherwize.</p>
-</div>
+<div class="warning"><p><code class="literal">gst_mpeg_video_parse_quant_matrix_extension</code> is deprecated and should not be used in newly-written code.</p></div>
</div>
<hr>
<div class="refsect2">
@@ -610,37 +297,6 @@
gst_mpeg_video_quant_matrix_get_raster_from_zigzag
(<em class="parameter"><code><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint8"><span class="type">guint8</span></a> out_quant[64]</code></em>,
<em class="parameter"><code>const <a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint8"><span class="type">guint8</span></a> quant[64]</code></em>);</pre>
-<p>Converts quantization matrix <em class="parameter"><code>quant</code></em>
- from zigzag scan order to
-raster scan order and store the resulting factors into <em class="parameter"><code>out_quant</code></em>
-.</p>
-<p>Note: it is an error to pass the same table in both <em class="parameter"><code>quant</code></em>
- and
-<em class="parameter"><code>out_quant</code></em>
- arguments.</p>
-<div class="refsect3">
-<a name="gst-mpeg-video-quant-matrix-get-raster-from-zigzag.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="parameter_name"><p>out_quant</p></td>
-<td class="parameter_description"><p> The resulting quantization matrix. </p></td>
-<td class="parameter_annotations"><span class="annotation">[<acronym title="Parameter for returning results. Default is transfer full."><span class="acronym">out</span></acronym>]</span></td>
-</tr>
-<tr>
-<td class="parameter_name"><p>quant</p></td>
-<td class="parameter_description"><p>The source quantization matrix</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<p class="since">Since: 1.2</p>
</div>
<hr>
<div class="refsect2">
@@ -649,44 +305,12 @@
gst_mpeg_video_quant_matrix_get_zigzag_from_raster
(<em class="parameter"><code><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint8"><span class="type">guint8</span></a> out_quant[64]</code></em>,
<em class="parameter"><code>const <a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint8"><span class="type">guint8</span></a> quant[64]</code></em>);</pre>
-<p>Converts quantization matrix <em class="parameter"><code>quant</code></em>
- from raster scan order to
-zigzag scan order and store the resulting factors into <em class="parameter"><code>out_quant</code></em>
-.</p>
-<p>Note: it is an error to pass the same table in both <em class="parameter"><code>quant</code></em>
- and
-<em class="parameter"><code>out_quant</code></em>
- arguments.</p>
-<div class="refsect3">
-<a name="gst-mpeg-video-quant-matrix-get-zigzag-from-raster.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="parameter_name"><p>out_quant</p></td>
-<td class="parameter_description"><p> The resulting quantization matrix. </p></td>
-<td class="parameter_annotations"><span class="annotation">[<acronym title="Parameter for returning results. Default is transfer full."><span class="acronym">out</span></acronym>]</span></td>
-</tr>
-<tr>
-<td class="parameter_name"><p>quant</p></td>
-<td class="parameter_description"><p>The source quantization matrix</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<p class="since">Since: 1.2</p>
</div>
</div>
<div class="refsect1">
<a name="gst-plugins-bad-libs-mpegvideoparser.other_details"></a><h2>Types and Values</h2>
<div class="refsect2">
<a name="GstMpegVideoPacketTypeCode"></a><h3>enum GstMpegVideoPacketTypeCode</h3>
-<p>Indicates the type of MPEG packet</p>
<div class="refsect3">
<a name="GstMpegVideoPacketTypeCode.members"></a><h4>Members</h4>
<div class="informaltable"><table class="informaltable" width="100%" border="0">
@@ -698,66 +322,48 @@
<tbody>
<tr>
<td class="enum_member_name"><p><a name="GST-MPEG-VIDEO-PACKET-PICTURE:CAPS"></a>GST_MPEG_VIDEO_PACKET_PICTURE</p></td>
-<td class="enum_member_description">
-<p>Picture packet starting code</p>
-</td>
-<td class="enum_member_annotations"> </td>
+<td> </td>
+<td> </td>
</tr>
<tr>
<td class="enum_member_name"><p><a name="GST-MPEG-VIDEO-PACKET-SLICE-MIN:CAPS"></a>GST_MPEG_VIDEO_PACKET_SLICE_MIN</p></td>
-<td class="enum_member_description">
-<p>Slice min packet starting code</p>
-</td>
-<td class="enum_member_annotations"> </td>
+<td> </td>
+<td> </td>
</tr>
<tr>
<td class="enum_member_name"><p><a name="GST-MPEG-VIDEO-PACKET-SLICE-MAX:CAPS"></a>GST_MPEG_VIDEO_PACKET_SLICE_MAX</p></td>
-<td class="enum_member_description">
-<p>Slice max packet starting code</p>
-</td>
-<td class="enum_member_annotations"> </td>
+<td> </td>
+<td> </td>
</tr>
<tr>
<td class="enum_member_name"><p><a name="GST-MPEG-VIDEO-PACKET-USER-DATA:CAPS"></a>GST_MPEG_VIDEO_PACKET_USER_DATA</p></td>
-<td class="enum_member_description">
-<p>User data packet starting code</p>
-</td>
-<td class="enum_member_annotations"> </td>
+<td> </td>
+<td> </td>
</tr>
<tr>
<td class="enum_member_name"><p><a name="GST-MPEG-VIDEO-PACKET-SEQUENCE:CAPS"></a>GST_MPEG_VIDEO_PACKET_SEQUENCE</p></td>
-<td class="enum_member_description">
-<p>Sequence packet starting code</p>
-</td>
-<td class="enum_member_annotations"> </td>
+<td> </td>
+<td> </td>
</tr>
<tr>
<td class="enum_member_name"><p><a name="GST-MPEG-VIDEO-PACKET-EXTENSION:CAPS"></a>GST_MPEG_VIDEO_PACKET_EXTENSION</p></td>
-<td class="enum_member_description">
-<p>Extension packet starting code</p>
-</td>
-<td class="enum_member_annotations"> </td>
+<td> </td>
+<td> </td>
</tr>
<tr>
<td class="enum_member_name"><p><a name="GST-MPEG-VIDEO-PACKET-SEQUENCE-END:CAPS"></a>GST_MPEG_VIDEO_PACKET_SEQUENCE_END</p></td>
-<td class="enum_member_description">
-<p>Sequence end packet code</p>
-</td>
-<td class="enum_member_annotations"> </td>
+<td> </td>
+<td> </td>
</tr>
<tr>
<td class="enum_member_name"><p><a name="GST-MPEG-VIDEO-PACKET-GOP:CAPS"></a>GST_MPEG_VIDEO_PACKET_GOP</p></td>
-<td class="enum_member_description">
-<p>Group of Picture packet starting code</p>
-</td>
-<td class="enum_member_annotations"> </td>
+<td> </td>
+<td> </td>
</tr>
<tr>
<td class="enum_member_name"><p><a name="GST-MPEG-VIDEO-PACKET-NONE:CAPS"></a>GST_MPEG_VIDEO_PACKET_NONE</p></td>
-<td class="enum_member_description">
-<p>None packet code</p>
-</td>
-<td class="enum_member_annotations"> </td>
+<td> </td>
+<td> </td>
</tr>
</tbody>
</table></div>
@@ -766,9 +372,6 @@
<hr>
<div class="refsect2">
<a name="GstMpegVideoPacketExtensionCode"></a><h3>enum GstMpegVideoPacketExtensionCode</h3>
-<p>Indicates what type of packets are in this block, some are mutually
-exclusive though - ie, sequence packs are accumulated separately. GOP &
-Picture may occur together or separately.</p>
<div class="refsect3">
<a name="GstMpegVideoPacketExtensionCode.members"></a><h4>Members</h4>
<div class="informaltable"><table class="informaltable" width="100%" border="0">
@@ -780,38 +383,28 @@
<tbody>
<tr>
<td class="enum_member_name"><p><a name="GST-MPEG-VIDEO-PACKET-EXT-SEQUENCE:CAPS"></a>GST_MPEG_VIDEO_PACKET_EXT_SEQUENCE</p></td>
-<td class="enum_member_description">
-<p>Sequence extension code</p>
-</td>
-<td class="enum_member_annotations"> </td>
+<td> </td>
+<td> </td>
</tr>
<tr>
<td class="enum_member_name"><p><a name="GST-MPEG-VIDEO-PACKET-EXT-SEQUENCE-DISPLAY:CAPS"></a>GST_MPEG_VIDEO_PACKET_EXT_SEQUENCE_DISPLAY</p></td>
-<td class="enum_member_description">
-<p>Sequence Display extension code</p>
-</td>
-<td class="enum_member_annotations"> </td>
+<td> </td>
+<td> </td>
</tr>
<tr>
<td class="enum_member_name"><p><a name="GST-MPEG-VIDEO-PACKET-EXT-QUANT-MATRIX:CAPS"></a>GST_MPEG_VIDEO_PACKET_EXT_QUANT_MATRIX</p></td>
-<td class="enum_member_description">
-<p>Quantization Matrix extension code</p>
-</td>
-<td class="enum_member_annotations"> </td>
+<td> </td>
+<td> </td>
</tr>
<tr>
<td class="enum_member_name"><p><a name="GST-MPEG-VIDEO-PACKET-EXT-SEQUENCE-SCALABLE:CAPS"></a>GST_MPEG_VIDEO_PACKET_EXT_SEQUENCE_SCALABLE</p></td>
-<td class="enum_member_description">
-<p>Sequence Scalable extension code</p>
-</td>
-<td class="enum_member_annotations"> </td>
+<td> </td>
+<td> </td>
</tr>
<tr>
<td class="enum_member_name"><p><a name="GST-MPEG-VIDEO-PACKET-EXT-PICTURE:CAPS"></a>GST_MPEG_VIDEO_PACKET_EXT_PICTURE</p></td>
-<td class="enum_member_description">
-<p>Picture coding extension</p>
-</td>
-<td class="enum_member_annotations"> </td>
+<td> </td>
+<td> </td>
</tr>
</tbody>
</table></div>
@@ -820,7 +413,6 @@
<hr>
<div class="refsect2">
<a name="GstMpegVideoLevel"></a><h3>enum GstMpegVideoLevel</h3>
-<p>Mpeg-2 Levels.</p>
<div class="refsect3">
<a name="GstMpegVideoLevel.members"></a><h4>Members</h4>
<div class="informaltable"><table class="informaltable" width="100%" border="0">
@@ -832,31 +424,23 @@
<tbody>
<tr>
<td class="enum_member_name"><p><a name="GST-MPEG-VIDEO-LEVEL-HIGH:CAPS"></a>GST_MPEG_VIDEO_LEVEL_HIGH</p></td>
-<td class="enum_member_description">
-<p>High level (HL)</p>
-</td>
-<td class="enum_member_annotations"> </td>
+<td> </td>
+<td> </td>
</tr>
<tr>
<td class="enum_member_name"><p><a name="GST-MPEG-VIDEO-LEVEL-HIGH-1440:CAPS"></a>GST_MPEG_VIDEO_LEVEL_HIGH_1440</p></td>
-<td class="enum_member_description">
-<p>High 1440 level (H-14)</p>
-</td>
-<td class="enum_member_annotations"> </td>
+<td> </td>
+<td> </td>
</tr>
<tr>
<td class="enum_member_name"><p><a name="GST-MPEG-VIDEO-LEVEL-MAIN:CAPS"></a>GST_MPEG_VIDEO_LEVEL_MAIN</p></td>
-<td class="enum_member_description">
-<p>Main level (ML)</p>
-</td>
-<td class="enum_member_annotations"> </td>
+<td> </td>
+<td> </td>
</tr>
<tr>
<td class="enum_member_name"><p><a name="GST-MPEG-VIDEO-LEVEL-LOW:CAPS"></a>GST_MPEG_VIDEO_LEVEL_LOW</p></td>
-<td class="enum_member_description">
-<p>Low level (LL)</p>
-</td>
-<td class="enum_member_annotations"> </td>
+<td> </td>
+<td> </td>
</tr>
</tbody>
</table></div>
@@ -865,7 +449,6 @@
<hr>
<div class="refsect2">
<a name="GstMpegVideoProfile"></a><h3>enum GstMpegVideoProfile</h3>
-<p>Mpeg-2 Profiles.</p>
<div class="refsect3">
<a name="GstMpegVideoProfile.members"></a><h4>Members</h4>
<div class="informaltable"><table class="informaltable" width="100%" border="0">
@@ -877,45 +460,33 @@
<tbody>
<tr>
<td class="enum_member_name"><p><a name="GST-MPEG-VIDEO-PROFILE-422:CAPS"></a>GST_MPEG_VIDEO_PROFILE_422</p></td>
-<td class="enum_member_description">
-<p>4:2:2 profile (422)</p>
-</td>
-<td class="enum_member_annotations"> </td>
+<td> </td>
+<td> </td>
</tr>
<tr>
<td class="enum_member_name"><p><a name="GST-MPEG-VIDEO-PROFILE-HIGH:CAPS"></a>GST_MPEG_VIDEO_PROFILE_HIGH</p></td>
-<td class="enum_member_description">
-<p>High profile (HP)</p>
-</td>
-<td class="enum_member_annotations"> </td>
+<td> </td>
+<td> </td>
</tr>
<tr>
<td class="enum_member_name"><p><a name="GST-MPEG-VIDEO-PROFILE-SPATIALLY-SCALABLE:CAPS"></a>GST_MPEG_VIDEO_PROFILE_SPATIALLY_SCALABLE</p></td>
-<td class="enum_member_description">
-<p>Spatially Scalable profile (Spatial)</p>
-</td>
-<td class="enum_member_annotations"> </td>
+<td> </td>
+<td> </td>
</tr>
<tr>
<td class="enum_member_name"><p><a name="GST-MPEG-VIDEO-PROFILE-SNR-SCALABLE:CAPS"></a>GST_MPEG_VIDEO_PROFILE_SNR_SCALABLE</p></td>
-<td class="enum_member_description">
-<p>SNR Scalable profile (SNR)</p>
-</td>
-<td class="enum_member_annotations"> </td>
+<td> </td>
+<td> </td>
</tr>
<tr>
<td class="enum_member_name"><p><a name="GST-MPEG-VIDEO-PROFILE-MAIN:CAPS"></a>GST_MPEG_VIDEO_PROFILE_MAIN</p></td>
-<td class="enum_member_description">
-<p>Main profile (MP)</p>
-</td>
-<td class="enum_member_annotations"> </td>
+<td> </td>
+<td> </td>
</tr>
<tr>
<td class="enum_member_name"><p><a name="GST-MPEG-VIDEO-PROFILE-SIMPLE:CAPS"></a>GST_MPEG_VIDEO_PROFILE_SIMPLE</p></td>
-<td class="enum_member_description">
-<p>Simple profile (SP)</p>
-</td>
-<td class="enum_member_annotations"> </td>
+<td> </td>
+<td> </td>
</tr>
</tbody>
</table></div>
@@ -924,7 +495,6 @@
<hr>
<div class="refsect2">
<a name="GstMpegVideoPictureType"></a><h3>enum GstMpegVideoPictureType</h3>
-<p>Picture type.</p>
<div class="refsect3">
<a name="GstMpegVideoPictureType.members"></a><h4>Members</h4>
<div class="informaltable"><table class="informaltable" width="100%" border="0">
@@ -936,31 +506,23 @@
<tbody>
<tr>
<td class="enum_member_name"><p><a name="GST-MPEG-VIDEO-PICTURE-TYPE-I:CAPS"></a>GST_MPEG_VIDEO_PICTURE_TYPE_I</p></td>
-<td class="enum_member_description">
-<p>Intra-coded (I) frame</p>
-</td>
-<td class="enum_member_annotations"> </td>
+<td> </td>
+<td> </td>
</tr>
<tr>
<td class="enum_member_name"><p><a name="GST-MPEG-VIDEO-PICTURE-TYPE-P:CAPS"></a>GST_MPEG_VIDEO_PICTURE_TYPE_P</p></td>
-<td class="enum_member_description">
-<p>Predictive-codec (P) frame</p>
-</td>
-<td class="enum_member_annotations"> </td>
+<td> </td>
+<td> </td>
</tr>
<tr>
<td class="enum_member_name"><p><a name="GST-MPEG-VIDEO-PICTURE-TYPE-B:CAPS"></a>GST_MPEG_VIDEO_PICTURE_TYPE_B</p></td>
-<td class="enum_member_description">
-<p>Bidirectionally predictive-coded (B) frame</p>
-</td>
-<td class="enum_member_annotations"> </td>
+<td> </td>
+<td> </td>
</tr>
<tr>
<td class="enum_member_name"><p><a name="GST-MPEG-VIDEO-PICTURE-TYPE-D:CAPS"></a>GST_MPEG_VIDEO_PICTURE_TYPE_D</p></td>
-<td class="enum_member_description">
-<p>D frame</p>
-</td>
-<td class="enum_member_annotations"> </td>
+<td> </td>
+<td> </td>
</tr>
</tbody>
</table></div>
@@ -969,7 +531,6 @@
<hr>
<div class="refsect2">
<a name="GstMpegVideoPictureStructure"></a><h3>enum GstMpegVideoPictureStructure</h3>
-<p>Picture structure type.</p>
<div class="refsect3">
<a name="GstMpegVideoPictureStructure.members"></a><h4>Members</h4>
<div class="informaltable"><table class="informaltable" width="100%" border="0">
@@ -981,24 +542,18 @@
<tbody>
<tr>
<td class="enum_member_name"><p><a name="GST-MPEG-VIDEO-PICTURE-STRUCTURE-TOP-FIELD:CAPS"></a>GST_MPEG_VIDEO_PICTURE_STRUCTURE_TOP_FIELD</p></td>
-<td class="enum_member_description">
-<p>Top field</p>
-</td>
-<td class="enum_member_annotations"> </td>
+<td> </td>
+<td> </td>
</tr>
<tr>
<td class="enum_member_name"><p><a name="GST-MPEG-VIDEO-PICTURE-STRUCTURE-BOTTOM-FIELD:CAPS"></a>GST_MPEG_VIDEO_PICTURE_STRUCTURE_BOTTOM_FIELD</p></td>
-<td class="enum_member_description">
-<p>Bottom field</p>
-</td>
-<td class="enum_member_annotations"> </td>
+<td> </td>
+<td> </td>
</tr>
<tr>
<td class="enum_member_name"><p><a name="GST-MPEG-VIDEO-PICTURE-STRUCTURE-FRAME:CAPS"></a>GST_MPEG_VIDEO_PICTURE_STRUCTURE_FRAME</p></td>
-<td class="enum_member_description">
-<p>Frame picture</p>
-</td>
-<td class="enum_member_annotations"> </td>
+<td> </td>
+<td> </td>
</tr>
</tbody>
</table></div>
@@ -1016,7 +571,9 @@
guint8 constrained_parameters_flag;
+ guint8 load_intra_quantiser_matrix;
guint8 intra_quantizer_matrix[64];
+ guint8 load_non_intra_quantiser_matrix;
guint8 non_intra_quantizer_matrix[64];
/* Calculated values */
@@ -1025,89 +582,6 @@
guint bitrate;
};
</pre>
-<p>The Mpeg2 Video Sequence Header structure.</p>
-<div class="refsect3">
-<a name="GstMpegVideoSequenceHdr.members"></a><h4>Members</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="300px" class="struct_members_name">
-<col class="struct_members_description">
-<col width="200px" class="struct_members_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint16"><span class="type">guint16</span></a> <em class="structfield"><code><a name="GstMpegVideoSequenceHdr.width"></a>width</code></em>;</p></td>
-<td class="struct_member_description"><p>Width of each frame</p></td>
-<td class="struct_member_annotations"> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint16"><span class="type">guint16</span></a> <em class="structfield"><code><a name="GstMpegVideoSequenceHdr.height"></a>height</code></em>;</p></td>
-<td class="struct_member_description"><p>Height of each frame</p></td>
-<td class="struct_member_annotations"> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint8"><span class="type">guint8</span></a> <em class="structfield"><code><a name="GstMpegVideoSequenceHdr.aspect-ratio-info"></a>aspect_ratio_info</code></em>;</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint8"><span class="type">guint8</span></a> <em class="structfield"><code><a name="GstMpegVideoSequenceHdr.frame-rate-code"></a>frame_rate_code</code></em>;</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint32"><span class="type">guint32</span></a> <em class="structfield"><code><a name="GstMpegVideoSequenceHdr.bitrate-value"></a>bitrate_value</code></em>;</p></td>
-<td class="struct_member_description"><p>Value of the bitrate as is in the stream (400bps unit)</p></td>
-<td class="struct_member_annotations"> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint16"><span class="type">guint16</span></a> <em class="structfield"><code><a name="GstMpegVideoSequenceHdr.vbv-buffer-size-value"></a>vbv_buffer_size_value</code></em>;</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint8"><span class="type">guint8</span></a> <em class="structfield"><code><a name="GstMpegVideoSequenceHdr.constrained-parameters-flag"></a>constrained_parameters_flag</code></em>;</p></td>
-<td class="struct_member_description"><p><a href="/usr/share/gtk-doc/html/glibglib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if this stream uses contrained parameters.</p></td>
-<td class="struct_member_annotations"> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint8"><span class="type">guint8</span></a> <em class="structfield"><code><a name="GstMpegVideoSequenceHdr.intra-quantizer-matrix"></a>intra_quantizer_matrix</code></em>[64];</p></td>
-<td class="struct_member_description"><p>intra-quantization table, in zigzag scan order</p></td>
-<td class="struct_member_annotations"> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint8"><span class="type">guint8</span></a> <em class="structfield"><code><a name="GstMpegVideoSequenceHdr.non-intra-quantizer-matrix"></a>non_intra_quantizer_matrix</code></em>[64];</p></td>
-<td class="struct_member_description"><p>non-intra quantization table, in zigzag scan order</p></td>
-<td class="struct_member_annotations"> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint"><span class="type">guint</span></a> <em class="structfield"><code><a name="GstMpegVideoSequenceHdr.par-w"></a>par_w</code></em>;</p></td>
-<td class="struct_member_description"><p>Calculated Pixel Aspect Ratio width</p></td>
-<td class="struct_member_annotations"> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint"><span class="type">guint</span></a> <em class="structfield"><code><a name="GstMpegVideoSequenceHdr.par-h"></a>par_h</code></em>;</p></td>
-<td class="struct_member_description"><p>Calculated Pixel Aspect Ratio height</p></td>
-<td class="struct_member_annotations"> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint"><span class="type">guint</span></a> <em class="structfield"><code><a name="GstMpegVideoSequenceHdr.fps-n"></a>fps_n</code></em>;</p></td>
-<td class="struct_member_description"><p>Calculated Framrate nominator</p></td>
-<td class="struct_member_annotations"> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint"><span class="type">guint</span></a> <em class="structfield"><code><a name="GstMpegVideoSequenceHdr.fps-d"></a>fps_d</code></em>;</p></td>
-<td class="struct_member_description"><p>Calculated Framerate denominator</p></td>
-<td class="struct_member_annotations"> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint"><span class="type">guint</span></a> <em class="structfield"><code><a name="GstMpegVideoSequenceHdr.bitrate"></a>bitrate</code></em>;</p></td>
-<td class="struct_member_description"><p>the real bitrate of the Mpeg video stream in bits per second, 0 if VBR stream</p></td>
-<td class="struct_member_annotations"> </td>
-</tr>
-</tbody>
-</table></div>
-</div>
</div>
<hr>
<div class="refsect2">
@@ -1132,83 +606,6 @@
guint8 profile_level_escape_bit;
};
</pre>
-<p>The Mpeg2 Video Sequence Extension structure.</p>
-<div class="refsect3">
-<a name="GstMpegVideoSequenceExt.members"></a><h4>Members</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="300px" class="struct_members_name">
-<col class="struct_members_description">
-<col width="200px" class="struct_members_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint8"><span class="type">guint8</span></a> <em class="structfield"><code><a name="GstMpegVideoSequenceExt.profile"></a>profile</code></em>;</p></td>
-<td class="struct_member_description"><p>mpeg2 decoder profile</p></td>
-<td class="struct_member_annotations"> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint8"><span class="type">guint8</span></a> <em class="structfield"><code><a name="GstMpegVideoSequenceExt.level"></a>level</code></em>;</p></td>
-<td class="struct_member_description"><p>mpeg2 decoder level</p></td>
-<td class="struct_member_annotations"> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint8"><span class="type">guint8</span></a> <em class="structfield"><code><a name="GstMpegVideoSequenceExt.progressive"></a>progressive</code></em>;</p></td>
-<td class="struct_member_description"><p><a href="/usr/share/gtk-doc/html/glibglib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if the frames are progressive <a href="/usr/share/gtk-doc/html/glibglib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a> otherwise</p></td>
-<td class="struct_member_annotations"> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint8"><span class="type">guint8</span></a> <em class="structfield"><code><a name="GstMpegVideoSequenceExt.chroma-format"></a>chroma_format</code></em>;</p></td>
-<td class="struct_member_description"><p>indicates the chrominance format</p></td>
-<td class="struct_member_annotations"> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint8"><span class="type">guint8</span></a> <em class="structfield"><code><a name="GstMpegVideoSequenceExt.horiz-size-ext"></a>horiz_size_ext</code></em>;</p></td>
-<td class="struct_member_description"><p>Horizontal size</p></td>
-<td class="struct_member_annotations"> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint8"><span class="type">guint8</span></a> <em class="structfield"><code><a name="GstMpegVideoSequenceExt.vert-size-ext"></a>vert_size_ext</code></em>;</p></td>
-<td class="struct_member_description"><p>Vertical size</p></td>
-<td class="struct_member_annotations"> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint16"><span class="type">guint16</span></a> <em class="structfield"><code><a name="GstMpegVideoSequenceExt.bitrate-ext"></a>bitrate_ext</code></em>;</p></td>
-<td class="struct_member_description"><p>The bitrate</p></td>
-<td class="struct_member_annotations"> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint8"><span class="type">guint8</span></a> <em class="structfield"><code><a name="GstMpegVideoSequenceExt.vbv-buffer-size-extension"></a>vbv_buffer_size_extension</code></em>;</p></td>
-<td class="struct_member_description"><p>VBV vuffer size</p></td>
-<td class="struct_member_annotations"> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint8"><span class="type">guint8</span></a> <em class="structfield"><code><a name="GstMpegVideoSequenceExt.low-delay"></a>low_delay</code></em>;</p></td>
-<td class="struct_member_description"><p><a href="/usr/share/gtk-doc/html/glibglib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if the sequence doesn't contain any B-pictures, <a href="/usr/share/gtk-doc/html/glibglib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a>
-otherwise</p></td>
-<td class="struct_member_annotations"> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint8"><span class="type">guint8</span></a> <em class="structfield"><code><a name="GstMpegVideoSequenceExt.fps-n-ext"></a>fps_n_ext</code></em>;</p></td>
-<td class="struct_member_description"><p>Framerate nominator code</p></td>
-<td class="struct_member_annotations"> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint8"><span class="type">guint8</span></a> <em class="structfield"><code><a name="GstMpegVideoSequenceExt.fps-d-ext"></a>fps_d_ext</code></em>;</p></td>
-<td class="struct_member_description"><p>Framerate denominator code</p></td>
-<td class="struct_member_annotations"> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint8"><span class="type">guint8</span></a> <em class="structfield"><code><a name="GstMpegVideoSequenceExt.profile-level-escape-bit"></a>profile_level_escape_bit</code></em>;</p></td>
-<td class="struct_member_description"><p>Escape bit. If set, the meaning of the
-<em class="parameter"><code>profile</code></em>
-and <em class="parameter"><code>level</code></em>
-fields is different.</p></td>
-<td class="struct_member_annotations"> </td>
-</tr>
-</tbody>
-</table></div>
-</div>
</div>
<hr>
<div class="refsect2">
@@ -1216,52 +613,13 @@
<pre class="programlisting">struct GstMpegVideoPictureHdr {
guint16 tsn;
guint8 pic_type;
+ guint16 vbv_delay;
guint8 full_pel_forward_vector, full_pel_backward_vector;
guint8 f_code[2][2];
};
</pre>
-<p>The Mpeg2 Video Picture Header structure.</p>
-<div class="refsect3">
-<a name="GstMpegVideoPictureHdr.members"></a><h4>Members</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="300px" class="struct_members_name">
-<col class="struct_members_description">
-<col width="200px" class="struct_members_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint16"><span class="type">guint16</span></a> <em class="structfield"><code><a name="GstMpegVideoPictureHdr.tsn"></a>tsn</code></em>;</p></td>
-<td class="struct_member_description"><p>Temporal Sequence Number</p></td>
-<td class="struct_member_annotations"> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint8"><span class="type">guint8</span></a> <em class="structfield"><code><a name="GstMpegVideoPictureHdr.pic-type"></a>pic_type</code></em>;</p></td>
-<td class="struct_member_description"><p>Type of the frame</p></td>
-<td class="struct_member_annotations"> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint8"><span class="type">guint8</span></a> <em class="structfield"><code><a name="GstMpegVideoPictureHdr.full-pel-forward-vector"></a>full_pel_forward_vector</code></em>;</p></td>
-<td class="struct_member_description"><p>the full pel forward flag of
-the frame: 0 or 1.</p></td>
-<td class="struct_member_annotations"> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint8"><span class="type">guint8</span></a> <em class="structfield"><code><a name="GstMpegVideoPictureHdr.full-pel-backward-vector"></a>full_pel_backward_vector</code></em>;</p></td>
-<td class="struct_member_description"><p>the full pel backward flag
-of the frame: 0 or 1.</p></td>
-<td class="struct_member_annotations"> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint8"><span class="type">guint8</span></a> <em class="structfield"><code><a name="GstMpegVideoPictureHdr.f-code"></a>f_code</code></em>[2][2];</p></td>
-<td class="struct_member_description"><p>F code</p></td>
-<td class="struct_member_annotations"> </td>
-</tr>
-</tbody>
-</table></div>
-</div>
</div>
<hr>
<div class="refsect2">
@@ -1275,54 +633,6 @@
guint8 broken_link;
};
</pre>
-<p>The Mpeg Video Group of Picture structure.</p>
-<div class="refsect3">
-<a name="GstMpegVideoGop.members"></a><h4>Members</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="300px" class="struct_members_name">
-<col class="struct_members_description">
-<col width="200px" class="struct_members_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint8"><span class="type">guint8</span></a> <em class="structfield"><code><a name="GstMpegVideoGop.drop-frame-flag"></a>drop_frame_flag</code></em>;</p></td>
-<td class="struct_member_description"><p>Drop Frame Flag</p></td>
-<td class="struct_member_annotations"> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint8"><span class="type">guint8</span></a> <em class="structfield"><code><a name="GstMpegVideoGop.hour"></a>hour</code></em>;</p></td>
-<td class="struct_member_description"><p>Hour (0-23)</p></td>
-<td class="struct_member_annotations"> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint8"><span class="type">guint8</span></a> <em class="structfield"><code><a name="GstMpegVideoGop.minute"></a>minute</code></em>;</p></td>
-<td class="struct_member_description"><p>Minute (O-59)</p></td>
-<td class="struct_member_annotations"> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint8"><span class="type">guint8</span></a> <em class="structfield"><code><a name="GstMpegVideoGop.second"></a>second</code></em>;</p></td>
-<td class="struct_member_description"><p>Second (0-59)</p></td>
-<td class="struct_member_annotations"> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint8"><span class="type">guint8</span></a> <em class="structfield"><code><a name="GstMpegVideoGop.frame"></a>frame</code></em>;</p></td>
-<td class="struct_member_description"><p>Frame (0-59)</p></td>
-<td class="struct_member_annotations"> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint8"><span class="type">guint8</span></a> <em class="structfield"><code><a name="GstMpegVideoGop.closed-gop"></a>closed_gop</code></em>;</p></td>
-<td class="struct_member_description"><p>Closed Gop</p></td>
-<td class="struct_member_annotations"> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint8"><span class="type">guint8</span></a> <em class="structfield"><code><a name="GstMpegVideoGop.broken-link"></a>broken_link</code></em>;</p></td>
-<td class="struct_member_description"><p>Broken link</p></td>
-<td class="struct_member_annotations"> </td>
-</tr>
-</tbody>
-</table></div>
-</div>
</div>
<hr>
<div class="refsect2">
@@ -1349,109 +659,6 @@
guint8 sub_carrier_phase;
};
</pre>
-<p>The Mpeg2 Video Picture Extension structure.</p>
-<div class="refsect3">
-<a name="GstMpegVideoPictureExt.members"></a><h4>Members</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="300px" class="struct_members_name">
-<col class="struct_members_description">
-<col width="200px" class="struct_members_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint8"><span class="type">guint8</span></a> <em class="structfield"><code><a name="GstMpegVideoPictureExt.f-code"></a>f_code</code></em>[2][2];</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint8"><span class="type">guint8</span></a> <em class="structfield"><code><a name="GstMpegVideoPictureExt.intra-dc-precision"></a>intra_dc_precision</code></em>;</p></td>
-<td class="struct_member_description"><p>Intra DC precision</p></td>
-<td class="struct_member_annotations"> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint8"><span class="type">guint8</span></a> <em class="structfield"><code><a name="GstMpegVideoPictureExt.picture-structure"></a>picture_structure</code></em>;</p></td>
-<td class="struct_member_description"><p>Structure of the picture</p></td>
-<td class="struct_member_annotations"> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint8"><span class="type">guint8</span></a> <em class="structfield"><code><a name="GstMpegVideoPictureExt.top-field-first"></a>top_field_first</code></em>;</p></td>
-<td class="struct_member_description"><p>Top field first</p></td>
-<td class="struct_member_annotations"> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint8"><span class="type">guint8</span></a> <em class="structfield"><code><a name="GstMpegVideoPictureExt.frame-pred-frame-dct"></a>frame_pred_frame_dct</code></em>;</p></td>
-<td class="struct_member_description"><p>Frame</p></td>
-<td class="struct_member_annotations"> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint8"><span class="type">guint8</span></a> <em class="structfield"><code><a name="GstMpegVideoPictureExt.concealment-motion-vectors"></a>concealment_motion_vectors</code></em>;</p></td>
-<td class="struct_member_description"><p>Concealment Motion Vectors</p></td>
-<td class="struct_member_annotations"> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint8"><span class="type">guint8</span></a> <em class="structfield"><code><a name="GstMpegVideoPictureExt.q-scale-type"></a>q_scale_type</code></em>;</p></td>
-<td class="struct_member_description"><p>Q Scale Type</p></td>
-<td class="struct_member_annotations"> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint8"><span class="type">guint8</span></a> <em class="structfield"><code><a name="GstMpegVideoPictureExt.intra-vlc-format"></a>intra_vlc_format</code></em>;</p></td>
-<td class="struct_member_description"><p>Intra Vlc Format</p></td>
-<td class="struct_member_annotations"> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint8"><span class="type">guint8</span></a> <em class="structfield"><code><a name="GstMpegVideoPictureExt.alternate-scan"></a>alternate_scan</code></em>;</p></td>
-<td class="struct_member_description"><p>Alternate Scan</p></td>
-<td class="struct_member_annotations"> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint8"><span class="type">guint8</span></a> <em class="structfield"><code><a name="GstMpegVideoPictureExt.repeat-first-field"></a>repeat_first_field</code></em>;</p></td>
-<td class="struct_member_description"><p>Repeat First Field</p></td>
-<td class="struct_member_annotations"> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint8"><span class="type">guint8</span></a> <em class="structfield"><code><a name="GstMpegVideoPictureExt.chroma-420-type"></a>chroma_420_type</code></em>;</p></td>
-<td class="struct_member_description"><p>Chroma 420 Type</p></td>
-<td class="struct_member_annotations"> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint8"><span class="type">guint8</span></a> <em class="structfield"><code><a name="GstMpegVideoPictureExt.progressive-frame"></a>progressive_frame</code></em>;</p></td>
-<td class="struct_member_description"><p><a href="/usr/share/gtk-doc/html/glibglib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if the frame is progressive <a href="/usr/share/gtk-doc/html/glibglib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a> otherwize</p></td>
-<td class="struct_member_annotations"> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint8"><span class="type">guint8</span></a> <em class="structfield"><code><a name="GstMpegVideoPictureExt.composite-display"></a>composite_display</code></em>;</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint8"><span class="type">guint8</span></a> <em class="structfield"><code><a name="GstMpegVideoPictureExt.v-axis"></a>v_axis</code></em>;</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint8"><span class="type">guint8</span></a> <em class="structfield"><code><a name="GstMpegVideoPictureExt.field-sequence"></a>field_sequence</code></em>;</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint8"><span class="type">guint8</span></a> <em class="structfield"><code><a name="GstMpegVideoPictureExt.sub-carrier"></a>sub_carrier</code></em>;</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint8"><span class="type">guint8</span></a> <em class="structfield"><code><a name="GstMpegVideoPictureExt.burst-amplitude"></a>burst_amplitude</code></em>;</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint8"><span class="type">guint8</span></a> <em class="structfield"><code><a name="GstMpegVideoPictureExt.sub-carrier-phase"></a>sub_carrier_phase</code></em>;</p></td>
-<td> </td>
-<td> </td>
-</tr>
-</tbody>
-</table></div>
-</div>
</div>
<hr>
<div class="refsect2">
@@ -1467,9 +674,6 @@
guint8 chroma_non_intra_quantiser_matrix[64];
};
</pre>
-<p>The Quant Matrix Extension structure that exposes quantization
-matrices in zigzag scan order. i.e. the original encoded scan
-order.</p>
</div>
</div>
</div>
diff --git a/docs/libs/html/gst-plugins-bad-libs-vc1parser.html b/docs/libs/html/gst-plugins-bad-libs-vc1parser.html
index 0d38ca3..ad54d97 100644
--- a/docs/libs/html/gst-plugins-bad-libs-vc1parser.html
+++ b/docs/libs/html/gst-plugins-bad-libs-vc1parser.html
@@ -27,8 +27,7 @@
<div class="refnamediv"><table width="100%"><tr>
<td valign="top">
<h2><span class="refentrytitle"><a name="gst-plugins-bad-libs-vc1parser.top_of_page"></a>vc1parser</span></h2>
-<p>vc1parser — Convenience library for parsing vc1 video
-bitstream.</p>
+<p>vc1parser</p>
</td>
<td class="gallery_image" valign="top" align="right"></td>
</tr></table></div>
@@ -257,8 +256,6 @@
</div>
<div class="refsect1">
<a name="gst-plugins-bad-libs-vc1parser.description"></a><h2>Description</h2>
-<p>For more details about the structures, look at the
-smpte specifications (S421m-2006.pdf).</p>
</div>
<div class="refsect1">
<a name="gst-plugins-bad-libs-vc1parser.functions_details"></a><h2>Functions</h2>
@@ -268,41 +265,6 @@
gst_vc1_identify_next_bdu (<em class="parameter"><code>const <a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint8"><span class="type">guint8</span></a> *data</code></em>,
<em class="parameter"><code><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gsize"><span class="type">gsize</span></a> size</code></em>,
<em class="parameter"><code><a class="link" href="gst-plugins-bad-libs-vc1parser.html#GstVC1BDU" title="struct GstVC1BDU"><span class="type">GstVC1BDU</span></a> *bdu</code></em>);</pre>
-<p>Parses <em class="parameter"><code>data</code></em>
- and fills <em class="parameter"><code>bdu</code></em>
- fields</p>
-<div class="refsect3">
-<a name="gst-vc1-identify-next-bdu.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="parameter_name"><p>data</p></td>
-<td class="parameter_description"><p>The data to parse</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>size</p></td>
-<td class="parameter_description"><p>the size of <em class="parameter"><code>data</code></em>
-</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>bdu</p></td>
-<td class="parameter_description"><p> The <a class="link" href="gst-plugins-bad-libs-vc1parser.html#GstVC1BDU" title="struct GstVC1BDU"><span class="type">GstVC1BDU</span></a> where to store parsed bdu headers. </p></td>
-<td class="parameter_annotations"><span class="annotation">[<acronym title="Parameter for returning results. Default is transfer full."><span class="acronym">out</span></acronym>]</span></td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<div class="refsect3">
-<a name="gst-vc1-identify-next-bdu.returns"></a><h4>Returns</h4>
-<p> a <a class="link" href="gst-plugins-bad-libs-vc1parser.html#GstVC1ParserResult" title="enum GstVC1ParserResult"><span class="type">GstVC1ParserResult</span></a></p>
-</div>
</div>
<hr>
<div class="refsect2">
@@ -311,41 +273,6 @@
gst_vc1_parse_sequence_header (<em class="parameter"><code>const <a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint8"><span class="type">guint8</span></a> *data</code></em>,
<em class="parameter"><code><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gsize"><span class="type">gsize</span></a> size</code></em>,
<em class="parameter"><code><a class="link" href="gst-plugins-bad-libs-vc1parser.html#GstVC1SeqHdr" title="struct GstVC1SeqHdr"><span class="type">GstVC1SeqHdr</span></a> *seqhdr</code></em>);</pre>
-<p>Parses <em class="parameter"><code>data</code></em>
-, and fills <em class="parameter"><code>seqhdr</code></em>
- fields.</p>
-<div class="refsect3">
-<a name="gst-vc1-parse-sequence-header.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="parameter_name"><p>data</p></td>
-<td class="parameter_description"><p>The data to parse</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>size</p></td>
-<td class="parameter_description"><p>the size of <em class="parameter"><code>data</code></em>
-</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>seqhdr</p></td>
-<td class="parameter_description"><p>The <a class="link" href="gst-plugins-bad-libs-vc1parser.html#GstVC1SeqHdr" title="struct GstVC1SeqHdr"><span class="type">GstVC1SeqHdr</span></a> to set.</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<div class="refsect3">
-<a name="gst-vc1-parse-sequence-header.returns"></a><h4>Returns</h4>
-<p> a <a class="link" href="gst-plugins-bad-libs-vc1parser.html#GstVC1ParserResult" title="enum GstVC1ParserResult"><span class="type">GstVC1ParserResult</span></a></p>
-</div>
</div>
<hr>
<div class="refsect2">
@@ -354,41 +281,6 @@
gst_vc1_parse_sequence_layer (<em class="parameter"><code>const <a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint8"><span class="type">guint8</span></a> *data</code></em>,
<em class="parameter"><code><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gsize"><span class="type">gsize</span></a> size</code></em>,
<em class="parameter"><code><a class="link" href="gst-plugins-bad-libs-vc1parser.html#GstVC1SeqLayer" title="struct GstVC1SeqLayer"><span class="type">GstVC1SeqLayer</span></a> *seqlayer</code></em>);</pre>
-<p>Parses <em class="parameter"><code>data</code></em>
-, and fills <em class="parameter"><code>seqlayer</code></em>
- fields.</p>
-<div class="refsect3">
-<a name="gst-vc1-parse-sequence-layer.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="parameter_name"><p>data</p></td>
-<td class="parameter_description"><p>The data to parse</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>size</p></td>
-<td class="parameter_description"><p>the size of <em class="parameter"><code>data</code></em>
-</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>seqlayer</p></td>
-<td class="parameter_description"><p>The <a class="link" href="gst-plugins-bad-libs-vc1parser.html#GstVC1SeqLayer" title="struct GstVC1SeqLayer"><span class="type">GstVC1SeqLayer</span></a> to set.</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<div class="refsect3">
-<a name="gst-vc1-parse-sequence-layer.returns"></a><h4>Returns</h4>
-<p> a <a class="link" href="gst-plugins-bad-libs-vc1parser.html#GstVC1ParserResult" title="enum GstVC1ParserResult"><span class="type">GstVC1ParserResult</span></a></p>
-</div>
</div>
<hr>
<div class="refsect2">
@@ -398,41 +290,6 @@
(<em class="parameter"><code>const <a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint8"><span class="type">guint8</span></a> *data</code></em>,
<em class="parameter"><code><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gsize"><span class="type">gsize</span></a> size</code></em>,
<em class="parameter"><code><a class="link" href="gst-plugins-bad-libs-vc1parser.html#GstVC1SeqStructA" title="struct GstVC1SeqStructA"><span class="type">GstVC1SeqStructA</span></a> *structa</code></em>);</pre>
-<p>Parses <em class="parameter"><code>data</code></em>
-, and fills <em class="parameter"><code>structa</code></em>
- fields.</p>
-<div class="refsect3">
-<a name="gst-vc1-parse-sequence-header-struct-a.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="parameter_name"><p>data</p></td>
-<td class="parameter_description"><p>The data to parse</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>size</p></td>
-<td class="parameter_description"><p>the size of <em class="parameter"><code>data</code></em>
-</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>structa</p></td>
-<td class="parameter_description"><p>The <a class="link" href="gst-plugins-bad-libs-vc1parser.html#GstVC1SeqStructA" title="struct GstVC1SeqStructA"><span class="type">GstVC1SeqStructA</span></a> to set.</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<div class="refsect3">
-<a name="gst-vc1-parse-sequence-header-struct-a.returns"></a><h4>Returns</h4>
-<p> a <a class="link" href="gst-plugins-bad-libs-vc1parser.html#GstVC1ParserResult" title="enum GstVC1ParserResult"><span class="type">GstVC1ParserResult</span></a></p>
-</div>
</div>
<hr>
<div class="refsect2">
@@ -442,41 +299,6 @@
(<em class="parameter"><code>const <a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint8"><span class="type">guint8</span></a> *data</code></em>,
<em class="parameter"><code><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gsize"><span class="type">gsize</span></a> size</code></em>,
<em class="parameter"><code><a class="link" href="gst-plugins-bad-libs-vc1parser.html#GstVC1SeqStructB" title="struct GstVC1SeqStructB"><span class="type">GstVC1SeqStructB</span></a> *structb</code></em>);</pre>
-<p>Parses <em class="parameter"><code>data</code></em>
-, and fills <em class="parameter"><code>structb</code></em>
- fields.</p>
-<div class="refsect3">
-<a name="gst-vc1-parse-sequence-header-struct-b.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="parameter_name"><p>data</p></td>
-<td class="parameter_description"><p>The data to parse</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>size</p></td>
-<td class="parameter_description"><p>the size of <em class="parameter"><code>data</code></em>
-</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>structb</p></td>
-<td class="parameter_description"><p>The <a class="link" href="gst-plugins-bad-libs-vc1parser.html#GstVC1SeqStructB" title="struct GstVC1SeqStructB"><span class="type">GstVC1SeqStructB</span></a> to set.</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<div class="refsect3">
-<a name="gst-vc1-parse-sequence-header-struct-b.returns"></a><h4>Returns</h4>
-<p> a <a class="link" href="gst-plugins-bad-libs-vc1parser.html#GstVC1ParserResult" title="enum GstVC1ParserResult"><span class="type">GstVC1ParserResult</span></a></p>
-</div>
</div>
<hr>
<div class="refsect2">
@@ -486,41 +308,6 @@
(<em class="parameter"><code>const <a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint8"><span class="type">guint8</span></a> *data</code></em>,
<em class="parameter"><code><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gsize"><span class="type">gsize</span></a> size</code></em>,
<em class="parameter"><code><a class="link" href="gst-plugins-bad-libs-vc1parser.html#GstVC1SeqStructC" title="struct GstVC1SeqStructC"><span class="type">GstVC1SeqStructC</span></a> *structc</code></em>);</pre>
-<p>Parses <em class="parameter"><code>data</code></em>
-, and fills <em class="parameter"><code>structc</code></em>
- fields.</p>
-<div class="refsect3">
-<a name="gst-vc1-parse-sequence-header-struct-c.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="parameter_name"><p>data</p></td>
-<td class="parameter_description"><p>The data to parse</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>size</p></td>
-<td class="parameter_description"><p>the size of <em class="parameter"><code>data</code></em>
-</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>structc</p></td>
-<td class="parameter_description"><p>The <a class="link" href="gst-plugins-bad-libs-vc1parser.html#GstVC1SeqStructC" title="struct GstVC1SeqStructC"><span class="type">GstVC1SeqStructC</span></a> to set.</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<div class="refsect3">
-<a name="gst-vc1-parse-sequence-header-struct-c.returns"></a><h4>Returns</h4>
-<p> a <a class="link" href="gst-plugins-bad-libs-vc1parser.html#GstVC1ParserResult" title="enum GstVC1ParserResult"><span class="type">GstVC1ParserResult</span></a></p>
-</div>
</div>
<hr>
<div class="refsect2">
@@ -530,46 +317,6 @@
<em class="parameter"><code><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gsize"><span class="type">gsize</span></a> size</code></em>,
<em class="parameter"><code><a class="link" href="gst-plugins-bad-libs-vc1parser.html#GstVC1EntryPointHdr" title="struct GstVC1EntryPointHdr"><span class="type">GstVC1EntryPointHdr</span></a> *entrypoint</code></em>,
<em class="parameter"><code><a class="link" href="gst-plugins-bad-libs-vc1parser.html#GstVC1SeqHdr" title="struct GstVC1SeqHdr"><span class="type">GstVC1SeqHdr</span></a> *seqhdr</code></em>);</pre>
-<p>Parses <em class="parameter"><code>data</code></em>
-, and sets <em class="parameter"><code>entrypoint</code></em>
- fields.</p>
-<div class="refsect3">
-<a name="gst-vc1-parse-entry-point-header.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="parameter_name"><p>data</p></td>
-<td class="parameter_description"><p>The data to parse</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>size</p></td>
-<td class="parameter_description"><p>the size of <em class="parameter"><code>data</code></em>
-</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>entrypoint</p></td>
-<td class="parameter_description"><p> The <a class="link" href="gst-plugins-bad-libs-vc1parser.html#GstVC1EntryPointHdr" title="struct GstVC1EntryPointHdr"><span class="type">GstVC1EntryPointHdr</span></a> to set. </p></td>
-<td class="parameter_annotations"><span class="annotation">[<acronym title="Parameter for returning results. Default is transfer full."><span class="acronym">out</span></acronym>]</span></td>
-</tr>
-<tr>
-<td class="parameter_name"><p>seqhdr</p></td>
-<td class="parameter_description"><p>The <a class="link" href="gst-plugins-bad-libs-vc1parser.html#GstVC1SeqHdr" title="struct GstVC1SeqHdr"><span class="type">GstVC1SeqHdr</span></a> currently being parsed</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<div class="refsect3">
-<a name="gst-vc1-parse-entry-point-header.returns"></a><h4>Returns</h4>
-<p> a <a class="link" href="gst-plugins-bad-libs-vc1parser.html#GstVC1EntryPointHdr" title="struct GstVC1EntryPointHdr"><span class="type">GstVC1EntryPointHdr</span></a></p>
-</div>
</div>
<hr>
<div class="refsect2">
@@ -580,63 +327,12 @@
<em class="parameter"><code><a class="link" href="gst-plugins-bad-libs-vc1parser.html#GstVC1FrameHdr" title="struct GstVC1FrameHdr"><span class="type">GstVC1FrameHdr</span></a> *framehdr</code></em>,
<em class="parameter"><code><a class="link" href="gst-plugins-bad-libs-vc1parser.html#GstVC1SeqHdr" title="struct GstVC1SeqHdr"><span class="type">GstVC1SeqHdr</span></a> *seqhdr</code></em>,
<em class="parameter"><code><span class="type">GstVC1BitPlanes</span> *bitplanes</code></em>);</pre>
-<p>Parses <em class="parameter"><code>data</code></em>
-, and fills <em class="parameter"><code>entrypoint</code></em>
- fields.</p>
-<div class="refsect3">
-<a name="gst-vc1-parse-frame-header.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="parameter_name"><p>data</p></td>
-<td class="parameter_description"><p>The data to parse</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>size</p></td>
-<td class="parameter_description"><p>the size of <em class="parameter"><code>data</code></em>
-</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>framehdr</p></td>
-<td class="parameter_description"><p>The <a class="link" href="gst-plugins-bad-libs-vc1parser.html#GstVC1FrameHdr" title="struct GstVC1FrameHdr"><span class="type">GstVC1FrameHdr</span></a> to fill.</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>seqhdr</p></td>
-<td class="parameter_description"><p>The <a class="link" href="gst-plugins-bad-libs-vc1parser.html#GstVC1SeqHdr" title="struct GstVC1SeqHdr"><span class="type">GstVC1SeqHdr</span></a> currently being parsed</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>bitplanes</p></td>
-<td class="parameter_description"><p>The <span class="type">GstVC1BitPlanes</span> to store bitplanes in or <a href="/usr/share/gtk-doc/html/glibglib-Standard-Macros.html#NULL:CAPS"><code class="literal">NULL</code></a></p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<div class="refsect3">
-<a name="gst-vc1-parse-frame-header.returns"></a><h4>Returns</h4>
-<p> a <a class="link" href="gst-plugins-bad-libs-vc1parser.html#GstVC1ParserResult" title="enum GstVC1ParserResult"><span class="type">GstVC1ParserResult</span></a></p>
-</div>
</div>
<hr>
<div class="refsect2">
<a name="gst-vc1-bitplanes-new"></a><h3>gst_vc1_bitplanes_new ()</h3>
<pre class="programlisting"><span class="returnvalue">GstVC1BitPlanes</span> *
gst_vc1_bitplanes_new (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
-<p>Creates a new <span class="type">GstVC1BitPlanes</span>. It should be freed with
-<a class="link" href="gst-plugins-bad-libs-vc1parser.html#gst-vc1-bitplanes-free" title="gst_vc1_bitplanes_free ()"><code class="function">gst_vc1_bitplanes_free()</code></a> after use.</p>
-<div class="refsect3">
-<a name="gst-vc1-bitplanes-new.returns"></a><h4>Returns</h4>
-<p> a new <span class="type">GstVC1BitPlanes</span></p>
-</div>
</div>
<hr>
<div class="refsect2">
@@ -656,39 +352,6 @@
<pre class="programlisting"><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gboolean"><span class="returnvalue">gboolean</span></a>
gst_vc1_bitplanes_ensure_size (<em class="parameter"><code><span class="type">GstVC1BitPlanes</span> *bitplanes</code></em>,
<em class="parameter"><code><a class="link" href="gst-plugins-bad-libs-vc1parser.html#GstVC1SeqHdr" title="struct GstVC1SeqHdr"><span class="type">GstVC1SeqHdr</span></a> *seqhdr</code></em>);</pre>
-<p>Fills the <em class="parameter"><code>bitplanes</code></em>
- structure from <em class="parameter"><code>seqhdr</code></em>
-, this function
-should be called after <a class="link" href="gst-plugins-bad-libs-vc1parser.html#gst-vc1-parse-sequence-header" title="gst_vc1_parse_sequence_header ()"><span class="type">gst_vc1_parse_sequence_header</span></a> if
-in simple or main mode, or after <a class="link" href="gst-plugins-bad-libs-vc1parser.html#gst-vc1-parse-entry-point-header" title="gst_vc1_parse_entry_point_header ()"><span class="type">gst_vc1_parse_entry_point_header</span></a>
-if in advanced mode.</p>
-<div class="refsect3">
-<a name="gst-vc1-bitplanes-ensure-size.parameters"></a><h4>Parameters</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="parameters_name">
-<col class="parameters_description">
-<col width="200px" class="parameters_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="parameter_name"><p>bitplanes</p></td>
-<td class="parameter_description"><p>The <span class="type">GstVC1BitPlanes</span> to reset</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-<tr>
-<td class="parameter_name"><p>seqhdr</p></td>
-<td class="parameter_description"><p>The <a class="link" href="gst-plugins-bad-libs-vc1parser.html#GstVC1SeqHdr" title="struct GstVC1SeqHdr"><span class="type">GstVC1SeqHdr</span></a> from which to set <em class="parameter"><code>bitplanes</code></em>
-</p></td>
-<td class="parameter_annotations"> </td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<div class="refsect3">
-<a name="gst-vc1-bitplanes-ensure-size.returns"></a><h4>Returns</h4>
-<p> <a href="/usr/share/gtk-doc/html/glibglib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> if everything went fine, <a href="/usr/share/gtk-doc/html/glibglib-Standard-Macros.html#FALSE:CAPS"><code class="literal">FALSE</code></a> otherwize</p>
-</div>
</div>
</div>
<div class="refsect1">
@@ -1114,7 +777,6 @@
GstVC1AdvancedSeqHdr advanced;
};
</pre>
-<p>Structure for sequence headers in any profile.</p>
</div>
<hr>
<div class="refsect2">
@@ -1165,7 +827,6 @@
GstVC1EntryPointHdr entrypoint;
};
</pre>
-<p>Structure for the advanced profile sequence headers specific parameters.</p>
</div>
<hr>
<div class="refsect2">
@@ -1281,7 +942,6 @@
guint8 hrd_full[MAX_HRD_NUM_LEAKY_BUCKETS];
};
</pre>
-<p>Structure for entrypoint header, this will be used only in advanced profiles</p>
</div>
<hr>
<div class="refsect2">
@@ -1315,11 +975,6 @@
guint header_size;
};
</pre>
-<p>Structure that represent picture in any profile or mode.
-You should look at <em class="parameter"><code>ptype</code></em>
- and <em class="parameter"><code>profile</code></em>
- to know what is currently
-in use.</p>
</div>
<hr>
<div class="refsect2">
@@ -1399,258 +1054,6 @@
guint8 intcompfield;
};
</pre>
-<div class="refsect3">
-<a name="GstVC1PicAdvanced.members"></a><h4>Members</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="300px" class="struct_members_name">
-<col class="struct_members_description">
-<col width="200px" class="struct_members_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="struct_member_name"><p><span class="type">GstVC1FrameCodingMode</span> <em class="structfield"><code><a name="GstVC1PicAdvanced.fcm"></a>fcm</code></em>;</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint8"><span class="type">guint8</span></a> <em class="structfield"><code><a name="GstVC1PicAdvanced.tfcntr"></a>tfcntr</code></em>;</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint8"><span class="type">guint8</span></a> <em class="structfield"><code><a name="GstVC1PicAdvanced.rptfrm"></a>rptfrm</code></em>;</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint8"><span class="type">guint8</span></a> <em class="structfield"><code><a name="GstVC1PicAdvanced.tff"></a>tff</code></em>;</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint8"><span class="type">guint8</span></a> <em class="structfield"><code><a name="GstVC1PicAdvanced.rff"></a>rff</code></em>;</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint8"><span class="type">guint8</span></a> <em class="structfield"><code><a name="GstVC1PicAdvanced.ps-present"></a>ps_present</code></em>;</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint32"><span class="type">guint32</span></a> <em class="structfield"><code><a name="GstVC1PicAdvanced.ps-hoffset"></a>ps_hoffset</code></em>;</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint32"><span class="type">guint32</span></a> <em class="structfield"><code><a name="GstVC1PicAdvanced.ps-voffset"></a>ps_voffset</code></em>;</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint16"><span class="type">guint16</span></a> <em class="structfield"><code><a name="GstVC1PicAdvanced.ps-width"></a>ps_width</code></em>;</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint16"><span class="type">guint16</span></a> <em class="structfield"><code><a name="GstVC1PicAdvanced.ps-height"></a>ps_height</code></em>;</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint8"><span class="type">guint8</span></a> <em class="structfield"><code><a name="GstVC1PicAdvanced.rndctrl"></a>rndctrl</code></em>;</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint8"><span class="type">guint8</span></a> <em class="structfield"><code><a name="GstVC1PicAdvanced.uvsamp"></a>uvsamp</code></em>;</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint8"><span class="type">guint8</span></a> <em class="structfield"><code><a name="GstVC1PicAdvanced.postproc"></a>postproc</code></em>;</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint8"><span class="type">guint8</span></a> <em class="structfield"><code><a name="GstVC1PicAdvanced.mvrange"></a>mvrange</code></em>;</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint8"><span class="type">guint8</span></a> <em class="structfield"><code><a name="GstVC1PicAdvanced.mvmode"></a>mvmode</code></em>;</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint8"><span class="type">guint8</span></a> <em class="structfield"><code><a name="GstVC1PicAdvanced.mvtab"></a>mvtab</code></em>;</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint8"><span class="type">guint8</span></a> <em class="structfield"><code><a name="GstVC1PicAdvanced.cbptab"></a>cbptab</code></em>;</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint8"><span class="type">guint8</span></a> <em class="structfield"><code><a name="GstVC1PicAdvanced.ttmbf"></a>ttmbf</code></em>;</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint8"><span class="type">guint8</span></a> <em class="structfield"><code><a name="GstVC1PicAdvanced.ttfrm"></a>ttfrm</code></em>;</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint16"><span class="type">guint16</span></a> <em class="structfield"><code><a name="GstVC1PicAdvanced.bfraction"></a>bfraction</code></em>;</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint8"><span class="type">guint8</span></a> <em class="structfield"><code><a name="GstVC1PicAdvanced.mvmode2"></a>mvmode2</code></em>;</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint8"><span class="type">guint8</span></a> <em class="structfield"><code><a name="GstVC1PicAdvanced.lumscale"></a>lumscale</code></em>;</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint8"><span class="type">guint8</span></a> <em class="structfield"><code><a name="GstVC1PicAdvanced.lumshift"></a>lumshift</code></em>;</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint8"><span class="type">guint8</span></a> <em class="structfield"><code><a name="GstVC1PicAdvanced.bf"></a>bf</code></em>;</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint8"><span class="type">guint8</span></a> <em class="structfield"><code><a name="GstVC1PicAdvanced.condover"></a>condover</code></em>;</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint8"><span class="type">guint8</span></a> <em class="structfield"><code><a name="GstVC1PicAdvanced.transacfrm2"></a>transacfrm2</code></em>;</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint8"><span class="type">guint8</span></a> <em class="structfield"><code><a name="GstVC1PicAdvanced.acpred"></a>acpred</code></em>;</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint8"><span class="type">guint8</span></a> <em class="structfield"><code><a name="GstVC1PicAdvanced.overflags"></a>overflags</code></em>;</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint8"><span class="type">guint8</span></a> <em class="structfield"><code><a name="GstVC1PicAdvanced.mvtypemb"></a>mvtypemb</code></em>;</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint8"><span class="type">guint8</span></a> <em class="structfield"><code><a name="GstVC1PicAdvanced.skipmb"></a>skipmb</code></em>;</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint8"><span class="type">guint8</span></a> <em class="structfield"><code><a name="GstVC1PicAdvanced.directmb"></a>directmb</code></em>;</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint8"><span class="type">guint8</span></a> <em class="structfield"><code><a name="GstVC1PicAdvanced.forwardmb"></a>forwardmb</code></em>;</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint8"><span class="type">guint8</span></a> <em class="structfield"><code><a name="GstVC1PicAdvanced.fieldtx"></a>fieldtx</code></em>;</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint8"><span class="type">guint8</span></a> <em class="structfield"><code><a name="GstVC1PicAdvanced.intcomp"></a>intcomp</code></em>;</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint8"><span class="type">guint8</span></a> <em class="structfield"><code><a name="GstVC1PicAdvanced.dmvrange"></a>dmvrange</code></em>;</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint8"><span class="type">guint8</span></a> <em class="structfield"><code><a name="GstVC1PicAdvanced.mbmodetab"></a>mbmodetab</code></em>;</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint8"><span class="type">guint8</span></a> <em class="structfield"><code><a name="GstVC1PicAdvanced.imvtab"></a>imvtab</code></em>;</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint8"><span class="type">guint8</span></a> <em class="structfield"><code><a name="GstVC1PicAdvanced.icbptab"></a>icbptab</code></em>;</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint8"><span class="type">guint8</span></a> <em class="structfield"><code><a name="GstVC1PicAdvanced.mvbptab2"></a>mvbptab2</code></em>;</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint8"><span class="type">guint8</span></a> <em class="structfield"><code><a name="GstVC1PicAdvanced.mvbptab4"></a>mvbptab4</code></em>;</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint8"><span class="type">guint8</span></a> <em class="structfield"><code><a name="GstVC1PicAdvanced.mvswitch4"></a>mvswitch4</code></em>;</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint16"><span class="type">guint16</span></a> <em class="structfield"><code><a name="GstVC1PicAdvanced.refdist"></a>refdist</code></em>;</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint8"><span class="type">guint8</span></a> <em class="structfield"><code><a name="GstVC1PicAdvanced.fptype"></a>fptype</code></em>;</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint8"><span class="type">guint8</span></a> <em class="structfield"><code><a name="GstVC1PicAdvanced.numref"></a>numref</code></em>;</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint8"><span class="type">guint8</span></a> <em class="structfield"><code><a name="GstVC1PicAdvanced.reffield"></a>reffield</code></em>;</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint8"><span class="type">guint8</span></a> <em class="structfield"><code><a name="GstVC1PicAdvanced.lumscale2"></a>lumscale2</code></em>;</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint8"><span class="type">guint8</span></a> <em class="structfield"><code><a name="GstVC1PicAdvanced.lumshift2"></a>lumshift2</code></em>;</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint8"><span class="type">guint8</span></a> <em class="structfield"><code><a name="GstVC1PicAdvanced.intcompfield"></a>intcompfield</code></em>;</p></td>
-<td> </td>
-<td> </td>
-</tr>
-</tbody>
-</table></div>
-</div>
</div>
<hr>
<div class="refsect2">
@@ -1692,108 +1095,6 @@
guint8 directmb; /* B pic main profile only */
};
</pre>
-<div class="refsect3">
-<a name="GstVC1PicSimpleMain.members"></a><h4>Members</h4>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="300px" class="struct_members_name">
-<col class="struct_members_description">
-<col width="200px" class="struct_members_annotations">
-</colgroup>
-<tbody>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint8"><span class="type">guint8</span></a> <em class="structfield"><code><a name="GstVC1PicSimpleMain.frmcnt"></a>frmcnt</code></em>;</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint8"><span class="type">guint8</span></a> <em class="structfield"><code><a name="GstVC1PicSimpleMain.mvrange"></a>mvrange</code></em>;</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint8"><span class="type">guint8</span></a> <em class="structfield"><code><a name="GstVC1PicSimpleMain.rangeredfrm"></a>rangeredfrm</code></em>;</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint8"><span class="type">guint8</span></a> <em class="structfield"><code><a name="GstVC1PicSimpleMain.respic"></a>respic</code></em>;</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint8"><span class="type">guint8</span></a> <em class="structfield"><code><a name="GstVC1PicSimpleMain.transacfrm2"></a>transacfrm2</code></em>;</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint8"><span class="type">guint8</span></a> <em class="structfield"><code><a name="GstVC1PicSimpleMain.bf"></a>bf</code></em>;</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint8"><span class="type">guint8</span></a> <em class="structfield"><code><a name="GstVC1PicSimpleMain.mvmode"></a>mvmode</code></em>;</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint8"><span class="type">guint8</span></a> <em class="structfield"><code><a name="GstVC1PicSimpleMain.mvtab"></a>mvtab</code></em>;</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint8"><span class="type">guint8</span></a> <em class="structfield"><code><a name="GstVC1PicSimpleMain.ttmbf"></a>ttmbf</code></em>;</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint8"><span class="type">guint8</span></a> <em class="structfield"><code><a name="GstVC1PicSimpleMain.mvmode2"></a>mvmode2</code></em>;</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint8"><span class="type">guint8</span></a> <em class="structfield"><code><a name="GstVC1PicSimpleMain.lumscale"></a>lumscale</code></em>;</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint8"><span class="type">guint8</span></a> <em class="structfield"><code><a name="GstVC1PicSimpleMain.lumshift"></a>lumshift</code></em>;</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint8"><span class="type">guint8</span></a> <em class="structfield"><code><a name="GstVC1PicSimpleMain.cbptab"></a>cbptab</code></em>;</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint8"><span class="type">guint8</span></a> <em class="structfield"><code><a name="GstVC1PicSimpleMain.ttfrm"></a>ttfrm</code></em>;</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint16"><span class="type">guint16</span></a> <em class="structfield"><code><a name="GstVC1PicSimpleMain.bfraction"></a>bfraction</code></em>;</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint8"><span class="type">guint8</span></a> <em class="structfield"><code><a name="GstVC1PicSimpleMain.mvtypemb"></a>mvtypemb</code></em>;</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint8"><span class="type">guint8</span></a> <em class="structfield"><code><a name="GstVC1PicSimpleMain.skipmb"></a>skipmb</code></em>;</p></td>
-<td> </td>
-<td> </td>
-</tr>
-<tr>
-<td class="struct_member_name"><p><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint8"><span class="type">guint8</span></a> <em class="structfield"><code><a name="GstVC1PicSimpleMain.directmb"></a>directmb</code></em>;</p></td>
-<td> </td>
-<td> </td>
-</tr>
-</tbody>
-</table></div>
-</div>
</div>
<hr>
<div class="refsect2">
@@ -1838,7 +1139,6 @@
guint8 * data;
};
</pre>
-<p>Structure that represents a Bitstream Data Unit.</p>
</div>
</div>
</div>
diff --git a/docs/libs/html/gstreamer-libs-hierarchy.html b/docs/libs/html/gstreamer-libs-hierarchy.html
index 0ddd4d9..0ded4c5 100644
--- a/docs/libs/html/gstreamer-libs-hierarchy.html
+++ b/docs/libs/html/gstreamer-libs-hierarchy.html
@@ -59,22 +59,22 @@
<span class="lineart">├──</span> <a class="link" href="gst-plugins-bad-libs-gstplayer.html#GstPlayerSignalDispatcher">GstPlayerSignalDispatcher</a>
<span class="lineart">╰──</span> <a class="link" href="gst-plugins-bad-libs-gstplayer.html#GstPlayerVideoRenderer">GstPlayerVideoRenderer</a>
<a href="https://developer.gnome.org/gobject/unstable/gobject-Boxed-Types.html">GBoxed</a>
- <span class="lineart">├──</span> <a class="link" href="gst-plugins-bad-libs-Base-MPEG-TS-sections.html#GstMpegtsSection">GstMpegtsSection</a>
- <span class="lineart">├──</span> <a class="link" href="gst-plugins-bad-libs-Base-MPEG-TS-descriptors.html#GstMpegtsDescriptor">GstMpegtsDescriptor</a>
+ <span class="lineart">├──</span> <a class="link" href="gst-plugins-bad-libs-gstmpegtssection.html#GstMpegtsSection">GstMpegtsSection</a>
+ <span class="lineart">├──</span> <a class="link" href="gst-plugins-bad-libs-gstmpegtsdescriptor.html#GstMpegtsDescriptor">GstMpegtsDescriptor</a>
<span class="lineart">╰──</span> <a class="link" href="gst-plugins-bad-libs-gstplayer-visualization.html#GstPlayerVisualization">GstPlayerVisualization</a>
<a href="https://developer.gnome.org/gobject/unstable/gobject-Enumeration-and-Flag-Types.html">GEnum</a>
- <span class="lineart">├──</span> <a class="link" href="gst-plugins-bad-libs-Base-MPEG-TS-sections.html#GstMpegtsSectionType" title="enum GstMpegtsSectionType">GstMpegtsSectionType</a>
- <span class="lineart">├──</span> <a class="link" href="gst-plugins-bad-libs-Base-MPEG-TS-sections.html#GstMpegtsSectionTableID" title="enum GstMpegtsSectionTableID">GstMpegtsSectionTableID</a>
- <span class="lineart">├──</span> <a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GstMpegtsCableOuterFECScheme" title="enum GstMpegtsCableOuterFECScheme">GstMpegtsCableOuterFECScheme</a>
- <span class="lineart">├──</span> <a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GstMpegtsModulationType" title="enum GstMpegtsModulationType">GstMpegtsModulationType</a>
- <span class="lineart">├──</span> <a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GstMpegtsSatellitePolarizationType" title="enum GstMpegtsSatellitePolarizationType">GstMpegtsSatellitePolarizationType</a>
- <span class="lineart">├──</span> <a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GstMpegtsSatelliteRolloff" title="enum GstMpegtsSatelliteRolloff">GstMpegtsSatelliteRolloff</a>
- <span class="lineart">├──</span> <a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GstMpegtsDVBCodeRate" title="enum GstMpegtsDVBCodeRate">GstMpegtsDVBCodeRate</a>
- <span class="lineart">├──</span> <a class="link" href="gst-plugins-bad-libs-Base-MPEG-TS-descriptors.html#GstMpegtsDescriptorType" title="enum GstMpegtsDescriptorType">GstMpegtsDescriptorType</a>
- <span class="lineart">├──</span> <a class="link" href="gst-plugins-bad-libs-Base-MPEG-TS-descriptors.html#GstMpegtsIso639AudioType" title="enum GstMpegtsIso639AudioType">GstMpegtsIso639AudioType</a>
- <span class="lineart">├──</span> <a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-sections.html#GstMpegtsRunningStatus" title="enum GstMpegtsRunningStatus">GstMpegtsRunningStatus</a>
- <span class="lineart">├──</span> <a class="link" href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html#GstMpegtsDVBServiceType" title="enum GstMpegtsDVBServiceType">GstMpegtsDVBServiceType</a>
- <span class="lineart">├──</span> <a class="link" href="gst-plugins-bad-libs-Base-MPEG-TS-sections.html#GstMpegtsStreamType" title="enum GstMpegtsStreamType">GstMpegtsStreamType</a>
+ <span class="lineart">├──</span> <a class="link" href="gst-plugins-bad-libs-gstmpegtssection.html#GstMpegtsSectionType" title="enum GstMpegtsSectionType">GstMpegtsSectionType</a>
+ <span class="lineart">├──</span> <a class="link" href="gst-plugins-bad-libs-gstmpegtssection.html#GstMpegtsSectionTableID" title="enum GstMpegtsSectionTableID">GstMpegtsSectionTableID</a>
+ <span class="lineart">├──</span> <a class="link" href="gst-plugins-bad-libs-gst-dvb-descriptor.html#GstMpegtsCableOuterFECScheme" title="enum GstMpegtsCableOuterFECScheme">GstMpegtsCableOuterFECScheme</a>
+ <span class="lineart">├──</span> <a class="link" href="gst-plugins-bad-libs-gst-dvb-descriptor.html#GstMpegtsModulationType" title="enum GstMpegtsModulationType">GstMpegtsModulationType</a>
+ <span class="lineart">├──</span> <a class="link" href="gst-plugins-bad-libs-gst-dvb-descriptor.html#GstMpegtsSatellitePolarizationType" title="enum GstMpegtsSatellitePolarizationType">GstMpegtsSatellitePolarizationType</a>
+ <span class="lineart">├──</span> <a class="link" href="gst-plugins-bad-libs-gst-dvb-descriptor.html#GstMpegtsSatelliteRolloff" title="enum GstMpegtsSatelliteRolloff">GstMpegtsSatelliteRolloff</a>
+ <span class="lineart">├──</span> <a class="link" href="gst-plugins-bad-libs-gst-dvb-descriptor.html#GstMpegtsDVBCodeRate" title="enum GstMpegtsDVBCodeRate">GstMpegtsDVBCodeRate</a>
+ <span class="lineart">├──</span> <a class="link" href="gst-plugins-bad-libs-gstmpegtsdescriptor.html#GstMpegtsDescriptorType" title="enum GstMpegtsDescriptorType">GstMpegtsDescriptorType</a>
+ <span class="lineart">├──</span> <a class="link" href="gst-plugins-bad-libs-gstmpegtsdescriptor.html#GstMpegtsIso639AudioType" title="enum GstMpegtsIso639AudioType">GstMpegtsIso639AudioType</a>
+ <span class="lineart">├──</span> <a class="link" href="gst-plugins-bad-libs-gst-dvb-section.html#GstMpegtsRunningStatus" title="enum GstMpegtsRunningStatus">GstMpegtsRunningStatus</a>
+ <span class="lineart">├──</span> <a class="link" href="gst-plugins-bad-libs-gst-dvb-descriptor.html#GstMpegtsDVBServiceType" title="enum GstMpegtsDVBServiceType">GstMpegtsDVBServiceType</a>
+ <span class="lineart">├──</span> <a class="link" href="gst-plugins-bad-libs-gstmpegtssection.html#GstMpegtsStreamType" title="enum GstMpegtsStreamType">GstMpegtsStreamType</a>
<span class="lineart">├──</span> <a class="link" href="gst-plugins-bad-libs-gstplayer.html#GstPlayerColorBalanceType" title="enum GstPlayerColorBalanceType">GstPlayerColorBalanceType</a>
<span class="lineart">├──</span> <a class="link" href="gst-plugins-bad-libs-gstplayer.html#GstPlayerError" title="enum GstPlayerError">GstPlayerError</a>
<span class="lineart">├──</span> <a class="link" href="gst-plugins-bad-libs-gstplayer.html#GstPlayerState" title="enum GstPlayerState">GstPlayerState</a>
diff --git a/docs/libs/html/gstreamer-plugins-bad.html b/docs/libs/html/gstreamer-plugins-bad.html
index cefe5f7..874b3fc 100644
--- a/docs/libs/html/gstreamer-plugins-bad.html
+++ b/docs/libs/html/gstreamer-plugins-bad.html
@@ -33,23 +33,19 @@
<dt><span class="chapter"><a href="codecparsers.html">Bitstream parsing Library</a></span></dt>
<dd><dl>
<dt>
-<span class="refentrytitle"><a href="gst-plugins-bad-libs-h264parser.html">h264parser</a></span><span class="refpurpose"> — Convenience library for h264 video
-bitstream parsing.</span>
+<span class="refentrytitle"><a href="gst-plugins-bad-libs-h264parser.html">h264parser</a></span><span class="refpurpose"></span>
</dt>
<dt>
-<span class="refentrytitle"><a href="gst-plugins-bad-libs-jpegparser.html">jpegparser</a></span><span class="refpurpose"> — Convenience library for JPEG bitstream parsing.</span>
+<span class="refentrytitle"><a href="gst-plugins-bad-libs-jpegparser.html">jpegparser</a></span><span class="refpurpose"></span>
</dt>
<dt>
-<span class="refentrytitle"><a href="gst-plugins-bad-libs-mpegvideoparser.html">mpegvideoparser</a></span><span class="refpurpose"> — Convenience library for mpeg1 and 2 video
-bitstream parsing.</span>
+<span class="refentrytitle"><a href="gst-plugins-bad-libs-mpegvideoparser.html">mpegvideoparser</a></span><span class="refpurpose"></span>
</dt>
<dt>
-<span class="refentrytitle"><a href="gst-plugins-bad-libs-mpeg4parser.html">mpeg4parser</a></span><span class="refpurpose"> — Convenience library for parsing mpeg4 part 2 video
-bitstream.</span>
+<span class="refentrytitle"><a href="gst-plugins-bad-libs-mpeg4parser.html">mpeg4parser</a></span><span class="refpurpose"></span>
</dt>
<dt>
-<span class="refentrytitle"><a href="gst-plugins-bad-libs-vc1parser.html">vc1parser</a></span><span class="refpurpose"> — Convenience library for parsing vc1 video
-bitstream.</span>
+<span class="refentrytitle"><a href="gst-plugins-bad-libs-vc1parser.html">vc1parser</a></span><span class="refpurpose"></span>
</dt>
<dt>
<span class="refentrytitle"><a href="gst-plugins-bad-libs-gstmpegvideometa.html">gstmpegvideometa</a></span><span class="refpurpose"></span>
@@ -58,39 +54,38 @@
<dt><span class="chapter"><a href="mpegts.html">Mpeg TS helper library</a></span></dt>
<dd><dl>
<dt>
-<span class="refentrytitle"><a href="gst-plugins-bad-libs-Mpeg-ts-helper-library.html">Mpeg-ts helper library</a></span><span class="refpurpose"> — Mpeg-ts helper library for plugins and applications</span>
+<span class="refentrytitle"><a href="gst-plugins-bad-libs-gstmpegts.html">gstmpegts</a></span><span class="refpurpose"></span>
</dt>
<dt>
-<span class="refentrytitle"><a href="gst-plugins-bad-libs-Base-MPEG-TS-sections.html">Base MPEG-TS sections</a></span><span class="refpurpose"> — Sections for ITU H.222.0 | ISO/IEC 13818-1</span>
+<span class="refentrytitle"><a href="gst-plugins-bad-libs-gstmpegtssection.html">gstmpegtssection</a></span><span class="refpurpose"></span>
</dt>
<dt>
-<span class="refentrytitle"><a href="gst-plugins-bad-libs-Base-MPEG-TS-descriptors.html">Base MPEG-TS descriptors</a></span><span class="refpurpose"> — Descriptors for ITU H.222.0 | ISO/IEC 13818-1</span>
+<span class="refentrytitle"><a href="gst-plugins-bad-libs-gstmpegtsdescriptor.html">gstmpegtsdescriptor</a></span><span class="refpurpose"></span>
</dt>
<dt>
-<span class="refentrytitle"><a href="gst-plugins-bad-libs-ATSC-variants-of-MPEG-TS-sections.html">ATSC variants of MPEG-TS sections</a></span><span class="refpurpose"> — Sections for the various ATSC specifications</span>
+<span class="refentrytitle"><a href="gst-plugins-bad-libs-gst-atsc-section.html">gst-atsc-section</a></span><span class="refpurpose"></span>
</dt>
<dt>
-<span class="refentrytitle"><a href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-sections.html">DVB variants of MPEG-TS sections</a></span><span class="refpurpose"> — Sections for the various DVB specifications</span>
+<span class="refentrytitle"><a href="gst-plugins-bad-libs-gst-dvb-section.html">gst-dvb-section</a></span><span class="refpurpose"></span>
</dt>
<dt>
-<span class="refentrytitle"><a href="gst-plugins-bad-libs-ATSC-variants-of-MPEG-TS-descriptors.html">ATSC variants of MPEG-TS descriptors</a></span><span class="refpurpose"> — Descriptors for the various ATSC specifications</span>
+<span class="refentrytitle"><a href="gst-plugins-bad-libs-gst-atsc-descriptor.html">gst-atsc-descriptor</a></span><span class="refpurpose"></span>
</dt>
<dt>
-<span class="refentrytitle"><a href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html">DVB variants of MPEG-TS descriptors</a></span><span class="refpurpose"> — Descriptors for the various DVB specifications</span>
+<span class="refentrytitle"><a href="gst-plugins-bad-libs-gst-dvb-descriptor.html">gst-dvb-descriptor</a></span><span class="refpurpose"></span>
</dt>
<dt>
-<span class="refentrytitle"><a href="gst-plugins-bad-libs-ISDB-variants-of-MPEG-TS-descriptors.html">ISDB variants of MPEG-TS descriptors</a></span><span class="refpurpose"> — Descriptors for the various ISDB specifications</span>
+<span class="refentrytitle"><a href="gst-plugins-bad-libs-gst-isdb-descriptor.html">gst-isdb-descriptor</a></span><span class="refpurpose"></span>
</dt>
</dl></dd>
<dt><span class="chapter"><a href="tools.html">Useful elements</a></span></dt>
<dd><dl><dt>
-<span class="refentrytitle"><a href="gst-plugins-bad-libs-GstInsertbin.html">GstInsertbin</a></span><span class="refpurpose"> — A <span class="type">GstBin</span> to insertally link filter-like elements.</span>
+<span class="refentrytitle"><a href="gst-plugins-bad-libs-GstInsertbin.html">GstInsertbin</a></span><span class="refpurpose"></span>
</dt></dl></dd>
<dt><span class="chapter"><a href="base.html">GStreamer Base classes from gst-plugins-bad</a></span></dt>
<dd><dl>
<dt>
-<span class="refentrytitle"><a href="gst-plugins-bad-libs-GstAggregator.html">GstAggregator</a></span><span class="refpurpose"> — manages a set of pads with the purpose of
-aggregating their buffers.</span>
+<span class="refentrytitle"><a href="gst-plugins-bad-libs-GstAggregator.html">GstAggregator</a></span><span class="refpurpose"></span>
</dt>
<dt>
<span class="refentrytitle"><a href="gst-plugins-bad-libs-GstAggregatorPad.html">GstAggregatorPad</a></span><span class="refpurpose"></span>
@@ -99,7 +94,7 @@
<dt><span class="chapter"><a href="video.html">Video helpers and baseclasses</a></span></dt>
<dd><dl>
<dt>
-<span class="refentrytitle"><a href="gst-plugins-bad-libs-GstVideoAggregator.html">GstVideoAggregator</a></span><span class="refpurpose"> — Base class for video aggregators</span>
+<span class="refentrytitle"><a href="gst-plugins-bad-libs-GstVideoAggregator.html">GstVideoAggregator</a></span><span class="refpurpose"></span>
</dt>
<dt>
<span class="refentrytitle"><a href="gst-plugins-bad-libs-GstVideoAggregatorPad.html">GstVideoAggregatorPad</a></span><span class="refpurpose"></span>
@@ -111,22 +106,22 @@
<span class="refentrytitle"><a href="gst-plugins-bad-libs-GstGLAPI.html">GstGLAPI</a></span><span class="refpurpose"></span>
</dt>
<dt>
-<span class="refentrytitle"><a href="gst-plugins-bad-libs-gstglbasememory.html">GstGLBaseMemory</a></span><span class="refpurpose"> — memory subclass for GL buffers</span>
+<span class="refentrytitle"><a href="gst-plugins-bad-libs-gstglbasememory.html">GstGLBaseMemory</a></span><span class="refpurpose"></span>
</dt>
<dt>
-<span class="refentrytitle"><a href="GstGLBaseFilter.html">GstGLBaseFilter</a></span><span class="refpurpose"> — <span class="type">GstBaseTransform</span> subclass for transformin OpenGL resources</span>
+<span class="refentrytitle"><a href="GstGLBaseFilter.html">GstGLBaseFilter</a></span><span class="refpurpose"></span>
</dt>
<dt>
-<span class="refentrytitle"><a href="gst-plugins-bad-libs-GstGLBuffer.html">GstGLBuffer</a></span><span class="refpurpose"> — memory subclass for GL buffers</span>
+<span class="refentrytitle"><a href="gst-plugins-bad-libs-GstGLBuffer.html">GstGLBuffer</a></span><span class="refpurpose"></span>
</dt>
<dt>
-<span class="refentrytitle"><a href="GstGLBufferPool.html">GstGLBufferPool</a></span><span class="refpurpose"> — buffer pool for <span class="type">GstGLMemory</span> objects</span>
+<span class="refentrytitle"><a href="GstGLBufferPool.html">GstGLBufferPool</a></span><span class="refpurpose"></span>
</dt>
<dt>
-<span class="refentrytitle"><a href="GstGLColorConvert.html">GstGLColorConvert</a></span><span class="refpurpose"> — an object that converts between color spaces/formats</span>
+<span class="refentrytitle"><a href="GstGLColorConvert.html">GstGLColorConvert</a></span><span class="refpurpose"></span>
</dt>
<dt>
-<span class="refentrytitle"><a href="GstGLContext.html">GstGLContext</a></span><span class="refpurpose"> — OpenGL context abstraction</span>
+<span class="refentrytitle"><a href="GstGLContext.html">GstGLContext</a></span><span class="refpurpose"></span>
</dt>
<dt>
<span class="refentrytitle"><a href="gst-plugins-bad-libs-GstGLContextCocoa.html">GstGLContextCocoa</a></span><span class="refpurpose"></span>
@@ -144,7 +139,7 @@
<span class="refentrytitle"><a href="gst-plugins-bad-libs-GstGLContextWGL.html">GstGLContextWGL</a></span><span class="refpurpose"></span>
</dt>
<dt>
-<span class="refentrytitle"><a href="GstGLDisplay.html">GstGLDisplay</a></span><span class="refpurpose"> — window system display connection abstraction</span>
+<span class="refentrytitle"><a href="GstGLDisplay.html">GstGLDisplay</a></span><span class="refpurpose"></span>
</dt>
<dt>
<span class="refentrytitle"><a href="gst-plugins-bad-libs-GstEGLImageMemory.html">GstEGLImageMemory</a></span><span class="refpurpose"></span>
@@ -156,28 +151,28 @@
<span class="refentrytitle"><a href="GstGLFramebuffer.html">GstGLFramebuffer</a></span><span class="refpurpose"></span>
</dt>
<dt>
-<span class="refentrytitle"><a href="gst-plugins-bad-libs-GstGLMemory.html">GstGLMemory</a></span><span class="refpurpose"> — memory subclass for GL textures</span>
+<span class="refentrytitle"><a href="gst-plugins-bad-libs-GstGLMemory.html">GstGLMemory</a></span><span class="refpurpose"></span>
</dt>
<dt>
-<span class="refentrytitle"><a href="gst-plugins-bad-libs-gstglmemorypbo.html">GstGLMemoryPBO</a></span><span class="refpurpose"> — memory subclass for GL textures</span>
+<span class="refentrytitle"><a href="gst-plugins-bad-libs-gstglmemorypbo.html">GstGLMemoryPBO</a></span><span class="refpurpose"></span>
</dt>
<dt>
-<span class="refentrytitle"><a href="GstGLShader.html">GstGLShader</a></span><span class="refpurpose"> — object representing an OpenGL shader program</span>
+<span class="refentrytitle"><a href="GstGLShader.html">GstGLShader</a></span><span class="refpurpose"></span>
</dt>
<dt>
-<span class="refentrytitle"><a href="gst-plugins-bad-libs-GstGLSL.html">GstGLSL</a></span><span class="refpurpose"> — helpers for dealing with OpenGL shaders</span>
+<span class="refentrytitle"><a href="gst-plugins-bad-libs-GstGLSL.html">GstGLSL</a></span><span class="refpurpose"></span>
</dt>
<dt>
-<span class="refentrytitle"><a href=".html">GstGLSLStage</a></span><span class="refpurpose"> — object for dealing with OpenGL shader stages</span>
+<span class="refentrytitle"><a href=".html"></a></span><span class="refpurpose"></span>
</dt>
<dt>
<span class="refentrytitle"><a href="gst-plugins-bad-libs-GstGLSyncMeta.html">GstGLSyncMeta</a></span><span class="refpurpose"></span>
</dt>
<dt>
-<span class="refentrytitle"><a href="GstGLUpload.html">GstGLUpload</a></span><span class="refpurpose"> — an object that uploads to GL textures</span>
+<span class="refentrytitle"><a href="GstGLUpload.html">GstGLUpload</a></span><span class="refpurpose"></span>
</dt>
<dt>
-<span class="refentrytitle"><a href="GstGLWindow.html">GstGLWindow</a></span><span class="refpurpose"> — window/surface abstraction</span>
+<span class="refentrytitle"><a href="GstGLWindow.html">GstGLWindow</a></span><span class="refpurpose"></span>
</dt>
<dt>
<span class="refentrytitle"><a href="gst-plugins-bad-libs-GstGLWindowAndroid.html">GstGLWindowAndroid</a></span><span class="refpurpose"></span>
@@ -198,7 +193,7 @@
<span class="refentrytitle"><a href="gst-plugins-bad-libs-GstGLWindowX11.html">GstGLWindowX11</a></span><span class="refpurpose"></span>
</dt>
<dt>
-<span class="refentrytitle"><a href="gst-plugins-bad-libs-OpenGL-debugging.html">OpenGL debugging</a></span><span class="refpurpose"> — helper routines for dealing with OpenGL debugging</span>
+<span class="refentrytitle"><a href="gst-plugins-bad-libs-gstgldebug.html">OpenGL Debugging</a></span><span class="refpurpose"></span>
</dt>
<dt>
<span class="refentrytitle"><a href="gst-plugins-bad-libs-OpenGL-Miscellaneous-Utilities.html">OpenGL Miscellaneous Utilities</a></span><span class="refpurpose"></span>
@@ -210,24 +205,24 @@
<dt><span class="chapter"><a href="player.html">Player Library</a></span></dt>
<dd><dl>
<dt>
-<span class="refentrytitle"><a href="gst-plugins-bad-libs-gstplayer.html">gstplayer</a></span><span class="refpurpose"> — Player</span>
+<span class="refentrytitle"><a href="gst-plugins-bad-libs-gstplayer.html">gstplayer</a></span><span class="refpurpose"></span>
</dt>
<dt>
-<span class="refentrytitle"><a href="gst-plugins-bad-libs-gstplayer-mediainfo.html">gstplayer-mediainfo</a></span><span class="refpurpose"> — Player Media Information</span>
+<span class="refentrytitle"><a href="gst-plugins-bad-libs-gstplayer-mediainfo.html">gstplayer-mediainfo</a></span><span class="refpurpose"></span>
</dt>
<dt>
-<span class="refentrytitle"><a href="gst-plugins-bad-libs-gstplayer-gmaincontextsignaldispatcher.html">gstplayer-gmaincontextsignaldispatcher</a></span><span class="refpurpose"> — Player GLib MainContext dispatcher</span>
+<span class="refentrytitle"><a href="gst-plugins-bad-libs-gstplayer-gmaincontextsignaldispatcher.html">gstplayer-gmaincontextsignaldispatcher</a></span><span class="refpurpose"></span>
</dt>
<dt>
-<span class="refentrytitle"><a href="gst-plugins-bad-libs-gstplayer-videooverlayvideorenderer.html">gstplayer-videooverlayvideorenderer</a></span><span class="refpurpose"> — Player Video Overlay Video Renderer</span>
+<span class="refentrytitle"><a href="gst-plugins-bad-libs-gstplayer-videooverlayvideorenderer.html">gstplayer-videooverlayvideorenderer</a></span><span class="refpurpose"></span>
</dt>
<dt>
-<span class="refentrytitle"><a href="gst-plugins-bad-libs-gstplayer-visualization.html">gstplayer-visualization</a></span><span class="refpurpose"> — Player Visualization</span>
+<span class="refentrytitle"><a href="gst-plugins-bad-libs-gstplayer-visualization.html">gstplayer-visualization</a></span><span class="refpurpose"></span>
</dt>
</dl></dd>
<dt><span class="chapter"><a href="ch08.html">Interfaces</a></span></dt>
<dd><dl><dt>
-<span class="refentrytitle"><a href="gst-plugins-bad-libs-GstPhotography.html">GstPhotography</a></span><span class="refpurpose"> — Interface for digital image capture elements</span>
+<span class="refentrytitle"><a href="gst-plugins-bad-libs-GstPhotography.html">GstPhotography</a></span><span class="refpurpose"></span>
</dt></dl></dd>
</dl>
</div>
diff --git a/docs/libs/html/index.html b/docs/libs/html/index.html
index b9e4e59..ff61318 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.8.2)
+ for GStreamer Bad Library 1.0 (1.9.1)
<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>
@@ -32,23 +32,19 @@
<dt><span class="chapter"><a href="codecparsers.html">Bitstream parsing Library</a></span></dt>
<dd><dl>
<dt>
-<span class="refentrytitle"><a href="gst-plugins-bad-libs-h264parser.html">h264parser</a></span><span class="refpurpose"> — Convenience library for h264 video
-bitstream parsing.</span>
+<span class="refentrytitle"><a href="gst-plugins-bad-libs-h264parser.html">h264parser</a></span><span class="refpurpose"></span>
</dt>
<dt>
-<span class="refentrytitle"><a href="gst-plugins-bad-libs-jpegparser.html">jpegparser</a></span><span class="refpurpose"> — Convenience library for JPEG bitstream parsing.</span>
+<span class="refentrytitle"><a href="gst-plugins-bad-libs-jpegparser.html">jpegparser</a></span><span class="refpurpose"></span>
</dt>
<dt>
-<span class="refentrytitle"><a href="gst-plugins-bad-libs-mpegvideoparser.html">mpegvideoparser</a></span><span class="refpurpose"> — Convenience library for mpeg1 and 2 video
-bitstream parsing.</span>
+<span class="refentrytitle"><a href="gst-plugins-bad-libs-mpegvideoparser.html">mpegvideoparser</a></span><span class="refpurpose"></span>
</dt>
<dt>
-<span class="refentrytitle"><a href="gst-plugins-bad-libs-mpeg4parser.html">mpeg4parser</a></span><span class="refpurpose"> — Convenience library for parsing mpeg4 part 2 video
-bitstream.</span>
+<span class="refentrytitle"><a href="gst-plugins-bad-libs-mpeg4parser.html">mpeg4parser</a></span><span class="refpurpose"></span>
</dt>
<dt>
-<span class="refentrytitle"><a href="gst-plugins-bad-libs-vc1parser.html">vc1parser</a></span><span class="refpurpose"> — Convenience library for parsing vc1 video
-bitstream.</span>
+<span class="refentrytitle"><a href="gst-plugins-bad-libs-vc1parser.html">vc1parser</a></span><span class="refpurpose"></span>
</dt>
<dt>
<span class="refentrytitle"><a href="gst-plugins-bad-libs-gstmpegvideometa.html">gstmpegvideometa</a></span><span class="refpurpose"></span>
@@ -57,39 +53,38 @@
<dt><span class="chapter"><a href="mpegts.html">Mpeg TS helper library</a></span></dt>
<dd><dl>
<dt>
-<span class="refentrytitle"><a href="gst-plugins-bad-libs-Mpeg-ts-helper-library.html">Mpeg-ts helper library</a></span><span class="refpurpose"> — Mpeg-ts helper library for plugins and applications</span>
+<span class="refentrytitle"><a href="gst-plugins-bad-libs-gstmpegts.html">gstmpegts</a></span><span class="refpurpose"></span>
</dt>
<dt>
-<span class="refentrytitle"><a href="gst-plugins-bad-libs-Base-MPEG-TS-sections.html">Base MPEG-TS sections</a></span><span class="refpurpose"> — Sections for ITU H.222.0 | ISO/IEC 13818-1</span>
+<span class="refentrytitle"><a href="gst-plugins-bad-libs-gstmpegtssection.html">gstmpegtssection</a></span><span class="refpurpose"></span>
</dt>
<dt>
-<span class="refentrytitle"><a href="gst-plugins-bad-libs-Base-MPEG-TS-descriptors.html">Base MPEG-TS descriptors</a></span><span class="refpurpose"> — Descriptors for ITU H.222.0 | ISO/IEC 13818-1</span>
+<span class="refentrytitle"><a href="gst-plugins-bad-libs-gstmpegtsdescriptor.html">gstmpegtsdescriptor</a></span><span class="refpurpose"></span>
</dt>
<dt>
-<span class="refentrytitle"><a href="gst-plugins-bad-libs-ATSC-variants-of-MPEG-TS-sections.html">ATSC variants of MPEG-TS sections</a></span><span class="refpurpose"> — Sections for the various ATSC specifications</span>
+<span class="refentrytitle"><a href="gst-plugins-bad-libs-gst-atsc-section.html">gst-atsc-section</a></span><span class="refpurpose"></span>
</dt>
<dt>
-<span class="refentrytitle"><a href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-sections.html">DVB variants of MPEG-TS sections</a></span><span class="refpurpose"> — Sections for the various DVB specifications</span>
+<span class="refentrytitle"><a href="gst-plugins-bad-libs-gst-dvb-section.html">gst-dvb-section</a></span><span class="refpurpose"></span>
</dt>
<dt>
-<span class="refentrytitle"><a href="gst-plugins-bad-libs-ATSC-variants-of-MPEG-TS-descriptors.html">ATSC variants of MPEG-TS descriptors</a></span><span class="refpurpose"> — Descriptors for the various ATSC specifications</span>
+<span class="refentrytitle"><a href="gst-plugins-bad-libs-gst-atsc-descriptor.html">gst-atsc-descriptor</a></span><span class="refpurpose"></span>
</dt>
<dt>
-<span class="refentrytitle"><a href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html">DVB variants of MPEG-TS descriptors</a></span><span class="refpurpose"> — Descriptors for the various DVB specifications</span>
+<span class="refentrytitle"><a href="gst-plugins-bad-libs-gst-dvb-descriptor.html">gst-dvb-descriptor</a></span><span class="refpurpose"></span>
</dt>
<dt>
-<span class="refentrytitle"><a href="gst-plugins-bad-libs-ISDB-variants-of-MPEG-TS-descriptors.html">ISDB variants of MPEG-TS descriptors</a></span><span class="refpurpose"> — Descriptors for the various ISDB specifications</span>
+<span class="refentrytitle"><a href="gst-plugins-bad-libs-gst-isdb-descriptor.html">gst-isdb-descriptor</a></span><span class="refpurpose"></span>
</dt>
</dl></dd>
<dt><span class="chapter"><a href="tools.html">Useful elements</a></span></dt>
<dd><dl><dt>
-<span class="refentrytitle"><a href="gst-plugins-bad-libs-GstInsertbin.html">GstInsertbin</a></span><span class="refpurpose"> — A <span class="type">GstBin</span> to insertally link filter-like elements.</span>
+<span class="refentrytitle"><a href="gst-plugins-bad-libs-GstInsertbin.html">GstInsertbin</a></span><span class="refpurpose"></span>
</dt></dl></dd>
<dt><span class="chapter"><a href="base.html">GStreamer Base classes from gst-plugins-bad</a></span></dt>
<dd><dl>
<dt>
-<span class="refentrytitle"><a href="gst-plugins-bad-libs-GstAggregator.html">GstAggregator</a></span><span class="refpurpose"> — manages a set of pads with the purpose of
-aggregating their buffers.</span>
+<span class="refentrytitle"><a href="gst-plugins-bad-libs-GstAggregator.html">GstAggregator</a></span><span class="refpurpose"></span>
</dt>
<dt>
<span class="refentrytitle"><a href="gst-plugins-bad-libs-GstAggregatorPad.html">GstAggregatorPad</a></span><span class="refpurpose"></span>
@@ -98,7 +93,7 @@
<dt><span class="chapter"><a href="video.html">Video helpers and baseclasses</a></span></dt>
<dd><dl>
<dt>
-<span class="refentrytitle"><a href="gst-plugins-bad-libs-GstVideoAggregator.html">GstVideoAggregator</a></span><span class="refpurpose"> — Base class for video aggregators</span>
+<span class="refentrytitle"><a href="gst-plugins-bad-libs-GstVideoAggregator.html">GstVideoAggregator</a></span><span class="refpurpose"></span>
</dt>
<dt>
<span class="refentrytitle"><a href="gst-plugins-bad-libs-GstVideoAggregatorPad.html">GstVideoAggregatorPad</a></span><span class="refpurpose"></span>
@@ -110,22 +105,22 @@
<span class="refentrytitle"><a href="gst-plugins-bad-libs-GstGLAPI.html">GstGLAPI</a></span><span class="refpurpose"></span>
</dt>
<dt>
-<span class="refentrytitle"><a href="gst-plugins-bad-libs-gstglbasememory.html">GstGLBaseMemory</a></span><span class="refpurpose"> — memory subclass for GL buffers</span>
+<span class="refentrytitle"><a href="gst-plugins-bad-libs-gstglbasememory.html">GstGLBaseMemory</a></span><span class="refpurpose"></span>
</dt>
<dt>
-<span class="refentrytitle"><a href="GstGLBaseFilter.html">GstGLBaseFilter</a></span><span class="refpurpose"> — <span class="type">GstBaseTransform</span> subclass for transformin OpenGL resources</span>
+<span class="refentrytitle"><a href="GstGLBaseFilter.html">GstGLBaseFilter</a></span><span class="refpurpose"></span>
</dt>
<dt>
-<span class="refentrytitle"><a href="gst-plugins-bad-libs-GstGLBuffer.html">GstGLBuffer</a></span><span class="refpurpose"> — memory subclass for GL buffers</span>
+<span class="refentrytitle"><a href="gst-plugins-bad-libs-GstGLBuffer.html">GstGLBuffer</a></span><span class="refpurpose"></span>
</dt>
<dt>
-<span class="refentrytitle"><a href="GstGLBufferPool.html">GstGLBufferPool</a></span><span class="refpurpose"> — buffer pool for <span class="type">GstGLMemory</span> objects</span>
+<span class="refentrytitle"><a href="GstGLBufferPool.html">GstGLBufferPool</a></span><span class="refpurpose"></span>
</dt>
<dt>
-<span class="refentrytitle"><a href="GstGLColorConvert.html">GstGLColorConvert</a></span><span class="refpurpose"> — an object that converts between color spaces/formats</span>
+<span class="refentrytitle"><a href="GstGLColorConvert.html">GstGLColorConvert</a></span><span class="refpurpose"></span>
</dt>
<dt>
-<span class="refentrytitle"><a href="GstGLContext.html">GstGLContext</a></span><span class="refpurpose"> — OpenGL context abstraction</span>
+<span class="refentrytitle"><a href="GstGLContext.html">GstGLContext</a></span><span class="refpurpose"></span>
</dt>
<dt>
<span class="refentrytitle"><a href="gst-plugins-bad-libs-GstGLContextCocoa.html">GstGLContextCocoa</a></span><span class="refpurpose"></span>
@@ -143,7 +138,7 @@
<span class="refentrytitle"><a href="gst-plugins-bad-libs-GstGLContextWGL.html">GstGLContextWGL</a></span><span class="refpurpose"></span>
</dt>
<dt>
-<span class="refentrytitle"><a href="GstGLDisplay.html">GstGLDisplay</a></span><span class="refpurpose"> — window system display connection abstraction</span>
+<span class="refentrytitle"><a href="GstGLDisplay.html">GstGLDisplay</a></span><span class="refpurpose"></span>
</dt>
<dt>
<span class="refentrytitle"><a href="gst-plugins-bad-libs-GstEGLImageMemory.html">GstEGLImageMemory</a></span><span class="refpurpose"></span>
@@ -155,28 +150,28 @@
<span class="refentrytitle"><a href="GstGLFramebuffer.html">GstGLFramebuffer</a></span><span class="refpurpose"></span>
</dt>
<dt>
-<span class="refentrytitle"><a href="gst-plugins-bad-libs-GstGLMemory.html">GstGLMemory</a></span><span class="refpurpose"> — memory subclass for GL textures</span>
+<span class="refentrytitle"><a href="gst-plugins-bad-libs-GstGLMemory.html">GstGLMemory</a></span><span class="refpurpose"></span>
</dt>
<dt>
-<span class="refentrytitle"><a href="gst-plugins-bad-libs-gstglmemorypbo.html">GstGLMemoryPBO</a></span><span class="refpurpose"> — memory subclass for GL textures</span>
+<span class="refentrytitle"><a href="gst-plugins-bad-libs-gstglmemorypbo.html">GstGLMemoryPBO</a></span><span class="refpurpose"></span>
</dt>
<dt>
-<span class="refentrytitle"><a href="GstGLShader.html">GstGLShader</a></span><span class="refpurpose"> — object representing an OpenGL shader program</span>
+<span class="refentrytitle"><a href="GstGLShader.html">GstGLShader</a></span><span class="refpurpose"></span>
</dt>
<dt>
-<span class="refentrytitle"><a href="gst-plugins-bad-libs-GstGLSL.html">GstGLSL</a></span><span class="refpurpose"> — helpers for dealing with OpenGL shaders</span>
+<span class="refentrytitle"><a href="gst-plugins-bad-libs-GstGLSL.html">GstGLSL</a></span><span class="refpurpose"></span>
</dt>
<dt>
-<span class="refentrytitle"><a href=".html">GstGLSLStage</a></span><span class="refpurpose"> — object for dealing with OpenGL shader stages</span>
+<span class="refentrytitle"><a href=".html"></a></span><span class="refpurpose"></span>
</dt>
<dt>
<span class="refentrytitle"><a href="gst-plugins-bad-libs-GstGLSyncMeta.html">GstGLSyncMeta</a></span><span class="refpurpose"></span>
</dt>
<dt>
-<span class="refentrytitle"><a href="GstGLUpload.html">GstGLUpload</a></span><span class="refpurpose"> — an object that uploads to GL textures</span>
+<span class="refentrytitle"><a href="GstGLUpload.html">GstGLUpload</a></span><span class="refpurpose"></span>
</dt>
<dt>
-<span class="refentrytitle"><a href="GstGLWindow.html">GstGLWindow</a></span><span class="refpurpose"> — window/surface abstraction</span>
+<span class="refentrytitle"><a href="GstGLWindow.html">GstGLWindow</a></span><span class="refpurpose"></span>
</dt>
<dt>
<span class="refentrytitle"><a href="gst-plugins-bad-libs-GstGLWindowAndroid.html">GstGLWindowAndroid</a></span><span class="refpurpose"></span>
@@ -197,7 +192,7 @@
<span class="refentrytitle"><a href="gst-plugins-bad-libs-GstGLWindowX11.html">GstGLWindowX11</a></span><span class="refpurpose"></span>
</dt>
<dt>
-<span class="refentrytitle"><a href="gst-plugins-bad-libs-OpenGL-debugging.html">OpenGL debugging</a></span><span class="refpurpose"> — helper routines for dealing with OpenGL debugging</span>
+<span class="refentrytitle"><a href="gst-plugins-bad-libs-gstgldebug.html">OpenGL Debugging</a></span><span class="refpurpose"></span>
</dt>
<dt>
<span class="refentrytitle"><a href="gst-plugins-bad-libs-OpenGL-Miscellaneous-Utilities.html">OpenGL Miscellaneous Utilities</a></span><span class="refpurpose"></span>
@@ -209,30 +204,29 @@
<dt><span class="chapter"><a href="player.html">Player Library</a></span></dt>
<dd><dl>
<dt>
-<span class="refentrytitle"><a href="gst-plugins-bad-libs-gstplayer.html">gstplayer</a></span><span class="refpurpose"> — Player</span>
+<span class="refentrytitle"><a href="gst-plugins-bad-libs-gstplayer.html">gstplayer</a></span><span class="refpurpose"></span>
</dt>
<dt>
-<span class="refentrytitle"><a href="gst-plugins-bad-libs-gstplayer-mediainfo.html">gstplayer-mediainfo</a></span><span class="refpurpose"> — Player Media Information</span>
+<span class="refentrytitle"><a href="gst-plugins-bad-libs-gstplayer-mediainfo.html">gstplayer-mediainfo</a></span><span class="refpurpose"></span>
</dt>
<dt>
-<span class="refentrytitle"><a href="gst-plugins-bad-libs-gstplayer-gmaincontextsignaldispatcher.html">gstplayer-gmaincontextsignaldispatcher</a></span><span class="refpurpose"> — Player GLib MainContext dispatcher</span>
+<span class="refentrytitle"><a href="gst-plugins-bad-libs-gstplayer-gmaincontextsignaldispatcher.html">gstplayer-gmaincontextsignaldispatcher</a></span><span class="refpurpose"></span>
</dt>
<dt>
-<span class="refentrytitle"><a href="gst-plugins-bad-libs-gstplayer-videooverlayvideorenderer.html">gstplayer-videooverlayvideorenderer</a></span><span class="refpurpose"> — Player Video Overlay Video Renderer</span>
+<span class="refentrytitle"><a href="gst-plugins-bad-libs-gstplayer-videooverlayvideorenderer.html">gstplayer-videooverlayvideorenderer</a></span><span class="refpurpose"></span>
</dt>
<dt>
-<span class="refentrytitle"><a href="gst-plugins-bad-libs-gstplayer-visualization.html">gstplayer-visualization</a></span><span class="refpurpose"> — Player Visualization</span>
+<span class="refentrytitle"><a href="gst-plugins-bad-libs-gstplayer-visualization.html">gstplayer-visualization</a></span><span class="refpurpose"></span>
</dt>
</dl></dd>
<dt><span class="chapter"><a href="ch08.html">Interfaces</a></span></dt>
<dd><dl><dt>
-<span class="refentrytitle"><a href="gst-plugins-bad-libs-GstPhotography.html">GstPhotography</a></span><span class="refpurpose"> — Interface for digital image capture elements</span>
+<span class="refentrytitle"><a href="gst-plugins-bad-libs-GstPhotography.html">GstPhotography</a></span><span class="refpurpose"></span>
</dt></dl></dd>
</dl></dd>
<dt><span class="part"><a href="gstreamer-libs-hierarchy.html">II. Object Hierarchy</a></span></dt>
<dt><span class="index"><a href="api-index-full.html">Index</a></span></dt>
<dt><span class="index"><a href="api-index-deprecated.html">Index of deprecated API</a></span></dt>
-<dt><span class="glossary"><a href="annotation-glossary.html">Annotation Glossary</a></span></dt>
</dl></div>
</div>
<div class="footer">
diff --git a/docs/libs/html/mpegts.html b/docs/libs/html/mpegts.html
index 3850144..b91dcb7 100644
--- a/docs/libs/html/mpegts.html
+++ b/docs/libs/html/mpegts.html
@@ -7,7 +7,7 @@
<link rel="home" href="index.html" title="GStreamer Bad Plugins 1.0 Library Reference Manual">
<link rel="up" href="gstreamer-plugins-bad.html" title="Part I. GStreamer Bad Plugins Libraries">
<link rel="prev" href="gst-plugins-bad-libs-gstmpegvideometa.html" title="gstmpegvideometa">
-<link rel="next" href="gst-plugins-bad-libs-Mpeg-ts-helper-library.html" title="Mpeg-ts helper library">
+<link rel="next" href="gst-plugins-bad-libs-gstmpegts.html" title="gstmpegts">
<meta name="generator" content="GTK-Doc V1.25 (XML mode)">
<link rel="stylesheet" href="style.css" type="text/css">
</head>
@@ -17,35 +17,35 @@
<td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
<td><a accesskey="u" href="gstreamer-plugins-bad.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
<td><a accesskey="p" href="gst-plugins-bad-libs-gstmpegvideometa.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
-<td><a accesskey="n" href="gst-plugins-bad-libs-Mpeg-ts-helper-library.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
+<td><a accesskey="n" href="gst-plugins-bad-libs-gstmpegts.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
</tr></table>
<div class="chapter">
<div class="titlepage"><div><div><h2 class="title">
<a name="mpegts"></a>Mpeg TS helper library</h2></div></div></div>
<div class="toc"><dl class="toc">
<dt>
-<span class="refentrytitle"><a href="gst-plugins-bad-libs-Mpeg-ts-helper-library.html">Mpeg-ts helper library</a></span><span class="refpurpose"> — Mpeg-ts helper library for plugins and applications</span>
+<span class="refentrytitle"><a href="gst-plugins-bad-libs-gstmpegts.html">gstmpegts</a></span><span class="refpurpose"></span>
</dt>
<dt>
-<span class="refentrytitle"><a href="gst-plugins-bad-libs-Base-MPEG-TS-sections.html">Base MPEG-TS sections</a></span><span class="refpurpose"> — Sections for ITU H.222.0 | ISO/IEC 13818-1</span>
+<span class="refentrytitle"><a href="gst-plugins-bad-libs-gstmpegtssection.html">gstmpegtssection</a></span><span class="refpurpose"></span>
</dt>
<dt>
-<span class="refentrytitle"><a href="gst-plugins-bad-libs-Base-MPEG-TS-descriptors.html">Base MPEG-TS descriptors</a></span><span class="refpurpose"> — Descriptors for ITU H.222.0 | ISO/IEC 13818-1</span>
+<span class="refentrytitle"><a href="gst-plugins-bad-libs-gstmpegtsdescriptor.html">gstmpegtsdescriptor</a></span><span class="refpurpose"></span>
</dt>
<dt>
-<span class="refentrytitle"><a href="gst-plugins-bad-libs-ATSC-variants-of-MPEG-TS-sections.html">ATSC variants of MPEG-TS sections</a></span><span class="refpurpose"> — Sections for the various ATSC specifications</span>
+<span class="refentrytitle"><a href="gst-plugins-bad-libs-gst-atsc-section.html">gst-atsc-section</a></span><span class="refpurpose"></span>
</dt>
<dt>
-<span class="refentrytitle"><a href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-sections.html">DVB variants of MPEG-TS sections</a></span><span class="refpurpose"> — Sections for the various DVB specifications</span>
+<span class="refentrytitle"><a href="gst-plugins-bad-libs-gst-dvb-section.html">gst-dvb-section</a></span><span class="refpurpose"></span>
</dt>
<dt>
-<span class="refentrytitle"><a href="gst-plugins-bad-libs-ATSC-variants-of-MPEG-TS-descriptors.html">ATSC variants of MPEG-TS descriptors</a></span><span class="refpurpose"> — Descriptors for the various ATSC specifications</span>
+<span class="refentrytitle"><a href="gst-plugins-bad-libs-gst-atsc-descriptor.html">gst-atsc-descriptor</a></span><span class="refpurpose"></span>
</dt>
<dt>
-<span class="refentrytitle"><a href="gst-plugins-bad-libs-DVB-variants-of-MPEG-TS-descriptors.html">DVB variants of MPEG-TS descriptors</a></span><span class="refpurpose"> — Descriptors for the various DVB specifications</span>
+<span class="refentrytitle"><a href="gst-plugins-bad-libs-gst-dvb-descriptor.html">gst-dvb-descriptor</a></span><span class="refpurpose"></span>
</dt>
<dt>
-<span class="refentrytitle"><a href="gst-plugins-bad-libs-ISDB-variants-of-MPEG-TS-descriptors.html">ISDB variants of MPEG-TS descriptors</a></span><span class="refpurpose"> — Descriptors for the various ISDB specifications</span>
+<span class="refentrytitle"><a href="gst-plugins-bad-libs-gst-isdb-descriptor.html">gst-isdb-descriptor</a></span><span class="refpurpose"></span>
</dt>
</dl></div>
<p>
diff --git a/docs/libs/html/player.html b/docs/libs/html/player.html
index 8835c9b..bf84f65 100644
--- a/docs/libs/html/player.html
+++ b/docs/libs/html/player.html
@@ -24,19 +24,19 @@
<a name="player"></a>Player Library</h2></div></div></div>
<div class="toc"><dl class="toc">
<dt>
-<span class="refentrytitle"><a href="gst-plugins-bad-libs-gstplayer.html">gstplayer</a></span><span class="refpurpose"> — Player</span>
+<span class="refentrytitle"><a href="gst-plugins-bad-libs-gstplayer.html">gstplayer</a></span><span class="refpurpose"></span>
</dt>
<dt>
-<span class="refentrytitle"><a href="gst-plugins-bad-libs-gstplayer-mediainfo.html">gstplayer-mediainfo</a></span><span class="refpurpose"> — Player Media Information</span>
+<span class="refentrytitle"><a href="gst-plugins-bad-libs-gstplayer-mediainfo.html">gstplayer-mediainfo</a></span><span class="refpurpose"></span>
</dt>
<dt>
-<span class="refentrytitle"><a href="gst-plugins-bad-libs-gstplayer-gmaincontextsignaldispatcher.html">gstplayer-gmaincontextsignaldispatcher</a></span><span class="refpurpose"> — Player GLib MainContext dispatcher</span>
+<span class="refentrytitle"><a href="gst-plugins-bad-libs-gstplayer-gmaincontextsignaldispatcher.html">gstplayer-gmaincontextsignaldispatcher</a></span><span class="refpurpose"></span>
</dt>
<dt>
-<span class="refentrytitle"><a href="gst-plugins-bad-libs-gstplayer-videooverlayvideorenderer.html">gstplayer-videooverlayvideorenderer</a></span><span class="refpurpose"> — Player Video Overlay Video Renderer</span>
+<span class="refentrytitle"><a href="gst-plugins-bad-libs-gstplayer-videooverlayvideorenderer.html">gstplayer-videooverlayvideorenderer</a></span><span class="refpurpose"></span>
</dt>
<dt>
-<span class="refentrytitle"><a href="gst-plugins-bad-libs-gstplayer-visualization.html">gstplayer-visualization</a></span><span class="refpurpose"> — Player Visualization</span>
+<span class="refentrytitle"><a href="gst-plugins-bad-libs-gstplayer-visualization.html">gstplayer-visualization</a></span><span class="refpurpose"></span>
</dt>
</dl></div>
</div>
diff --git a/docs/libs/html/tools.html b/docs/libs/html/tools.html
index f47790c..075787c 100644
--- a/docs/libs/html/tools.html
+++ b/docs/libs/html/tools.html
@@ -6,7 +6,7 @@
<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
<link rel="home" href="index.html" title="GStreamer Bad Plugins 1.0 Library Reference Manual">
<link rel="up" href="gstreamer-plugins-bad.html" title="Part I. GStreamer Bad Plugins Libraries">
-<link rel="prev" href="gst-plugins-bad-libs-ISDB-variants-of-MPEG-TS-descriptors.html" title="ISDB variants of MPEG-TS descriptors">
+<link rel="prev" href="gst-plugins-bad-libs-gst-isdb-descriptor.html" title="gst-isdb-descriptor">
<link rel="next" href="gst-plugins-bad-libs-GstInsertbin.html" title="GstInsertbin">
<meta name="generator" content="GTK-Doc V1.25 (XML mode)">
<link rel="stylesheet" href="style.css" type="text/css">
@@ -16,14 +16,14 @@
<td width="100%" align="left" class="shortcuts"></td>
<td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
<td><a accesskey="u" href="gstreamer-plugins-bad.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
-<td><a accesskey="p" href="gst-plugins-bad-libs-ISDB-variants-of-MPEG-TS-descriptors.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
+<td><a accesskey="p" href="gst-plugins-bad-libs-gst-isdb-descriptor.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
<td><a accesskey="n" href="gst-plugins-bad-libs-GstInsertbin.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
</tr></table>
<div class="chapter">
<div class="titlepage"><div><div><h2 class="title">
<a name="tools"></a>Useful elements</h2></div></div></div>
<div class="toc"><dl class="toc"><dt>
-<span class="refentrytitle"><a href="gst-plugins-bad-libs-GstInsertbin.html">GstInsertbin</a></span><span class="refpurpose"> — A <span class="type">GstBin</span> to insertally link filter-like elements.</span>
+<span class="refentrytitle"><a href="gst-plugins-bad-libs-GstInsertbin.html">GstInsertbin</a></span><span class="refpurpose"></span>
</dt></dl></div>
</div>
<div class="footer">
diff --git a/docs/libs/html/video.html b/docs/libs/html/video.html
index 2d591f4..fc428a7 100644
--- a/docs/libs/html/video.html
+++ b/docs/libs/html/video.html
@@ -24,7 +24,7 @@
<a name="video"></a>Video helpers and baseclasses</h2></div></div></div>
<div class="toc"><dl class="toc">
<dt>
-<span class="refentrytitle"><a href="gst-plugins-bad-libs-GstVideoAggregator.html">GstVideoAggregator</a></span><span class="refpurpose"> — Base class for video aggregators</span>
+<span class="refentrytitle"><a href="gst-plugins-bad-libs-GstVideoAggregator.html">GstVideoAggregator</a></span><span class="refpurpose"></span>
</dt>
<dt>
<span class="refentrytitle"><a href="gst-plugins-bad-libs-GstVideoAggregatorPad.html">GstVideoAggregatorPad</a></span><span class="refpurpose"></span>
diff --git a/docs/plugins/Makefile.am b/docs/plugins/Makefile.am
index 7607b55..0dc14f8 100644
--- a/docs/plugins/Makefile.am
+++ b/docs/plugins/Makefile.am
@@ -25,7 +25,7 @@
SCAN_OPTIONS=
# Extra options to supply to gtkdoc-mkdb.
-MKDB_OPTIONS=--sgml-mode --source-suffixes=c,h,cc,m
+MKDB_OPTIONS=--sgml-mode --source-suffixes=c,h,cc,cpp,m
# Extra options to supply to gtkdoc-fixref.
FIXXREF_OPTIONS=--extra-dir=$(GLIB_PREFIX)/share/gtk-doc/html \
@@ -38,7 +38,8 @@
$(top_srcdir)/ext/*/*.hh
CFILE_GLOB= \
$(top_srcdir)/gst/*/*.c $(top_srcdir)/ext/*/*.c $(top_srcdir)/sys/*/*.c \
- $(top_srcdir)/ext/*/*.cc $(top_srcdir)/sys/*/*.m
+ $(top_srcdir)/ext/*/*.cc $(top_srcdir)/ext/*/*.cpp $(top_srcdir)/sys/*/*.cpp \
+ $(top_srcdir)/ext/*/*.m $(top_srcdir)/sys/*/*.m
# Header files to ignore when scanning.
IGNORE_HFILES =
@@ -69,7 +70,7 @@
$(top_srcdir)/ext/curl/gstcurlhttpsink.h \
$(top_srcdir)/ext/curl/gstcurlsmtpsink.h \
$(top_srcdir)/ext/curl/gstcurltlssink.h \
- $(top_srcdir)/ext/dc1394/gstdc1394.h \
+ $(top_srcdir)/ext/dc1394/gstdc1394src.h \
$(top_srcdir)/ext/directfb/dfbvideosink.h \
$(top_srcdir)/ext/dts/gstdtsdec.h \
$(top_srcdir)/ext/faac/gstfaac.h \
@@ -94,12 +95,13 @@
$(top_srcdir)/ext/opencv/gstedgedetect.h \
$(top_srcdir)/ext/opencv/gstfaceblur.h \
$(top_srcdir)/ext/opencv/gstfacedetect.h \
- $(top_srcdir)/ext/opencv/gstpyramidsegment.h \
$(top_srcdir)/ext/opencv/gsttemplatematch.h \
$(top_srcdir)/ext/opencv/gsttextoverlay.h \
$(top_srcdir)/ext/openni2/gstopenni2src.h \
$(top_srcdir)/ext/rsvg/gstrsvgdec.h \
$(top_srcdir)/ext/rsvg/gstrsvgoverlay.h \
+ $(top_srcdir)/ext/rtmp/gstrtmpsrc.h \
+ $(top_srcdir)/ext/rtmp/gstrtmpsink.h \
$(top_srcdir)/ext/spandsp/gstspanplc.h \
$(top_srcdir)/ext/spandsp/gstdtmfdetect.h \
$(top_srcdir)/ext/sdl/sdlaudiosink.h \
@@ -108,6 +110,8 @@
$(top_srcdir)/ext/timidity/gstwildmidi.h \
$(top_srcdir)/ext/voaacenc/gstvoaacenc.h \
$(top_srcdir)/ext/voamrwbenc/gstvoamrwbenc.h \
+ $(top_srcdir)/ext/webrtcdsp/gstwebrtcdsp.h \
+ $(top_srcdir)/ext/webrtcdsp/gstwebrtcechoprobe.h \
$(top_srcdir)/ext/zbar/gstzbar.h \
$(top_srcdir)/gst/aiff/aiffparse.h \
$(top_srcdir)/gst/aiff/aiffmux.h \
@@ -150,6 +154,8 @@
$(top_srcdir)/gst/geometrictransform/gstwaterripple.h \
$(top_srcdir)/gst/ivfparse/gstivfparse.h \
$(top_srcdir)/gst/jpegformat/gstjpegparse.h \
+ $(top_srcdir)/gst/mpegtsdemux/tsdemux.h \
+ $(top_srcdir)/gst/mpegtsmux/mpegtsmux.h \
$(top_srcdir)/gst/mxf/mxfdemux.h \
$(top_srcdir)/gst/mxf/mxfmux.h \
$(top_srcdir)/gst/nuvdemux/gstnuvdemux.h \
diff --git a/docs/plugins/Makefile.in b/docs/plugins/Makefile.in
index c2aae2c..7363cce 100644
--- a/docs/plugins/Makefile.in
+++ b/docs/plugins/Makefile.in
@@ -295,6 +295,8 @@
DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
DSYMUTIL = @DSYMUTIL@
DTLS_CFLAGS = @DTLS_CFLAGS@
DTLS_LIBS = @DTLS_LIBS@
@@ -510,6 +512,8 @@
LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
LIPO = @LIPO@
LN_S = @LN_S@
LOCALEDIR = @LOCALEDIR@
@@ -636,8 +640,6 @@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
SNDIO_LIBS = @SNDIO_LIBS@
@@ -682,6 +684,8 @@
WAYLAND_LIBS = @WAYLAND_LIBS@
WEBP_CFLAGS = @WEBP_CFLAGS@
WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
WGET = @WGET@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
@@ -798,7 +802,7 @@
SCAN_OPTIONS =
# Extra options to supply to gtkdoc-mkdb.
-MKDB_OPTIONS = --sgml-mode --source-suffixes=c,h,cc,m
+MKDB_OPTIONS = --sgml-mode --source-suffixes=c,h,cc,cpp,m
# Extra options to supply to gtkdoc-fixref.
FIXXREF_OPTIONS = --extra-dir=$(GLIB_PREFIX)/share/gtk-doc/html \
@@ -813,7 +817,8 @@
CFILE_GLOB = \
$(top_srcdir)/gst/*/*.c $(top_srcdir)/ext/*/*.c $(top_srcdir)/sys/*/*.c \
- $(top_srcdir)/ext/*/*.cc $(top_srcdir)/sys/*/*.m
+ $(top_srcdir)/ext/*/*.cc $(top_srcdir)/ext/*/*.cpp $(top_srcdir)/sys/*/*.cpp \
+ $(top_srcdir)/ext/*/*.m $(top_srcdir)/sys/*/*.m
# Header files to ignore when scanning.
@@ -845,7 +850,7 @@
$(top_srcdir)/ext/curl/gstcurlhttpsink.h \
$(top_srcdir)/ext/curl/gstcurlsmtpsink.h \
$(top_srcdir)/ext/curl/gstcurltlssink.h \
- $(top_srcdir)/ext/dc1394/gstdc1394.h \
+ $(top_srcdir)/ext/dc1394/gstdc1394src.h \
$(top_srcdir)/ext/directfb/dfbvideosink.h \
$(top_srcdir)/ext/dts/gstdtsdec.h \
$(top_srcdir)/ext/faac/gstfaac.h \
@@ -870,12 +875,13 @@
$(top_srcdir)/ext/opencv/gstedgedetect.h \
$(top_srcdir)/ext/opencv/gstfaceblur.h \
$(top_srcdir)/ext/opencv/gstfacedetect.h \
- $(top_srcdir)/ext/opencv/gstpyramidsegment.h \
$(top_srcdir)/ext/opencv/gsttemplatematch.h \
$(top_srcdir)/ext/opencv/gsttextoverlay.h \
$(top_srcdir)/ext/openni2/gstopenni2src.h \
$(top_srcdir)/ext/rsvg/gstrsvgdec.h \
$(top_srcdir)/ext/rsvg/gstrsvgoverlay.h \
+ $(top_srcdir)/ext/rtmp/gstrtmpsrc.h \
+ $(top_srcdir)/ext/rtmp/gstrtmpsink.h \
$(top_srcdir)/ext/spandsp/gstspanplc.h \
$(top_srcdir)/ext/spandsp/gstdtmfdetect.h \
$(top_srcdir)/ext/sdl/sdlaudiosink.h \
@@ -884,6 +890,8 @@
$(top_srcdir)/ext/timidity/gstwildmidi.h \
$(top_srcdir)/ext/voaacenc/gstvoaacenc.h \
$(top_srcdir)/ext/voamrwbenc/gstvoamrwbenc.h \
+ $(top_srcdir)/ext/webrtcdsp/gstwebrtcdsp.h \
+ $(top_srcdir)/ext/webrtcdsp/gstwebrtcechoprobe.h \
$(top_srcdir)/ext/zbar/gstzbar.h \
$(top_srcdir)/gst/aiff/aiffparse.h \
$(top_srcdir)/gst/aiff/aiffmux.h \
@@ -926,6 +934,8 @@
$(top_srcdir)/gst/geometrictransform/gstwaterripple.h \
$(top_srcdir)/gst/ivfparse/gstivfparse.h \
$(top_srcdir)/gst/jpegformat/gstjpegparse.h \
+ $(top_srcdir)/gst/mpegtsdemux/tsdemux.h \
+ $(top_srcdir)/gst/mpegtsmux/mpegtsmux.h \
$(top_srcdir)/gst/mxf/mxfdemux.h \
$(top_srcdir)/gst/mxf/mxfmux.h \
$(top_srcdir)/gst/nuvdemux/gstnuvdemux.h \
@@ -1503,9 +1513,13 @@
@ENABLE_GTK_DOC_TRUE@ $(top_srcdir)/common/plugins.xsl $$a > xml/`basename $$a`; done
@ENABLE_GTK_DOC_TRUE@ @for f in $(EXAMPLE_CFILES); do \
@ENABLE_GTK_DOC_TRUE@ $(PYTHON) $(top_srcdir)/common/c-to-xml.py $$f > xml/element-`basename $$f .c`.xml; done
-@ENABLE_GTK_DOC_TRUE@ @gtkdoc-mkdb \
+@ENABLE_GTK_DOC_TRUE@ @_source_dir='' ; \
+@ENABLE_GTK_DOC_TRUE@ for i in $(DOC_SOURCE_DIR) ; do \
+@ENABLE_GTK_DOC_TRUE@ _source_dir="$${_source_dir} --source-dir=$$i" ; \
+@ENABLE_GTK_DOC_TRUE@ done ; \
+@ENABLE_GTK_DOC_TRUE@ gtkdoc-mkdb \
@ENABLE_GTK_DOC_TRUE@ --module=$(DOC_MODULE) \
-@ENABLE_GTK_DOC_TRUE@ --source-dir=$(DOC_SOURCE_DIR) \
+@ENABLE_GTK_DOC_TRUE@ $${_source_dir} \
@ENABLE_GTK_DOC_TRUE@ --expand-content-files="$(expand_content_files)" \
@ENABLE_GTK_DOC_TRUE@ --main-sgml-file=$(srcdir)/$(DOC_MAIN_SGML_FILE) \
@ENABLE_GTK_DOC_TRUE@ --output-format=xml \
diff --git a/docs/plugins/gst-plugins-bad-plugins-docs.sgml b/docs/plugins/gst-plugins-bad-plugins-docs.sgml
index 710ced5..662fd79 100644
--- a/docs/plugins/gst-plugins-bad-plugins-docs.sgml
+++ b/docs/plugins/gst-plugins-bad-plugins-docs.sgml
@@ -75,7 +75,6 @@
<xi:include href="xml/element-openalsink.xml" />
<xi:include href="xml/element-pcapparse.xml" />
<xi:include href="xml/element-pinch.xml" />
- <xi:include href="xml/element-pyramidsegment.xml" />
<xi:include href="xml/element-rfbsrc.xml" />
<xi:include href="xml/element-rtmpsink.xml" />
<xi:include href="xml/element-rtmpsrc.xml" />
@@ -100,6 +99,8 @@
<xi:include href="xml/element-voaacenc.xml" />
<xi:include href="xml/element-voamrwbenc.xml" />
<xi:include href="xml/element-wavescope.xml" />
+ <xi:include href="xml/element-webrtcdsp.xml" />
+ <xi:include href="xml/element-webrtcechoprobe.xml" />
</chapter>
<chapter>
@@ -148,6 +149,7 @@
<xi:include href="xml/plugin-speed.xml" />
<xi:include href="xml/plugin-voaacenc.xml" />
<xi:include href="xml/plugin-voamrwbenc.xml" />
+ <xi:include href="xml/plugin-webrtcdsp.xml" />
<xi:include href="xml/plugin-zbar.xml" />
</chapter>
</book>
diff --git a/docs/plugins/gst-plugins-bad-plugins-sections.txt b/docs/plugins/gst-plugins-bad-plugins-sections.txt
index 2c1365b..386658a 100644
--- a/docs/plugins/gst-plugins-bad-plugins-sections.txt
+++ b/docs/plugins/gst-plugins-bad-plugins-sections.txt
@@ -1,14 +1,80 @@
<SECTION>
+<FILE>element-adpcmdec</FILE>
+<TITLE>adpcmdec</TITLE>
+GstCMDec
+<SUBSECTION Standard>
+GstCMDecClass
+GST_CM_DEC
+GST_CM_DEC_CAST
+GST_IS_CM_DEC
+GST_CM_DEC_CLASS
+GST_IS_CM_DEC_CLASS
+GST_TYPE_CM_DEC
+<SUBSECTION Private>
+gst_cm_dec_get_type
+</SECTION>
+
+<SECTION>
+<FILE>element-adpcmenc</FILE>
+<TITLE>adpcmenc</TITLE>
+GstCMEnc
+<SUBSECTION Standard>
+GstCMEncClass
+GST_CM_ENC
+GST_CM_ENC_CAST
+GST_IS_CM_ENC
+GST_CM_ENC_CLASS
+GST_IS_CM_ENC_CLASS
+GST_TYPE_CM_ENC
+<SUBSECTION Private>
+gst_cm_enc_get_type
+</SECTION>
+
+<SECTION>
+<FILE>element-dvbbasebin</FILE>
+<TITLE>dvbbasebin</TITLE>
+GstBaseBin
+<SUBSECTION Standard>
+GstBaseBinClass
+GST_BASE_BIN
+GST_BASE_BIN_CAST
+GST_IS_BASE_BIN
+GST_BASE_BIN_CLASS
+GST_IS_BASE_BIN_CLASS
+GST_TYPE_BASE_BIN
+<SUBSECTION Private>
+gst_base_bin_get_type
+</SECTION>
+
+<SECTION>
+<FILE>element-a2dpsink</FILE>
+<TITLE>a2dpsink</TITLE>
+GstA2dpSink
+<SUBSECTION Standard>
+GstA2dpSinkClass
+GST_A2DP_SINK
+GST_A2DP_SINK_CAST
+GST_IS_A2DP_SINK
+GST_A2DP_SINK_CLASS
+GST_IS_A2DP_SINK_CLASS
+GST_TYPE_A2DP_SINK
+<SUBSECTION Private>
+gst_a2dp_sink_get_type
+</SECTION>
+
+<SECTION>
<FILE>element-accurip</FILE>
<TITLE>accurip</TITLE>
GstAccurip
<SUBSECTION Standard>
+GstAccuripClass
GST_ACCURIP
-GST_ACCURIP_CLASS
+GST_ACCURIP_CAST
GST_IS_ACCURIP
+GST_ACCURIP_CLASS
GST_IS_ACCURIP_CLASS
GST_TYPE_ACCURIP
-GstAccuripClass
+<SUBSECTION Private>
gst_accurip_get_type
</SECTION>
@@ -17,12 +83,14 @@
<TITLE>aiffmux</TITLE>
GstAiffMux
<SUBSECTION Standard>
+GstAiffMuxClass
GST_AIFF_MUX
-GST_AIFF_MUX_CLASS
+GST_AIFF_MUX_CAST
GST_IS_AIFF_MUX
+GST_AIFF_MUX_CLASS
GST_IS_AIFF_MUX_CLASS
GST_TYPE_AIFF_MUX
-GstAiffMuxClass
+<SUBSECTION Private>
gst_aiff_mux_get_type
</SECTION>
@@ -31,41 +99,94 @@
<TITLE>aiffparse</TITLE>
GstAiffParse
<SUBSECTION Standard>
+GstAiffParseClass
GST_AIFF_PARSE
-GST_AIFF_PARSE_CLASS
+GST_AIFF_PARSE_CAST
GST_IS_AIFF_PARSE
+GST_AIFF_PARSE_CLASS
GST_IS_AIFF_PARSE_CLASS
GST_TYPE_AIFF_PARSE
-GstAiffParseClass
-GstAiffParseState
+<SUBSECTION Private>
gst_aiff_parse_get_type
</SECTION>
<SECTION>
+<FILE>element-asfmux</FILE>
+<TITLE>asfmux</TITLE>
+GstAsfMux
+<SUBSECTION Standard>
+GstAsfMuxClass
+GST_ASF_MUX
+GST_ASF_MUX_CAST
+GST_IS_ASF_MUX
+GST_ASF_MUX_CLASS
+GST_IS_ASF_MUX_CLASS
+GST_TYPE_ASF_MUX
+<SUBSECTION Private>
+gst_asf_mux_get_type
+</SECTION>
+
+<SECTION>
+<FILE>element-asfparse</FILE>
+<TITLE>asfparse</TITLE>
+GstAsfParse
+<SUBSECTION Standard>
+GstAsfParseClass
+GST_ASF_PARSE
+GST_ASF_PARSE_CAST
+GST_IS_ASF_PARSE
+GST_ASF_PARSE_CLASS
+GST_IS_ASF_PARSE_CLASS
+GST_TYPE_ASF_PARSE
+<SUBSECTION Private>
+gst_asf_parse_get_type
+</SECTION>
+
+<SECTION>
<FILE>element-assrender</FILE>
<TITLE>assrender</TITLE>
GstAssRender
<SUBSECTION Standard>
-GstAssRenderBlitFunction
GstAssRenderClass
GST_ASS_RENDER
-GST_ASS_RENDER_CLASS
+GST_ASS_RENDER_CAST
GST_IS_ASS_RENDER
+GST_ASS_RENDER_CLASS
GST_IS_ASS_RENDER_CLASS
+GST_TYPE_ASS_RENDER
+<SUBSECTION Private>
gst_ass_render_get_type
</SECTION>
<SECTION>
+<FILE>element-audiochannelmix</FILE>
+<TITLE>audiochannelmix</TITLE>
+GstAudioChannelMix
+<SUBSECTION Standard>
+GstAudioChannelMixClass
+GST_AUDIO_CHANNEL_MIX
+GST_AUDIO_CHANNEL_MIX_CAST
+GST_IS_AUDIO_CHANNEL_MIX
+GST_AUDIO_CHANNEL_MIX_CLASS
+GST_IS_AUDIO_CHANNEL_MIX_CLASS
+GST_TYPE_AUDIO_CHANNEL_MIX
+<SUBSECTION Private>
+gst_audio_channel_mix_get_type
+</SECTION>
+
+<SECTION>
<FILE>element-audiointerleave</FILE>
<TITLE>audiointerleave</TITLE>
GstAudioInterleave
<SUBSECTION Standard>
GstAudioInterleaveClass
GST_AUDIO_INTERLEAVE
-GST_AUDIO_INTERLEAVE_CLASS
+GST_AUDIO_INTERLEAVE_CAST
GST_IS_AUDIO_INTERLEAVE
+GST_AUDIO_INTERLEAVE_CLASS
GST_IS_AUDIO_INTERLEAVE_CLASS
GST_TYPE_AUDIO_INTERLEAVE
+<SUBSECTION Private>
gst_audio_interleave_get_type
</SECTION>
@@ -76,10 +197,12 @@
<SUBSECTION Standard>
GstAudioMixerClass
GST_AUDIO_MIXER
-GST_AUDIO_MIXER_CLASS
+GST_AUDIO_MIXER_CAST
GST_IS_AUDIO_MIXER
+GST_AUDIO_MIXER_CLASS
GST_IS_AUDIO_MIXER_CLASS
GST_TYPE_AUDIO_MIXER
+<SUBSECTION Private>
gst_audio_mixer_get_type
</SECTION>
@@ -87,27 +210,129 @@
<FILE>element-audioparse</FILE>
<TITLE>audioparse</TITLE>
GstAudioParse
+GstAudioParseFormat
<SUBSECTION Standard>
GstAudioParseClass
GST_AUDIO_PARSE
-GST_AUDIO_PARSE_CLASS
+GST_AUDIO_PARSE_CAST
GST_IS_AUDIO_PARSE
+GST_AUDIO_PARSE_CLASS
GST_IS_AUDIO_PARSE_CLASS
GST_TYPE_AUDIO_PARSE
+<SUBSECTION Private>
gst_audio_parse_get_type
</SECTION>
<SECTION>
+<FILE>element-audiosegmentclip</FILE>
+<TITLE>audiosegmentclip</TITLE>
+GstAudioSegmentClip
+<SUBSECTION Standard>
+GstAudioSegmentClipClass
+GST_AUDIO_SEGMENT_CLIP
+GST_AUDIO_SEGMENT_CLIP_CAST
+GST_IS_AUDIO_SEGMENT_CLIP
+GST_AUDIO_SEGMENT_CLIP_CLASS
+GST_IS_AUDIO_SEGMENT_CLIP_CLASS
+GST_TYPE_AUDIO_SEGMENT_CLIP
+<SUBSECTION Private>
+gst_audio_segment_clip_get_type
+</SECTION>
+
+<SECTION>
<FILE>element-autoconvert</FILE>
<TITLE>autoconvert</TITLE>
GstAutoConvert
<SUBSECTION Standard>
GstAutoConvertClass
-GST_TYPE_AUTO_CONVERT
GST_AUTO_CONVERT
-GST_AUTO_CONVERT_CLASS
+GST_AUTO_CONVERT_CAST
GST_IS_AUTO_CONVERT
+GST_AUTO_CONVERT_CLASS
GST_IS_AUTO_CONVERT_CLASS
+GST_TYPE_AUTO_CONVERT
+<SUBSECTION Private>
+gst_auto_convert_get_type
+</SECTION>
+
+<SECTION>
+<FILE>element-autovideoconvert</FILE>
+<TITLE>autovideoconvert</TITLE>
+GstAutoVideoConvert
+<SUBSECTION Standard>
+GstAutoVideoConvertClass
+GST_AUTO_VIDEO_CONVERT
+GST_AUTO_VIDEO_CONVERT_CAST
+GST_IS_AUTO_VIDEO_CONVERT
+GST_AUTO_VIDEO_CONVERT_CLASS
+GST_IS_AUTO_VIDEO_CONVERT_CLASS
+GST_TYPE_AUTO_VIDEO_CONVERT
+<SUBSECTION Private>
+gst_auto_video_convert_get_type
+</SECTION>
+
+<SECTION>
+<FILE>element-avdtpsink</FILE>
+<TITLE>avdtpsink</TITLE>
+GstAvdtpSink
+<SUBSECTION Standard>
+GstAvdtpSinkClass
+GST_AVDTP_SINK
+GST_AVDTP_SINK_CAST
+GST_IS_AVDTP_SINK
+GST_AVDTP_SINK_CLASS
+GST_IS_AVDTP_SINK_CLASS
+GST_TYPE_AVDTP_SINK
+<SUBSECTION Private>
+gst_avdtp_sink_get_type
+</SECTION>
+
+<SECTION>
+<FILE>element-avdtpsrc</FILE>
+<TITLE>avdtpsrc</TITLE>
+GstAvdtpSrc
+<SUBSECTION Standard>
+GstAvdtpSrcClass
+GST_AVDTP_SRC
+GST_AVDTP_SRC_CAST
+GST_IS_AVDTP_SRC
+GST_AVDTP_SRC_CLASS
+GST_IS_AVDTP_SRC_CLASS
+GST_TYPE_AVDTP_SRC
+<SUBSECTION Private>
+gst_avdtp_src_get_type
+</SECTION>
+
+<SECTION>
+<FILE>element-bpmdetect</FILE>
+<TITLE>bpmdetect</TITLE>
+GstBPMDetect
+<SUBSECTION Standard>
+GstBPMDetectClass
+GST_BPM_DETECT
+GST_BPM_DETECT_CAST
+GST_IS_BPM_DETECT
+GST_BPM_DETECT_CLASS
+GST_IS_BPM_DETECT_CLASS
+GST_TYPE_BPM_DETECT
+<SUBSECTION Private>
+gst_bpm_detect_get_type
+</SECTION>
+
+<SECTION>
+<FILE>element-bayer2rgb</FILE>
+<TITLE>bayer2rgb</TITLE>
+GstBayer2RGB
+<SUBSECTION Standard>
+GstBayer2RGBClass
+GST_BAYER2_RGB
+GST_BAYER2_RGB_CAST
+GST_IS_BAYER2_RGB
+GST_BAYER2_RGB_CLASS
+GST_IS_BAYER2_RGB_CLASS
+GST_TYPE_BAYER2_RGB
+<SUBSECTION Private>
+gst_bayer2_rgb_get_type
</SECTION>
<SECTION>
@@ -118,12 +343,12 @@
GstBs2bClass
GST_BS2B
GST_BS2B_CAST
-GST_BS2B_CLASS
GST_IS_BS2B
+GST_BS2B_CLASS
GST_IS_BS2B_CLASS
GST_TYPE_BS2B
+<SUBSECTION Private>
gst_bs2b_get_type
-gst_bs2b_plugin_init
</SECTION>
<SECTION>
@@ -134,12 +359,12 @@
GstBulgeClass
GST_BULGE
GST_BULGE_CAST
-GST_BULGE_CLASS
GST_IS_BULGE
+GST_BULGE_CLASS
GST_IS_BULGE_CLASS
GST_TYPE_BULGE
+<SUBSECTION Private>
gst_bulge_get_type
-gst_bulge_plugin_init
</SECTION>
<SECTION>
@@ -149,42 +374,143 @@
<SUBSECTION Standard>
GstBurnClass
GST_BURN
-GST_BURN_CLASS
+GST_BURN_CAST
GST_IS_BURN
+GST_BURN_CLASS
GST_IS_BURN_CLASS
GST_TYPE_BURN
+<SUBSECTION Private>
gst_burn_get_type
-gst_burn_plugin_init
+</SECTION>
+
+<SECTION>
+<FILE>element-bz2dec</FILE>
+<TITLE>bz2dec</TITLE>
+GstBz2dec
+<SUBSECTION Standard>
+GstBz2decClass
+GST_BZ2DEC
+GST_BZ2DEC_CAST
+GST_IS_BZ2DEC
+GST_BZ2DEC_CLASS
+GST_IS_BZ2DEC_CLASS
+GST_TYPE_BZ2DEC
+<SUBSECTION Private>
+gst_bz2dec_get_type
+</SECTION>
+
+<SECTION>
+<FILE>element-bz2enc</FILE>
+<TITLE>bz2enc</TITLE>
+GstBz2enc
+<SUBSECTION Standard>
+GstBz2encClass
+GST_BZ2ENC
+GST_BZ2ENC_CAST
+GST_IS_BZ2ENC
+GST_BZ2ENC_CLASS
+GST_IS_BZ2ENC_CLASS
+GST_TYPE_BZ2ENC
+<SUBSECTION Private>
+gst_bz2enc_get_type
</SECTION>
<SECTION>
<FILE>element-camerabin</FILE>
<TITLE>camerabin</TITLE>
GstCameraBin
+GstCameraBin2Mode
<SUBSECTION Standard>
GstCameraBinClass
GST_CAMERA_BIN
+GST_CAMERA_BIN_CAST
GST_IS_CAMERA_BIN
-GST_TYPE_CAMERA_BIN
GST_CAMERA_BIN_CLASS
GST_IS_CAMERA_BIN_CLASS
+GST_TYPE_CAMERA_BIN
+<SUBSECTION Private>
gst_camera_bin_get_type
</SECTION>
+<SECTION>
+<FILE>element-checksumsink</FILE>
+<TITLE>checksumsink</TITLE>
+GstChecksumSink
+GstChecksumSinkHash
+<SUBSECTION Standard>
+GstChecksumSinkClass
+GST_CHECKSUM_SINK
+GST_CHECKSUM_SINK_CAST
+GST_IS_CHECKSUM_SINK
+GST_CHECKSUM_SINK_CLASS
+GST_IS_CHECKSUM_SINK_CLASS
+GST_TYPE_CHECKSUM_SINK
+<SUBSECTION Private>
+gst_checksum_sink_get_type
+</SECTION>
+
+<SECTION>
+<FILE>element-chopmydata</FILE>
+<TITLE>chopmydata</TITLE>
+GstChopMyData
+<SUBSECTION Standard>
+GstChopMyDataClass
+GST_CHOP_MY_DATA
+GST_CHOP_MY_DATA_CAST
+GST_IS_CHOP_MY_DATA
+GST_CHOP_MY_DATA_CLASS
+GST_IS_CHOP_MY_DATA_CLASS
+GST_TYPE_CHOP_MY_DATA
+<SUBSECTION Private>
+gst_chop_my_data_get_type
+</SECTION>
+
+<SECTION>
+<FILE>element-chromahold</FILE>
+<TITLE>chromahold</TITLE>
+GstChromaHold
+<SUBSECTION Standard>
+GstChromaHoldClass
+GST_CHROMA_HOLD
+GST_CHROMA_HOLD_CAST
+GST_IS_CHROMA_HOLD
+GST_CHROMA_HOLD_CLASS
+GST_IS_CHROMA_HOLD_CLASS
+GST_TYPE_CHROMA_HOLD
+<SUBSECTION Private>
+gst_chroma_hold_get_type
+</SECTION>
+
+<SECTION>
+<FILE>element-chromaprint</FILE>
+<TITLE>chromaprint</TITLE>
+GstChromaprint
+<SUBSECTION Standard>
+GstChromaprintClass
+GST_CHROMAPRINT
+GST_CHROMAPRINT_CAST
+GST_IS_CHROMAPRINT
+GST_CHROMAPRINT_CLASS
+GST_IS_CHROMAPRINT_CLASS
+GST_TYPE_CHROMAPRINT
+<SUBSECTION Private>
+gst_chromaprint_get_type
+</SECTION>
<SECTION>
<FILE>element-chromium</FILE>
<TITLE>chromium</TITLE>
-<SUBSECTION Standard>
GstChromium
+<SUBSECTION Standard>
GstChromiumClass
GST_CHROMIUM
-GST_CHROMIUM_CLASS
+GST_CHROMIUM_CAST
GST_IS_CHROMIUM
+GST_CHROMIUM_CLASS
GST_IS_CHROMIUM_CLASS
GST_TYPE_CHROMIUM
+<SUBSECTION Private>
gst_chromium_get_type
-gst_chromium_plugin_init
</SECTION>
<SECTION>
@@ -195,40 +521,143 @@
GstCircleClass
GST_CIRCLE
GST_CIRCLE_CAST
-GST_CIRCLE_CLASS
GST_IS_CIRCLE
+GST_CIRCLE_CLASS
GST_IS_CIRCLE_CLASS
GST_TYPE_CIRCLE
+<SUBSECTION Private>
gst_circle_get_type
-gst_circle_plugin_init
</SECTION>
<SECTION>
<FILE>element-coloreffects</FILE>
<TITLE>coloreffects</TITLE>
GstColorEffects
+GstColorEffectsPreset
<SUBSECTION Standard>
GstColorEffectsClass
GST_COLOR_EFFECTS
-GST_COLOR_EFFECTS_CLASS
+GST_COLOR_EFFECTS_CAST
GST_IS_COLOR_EFFECTS
+GST_COLOR_EFFECTS_CLASS
GST_IS_COLOR_EFFECTS_CLASS
GST_TYPE_COLOR_EFFECTS
+<SUBSECTION Private>
gst_color_effects_get_type
</SECTION>
<SECTION>
-<FILE>element-curlsink</FILE>
-<TITLE>curlsink</TITLE>
-GstCurlSink
+<FILE>element-combdetect</FILE>
+<TITLE>combdetect</TITLE>
+GstCombDetect
<SUBSECTION Standard>
-GstCurlSinkClass
-GST_CURL_SINK
-GST_CURL_SINK_CLASS
-GST_IS_CURL_SINK
-GST_IS_CURL_SINK_CLASS
-GST_TYPE_CURL_SINK
-gst_curl_sink_get_type
+GstCombDetectClass
+GST_COMB_DETECT
+GST_COMB_DETECT_CAST
+GST_IS_COMB_DETECT
+GST_COMB_DETECT_CLASS
+GST_IS_COMB_DETECT_CLASS
+GST_TYPE_COMB_DETECT
+<SUBSECTION Private>
+gst_comb_detect_get_type
+</SECTION>
+
+<SECTION>
+<FILE>element-compare</FILE>
+<TITLE>compare</TITLE>
+GstCompare
+GstCompareMethod
+<SUBSECTION Standard>
+GstCompareClass
+GST_COMPARE
+GST_COMPARE_CAST
+GST_IS_COMPARE
+GST_COMPARE_CLASS
+GST_IS_COMPARE_CLASS
+GST_TYPE_COMPARE
+<SUBSECTION Private>
+gst_compare_get_type
+</SECTION>
+
+<SECTION>
+<FILE>element-compositor</FILE>
+<TITLE>compositor</TITLE>
+GstCompositor
+GstCompositorBackground
+<SUBSECTION Standard>
+GstCompositorClass
+GST_COMPOSITOR
+GST_COMPOSITOR_CAST
+GST_IS_COMPOSITOR
+GST_COMPOSITOR_CLASS
+GST_IS_COMPOSITOR_CLASS
+GST_TYPE_COMPOSITOR
+<SUBSECTION Private>
+gst_compositor_get_type
+</SECTION>
+
+<SECTION>
+<FILE>element-curlfilesink</FILE>
+<TITLE>curlfilesink</TITLE>
+GstCurlFileSink
+<SUBSECTION Standard>
+GstCurlFileSinkClass
+GST_CURL_FILE_SINK
+GST_CURL_FILE_SINK_CAST
+GST_IS_CURL_FILE_SINK
+GST_CURL_FILE_SINK_CLASS
+GST_IS_CURL_FILE_SINK_CLASS
+GST_TYPE_CURL_FILE_SINK
+<SUBSECTION Private>
+gst_curl_file_sink_get_type
+</SECTION>
+
+<SECTION>
+<FILE>element-curlftpsink</FILE>
+<TITLE>curlftpsink</TITLE>
+GstCurlFtpSink
+<SUBSECTION Standard>
+GstCurlFtpSinkClass
+GST_CURL_FTP_SINK
+GST_CURL_FTP_SINK_CAST
+GST_IS_CURL_FTP_SINK
+GST_CURL_FTP_SINK_CLASS
+GST_IS_CURL_FTP_SINK_CLASS
+GST_TYPE_CURL_FTP_SINK
+<SUBSECTION Private>
+gst_curl_ftp_sink_get_type
+</SECTION>
+
+<SECTION>
+<FILE>element-curlhttpsink</FILE>
+<TITLE>curlhttpsink</TITLE>
+GstCurlHttpSink
+<SUBSECTION Standard>
+GstCurlHttpSinkClass
+GST_CURL_HTTP_SINK
+GST_CURL_HTTP_SINK_CAST
+GST_IS_CURL_HTTP_SINK
+GST_CURL_HTTP_SINK_CLASS
+GST_IS_CURL_HTTP_SINK_CLASS
+GST_TYPE_CURL_HTTP_SINK
+<SUBSECTION Private>
+gst_curl_http_sink_get_type
+</SECTION>
+
+<SECTION>
+<FILE>element-curlsmtpsink</FILE>
+<TITLE>curlsmtpsink</TITLE>
+GstCurlSmtpSink
+<SUBSECTION Standard>
+GstCurlSmtpSinkClass
+GST_CURL_SMTP_SINK
+GST_CURL_SMTP_SINK_CAST
+GST_IS_CURL_SMTP_SINK
+GST_CURL_SMTP_SINK_CLASS
+GST_IS_CURL_SMTP_SINK_CLASS
+GST_TYPE_CURL_SMTP_SINK
+<SUBSECTION Private>
+gst_curl_smtp_sink_get_type
</SECTION>
<SECTION>
@@ -238,27 +667,13 @@
<SUBSECTION Standard>
GstCvDilateClass
GST_CV_DILATE
-GST_CV_DILATE_CLASS
+GST_CV_DILATE_CAST
GST_IS_CV_DILATE
+GST_CV_DILATE_CLASS
GST_IS_CV_DILATE_CLASS
GST_TYPE_CV_DILATE
+<SUBSECTION Private>
gst_cv_dilate_get_type
-gst_cv_dilate_plugin_init
-</SECTION>
-
-<SECTION>
-<FILE>element-cverode</FILE>
-<TITLE>cverode</TITLE>
-GstCvErode
-<SUBSECTION Standard>
-GstCvErodeClass
-GST_CV_ERODE
-GST_CV_ERODE_CLASS
-GST_IS_CV_ERODE
-GST_IS_CV_ERODE_CLASS
-GST_TYPE_CV_ERODE
-gst_cv_erode_get_type
-gst_cv_erode_plugin_init
</SECTION>
<SECTION>
@@ -268,12 +683,29 @@
<SUBSECTION Standard>
GstCvEqualizeHistClass
GST_CV_EQUALIZE_HIST
-GST_CV_EQUALIZE_HIST_CLASS
+GST_CV_EQUALIZE_HIST_CAST
GST_IS_CV_EQUALIZE_HIST
+GST_CV_EQUALIZE_HIST_CLASS
GST_IS_CV_EQUALIZE_HIST_CLASS
GST_TYPE_CV_EQUALIZE_HIST
+<SUBSECTION Private>
gst_cv_equalize_hist_get_type
-gst_cv_equalize_hist_plugin_init
+</SECTION>
+
+<SECTION>
+<FILE>element-cverode</FILE>
+<TITLE>cverode</TITLE>
+GstCvErode
+<SUBSECTION Standard>
+GstCvErodeClass
+GST_CV_ERODE
+GST_CV_ERODE_CAST
+GST_IS_CV_ERODE
+GST_CV_ERODE_CLASS
+GST_IS_CV_ERODE_CLASS
+GST_TYPE_CV_ERODE
+<SUBSECTION Private>
+gst_cv_erode_get_type
</SECTION>
<SECTION>
@@ -283,27 +715,30 @@
<SUBSECTION Standard>
GstCvLaplaceClass
GST_CV_LAPLACE
-GST_CV_LAPLACE_CLASS
+GST_CV_LAPLACE_CAST
GST_IS_CV_LAPLACE
+GST_CV_LAPLACE_CLASS
GST_IS_CV_LAPLACE_CLASS
GST_TYPE_CV_LAPLACE
+<SUBSECTION Private>
gst_cv_laplace_get_type
-gst_cv_laplace_plugin_init
</SECTION>
<SECTION>
<FILE>element-cvsmooth</FILE>
<TITLE>cvsmooth</TITLE>
GstCvSmooth
+GstCvSmoothTypeType
<SUBSECTION Standard>
GstCvSmoothClass
GST_CV_SMOOTH
-GST_CV_SMOOTH_CLASS
+GST_CV_SMOOTH_CAST
GST_IS_CV_SMOOTH
+GST_CV_SMOOTH_CLASS
GST_IS_CV_SMOOTH_CLASS
GST_TYPE_CV_SMOOTH
+<SUBSECTION Private>
gst_cv_smooth_get_type
-gst_cv_smooth_plugin_init
</SECTION>
<SECTION>
@@ -313,12 +748,61 @@
<SUBSECTION Standard>
GstCvSobelClass
GST_CV_SOBEL
-GST_CV_SOBEL_CLASS
+GST_CV_SOBEL_CAST
GST_IS_CV_SOBEL
+GST_CV_SOBEL_CLASS
GST_IS_CV_SOBEL_CLASS
GST_TYPE_CV_SOBEL
+<SUBSECTION Private>
gst_cv_sobel_get_type
-gst_cv_sobel_plugin_init
+</SECTION>
+
+<SECTION>
+<FILE>element-dvbsuboverlay</FILE>
+<TITLE>dvbsuboverlay</TITLE>
+GstDVBSubOverlay
+<SUBSECTION Standard>
+GstDVBSubOverlayClass
+GST_DVB_SUB_OVERLAY
+GST_DVB_SUB_OVERLAY_CAST
+GST_IS_DVB_SUB_OVERLAY
+GST_DVB_SUB_OVERLAY_CLASS
+GST_IS_DVB_SUB_OVERLAY_CLASS
+GST_TYPE_DVB_SUB_OVERLAY
+<SUBSECTION Private>
+gst_dvb_sub_overlay_get_type
+</SECTION>
+
+<SECTION>
+<FILE>element-dvdspu</FILE>
+<TITLE>dvdspu</TITLE>
+GstDVDSpu
+<SUBSECTION Standard>
+GstDVDSpuClass
+GST_DVD_SPU
+GST_DVD_SPU_CAST
+GST_IS_DVD_SPU
+GST_DVD_SPU_CLASS
+GST_IS_DVD_SPU_CLASS
+GST_TYPE_DVD_SPU
+<SUBSECTION Private>
+gst_dvd_spu_get_type
+</SECTION>
+
+<SECTION>
+<FILE>element-dashdemux</FILE>
+<TITLE>dashdemux</TITLE>
+GstDashDemux
+<SUBSECTION Standard>
+GstDashDemuxClass
+GST_DASH_DEMUX
+GST_DASH_DEMUX_CAST
+GST_IS_DASH_DEMUX
+GST_DASH_DEMUX_CLASS
+GST_IS_DASH_DEMUX_CLASS
+GST_TYPE_DASH_DEMUX
+<SUBSECTION Private>
+gst_dash_demux_get_type
</SECTION>
<SECTION>
@@ -328,14 +812,15 @@
<SUBSECTION Standard>
GstDataURISrcClass
GST_DATA_URI_SRC
-GST_DATA_URI_SRC_CLASS
+GST_DATA_URI_SRC_CAST
GST_IS_DATA_URI_SRC
+GST_DATA_URI_SRC_CLASS
GST_IS_DATA_URI_SRC_CLASS
GST_TYPE_DATA_URI_SRC
+<SUBSECTION Private>
gst_data_uri_src_get_type
</SECTION>
-
<SECTION>
<FILE>element-dc1394</FILE>
<TITLE>dc1394</TITLE>
@@ -407,6 +892,86 @@
</SECTION>
<SECTION>
+<FILE>element-debugspy</FILE>
+<TITLE>debugspy</TITLE>
+GstDebugSpy
+<SUBSECTION Standard>
+GstDebugSpyClass
+GST_DEBUG_SPY
+GST_DEBUG_SPY_CAST
+GST_IS_DEBUG_SPY
+GST_DEBUG_SPY_CLASS
+GST_IS_DEBUG_SPY_CLASS
+GST_TYPE_DEBUG_SPY
+<SUBSECTION Private>
+gst_debug_spy_get_type
+</SECTION>
+
+<SECTION>
+<FILE>element-decklinkaudiosink</FILE>
+<TITLE>decklinkaudiosink</TITLE>
+GstDecklinkAudioSink
+<SUBSECTION Standard>
+GstDecklinkAudioSinkClass
+GST_DECKLINK_AUDIO_SINK
+GST_DECKLINK_AUDIO_SINK_CAST
+GST_IS_DECKLINK_AUDIO_SINK
+GST_DECKLINK_AUDIO_SINK_CLASS
+GST_IS_DECKLINK_AUDIO_SINK_CLASS
+GST_TYPE_DECKLINK_AUDIO_SINK
+<SUBSECTION Private>
+gst_decklink_audio_sink_get_type
+</SECTION>
+
+<SECTION>
+<FILE>element-decklinkaudiosrc</FILE>
+<TITLE>decklinkaudiosrc</TITLE>
+GstDecklinkAudioSrc
+<SUBSECTION Standard>
+GstDecklinkAudioSrcClass
+GST_DECKLINK_AUDIO_SRC
+GST_DECKLINK_AUDIO_SRC_CAST
+GST_IS_DECKLINK_AUDIO_SRC
+GST_DECKLINK_AUDIO_SRC_CLASS
+GST_IS_DECKLINK_AUDIO_SRC_CLASS
+GST_TYPE_DECKLINK_AUDIO_SRC
+<SUBSECTION Private>
+gst_decklink_audio_src_get_type
+</SECTION>
+
+<SECTION>
+<FILE>element-decklinkvideosink</FILE>
+<TITLE>decklinkvideosink</TITLE>
+GstDecklinkVideoSink
+<SUBSECTION Standard>
+GstDecklinkVideoSinkClass
+GST_DECKLINK_VIDEO_SINK
+GST_DECKLINK_VIDEO_SINK_CAST
+GST_IS_DECKLINK_VIDEO_SINK
+GST_DECKLINK_VIDEO_SINK_CLASS
+GST_IS_DECKLINK_VIDEO_SINK_CLASS
+GST_TYPE_DECKLINK_VIDEO_SINK
+<SUBSECTION Private>
+gst_decklink_video_sink_get_type
+</SECTION>
+
+<SECTION>
+<FILE>element-decklinkvideosrc</FILE>
+<TITLE>decklinkvideosrc</TITLE>
+GstDecklinkVideoSrc
+<SUBSECTION Standard>
+GstDecklinkVideoSrcClass
+GST_DECKLINK_VIDEO_SRC
+GST_DECKLINK_VIDEO_SRC_CAST
+GST_IS_DECKLINK_VIDEO_SRC
+GST_DECKLINK_VIDEO_SRC_CLASS
+GST_IS_DECKLINK_VIDEO_SRC_CLASS
+GST_TYPE_DECKLINK_VIDEO_SRC
+<SUBSECTION Private>
+gst_decklink_video_src_get_type
+</SECTION>
+
+<SECTION>
<FILE>element-dfbvideosink</FILE>
<TITLE>dfbvideosink</TITLE>
GstDfbVideoSink
@@ -434,12 +999,12 @@
GstDiffuseClass
GST_DIFFUSE
GST_DIFFUSE_CAST
-GST_DIFFUSE_CLASS
GST_IS_DIFFUSE
+GST_DIFFUSE_CLASS
GST_IS_DIFFUSE_CLASS
GST_TYPE_DIFFUSE
+<SUBSECTION Private>
gst_diffuse_get_type
-gst_diffuse_plugin_init
</SECTION>
<SECTION>
@@ -449,12 +1014,46 @@
<SUBSECTION Standard>
GstDilateClass
GST_DILATE
-GST_DILATE_CLASS
+GST_DILATE_CAST
GST_IS_DILATE
+GST_DILATE_CLASS
GST_IS_DILATE_CLASS
GST_TYPE_DILATE
+<SUBSECTION Private>
gst_dilate_get_type
-gst_dilate_plugin_init
+</SECTION>
+
+<SECTION>
+<FILE>element-diracparse</FILE>
+<TITLE>diracparse</TITLE>
+GstDiracParse
+<SUBSECTION Standard>
+GstDiracParseClass
+GST_DIRAC_PARSE
+GST_DIRAC_PARSE_CAST
+GST_IS_DIRAC_PARSE
+GST_DIRAC_PARSE_CLASS
+GST_IS_DIRAC_PARSE_CLASS
+GST_TYPE_DIRAC_PARSE
+<SUBSECTION Private>
+gst_dirac_parse_get_type
+</SECTION>
+
+<SECTION>
+<FILE>element-disparity</FILE>
+<TITLE>disparity</TITLE>
+GstDisparity
+GstDisparityMethod
+<SUBSECTION Standard>
+GstDisparityClass
+GST_DISPARITY
+GST_DISPARITY_CAST
+GST_IS_DISPARITY
+GST_DISPARITY_CLASS
+GST_IS_DISPARITY_CLASS
+GST_TYPE_DISPARITY
+<SUBSECTION Private>
+gst_disparity_get_type
</SECTION>
<SECTION>
@@ -464,12 +1063,93 @@
<SUBSECTION Standard>
GstDodgeClass
GST_DODGE
-GST_DODGE_CLASS
+GST_DODGE_CAST
GST_IS_DODGE
+GST_DODGE_CLASS
GST_IS_DODGE_CLASS
GST_TYPE_DODGE
+<SUBSECTION Private>
gst_dodge_get_type
-gst_dodge_plugin_init
+</SECTION>
+
+<SECTION>
+<FILE>element-dtlsdec</FILE>
+<TITLE>dtlsdec</TITLE>
+GstDtlsDec
+<SUBSECTION Standard>
+GstDtlsDecClass
+GST_DTLS_DEC
+GST_DTLS_DEC_CAST
+GST_IS_DTLS_DEC
+GST_DTLS_DEC_CLASS
+GST_IS_DTLS_DEC_CLASS
+GST_TYPE_DTLS_DEC
+<SUBSECTION Private>
+gst_dtls_dec_get_type
+</SECTION>
+
+<SECTION>
+<FILE>element-dtlsenc</FILE>
+<TITLE>dtlsenc</TITLE>
+GstDtlsEnc
+<SUBSECTION Standard>
+GstDtlsEncClass
+GST_DTLS_ENC
+GST_DTLS_ENC_CAST
+GST_IS_DTLS_ENC
+GST_DTLS_ENC_CLASS
+GST_IS_DTLS_ENC_CLASS
+GST_TYPE_DTLS_ENC
+<SUBSECTION Private>
+gst_dtls_enc_get_type
+</SECTION>
+
+<SECTION>
+<FILE>element-dtlssrtpdec</FILE>
+<TITLE>dtlssrtpdec</TITLE>
+GstDtlsSrtpDec
+<SUBSECTION Standard>
+GstDtlsSrtpDecClass
+GST_DTLS_SRTP_DEC
+GST_DTLS_SRTP_DEC_CAST
+GST_IS_DTLS_SRTP_DEC
+GST_DTLS_SRTP_DEC_CLASS
+GST_IS_DTLS_SRTP_DEC_CLASS
+GST_TYPE_DTLS_SRTP_DEC
+<SUBSECTION Private>
+gst_dtls_srtp_dec_get_type
+</SECTION>
+
+<SECTION>
+<FILE>element-dtlssrtpdemux</FILE>
+<TITLE>dtlssrtpdemux</TITLE>
+GstDtlsSrtpDemux
+<SUBSECTION Standard>
+GstDtlsSrtpDemuxClass
+GST_DTLS_SRTP_DEMUX
+GST_DTLS_SRTP_DEMUX_CAST
+GST_IS_DTLS_SRTP_DEMUX
+GST_DTLS_SRTP_DEMUX_CLASS
+GST_IS_DTLS_SRTP_DEMUX_CLASS
+GST_TYPE_DTLS_SRTP_DEMUX
+<SUBSECTION Private>
+gst_dtls_srtp_demux_get_type
+</SECTION>
+
+<SECTION>
+<FILE>element-dtlssrtpenc</FILE>
+<TITLE>dtlssrtpenc</TITLE>
+GstDtlsSrtpEnc
+<SUBSECTION Standard>
+GstDtlsSrtpEncClass
+GST_DTLS_SRTP_ENC
+GST_DTLS_SRTP_ENC_CAST
+GST_IS_DTLS_SRTP_ENC
+GST_DTLS_SRTP_ENC_CLASS
+GST_IS_DTLS_SRTP_ENC_CLASS
+GST_TYPE_DTLS_SRTP_ENC
+<SUBSECTION Private>
+gst_dtls_srtp_enc_get_type
</SECTION>
<SECTION>
@@ -478,16 +1158,14 @@
GstDtmfDetect
<SUBSECTION Standard>
GstDtmfDetectClass
-GstDtmfDetectPrivate
-GST_TYPE_DTMF_DETECT
GST_DTMF_DETECT
GST_DTMF_DETECT_CAST
-GST_DTMF_DETECT_CLASS
-GST_DTMF_DETECT_GET_CLASS
GST_IS_DTMF_DETECT
+GST_DTMF_DETECT_CLASS
GST_IS_DTMF_DETECT_CLASS
+GST_TYPE_DTMF_DETECT
+<SUBSECTION Private>
gst_dtmf_detect_get_type
-gst_dtmf_detect_plugin_init
</SECTION>
<SECTION>
@@ -496,75 +1174,80 @@
GstDtsDec
<SUBSECTION Standard>
GstDtsDecClass
-gst_dtsdec_get_type
-GST_TYPE_DTSDEC
-GST_DTSDEC
-GST_DTSDEC_CLASS
-GST_IS_DTSDEC
-GST_IS_DTSDEC_CLASS
+GST_DTS_DEC
+GST_DTS_DEC_CAST
+GST_IS_DTS_DEC
+GST_DTS_DEC_CLASS
+GST_IS_DTS_DEC_CLASS
+GST_TYPE_DTS_DEC
+<SUBSECTION Private>
+gst_dts_dec_get_type
</SECTION>
<SECTION>
<FILE>element-dvbsrc</FILE>
<TITLE>dvbsrc</TITLE>
GstDvbSrc
+GstDvbSrcBandwidth
+GstDvbSrcCode_Rate
+GstDvbSrcCode_Rate
+GstDvbSrcDelsys
+GstDvbSrcGuard
+GstDvbSrcHierarchy
+GstDvbSrcInterleaving
+GstDvbSrcInversion
+GstDvbSrcCode_Rate
+GstDvbSrcModulation
+GstDvbSrcCode_Rate
+GstDvbSrcModulation
+GstDvbSrcCode_Rate
+GstDvbSrcModulation
+GstDvbSrcModulation
+GstDvbSrcPilot
+GstDvbSrcRolloff
+GstDvbSrcTransmission_Mode
<SUBSECTION Standard>
GstDvbSrcClass
-GstDvbSrcParam
-GstDvbSrcPol
-GST_DVBSRC
-GST_DVBSRC_CLASS
-GST_IS_DVBSRC
-GST_IS_DVBSRC_CLASS
-GST_TYPE_DVBSRC
-gst_dvbsrc_get_type
-gst_dvbsrc_plugin_init
-DEFAULT_BUFFER_SIZE
-DEFAULT_DEVICE
-DEFAULT_DISEQC_SRC
-DEFAULT_SYMBOL_RATE
-MAX_FILTERS
-IPACKS
-IN_SIZE
-TS_SIZE
-</SECTION>
-
-<SECTION>
-<FILE>element-dvdspu</FILE>
-<TITLE>dvdspu</TITLE>
-GstDVDSpu
-<SUBSECTION Standard>
-GstDVDSpuClass
-GST_DVD_SPU
-GST_DVD_SPU_CLASS
-GST_IS_DVD_SPU
-GST_IS_DVD_SPU_CLASS
-GST_TYPE_DVD_SPU
-gst_dvd_spu_get_type
-SpuColour
-SpuLineCtrlI
-SpuPacket
-SpuPixCtrlI
-SpuRect
-SpuState
-DVD_SPU_LOCK
-DVD_SPU_UNLOCK
-SPU_STATE_FLAGS_MASK
+GST_DVB_SRC
+GST_DVB_SRC_CAST
+GST_IS_DVB_SRC
+GST_DVB_SRC_CLASS
+GST_IS_DVB_SRC_CLASS
+GST_TYPE_DVB_SRC
+<SUBSECTION Private>
+gst_dvb_src_get_type
</SECTION>
<SECTION>
<FILE>element-edgedetect</FILE>
<TITLE>edgedetect</TITLE>
-Gstedgedetect
+GstEdgeDetect
<SUBSECTION Standard>
-GstedgedetectClass
-GST_EDGEDETECT
-GST_EDGEDETECT_CLASS
-GST_IS_EDGEDETECT
-GST_IS_EDGEDETECT_CLASS
-GST_TYPE_EDGEDETECT
-gst_edgedetect_get_type
-gst_edgedetect_plugin_init
+GstEdgeDetectClass
+GST_EDGE_DETECT
+GST_EDGE_DETECT_CAST
+GST_IS_EDGE_DETECT
+GST_EDGE_DETECT_CLASS
+GST_IS_EDGE_DETECT_CLASS
+GST_TYPE_EDGE_DETECT
+<SUBSECTION Private>
+gst_edge_detect_get_type
+</SECTION>
+
+<SECTION>
+<FILE>element-errorignore</FILE>
+<TITLE>errorignore</TITLE>
+GstErrorIgnore
+<SUBSECTION Standard>
+GstErrorIgnoreClass
+GST_ERROR_IGNORE
+GST_ERROR_IGNORE_CAST
+GST_IS_ERROR_IGNORE
+GST_ERROR_IGNORE_CLASS
+GST_IS_ERROR_IGNORE_CLASS
+GST_TYPE_ERROR_IGNORE
+<SUBSECTION Private>
+gst_error_ignore_get_type
</SECTION>
<SECTION>
@@ -574,25 +1257,62 @@
<SUBSECTION Standard>
GstExclusionClass
GST_EXCLUSION
-GST_EXCLUSION_CLASS
+GST_EXCLUSION_CAST
GST_IS_EXCLUSION
+GST_EXCLUSION_CLASS
GST_IS_EXCLUSION_CLASS
GST_TYPE_EXCLUSION
+<SUBSECTION Private>
gst_exclusion_get_type
-gst_exclusion_plugin_init
+</SECTION>
+
+<SECTION>
+<FILE>element-fbdevsink</FILE>
+<TITLE>fbdevsink</TITLE>
+GstFBDEVSink
+<SUBSECTION Standard>
+GstFBDEVSinkClass
+GST_FBDEV_SINK
+GST_FBDEV_SINK_CAST
+GST_IS_FBDEV_SINK
+GST_FBDEV_SINK_CLASS
+GST_IS_FBDEV_SINK_CLASS
+GST_TYPE_FBDEV_SINK
+<SUBSECTION Private>
+gst_fbdev_sink_get_type
+</SECTION>
+
+<SECTION>
+<FILE>element-fpsdisplaysink</FILE>
+<TITLE>fpsdisplaysink</TITLE>
+GstFPSDisplaySink
+<SUBSECTION Standard>
+GstFPSDisplaySinkClass
+GST_FPS_DISPLAY_SINK
+GST_FPS_DISPLAY_SINK_CAST
+GST_IS_FPS_DISPLAY_SINK
+GST_FPS_DISPLAY_SINK_CLASS
+GST_IS_FPS_DISPLAY_SINK_CLASS
+GST_TYPE_FPS_DISPLAY_SINK
+<SUBSECTION Private>
+gst_fps_display_sink_get_type
</SECTION>
<SECTION>
<FILE>element-faac</FILE>
<TITLE>faac</TITLE>
GstFaac
+GstFaacBrtype
+GstFaacShortCtl
<SUBSECTION Standard>
GstFaacClass
-GST_TYPE_FAAC
GST_FAAC
+GST_FAAC_CAST
GST_IS_FAAC
GST_FAAC_CLASS
GST_IS_FAAC_CLASS
+GST_TYPE_FAAC
+<SUBSECTION Private>
gst_faac_get_type
</SECTION>
@@ -602,41 +1322,47 @@
GstFaad
<SUBSECTION Standard>
GstFaadClass
-GST_TYPE_FAAD
GST_FAAD
+GST_FAAD_CAST
GST_IS_FAAD
GST_FAAD_CLASS
GST_IS_FAAD_CLASS
+GST_TYPE_FAAD
+<SUBSECTION Private>
gst_faad_get_type
</SECTION>
-<SECTION>
+<SECTION>
<FILE>element-faceblur</FILE>
<TITLE>faceblur</TITLE>
-Gstfaceblur
+GstFaceBlur
<SUBSECTION Standard>
-GstfaceblurClass
-GST_FACEBLUR
-GST_FACEBLUR_CLASS
-GST_TYPE_FACEBLUR
-GST_IS_FACEBLUR
-GST_IS_FACEBLUR_CLASS
-gst_faceblur_get_type
-gst_faceblur_plugin_init
+GstFaceBlurClass
+GST_FACE_BLUR
+GST_FACE_BLUR_CAST
+GST_IS_FACE_BLUR
+GST_FACE_BLUR_CLASS
+GST_IS_FACE_BLUR_CLASS
+GST_TYPE_FACE_BLUR
+<SUBSECTION Private>
+gst_face_blur_get_type
</SECTION>
+<SECTION>
<FILE>element-facedetect</FILE>
<TITLE>facedetect</TITLE>
-Gstfacedetect
+GstFaceDetect
+GstFaceDetectUpdates
<SUBSECTION Standard>
-GstfacedetectClass
-GST_FACEDETECT
-GST_FACEDETECT_CLASS
-GST_TYPE_FACEDETECT
-GST_IS_FACEDETECT
-GST_IS_FACEDETECT_CLASS
-gst_facedetect_get_type
-gst_facedetect_plugin_init
+GstFaceDetectClass
+GST_FACE_DETECT
+GST_FACE_DETECT_CAST
+GST_IS_FACE_DETECT
+GST_FACE_DETECT_CLASS
+GST_IS_FACE_DETECT_CLASS
+GST_TYPE_FACE_DETECT
+<SUBSECTION Private>
+gst_face_detect_get_type
</SECTION>
<SECTION>
@@ -645,16 +1371,32 @@
GstFestival
<SUBSECTION Standard>
GstFestivalClass
-GstFestivalFlags
GST_FESTIVAL
-GST_FESTIVAL_CLASS
+GST_FESTIVAL_CAST
GST_IS_FESTIVAL
+GST_FESTIVAL_CLASS
GST_IS_FESTIVAL_CLASS
GST_TYPE_FESTIVAL
+<SUBSECTION Private>
gst_festival_get_type
-FESTIVAL_DEFAULT_SERVER_HOST
-FESTIVAL_DEFAULT_SERVER_PORT
-FESTIVAL_DEFAULT_TEXT_MODE
+</SECTION>
+
+<SECTION>
+<FILE>element-fieldanalysis</FILE>
+<TITLE>fieldanalysis</TITLE>
+GstFieldAnalysis
+GstFieldAnalysisFieldMetric
+GstFieldAnalysisFrameMetric
+<SUBSECTION Standard>
+GstFieldAnalysisClass
+GST_FIELD_ANALYSIS
+GST_FIELD_ANALYSIS_CAST
+GST_IS_FIELD_ANALYSIS
+GST_FIELD_ANALYSIS_CLASS
+GST_IS_FIELD_ANALYSIS_CLASS
+GST_TYPE_FIELD_ANALYSIS
+<SUBSECTION Private>
+gst_field_analysis_get_type
</SECTION>
<SECTION>
@@ -665,38 +1407,862 @@
GstFisheyeClass
GST_FISHEYE
GST_FISHEYE_CAST
-GST_FISHEYE_CLASS
GST_IS_FISHEYE
+GST_FISHEYE_CLASS
GST_IS_FISHEYE_CLASS
GST_TYPE_FISHEYE
+<SUBSECTION Private>
gst_fisheye_get_type
-gst_fisheye_plugin_init
</SECTION>
<SECTION>
-<FILE>element-fpsdisplaysink</FILE>
-<TITLE>fpsdisplaysink</TITLE>
-GstFPSDisplaySink
+<FILE>element-fluiddec</FILE>
+<TITLE>fluiddec</TITLE>
+GstFluidDec
<SUBSECTION Standard>
-GstFPSDisplaySinkClass
-GST_TYPE_FPS_DISPLAY_SINK
-GST_FPS_DISPLAY_SINK
-GST_IS_FPS_DISPLAY_SINK
-GST_FPS_DISPLAY_SINK_CLASS
-GST_IS_FPS_DISPLAY_SINK_CLASS
-fps_display_sink_get_type
+GstFluidDecClass
+GST_FLUID_DEC
+GST_FLUID_DEC_CAST
+GST_IS_FLUID_DEC
+GST_FLUID_DEC_CLASS
+GST_IS_FLUID_DEC_CLASS
+GST_TYPE_FLUID_DEC
+<SUBSECTION Private>
+gst_fluid_dec_get_type
+</SECTION>
+
+<SECTION>
+<FILE>element-freeverb</FILE>
+<TITLE>freeverb</TITLE>
+GstFreeverb
+<SUBSECTION Standard>
+GstFreeverbClass
+GST_FREEVERB
+GST_FREEVERB_CAST
+GST_IS_FREEVERB
+GST_FREEVERB_CLASS
+GST_IS_FREEVERB_CLASS
+GST_TYPE_FREEVERB
+<SUBSECTION Private>
+gst_freeverb_get_type
+</SECTION>
+
+<SECTION>
+<FILE>element-gdpdepay</FILE>
+<TITLE>gdpdepay</TITLE>
+GstGDPDepay
+<SUBSECTION Standard>
+GstGDPDepayClass
+GST_GDP_DEPAY
+GST_GDP_DEPAY_CAST
+GST_IS_GDP_DEPAY
+GST_GDP_DEPAY_CLASS
+GST_IS_GDP_DEPAY_CLASS
+GST_TYPE_GDP_DEPAY
+<SUBSECTION Private>
+gst_gdp_depay_get_type
+</SECTION>
+
+<SECTION>
+<FILE>element-gdppay</FILE>
+<TITLE>gdppay</TITLE>
+GstGDPPay
+<SUBSECTION Standard>
+GstGDPPayClass
+GST_GDP_PAY
+GST_GDP_PAY_CAST
+GST_IS_GDP_PAY
+GST_GDP_PAY_CLASS
+GST_IS_GDP_PAY_CLASS
+GST_TYPE_GDP_PAY
+<SUBSECTION Private>
+gst_gdp_pay_get_type
+</SECTION>
+
+<SECTION>
+<FILE>element-glcolorbalance</FILE>
+<TITLE>glcolorbalance</TITLE>
+GstGLColorBalance
+<SUBSECTION Standard>
+GstGLColorBalanceClass
+GST_GL_COLOR_BALANCE
+GST_GL_COLOR_BALANCE_CAST
+GST_IS_GL_COLOR_BALANCE
+GST_GL_COLOR_BALANCE_CLASS
+GST_IS_GL_COLOR_BALANCE_CLASS
+GST_TYPE_GL_COLOR_BALANCE
+<SUBSECTION Private>
+gst_gl_color_balance_get_type
+</SECTION>
+
+<SECTION>
+<FILE>element-glcolorconvert</FILE>
+<TITLE>glcolorconvert</TITLE>
+GstGLColorConvertElement
+<SUBSECTION Standard>
+GstGLColorConvertElementClass
+GST_GL_COLOR_CONVERT_ELEMENT
+GST_GL_COLOR_CONVERT_ELEMENT_CAST
+GST_IS_GL_COLOR_CONVERT_ELEMENT
+GST_GL_COLOR_CONVERT_ELEMENT_CLASS
+GST_IS_GL_COLOR_CONVERT_ELEMENT_CLASS
+GST_TYPE_GL_COLOR_CONVERT_ELEMENT
+<SUBSECTION Private>
+gst_gl_color_convert_element_get_type
+</SECTION>
+
+<SECTION>
+<FILE>element-glcolorscale</FILE>
+<TITLE>glcolorscale</TITLE>
+GstGLColorscale
+<SUBSECTION Standard>
+GstGLColorscaleClass
+GST_GL_COLORSCALE
+GST_GL_COLORSCALE_CAST
+GST_IS_GL_COLORSCALE
+GST_GL_COLORSCALE_CLASS
+GST_IS_GL_COLORSCALE_CLASS
+GST_TYPE_GL_COLORSCALE
+<SUBSECTION Private>
+gst_gl_colorscale_get_type
+</SECTION>
+
+<SECTION>
+<FILE>element-gldeinterlace</FILE>
+<TITLE>gldeinterlace</TITLE>
+GstGLDeinterlace
+GstGLDeinterlaceMethod
+<SUBSECTION Standard>
+GstGLDeinterlaceClass
+GST_GL_DEINTERLACE
+GST_GL_DEINTERLACE_CAST
+GST_IS_GL_DEINTERLACE
+GST_GL_DEINTERLACE_CLASS
+GST_IS_GL_DEINTERLACE_CLASS
+GST_TYPE_GL_DEINTERLACE
+<SUBSECTION Private>
+gst_gl_deinterlace_get_type
+</SECTION>
+
+<SECTION>
+<FILE>element-gldifferencematte</FILE>
+<TITLE>gldifferencematte</TITLE>
+GstGLDifferenceMatte
+<SUBSECTION Standard>
+GstGLDifferenceMatteClass
+GST_GL_DIFFERENCE_MATTE
+GST_GL_DIFFERENCE_MATTE_CAST
+GST_IS_GL_DIFFERENCE_MATTE
+GST_GL_DIFFERENCE_MATTE_CLASS
+GST_IS_GL_DIFFERENCE_MATTE_CLASS
+GST_TYPE_GL_DIFFERENCE_MATTE
+<SUBSECTION Private>
+gst_gl_difference_matte_get_type
+</SECTION>
+
+<SECTION>
+<FILE>element-gldownload</FILE>
+<TITLE>gldownload</TITLE>
+GstGLDownloadElement
+<SUBSECTION Standard>
+GstGLDownloadElementClass
+GST_GL_DOWNLOAD_ELEMENT
+GST_GL_DOWNLOAD_ELEMENT_CAST
+GST_IS_GL_DOWNLOAD_ELEMENT
+GST_GL_DOWNLOAD_ELEMENT_CLASS
+GST_IS_GL_DOWNLOAD_ELEMENT_CLASS
+GST_TYPE_GL_DOWNLOAD_ELEMENT
+<SUBSECTION Private>
+gst_gl_download_element_get_type
+</SECTION>
+
+<SECTION>
+<FILE>element-gleffects</FILE>
+<TITLE>gleffects</TITLE>
+GstGLEffectsGeneric
+<SUBSECTION Standard>
+GstGLEffectsGenericClass
+GST_GL_EFFECTS_GENERIC
+GST_GL_EFFECTS_GENERIC_CAST
+GST_IS_GL_EFFECTS_GENERIC
+GST_GL_EFFECTS_GENERIC_CLASS
+GST_IS_GL_EFFECTS_GENERIC_CLASS
+GST_TYPE_GL_EFFECTS_GENERIC
+<SUBSECTION Private>
+gst_gl_effects_generic_get_type
+</SECTION>
+
+<SECTION>
+<FILE>element-glfilterapp</FILE>
+<TITLE>glfilterapp</TITLE>
+GstGLFilterApp
+<SUBSECTION Standard>
+GstGLFilterAppClass
+GST_GL_FILTER_APP
+GST_GL_FILTER_APP_CAST
+GST_IS_GL_FILTER_APP
+GST_GL_FILTER_APP_CLASS
+GST_IS_GL_FILTER_APP_CLASS
+GST_TYPE_GL_FILTER_APP
+<SUBSECTION Private>
+gst_gl_filter_app_get_type
+</SECTION>
+
+<SECTION>
+<FILE>element-glfilterbin</FILE>
+<TITLE>glfilterbin</TITLE>
+GstGLFilterBin
+<SUBSECTION Standard>
+GstGLFilterBinClass
+GST_GL_FILTER_BIN
+GST_GL_FILTER_BIN_CAST
+GST_IS_GL_FILTER_BIN
+GST_GL_FILTER_BIN_CLASS
+GST_IS_GL_FILTER_BIN_CLASS
+GST_TYPE_GL_FILTER_BIN
+<SUBSECTION Private>
+gst_gl_filter_bin_get_type
+</SECTION>
+
+<SECTION>
+<FILE>element-glfiltercube</FILE>
+<TITLE>glfiltercube</TITLE>
+GstGLFilterCube
+<SUBSECTION Standard>
+GstGLFilterCubeClass
+GST_GL_FILTER_CUBE
+GST_GL_FILTER_CUBE_CAST
+GST_IS_GL_FILTER_CUBE
+GST_GL_FILTER_CUBE_CLASS
+GST_IS_GL_FILTER_CUBE_CLASS
+GST_TYPE_GL_FILTER_CUBE
+<SUBSECTION Private>
+gst_gl_filter_cube_get_type
+</SECTION>
+
+<SECTION>
+<FILE>element-glfilterglass</FILE>
+<TITLE>glfilterglass</TITLE>
+GstGLFilterGlass
+<SUBSECTION Standard>
+GstGLFilterGlassClass
+GST_GL_FILTER_GLASS
+GST_GL_FILTER_GLASS_CAST
+GST_IS_GL_FILTER_GLASS
+GST_GL_FILTER_GLASS_CLASS
+GST_IS_GL_FILTER_GLASS_CLASS
+GST_TYPE_GL_FILTER_GLASS
+<SUBSECTION Private>
+gst_gl_filter_glass_get_type
+</SECTION>
+
+<SECTION>
+<FILE>element-glshader</FILE>
+<TITLE>glshader</TITLE>
+GstGLFilterShader
+<SUBSECTION Standard>
+GstGLFilterShaderClass
+GST_GL_FILTER_SHADER
+GST_GL_FILTER_SHADER_CAST
+GST_IS_GL_FILTER_SHADER
+GST_GL_FILTER_SHADER_CLASS
+GST_IS_GL_FILTER_SHADER_CLASS
+GST_TYPE_GL_FILTER_SHADER
+<SUBSECTION Private>
+gst_gl_filter_shader_get_type
+</SECTION>
+
+<SECTION>
+<FILE>element-glimagesinkelement</FILE>
+<TITLE>glimagesinkelement</TITLE>
+GstGLImageSink
+<SUBSECTION Standard>
+GstGLImageSinkClass
+GST_GL_IMAGE_SINK
+GST_GL_IMAGE_SINK_CAST
+GST_IS_GL_IMAGE_SINK
+GST_GL_IMAGE_SINK_CLASS
+GST_IS_GL_IMAGE_SINK_CLASS
+GST_TYPE_GL_IMAGE_SINK
+<SUBSECTION Private>
+gst_gl_image_sink_get_type
+</SECTION>
+
+<SECTION>
+<FILE>element-glimagesink</FILE>
+<TITLE>glimagesink</TITLE>
+GstGLImageSinkBin
+<SUBSECTION Standard>
+GstGLImageSinkBinClass
+GST_GL_IMAGE_SINK_BIN
+GST_GL_IMAGE_SINK_BIN_CAST
+GST_IS_GL_IMAGE_SINK_BIN
+GST_GL_IMAGE_SINK_BIN_CLASS
+GST_IS_GL_IMAGE_SINK_BIN_CLASS
+GST_TYPE_GL_IMAGE_SINK_BIN
+<SUBSECTION Private>
+gst_gl_image_sink_bin_get_type
+</SECTION>
+
+<SECTION>
+<FILE>element-glmixerbin</FILE>
+<TITLE>glmixerbin</TITLE>
+GstGLMixerBin
+GstGLMixerBinStartTimeSelection
+<SUBSECTION Standard>
+GstGLMixerBinClass
+GST_GL_MIXER_BIN
+GST_GL_MIXER_BIN_CAST
+GST_IS_GL_MIXER_BIN
+GST_GL_MIXER_BIN_CLASS
+GST_IS_GL_MIXER_BIN_CLASS
+GST_TYPE_GL_MIXER_BIN
+<SUBSECTION Private>
+gst_gl_mixer_bin_get_type
+</SECTION>
+
+<SECTION>
+<FILE>element-glmosaic</FILE>
+<TITLE>glmosaic</TITLE>
+GstGLMosaic
+<SUBSECTION Standard>
+GstGLMosaicClass
+GST_GL_MOSAIC
+GST_GL_MOSAIC_CAST
+GST_IS_GL_MOSAIC
+GST_GL_MOSAIC_CLASS
+GST_IS_GL_MOSAIC_CLASS
+GST_TYPE_GL_MOSAIC
+<SUBSECTION Private>
+gst_gl_mosaic_get_type
+</SECTION>
+
+<SECTION>
+<FILE>element-gloverlay</FILE>
+<TITLE>gloverlay</TITLE>
+GstGLOverlay
+<SUBSECTION Standard>
+GstGLOverlayClass
+GST_GL_OVERLAY
+GST_GL_OVERLAY_CAST
+GST_IS_GL_OVERLAY
+GST_GL_OVERLAY_CLASS
+GST_IS_GL_OVERLAY_CLASS
+GST_TYPE_GL_OVERLAY
+<SUBSECTION Private>
+gst_gl_overlay_get_type
+</SECTION>
+
+<SECTION>
+<FILE>element-glsinkbin</FILE>
+<TITLE>glsinkbin</TITLE>
+GstGLSinkBin
+<SUBSECTION Standard>
+GstGLSinkBinClass
+GST_GL_SINK_BIN
+GST_GL_SINK_BIN_CAST
+GST_IS_GL_SINK_BIN
+GST_GL_SINK_BIN_CLASS
+GST_IS_GL_SINK_BIN_CLASS
+GST_TYPE_GL_SINK_BIN
+<SUBSECTION Private>
+gst_gl_sink_bin_get_type
+</SECTION>
+
+<SECTION>
+<FILE>element-glsrcbin</FILE>
+<TITLE>glsrcbin</TITLE>
+GstGLSrcBin
+<SUBSECTION Standard>
+GstGLSrcBinClass
+GST_GL_SRC_BIN
+GST_GL_SRC_BIN_CAST
+GST_IS_GL_SRC_BIN
+GST_GL_SRC_BIN_CLASS
+GST_IS_GL_SRC_BIN_CLASS
+GST_TYPE_GL_SRC_BIN
+<SUBSECTION Private>
+gst_gl_src_bin_get_type
+</SECTION>
+
+<SECTION>
+<FILE>element-glstereomix</FILE>
+<TITLE>glstereomix</TITLE>
+GstGLStereoMix
+<SUBSECTION Standard>
+GstGLStereoMixClass
+GST_GL_STEREO_MIX
+GST_GL_STEREO_MIX_CAST
+GST_IS_GL_STEREO_MIX
+GST_GL_STEREO_MIX_CLASS
+GST_IS_GL_STEREO_MIX_CLASS
+GST_TYPE_GL_STEREO_MIX
+<SUBSECTION Private>
+gst_gl_stereo_mix_get_type
+</SECTION>
+
+<SECTION>
+<FILE>element-glstereosplit</FILE>
+<TITLE>glstereosplit</TITLE>
+GstGLStereoSplit
+<SUBSECTION Standard>
+GstGLStereoSplitClass
+GST_GL_STEREO_SPLIT
+GST_GL_STEREO_SPLIT_CAST
+GST_IS_GL_STEREO_SPLIT
+GST_GL_STEREO_SPLIT_CLASS
+GST_IS_GL_STEREO_SPLIT_CLASS
+GST_TYPE_GL_STEREO_SPLIT
+<SUBSECTION Private>
+gst_gl_stereo_split_get_type
+</SECTION>
+
+<SECTION>
+<FILE>element-gltestsrc</FILE>
+<TITLE>gltestsrc</TITLE>
+GstGLTestSrc
+GstGLTestSrcPattern
+<SUBSECTION Standard>
+GstGLTestSrcClass
+GST_GL_TEST_SRC
+GST_GL_TEST_SRC_CAST
+GST_IS_GL_TEST_SRC
+GST_GL_TEST_SRC_CLASS
+GST_IS_GL_TEST_SRC_CLASS
+GST_TYPE_GL_TEST_SRC
+<SUBSECTION Private>
+gst_gl_test_src_get_type
+</SECTION>
+
+<SECTION>
+<FILE>element-gltransformation</FILE>
+<TITLE>gltransformation</TITLE>
+GstGLTransformation
+<SUBSECTION Standard>
+GstGLTransformationClass
+GST_GL_TRANSFORMATION
+GST_GL_TRANSFORMATION_CLASS
+GST_IS_GL_TRANSFORMATION
+GST_IS_GL_TRANSFORMATION_CLASS
+GST_TYPE_GL_TRANSFORMATION
+</SECTION>
+
+<SECTION>
+<FILE>element-glupload</FILE>
+<TITLE>glupload</TITLE>
+GstGLUploadElement
+<SUBSECTION Standard>
+GstGLUploadElementClass
+GST_GL_UPLOAD_ELEMENT
+GST_GL_UPLOAD_ELEMENT_CAST
+GST_IS_GL_UPLOAD_ELEMENT
+GST_GL_UPLOAD_ELEMENT_CLASS
+GST_IS_GL_UPLOAD_ELEMENT_CLASS
+GST_TYPE_GL_UPLOAD_ELEMENT
+<SUBSECTION Private>
+gst_gl_upload_element_get_type
+</SECTION>
+
+<SECTION>
+<FILE>element-glvideomixerelement</FILE>
+<TITLE>glvideomixerelement</TITLE>
+GstGLVideoMixer
+GstGLVideoMixerBackground
+<SUBSECTION Standard>
+GstGLVideoMixerClass
+GST_GL_VIDEO_MIXER
+GST_GL_VIDEO_MIXER_CAST
+GST_IS_GL_VIDEO_MIXER
+GST_GL_VIDEO_MIXER_CLASS
+GST_IS_GL_VIDEO_MIXER_CLASS
+GST_TYPE_GL_VIDEO_MIXER
+<SUBSECTION Private>
+gst_gl_video_mixer_get_type
+</SECTION>
+
+<SECTION>
+<FILE>element-glvideomixer</FILE>
+<TITLE>glvideomixer</TITLE>
+GstGLVideoMixerBin
+<SUBSECTION Standard>
+GstGLVideoMixerBinClass
+GST_GL_VIDEO_MIXER_BIN
+GST_GL_VIDEO_MIXER_BIN_CAST
+GST_IS_GL_VIDEO_MIXER_BIN
+GST_GL_VIDEO_MIXER_BIN_CLASS
+GST_IS_GL_VIDEO_MIXER_BIN_CLASS
+GST_TYPE_GL_VIDEO_MIXER_BIN
+<SUBSECTION Private>
+gst_gl_video_mixer_bin_get_type
+</SECTION>
+
+<SECTION>
+<FILE>element-glviewconvert</FILE>
+<TITLE>glviewconvert</TITLE>
+GstGLViewConvertElement
+<SUBSECTION Standard>
+GstGLViewConvertElementClass
+GST_GL_VIEW_CONVERT_ELEMENT
+GST_GL_VIEW_CONVERT_ELEMENT_CAST
+GST_IS_GL_VIEW_CONVERT_ELEMENT
+GST_GL_VIEW_CONVERT_ELEMENT_CLASS
+GST_IS_GL_VIEW_CONVERT_ELEMENT_CLASS
+GST_TYPE_GL_VIEW_CONVERT_ELEMENT
+<SUBSECTION Private>
+gst_gl_view_convert_element_get_type
+</SECTION>
+
+<SECTION>
+<FILE>element-gsmdec</FILE>
+<TITLE>gsmdec</TITLE>
+GstGSMDec
+<SUBSECTION Standard>
+GstGSMDecClass
+GST_GSM_DEC
+GST_GSM_DEC_CAST
+GST_IS_GSM_DEC
+GST_GSM_DEC_CLASS
+GST_IS_GSM_DEC_CLASS
+GST_TYPE_GSM_DEC
+<SUBSECTION Private>
+gst_gsm_dec_get_type
+</SECTION>
+
+<SECTION>
+<FILE>element-gsmenc</FILE>
+<TITLE>gsmenc</TITLE>
+GstGSMEnc
+<SUBSECTION Standard>
+GstGSMEncClass
+GST_GSM_ENC
+GST_GSM_ENC_CAST
+GST_IS_GSM_ENC
+GST_GSM_ENC_CLASS
+GST_IS_GSM_ENC_CLASS
+GST_TYPE_GSM_ENC
+<SUBSECTION Private>
+gst_gsm_enc_get_type
</SECTION>
<SECTION>
<FILE>element-gaussianblur</FILE>
<TITLE>gaussianblur</TITLE>
-GaussBlur
+GstGaussianBlur
<SUBSECTION Standard>
-GaussBlurClass
-GAUSS_BLUR
-GST_TYPE_GAUSS_BLUR
-gauss_blur_get_type
-gst_gauss_blur_plugin_init
+GstGaussianBlurClass
+GST_GAUSSIAN_BLUR
+GST_GAUSSIAN_BLUR_CAST
+GST_IS_GAUSSIAN_BLUR
+GST_GAUSSIAN_BLUR_CLASS
+GST_IS_GAUSSIAN_BLUR_CLASS
+GST_TYPE_GAUSSIAN_BLUR
+<SUBSECTION Private>
+gst_gaussian_blur_get_type
+</SECTION>
+
+<SECTION>
+<FILE>element-gmedec</FILE>
+<TITLE>gmedec</TITLE>
+GstGmeDec
+<SUBSECTION Standard>
+GstGmeDecClass
+GST_GME_DEC
+GST_GME_DEC_CAST
+GST_IS_GME_DEC
+GST_GME_DEC_CLASS
+GST_IS_GME_DEC_CLASS
+GST_TYPE_GME_DEC
+<SUBSECTION Private>
+gst_gme_dec_get_type
+</SECTION>
+
+<SECTION>
+<FILE>element-grabcut</FILE>
+<TITLE>grabcut</TITLE>
+GstGrabcut
+<SUBSECTION Standard>
+GstGrabcutClass
+GST_GRABCUT
+GST_GRABCUT_CAST
+GST_IS_GRABCUT
+GST_GRABCUT_CLASS
+GST_IS_GRABCUT_CLASS
+GST_TYPE_GRABCUT
+<SUBSECTION Private>
+gst_grabcut_get_type
+</SECTION>
+
+<SECTION>
+<FILE>element-gtkglsink</FILE>
+<TITLE>gtkglsink</TITLE>
+GstGtkGLSink
+<SUBSECTION Standard>
+GstGtkGLSinkClass
+GST_GTK_GL_SINK
+GST_GTK_GL_SINK_CAST
+GST_IS_GTK_GL_SINK
+GST_GTK_GL_SINK_CLASS
+GST_IS_GTK_GL_SINK_CLASS
+GST_TYPE_GTK_GL_SINK
+<SUBSECTION Private>
+gst_gtk_gl_sink_get_type
+</SECTION>
+
+<SECTION>
+<FILE>element-gtksink</FILE>
+<TITLE>gtksink</TITLE>
+GstGtkSink
+<SUBSECTION Standard>
+GstGtkSinkClass
+GST_GTK_SINK
+GST_GTK_SINK_CAST
+GST_IS_GTK_SINK
+GST_GTK_SINK_CLASS
+GST_IS_GTK_SINK_CLASS
+GST_TYPE_GTK_SINK
+<SUBSECTION Private>
+gst_gtk_sink_get_type
+</SECTION>
+
+<SECTION>
+<FILE>element-h263parse</FILE>
+<TITLE>h263parse</TITLE>
+GstH263Parse
+<SUBSECTION Standard>
+GstH263ParseClass
+GST_H263_PARSE
+GST_H263_PARSE_CAST
+GST_IS_H263_PARSE
+GST_H263_PARSE_CLASS
+GST_IS_H263_PARSE_CLASS
+GST_TYPE_H263_PARSE
+<SUBSECTION Private>
+gst_h263_parse_get_type
+</SECTION>
+
+<SECTION>
+<FILE>element-h264parse</FILE>
+<TITLE>h264parse</TITLE>
+GstH264Parse
+<SUBSECTION Standard>
+GstH264ParseClass
+GST_H264_PARSE
+GST_H264_PARSE_CAST
+GST_IS_H264_PARSE
+GST_H264_PARSE_CLASS
+GST_IS_H264_PARSE_CLASS
+GST_TYPE_H264_PARSE
+<SUBSECTION Private>
+gst_h264_parse_get_type
+</SECTION>
+
+<SECTION>
+<FILE>element-h265parse</FILE>
+<TITLE>h265parse</TITLE>
+GstH265Parse
+<SUBSECTION Standard>
+GstH265ParseClass
+GST_H265_PARSE
+GST_H265_PARSE_CAST
+GST_IS_H265_PARSE
+GST_H265_PARSE_CLASS
+GST_IS_H265_PARSE_CLASS
+GST_TYPE_H265_PARSE
+<SUBSECTION Private>
+gst_h265_parse_get_type
+</SECTION>
+
+<SECTION>
+<FILE>element-hlsdemux</FILE>
+<TITLE>hlsdemux</TITLE>
+GstHLSDemux
+<SUBSECTION Standard>
+GstHLSDemuxClass
+GST_HLS_DEMUX
+GST_HLS_DEMUX_CAST
+GST_IS_HLS_DEMUX
+GST_HLS_DEMUX_CLASS
+GST_IS_HLS_DEMUX_CLASS
+GST_TYPE_HLS_DEMUX
+<SUBSECTION Private>
+gst_hls_demux_get_type
+</SECTION>
+
+<SECTION>
+<FILE>element-handdetect</FILE>
+<TITLE>handdetect</TITLE>
+GstHanddetect
+<SUBSECTION Standard>
+GstHanddetectClass
+GST_HANDDETECT
+GST_HANDDETECT_CAST
+GST_IS_HANDDETECT
+GST_HANDDETECT_CLASS
+GST_IS_HANDDETECT_CLASS
+GST_TYPE_HANDDETECT
+<SUBSECTION Private>
+gst_handdetect_get_type
+</SECTION>
+
+<SECTION>
+<FILE>element-hlssink</FILE>
+<TITLE>hlssink</TITLE>
+GstHlsSink
+<SUBSECTION Standard>
+GstHlsSinkClass
+GST_HLS_SINK
+GST_HLS_SINK_CAST
+GST_IS_HLS_SINK
+GST_HLS_SINK_CLASS
+GST_IS_HLS_SINK_CLASS
+GST_TYPE_HLS_SINK
+<SUBSECTION Private>
+gst_hls_sink_get_type
+</SECTION>
+
+<SECTION>
+<FILE>element-irtspparse</FILE>
+<TITLE>irtspparse</TITLE>
+GstIRTSPParse
+<SUBSECTION Standard>
+GstIRTSPParseClass
+GST_IRTSP_PARSE
+GST_IRTSP_PARSE_CAST
+GST_IS_IRTSP_PARSE
+GST_IRTSP_PARSE_CLASS
+GST_IS_IRTSP_PARSE_CLASS
+GST_TYPE_IRTSP_PARSE
+<SUBSECTION Private>
+gst_irtsp_parse_get_type
+</SECTION>
+
+<SECTION>
+<FILE>element-id3mux</FILE>
+<TITLE>id3mux</TITLE>
+GstId3Mux
+<SUBSECTION Standard>
+GstId3MuxClass
+GST_ID3_MUX
+GST_ID3_MUX_CAST
+GST_IS_ID3_MUX
+GST_ID3_MUX_CLASS
+GST_IS_ID3_MUX_CLASS
+GST_TYPE_ID3_MUX
+<SUBSECTION Private>
+gst_id3_mux_get_type
+</SECTION>
+
+<SECTION>
+<FILE>element-interaudiosink</FILE>
+<TITLE>interaudiosink</TITLE>
+GstInterAudioSink
+<SUBSECTION Standard>
+GstInterAudioSinkClass
+GST_INTER_AUDIO_SINK
+GST_INTER_AUDIO_SINK_CAST
+GST_IS_INTER_AUDIO_SINK
+GST_INTER_AUDIO_SINK_CLASS
+GST_IS_INTER_AUDIO_SINK_CLASS
+GST_TYPE_INTER_AUDIO_SINK
+<SUBSECTION Private>
+gst_inter_audio_sink_get_type
+</SECTION>
+
+<SECTION>
+<FILE>element-interaudiosrc</FILE>
+<TITLE>interaudiosrc</TITLE>
+GstInterAudioSrc
+<SUBSECTION Standard>
+GstInterAudioSrcClass
+GST_INTER_AUDIO_SRC
+GST_INTER_AUDIO_SRC_CAST
+GST_IS_INTER_AUDIO_SRC
+GST_INTER_AUDIO_SRC_CLASS
+GST_IS_INTER_AUDIO_SRC_CLASS
+GST_TYPE_INTER_AUDIO_SRC
+<SUBSECTION Private>
+gst_inter_audio_src_get_type
+</SECTION>
+
+<SECTION>
+<FILE>element-intersubsink</FILE>
+<TITLE>intersubsink</TITLE>
+GstInterSubSink
+<SUBSECTION Standard>
+GstInterSubSinkClass
+GST_INTER_SUB_SINK
+GST_INTER_SUB_SINK_CAST
+GST_IS_INTER_SUB_SINK
+GST_INTER_SUB_SINK_CLASS
+GST_IS_INTER_SUB_SINK_CLASS
+GST_TYPE_INTER_SUB_SINK
+<SUBSECTION Private>
+gst_inter_sub_sink_get_type
+</SECTION>
+
+<SECTION>
+<FILE>element-intersubsrc</FILE>
+<TITLE>intersubsrc</TITLE>
+GstInterSubSrc
+<SUBSECTION Standard>
+GstInterSubSrcClass
+GST_INTER_SUB_SRC
+GST_INTER_SUB_SRC_CAST
+GST_IS_INTER_SUB_SRC
+GST_INTER_SUB_SRC_CLASS
+GST_IS_INTER_SUB_SRC_CLASS
+GST_TYPE_INTER_SUB_SRC
+<SUBSECTION Private>
+gst_inter_sub_src_get_type
+</SECTION>
+
+<SECTION>
+<FILE>element-intervideosink</FILE>
+<TITLE>intervideosink</TITLE>
+GstInterVideoSink
+<SUBSECTION Standard>
+GstInterVideoSinkClass
+GST_INTER_VIDEO_SINK
+GST_INTER_VIDEO_SINK_CAST
+GST_IS_INTER_VIDEO_SINK
+GST_INTER_VIDEO_SINK_CLASS
+GST_IS_INTER_VIDEO_SINK_CLASS
+GST_TYPE_INTER_VIDEO_SINK
+<SUBSECTION Private>
+gst_inter_video_sink_get_type
+</SECTION>
+
+<SECTION>
+<FILE>element-intervideosrc</FILE>
+<TITLE>intervideosrc</TITLE>
+GstInterVideoSrc
+<SUBSECTION Standard>
+GstInterVideoSrcClass
+GST_INTER_VIDEO_SRC
+GST_INTER_VIDEO_SRC_CAST
+GST_IS_INTER_VIDEO_SRC
+GST_INTER_VIDEO_SRC_CLASS
+GST_IS_INTER_VIDEO_SRC_CLASS
+GST_TYPE_INTER_VIDEO_SRC
+<SUBSECTION Private>
+gst_inter_video_src_get_type
+</SECTION>
+
+<SECTION>
+<FILE>element-interlace</FILE>
+<TITLE>interlace</TITLE>
+GstInterlace
+GstInterlacePattern
+<SUBSECTION Standard>
+GstInterlaceClass
+GST_INTERLACE
+GST_INTERLACE_CAST
+GST_IS_INTERLACE
+GST_INTERLACE_CLASS
+GST_IS_INTERLACE_CLASS
+GST_TYPE_INTERLACE
+<SUBSECTION Private>
+gst_interlace_get_type
</SECTION>
<SECTION>
@@ -704,38 +2270,111 @@
<TITLE>ivfparse</TITLE>
GstIvfParse
<SUBSECTION Standard>
-GstIvfParseState
GstIvfParseClass
GST_IVF_PARSE
-GST_IVF_PARSE_CLASS
+GST_IVF_PARSE_CAST
GST_IS_IVF_PARSE
+GST_IVF_PARSE_CLASS
GST_IS_IVF_PARSE_CLASS
GST_TYPE_IVF_PARSE
+<SUBSECTION Private>
gst_ivf_parse_get_type
</SECTION>
<SECTION>
+<FILE>element-ivtc</FILE>
+<TITLE>ivtc</TITLE>
+GstIvtc
+<SUBSECTION Standard>
+GstIvtcClass
+GST_IVTC
+GST_IVTC_CAST
+GST_IS_IVTC
+GST_IVTC_CLASS
+GST_IS_IVTC_CLASS
+GST_TYPE_IVTC
+<SUBSECTION Private>
+gst_ivtc_get_type
+</SECTION>
+
+<SECTION>
+<FILE>element-jp2kdecimator</FILE>
+<TITLE>jp2kdecimator</TITLE>
+GstJP2kDecimator
+<SUBSECTION Standard>
+GstJP2kDecimatorClass
+GST_J_P2K_DECIMATOR
+GST_J_P2K_DECIMATOR_CAST
+GST_IS_J_P2K_DECIMATOR
+GST_J_P2K_DECIMATOR_CLASS
+GST_IS_J_P2K_DECIMATOR_CLASS
+GST_TYPE_J_P2K_DECIMATOR
+<SUBSECTION Private>
+gst_j_p2k_decimator_get_type
+</SECTION>
+
+<SECTION>
+<FILE>element-jpeg2000parse</FILE>
+<TITLE>jpeg2000parse</TITLE>
+GstJPEG2000Parse
+<SUBSECTION Standard>
+GstJPEG2000ParseClass
+GST_JPE_G2000_PARSE
+GST_JPE_G2000_PARSE_CAST
+GST_IS_JPE_G2000_PARSE
+GST_JPE_G2000_PARSE_CLASS
+GST_IS_JPE_G2000_PARSE_CLASS
+GST_TYPE_JPE_G2000_PARSE
+<SUBSECTION Private>
+gst_jpe_g2000_parse_get_type
+</SECTION>
+
+<SECTION>
+<FILE>element-jifmux</FILE>
+<TITLE>jifmux</TITLE>
+GstJifMux
+<SUBSECTION Standard>
+GstJifMuxClass
+GST_JIF_MUX
+GST_JIF_MUX_CAST
+GST_IS_JIF_MUX
+GST_JIF_MUX_CLASS
+GST_IS_JIF_MUX_CLASS
+GST_TYPE_JIF_MUX
+<SUBSECTION Private>
+gst_jif_mux_get_type
+</SECTION>
+
+<SECTION>
<FILE>element-jpegparse</FILE>
<TITLE>jpegparse</TITLE>
GstJpegParse
-<SUBSECTION Starndard>
+<SUBSECTION Standard>
GstJpegParseClass
GST_JPEG_PARSE
-GST_JPEG_PARSE_CLASS
+GST_JPEG_PARSE_CAST
GST_IS_JPEG_PARSE
+GST_JPEG_PARSE_CLASS
GST_IS_JPEG_PARSE_CLASS
GST_TYPE_JPEG_PARSE
+<SUBSECTION Private>
gst_jpeg_parse_get_type
</SECTION>
<SECTION>
-<FILE>element-liveadder</FILE>
-<TITLE>liveadder</TITLE>
-GstLiveAdder
+<FILE>element-kmssink</FILE>
+<TITLE>kmssink</TITLE>
+GstKMSSink
<SUBSECTION Standard>
-GstLiveAdderClass
-GST_TYPE_LIVE_ADDER
-gst_live_adder_get_type
+GstKMSSinkClass
+GST_KMS_SINK
+GST_KMS_SINK_CAST
+GST_IS_KMS_SINK
+GST_KMS_SINK_CLASS
+GST_IS_KMS_SINK_CLASS
+GST_TYPE_KMS_SINK
+<SUBSECTION Private>
+gst_kms_sink_get_type
</SECTION>
<SECTION>
@@ -746,12 +2385,12 @@
GstKaleidoscopeClass
GST_KALEIDOSCOPE
GST_KALEIDOSCOPE_CAST
-GST_KALEIDOSCOPE_CLASS
GST_IS_KALEIDOSCOPE
+GST_KALEIDOSCOPE_CLASS
GST_IS_KALEIDOSCOPE_CLASS
GST_TYPE_KALEIDOSCOPE
+<SUBSECTION Private>
gst_kaleidoscope_get_type
-gst_kaleidoscope_plugin_init
</SECTION>
<SECTION>
@@ -761,10 +2400,12 @@
<SUBSECTION Standard>
GstKateDecClass
GST_KATE_DEC
-GST_KATE_DEC_CLASS
+GST_KATE_DEC_CAST
GST_IS_KATE_DEC
+GST_KATE_DEC_CLASS
GST_IS_KATE_DEC_CLASS
GST_TYPE_KATE_DEC
+<SUBSECTION Private>
gst_kate_dec_get_type
</SECTION>
@@ -775,10 +2416,12 @@
<SUBSECTION Standard>
GstKateEncClass
GST_KATE_ENC
-GST_KATE_ENC_CLASS
+GST_KATE_ENC_CAST
GST_IS_KATE_ENC
+GST_KATE_ENC_CLASS
GST_IS_KATE_ENC_CLASS
GST_TYPE_KATE_ENC
+<SUBSECTION Private>
gst_kate_enc_get_type
</SECTION>
@@ -789,10 +2432,12 @@
<SUBSECTION Standard>
GstKateParseClass
GST_KATE_PARSE
-GST_KATE_PARSE_CLASS
+GST_KATE_PARSE_CAST
GST_IS_KATE_PARSE
+GST_KATE_PARSE_CLASS
GST_IS_KATE_PARSE_CLASS
GST_TYPE_KATE_PARSE
+<SUBSECTION Private>
gst_kate_parse_get_type
</SECTION>
@@ -803,10 +2448,12 @@
<SUBSECTION Standard>
GstKateTagClass
GST_KATE_TAG
-GST_KATE_TAG_CLASS
+GST_KATE_TAG_CAST
GST_IS_KATE_TAG
+GST_KATE_TAG_CLASS
GST_IS_KATE_TAG_CLASS
GST_TYPE_KATE_TAG
+<SUBSECTION Private>
gst_kate_tag_get_type
</SECTION>
@@ -825,6 +2472,22 @@
</SECTION>
<SECTION>
+<FILE>element-liveadder</FILE>
+<TITLE>liveadder</TITLE>
+GstLiveAdder
+<SUBSECTION Standard>
+GstLiveAdderClass
+GST_LIVE_ADDER
+GST_LIVE_ADDER_CAST
+GST_IS_LIVE_ADDER
+GST_LIVE_ADDER_CLASS
+GST_IS_LIVE_ADDER_CLASS
+GST_TYPE_LIVE_ADDER
+<SUBSECTION Private>
+gst_live_adder_get_type
+</SECTION>
+
+<SECTION>
<FILE>element-ladspa</FILE>
<TITLE>ladspa</TITLE>
GstLADSPA
@@ -833,6 +2496,54 @@
</SECTION>
<SECTION>
+<FILE>element-mmssrc</FILE>
+<TITLE>mmssrc</TITLE>
+GstMMS
+<SUBSECTION Standard>
+GstMMSClass
+GST_MMS
+GST_MMS_CAST
+GST_IS_MMS
+GST_MMS_CLASS
+GST_IS_MMS_CLASS
+GST_TYPE_MMS
+<SUBSECTION Private>
+gst_mms_get_type
+</SECTION>
+
+<SECTION>
+<FILE>element-mxfdemux</FILE>
+<TITLE>mxfdemux</TITLE>
+GstMXFDemux
+<SUBSECTION Standard>
+GstMXFDemuxClass
+GST_MXF_DEMUX
+GST_MXF_DEMUX_CAST
+GST_IS_MXF_DEMUX
+GST_MXF_DEMUX_CLASS
+GST_IS_MXF_DEMUX_CLASS
+GST_TYPE_MXF_DEMUX
+<SUBSECTION Private>
+gst_mxf_demux_get_type
+</SECTION>
+
+<SECTION>
+<FILE>element-mxfmux</FILE>
+<TITLE>mxfmux</TITLE>
+GstMXFMux
+<SUBSECTION Standard>
+GstMXFMuxClass
+GST_MXF_MUX
+GST_MXF_MUX_CAST
+GST_IS_MXF_MUX
+GST_MXF_MUX_CLASS
+GST_IS_MXF_MUX_CLASS
+GST_TYPE_MXF_MUX
+<SUBSECTION Private>
+gst_mxf_mux_get_type
+</SECTION>
+
+<SECTION>
<FILE>element-marble</FILE>
<TITLE>marble</TITLE>
GstMarble
@@ -840,12 +2551,28 @@
GstMarbleClass
GST_MARBLE
GST_MARBLE_CAST
-GST_MARBLE_CLASS
GST_IS_MARBLE
+GST_MARBLE_CLASS
GST_IS_MARBLE_CLASS
GST_TYPE_MARBLE
+<SUBSECTION Private>
gst_marble_get_type
-gst_marble_plugin_init
+</SECTION>
+
+<SECTION>
+<FILE>element-midiparse</FILE>
+<TITLE>midiparse</TITLE>
+GstMidiParse
+<SUBSECTION Standard>
+GstMidiParseClass
+GST_MIDI_PARSE
+GST_MIDI_PARSE_CAST
+GST_IS_MIDI_PARSE
+GST_MIDI_PARSE_CLASS
+GST_IS_MIDI_PARSE_CLASS
+GST_TYPE_MIDI_PARSE
+<SUBSECTION Private>
+gst_midi_parse_get_type
</SECTION>
<SECTION>
@@ -854,12 +2581,14 @@
GstMimDec
<SUBSECTION Standard>
GstMimDecClass
-GST_IS_MIMDEC
-GST_IS_MIMDEC_CLASS
-GST_MIMDEC
-GST_MIMDEC_CLASS
-GST_TYPE_MIMDEC
-gst_mimdec_get_type
+GST_MIM_DEC
+GST_MIM_DEC_CAST
+GST_IS_MIM_DEC
+GST_MIM_DEC_CLASS
+GST_IS_MIM_DEC_CLASS
+GST_TYPE_MIM_DEC
+<SUBSECTION Private>
+gst_mim_dec_get_type
</SECTION>
<SECTION>
@@ -868,28 +2597,31 @@
GstMimEnc
<SUBSECTION Standard>
GstMimEncClass
-GST_IS_MIMENC
-GST_IS_MIMENC_CLASS
-GST_MIMENC
-GST_MIMENC_CLASS
-GST_TYPE_MIMENC
-gst_mimenc_get_type
+GST_MIM_ENC
+GST_MIM_ENC_CAST
+GST_IS_MIM_ENC
+GST_MIM_ENC_CLASS
+GST_IS_MIM_ENC_CLASS
+GST_TYPE_MIM_ENC
+<SUBSECTION Private>
+gst_mim_enc_get_type
</SECTION>
<SECTION>
<FILE>element-mirror</FILE>
<TITLE>mirror</TITLE>
GstMirror
+GstMirrorMode
<SUBSECTION Standard>
GstMirrorClass
GST_MIRROR
GST_MIRROR_CAST
-GST_MIRROR_CLASS
GST_IS_MIRROR
+GST_MIRROR_CLASS
GST_IS_MIRROR_CLASS
GST_TYPE_MIRROR
+<SUBSECTION Private>
gst_mirror_get_type
-gst_mirror_plugin_init
</SECTION>
<SECTION>
@@ -898,97 +2630,137 @@
GstModPlug
<SUBSECTION Standard>
GstModPlugClass
-GST_MODPLUG
-GST_MODPLUG_CLASS
-GST_IS_MODPLUG
-GST_IS_MODPLUG_CLASS
-GST_TYPE_MODPLUG
-gst_modplug_get_type
+GST_MOD_PLUG
+GST_MOD_PLUG_CAST
+GST_IS_MOD_PLUG
+GST_MOD_PLUG_CLASS
+GST_IS_MOD_PLUG_CLASS
+GST_TYPE_MOD_PLUG
+<SUBSECTION Private>
+gst_mod_plug_get_type
+</SECTION>
+
+<SECTION>
+<FILE>element-motioncells</FILE>
+<TITLE>motioncells</TITLE>
+GstMotioncells
+<SUBSECTION Standard>
+GstMotioncellsClass
+GST_MOTIONCELLS
+GST_MOTIONCELLS_CAST
+GST_IS_MOTIONCELLS
+GST_MOTIONCELLS_CLASS
+GST_IS_MOTIONCELLS_CLASS
+GST_TYPE_MOTIONCELLS
+<SUBSECTION Private>
+gst_motioncells_get_type
</SECTION>
<SECTION>
<FILE>element-mpeg2enc</FILE>
<TITLE>mpeg2enc</TITLE>
GstMpeg2enc
+GstMpeg2encAspect
+GstMpeg2encFormat
+GstMpeg2encFramerate
+GstMpeg2encInterlaceMode
+GstMpeg2encVideoNorm
+GstMpeg2encPlaybackFieldOrders
+GstMpeg2encQuantisationMatrix
<SUBSECTION Standard>
GstMpeg2encClass
GST_MPEG2ENC
-GST_MPEG2ENC_CLASS
+GST_MPEG2ENC_CAST
GST_IS_MPEG2ENC
+GST_MPEG2ENC_CLASS
GST_IS_MPEG2ENC_CLASS
GST_TYPE_MPEG2ENC
-GST_MPEG2ENC_MUTEX_LOCK
-GST_MPEG2ENC_MUTEX_UNLOCK
-GST_MPEG2ENC_SIGNAL
-GST_MPEG2ENC_WAIT
+<SUBSECTION Private>
gst_mpeg2enc_get_type
</SECTION>
<SECTION>
-<FILE>element-mpegpsmux</FILE>
-<TITLE>mpegpsmux</TITLE>
+<FILE>element-mpeg4videoparse</FILE>
+<TITLE>mpeg4videoparse</TITLE>
+GstMpeg4VParse
<SUBSECTION Standard>
-MpegPsMux
-GST_MPEG_PSMUX
-GST_TYPE_MPEG_PSMUX
-MpegPsMuxClass
-mpegpsmux_get_type
+GstMpeg4VParseClass
+GST_MPEG4_V_PARSE
+GST_MPEG4_V_PARSE_CAST
+GST_IS_MPEG4_V_PARSE
+GST_MPEG4_V_PARSE_CLASS
+GST_IS_MPEG4_V_PARSE_CLASS
+GST_TYPE_MPEG4_V_PARSE
<SUBSECTION Private>
-MpegPsPadData
-MpegPsPadDataPrepareFunction
-CLOCK_BASE
-CLOCK_FREQ
-GSTTIME_TO_MPEGTIME
-NORMAL_TS_PACKET_LENGTH
-M2TS_PACKET_LENGTH
-STANDARD_TIME_CLOCK
-TWO_POW_33_MINUS1
+gst_mpeg4_v_parse_get_type
</SECTION>
<SECTION>
-<FILE>element-mpegtsmux</FILE>
-<TITLE>mpegtsmux</TITLE>
+<FILE>element-mpegpsdemux</FILE>
+<TITLE>mpegpsdemux</TITLE>
+GstMpegPSDemux
<SUBSECTION Standard>
-MpegTsMux
-GST_MPEG_TSMUX
-GST_TYPE_MPEG_TSMUX
-MpegTsMuxClass
-mpegtsmux_get_type
+GstMpegPSDemuxClass
+GST_MPEG_PS_DEMUX
+GST_MPEG_PS_DEMUX_CAST
+GST_IS_MPEG_PS_DEMUX
+GST_MPEG_PS_DEMUX_CLASS
+GST_IS_MPEG_PS_DEMUX_CLASS
+GST_TYPE_MPEG_PS_DEMUX
<SUBSECTION Private>
-MpegTsPadData
-CLOCK_BASE
-CLOCK_FREQ
-CLOCK_FREQ_SCR
-MPEGTIME_TO_GSTTIME
-GSTTIME_TO_MPEGTIME
-MPEG_SYS_TIME_TO_GSTTIME
-GSTTIME_TO_MPEG_SYS_TIME
-NORMAL_TS_PACKET_LENGTH
-M2TS_PACKET_LENGTH
-MAX_PROG_NUMBER
-DEFAULT_PROG_ID
+gst_mpeg_ps_demux_get_type
+</SECTION>
+
+<SECTION>
+<FILE>element-mpegvideoparse</FILE>
+<TITLE>mpegvideoparse</TITLE>
+GstMpegvParse
+<SUBSECTION Standard>
+GstMpegvParseClass
+GST_MPEGV_PARSE
+GST_MPEGV_PARSE_CAST
+GST_IS_MPEGV_PARSE
+GST_MPEGV_PARSE_CLASS
+GST_IS_MPEGV_PARSE_CLASS
+GST_TYPE_MPEGV_PARSE
+<SUBSECTION Private>
+gst_mpegv_parse_get_type
</SECTION>
<SECTION>
<FILE>element-mplex</FILE>
<TITLE>mplex</TITLE>
GstMplex
+GstMplexFormat
<SUBSECTION Standard>
GstMplexClass
GST_MPLEX
-GST_MPLEX_CLASS
+GST_MPLEX_CAST
GST_IS_MPLEX
+GST_MPLEX_CLASS
GST_IS_MPLEX_CLASS
GST_TYPE_MPLEX
-GST_MPLEX_MUTEX_LOCK
-GST_MPLEX_MUTEX_UNLOCK
-GST_MPLEX_SIGNAL
-GST_MPLEX_SIGNAL_ALL
-GST_MPLEX_WAIT
+<SUBSECTION Private>
gst_mplex_get_type
</SECTION>
<SECTION>
+<FILE>element-mssdemux</FILE>
+<TITLE>mssdemux</TITLE>
+GstMssDemux
+<SUBSECTION Standard>
+GstMssDemuxClass
+GST_MSS_DEMUX
+GST_MSS_DEMUX_CAST
+GST_IS_MSS_DEMUX
+GST_MSS_DEMUX_CLASS
+GST_IS_MSS_DEMUX_CLASS
+GST_TYPE_MSS_DEMUX
+<SUBSECTION Private>
+gst_mss_demux_get_type
+</SECTION>
+
+<SECTION>
<FILE>element-mxfdemux</FILE>
<TITLE>mxfdemux</TITLE>
GstMXFDemux
@@ -1018,6 +2790,22 @@
</SECTION>
<SECTION>
+<FILE>element-netsim</FILE>
+<TITLE>netsim</TITLE>
+GstNetSim
+<SUBSECTION Standard>
+GstNetSimClass
+GST_NET_SIM
+GST_NET_SIM_CAST
+GST_IS_NET_SIM
+GST_NET_SIM_CLASS
+GST_IS_NET_SIM_CLASS
+GST_TYPE_NET_SIM
+<SUBSECTION Private>
+gst_net_sim_get_type
+</SECTION>
+
+<SECTION>
<FILE>element-nuvdemux</FILE>
<TITLE>nuvdemux</TITLE>
GstNuvDemux
@@ -1053,25 +2841,78 @@
<SUBSECTION Standard>
GstOFAClass
GST_OFA
-GST_OFA_CLASS
+GST_OFA_CAST
GST_IS_OFA
+GST_OFA_CLASS
GST_IS_OFA_CLASS
GST_TYPE_OFA
+<SUBSECTION Private>
gst_ofa_get_type
</SECTION>
<SECTION>
<FILE>element-openalsink</FILE>
<TITLE>openalsink</TITLE>
-GstOpenalSink
+GstOpenALSink
<SUBSECTION Standard>
-GstOpenalSinkClass
-GST_OPENAL_SINK
-GST_OPENAL_SINK_CLASS
-GST_IS_OPENAL_SINK
-GST_IS_OPENAL_SINK_CLASS
-GST_TYPE_OPENAL_SINK
-gst_openal_sink_get_type
+GstOpenALSinkClass
+GST_OPEN_AL_SINK
+GST_OPEN_AL_SINK_CAST
+GST_IS_OPEN_AL_SINK
+GST_OPEN_AL_SINK_CLASS
+GST_IS_OPEN_AL_SINK_CLASS
+GST_TYPE_OPEN_AL_SINK
+<SUBSECTION Private>
+gst_open_al_sink_get_type
+</SECTION>
+
+<SECTION>
+<FILE>element-openexrdec</FILE>
+<TITLE>openexrdec</TITLE>
+GstOpenEXRDec
+<SUBSECTION Standard>
+GstOpenEXRDecClass
+GST_OPEN_EXR_DEC
+GST_OPEN_EXR_DEC_CAST
+GST_IS_OPEN_EXR_DEC
+GST_OPEN_EXR_DEC_CLASS
+GST_IS_OPEN_EXR_DEC_CLASS
+GST_TYPE_OPEN_EXR_DEC
+<SUBSECTION Private>
+gst_open_exr_dec_get_type
+</SECTION>
+
+<SECTION>
+<FILE>element-openjpegdec</FILE>
+<TITLE>openjpegdec</TITLE>
+GstOpenJPEGDec
+<SUBSECTION Standard>
+GstOpenJPEGDecClass
+GST_OPEN_JPEG_DEC
+GST_OPEN_JPEG_DEC_CAST
+GST_IS_OPEN_JPEG_DEC
+GST_OPEN_JPEG_DEC_CLASS
+GST_IS_OPEN_JPEG_DEC_CLASS
+GST_TYPE_OPEN_JPEG_DEC
+<SUBSECTION Private>
+gst_open_jpeg_dec_get_type
+</SECTION>
+
+<SECTION>
+<FILE>element-openjpegenc</FILE>
+<TITLE>openjpegenc</TITLE>
+GstOpenJPEGEnc
+GstOpenJPEGEncProgressionOrder
+<SUBSECTION Standard>
+GstOpenJPEGEncClass
+GST_OPEN_JPEG_ENC
+GST_OPEN_JPEG_ENC_CAST
+GST_IS_OPEN_JPEG_ENC
+GST_OPEN_JPEG_ENC_CLASS
+GST_IS_OPEN_JPEG_ENC_CLASS
+GST_TYPE_OPEN_JPEG_ENC
+<SUBSECTION Private>
+gst_open_jpeg_enc_get_type
</SECTION>
<SECTION>
@@ -1081,25 +2922,45 @@
<SUBSECTION Standard>
GstOpenalSrcClass
GST_OPENAL_SRC
-GST_OPENAL_SRC_CLASS
+GST_OPENAL_SRC_CAST
GST_IS_OPENAL_SRC
+GST_OPENAL_SRC_CLASS
GST_IS_OPENAL_SRC_CLASS
GST_TYPE_OPENAL_SRC
+<SUBSECTION Private>
gst_openal_src_get_type
</SECTION>
+<SECTION>
<FILE>element-opencvtextoverlay</FILE>
<TITLE>opencvtextoverlay</TITLE>
GstOpencvTextOverlay
<SUBSECTION Standard>
GstOpencvTextOverlayClass
GST_OPENCV_TEXT_OVERLAY
-GST_OPENCV_TEXT_OVERLAY_CLASS
-GST_TYPE_OPENCV_TEXT_OVERLAY
+GST_OPENCV_TEXT_OVERLAY_CAST
GST_IS_OPENCV_TEXT_OVERLAY
+GST_OPENCV_TEXT_OVERLAY_CLASS
GST_IS_OPENCV_TEXT_OVERLAY_CLASS
+GST_TYPE_OPENCV_TEXT_OVERLAY
+<SUBSECTION Private>
gst_opencv_text_overlay_get_type
-gst_opencv_text_overlay_plugin_init
+</SECTION>
+
+<SECTION>
+<FILE>element-opusparse</FILE>
+<TITLE>opusparse</TITLE>
+GstOpusParse
+<SUBSECTION Standard>
+GstOpusParseClass
+GST_OPUS_PARSE
+GST_OPUS_PARSE_CAST
+GST_IS_OPUS_PARSE
+GST_OPUS_PARSE_CLASS
+GST_IS_OPUS_PARSE_CLASS
+GST_TYPE_OPUS_PARSE
+<SUBSECTION Private>
+gst_opus_parse_get_type
</SECTION>
<SECTION>
@@ -1109,15 +2970,32 @@
<SUBSECTION Standard>
GstPcapParseClass
GST_PCAP_PARSE
-GST_PCAP_PARSE_CLASS
+GST_PCAP_PARSE_CAST
GST_IS_PCAP_PARSE
+GST_PCAP_PARSE_CLASS
GST_IS_PCAP_PARSE_CLASS
GST_TYPE_PCAP_PARSE
-GstPcapParseState
+<SUBSECTION Private>
gst_pcap_parse_get_type
</SECTION>
<SECTION>
+<FILE>element-perspective</FILE>
+<TITLE>perspective</TITLE>
+GstPerspective
+<SUBSECTION Standard>
+GstPerspectiveClass
+GST_PERSPECTIVE
+GST_PERSPECTIVE_CAST
+GST_IS_PERSPECTIVE
+GST_PERSPECTIVE_CLASS
+GST_IS_PERSPECTIVE_CLASS
+GST_TYPE_PERSPECTIVE
+<SUBSECTION Private>
+gst_perspective_get_type
+</SECTION>
+
+<SECTION>
<FILE>element-pinch</FILE>
<TITLE>pinch</TITLE>
GstPinch
@@ -1125,68 +3003,108 @@
GstPinchClass
GST_PINCH
GST_PINCH_CAST
-GST_PINCH_CLASS
GST_IS_PINCH
+GST_PINCH_CLASS
GST_IS_PINCH_CLASS
GST_TYPE_PINCH
+<SUBSECTION Private>
gst_pinch_get_type
-gst_pinch_plugin_init
-</SECTION>
-
-<FILE>element-pyramidsegment</FILE>
-<TITLE>pyramidsegment</TITLE>
-Gstpyramidsegment
-<SUBSECTION Standard>
-GstpyramidsegmentClass
-GST_PYRAMIDSEGMENT
-GST_PYRAMIDSEGMENT_CLASS
-GST_TYPE_PYRAMIDSEGMENT
-GST_IS_PYRAMIDSEGMENT
-GST_IS_PYRAMIDSEGMENT_CLASS
-gst_pyramidsegment_get_type
-gst_pyramidsegment_plugin_init
</SECTION>
<SECTION>
-<FILE>element-rfbsrc</FILE>
-<TITLE>rfbsrc</TITLE>
-GstRfbSrc
+<FILE>element-pitch</FILE>
+<TITLE>pitch</TITLE>
+GstPitch
<SUBSECTION Standard>
-GstRfbSrcClass
-GST_RFB_SRC
-GST_RFB_SRC_CLASS
-GST_IS_RFB_SRC
-GST_IS_RFB_SRC_CLASS
-GST_TYPE_RFB_SRC
-gst_rfb_src_get_type
+GstPitchClass
+GST_PITCH
+GST_PITCH_CAST
+GST_IS_PITCH
+GST_PITCH_CLASS
+GST_IS_PITCH_CLASS
+GST_TYPE_PITCH
+<SUBSECTION Private>
+gst_pitch_get_type
</SECTION>
<SECTION>
-<FILE>element-rsvgoverlay</FILE>
-<TITLE>rsvgoverlay</TITLE>
-GstRsvgOverlay
+<FILE>element-pngparse</FILE>
+<TITLE>pngparse</TITLE>
+GstPngParse
<SUBSECTION Standard>
-GstRsvgOverlayClass
-GST_RSVG_OVERLAY
-GST_RSVG_OVERLAY_CLASS
-GST_IS_RSVG_OVERLAY
-GST_IS_RSVG_OVERLAY_CLASS
-GST_TYPE_RSVG_OVERLAY
-gst_rsvg_overlay_get_type
+GstPngParseClass
+GST_PNG_PARSE
+GST_PNG_PARSE_CAST
+GST_IS_PNG_PARSE
+GST_PNG_PARSE_CLASS
+GST_IS_PNG_PARSE_CLASS
+GST_TYPE_PNG_PARSE
+<SUBSECTION Private>
+gst_png_parse_get_type
</SECTION>
<SECTION>
-<FILE>element-rsvgdec</FILE>
-<TITLE>rsvgdec</TITLE>
-GstRsvgDec
+<FILE>element-pnmdec</FILE>
+<TITLE>pnmdec</TITLE>
+GstPnmdec
<SUBSECTION Standard>
-GstRsvgDecClass
-GST_RSVG_DEC
-GST_RSVG_DEC_CLASS
-GST_IS_RSVG_DEC
-GST_IS_RSVG_DEC_CLASS
-GST_TYPE_RSVG_DEC
-gst_rsvg_dec_get_type
+GstPnmdecClass
+GST_PNMDEC
+GST_PNMDEC_CAST
+GST_IS_PNMDEC
+GST_PNMDEC_CLASS
+GST_IS_PNMDEC_CLASS
+GST_TYPE_PNMDEC
+<SUBSECTION Private>
+gst_pnmdec_get_type
+</SECTION>
+
+<SECTION>
+<FILE>element-pnmenc</FILE>
+<TITLE>pnmenc</TITLE>
+GstPnmenc
+<SUBSECTION Standard>
+GstPnmencClass
+GST_PNMENC
+GST_PNMENC_CAST
+GST_IS_PNMENC
+GST_PNMENC_CLASS
+GST_IS_PNMENC_CLASS
+GST_TYPE_PNMENC
+<SUBSECTION Private>
+gst_pnmenc_get_type
+</SECTION>
+
+<SECTION>
+<FILE>element-qmlglsink</FILE>
+<TITLE>qmlglsink</TITLE>
+GstQtSink
+<SUBSECTION Standard>
+GstQtSinkClass
+GST_QT_SINK
+GST_QT_SINK_CAST
+GST_IS_QT_SINK
+GST_QT_SINK_CLASS
+GST_IS_QT_SINK_CLASS
+GST_TYPE_QT_SINK
+<SUBSECTION Private>
+gst_qt_sink_get_type
+</SECTION>
+
+<SECTION>
+<FILE>element-rgb2bayer</FILE>
+<TITLE>rgb2bayer</TITLE>
+GstRGB2Bayer
+<SUBSECTION Standard>
+GstRGB2BayerClass
+GST_RG_B2_BAYER
+GST_RG_B2_BAYER_CAST
+GST_IS_RG_B2_BAYER
+GST_RG_B2_BAYER_CLASS
+GST_IS_RG_B2_BAYER_CLASS
+GST_TYPE_RG_B2_BAYER
+<SUBSECTION Private>
+gst_rg_b2_bayer_get_type
</SECTION>
<SECTION>
@@ -1196,11 +3114,13 @@
<SUBSECTION Standard>
GstRTMPSinkClass
GST_RTMP_SINK
+GST_RTMP_SINK_CAST
GST_IS_RTMP_SINK
-GST_TYPE_RTMP_SINK
-gst_rtmp_sink_get_type
GST_RTMP_SINK_CLASS
GST_IS_RTMP_SINK_CLASS
+GST_TYPE_RTMP_SINK
+<SUBSECTION Private>
+gst_rtmp_sink_get_type
</SECTION>
<SECTION>
@@ -1210,11 +3130,158 @@
<SUBSECTION Standard>
GstRTMPSrcClass
GST_RTMP_SRC
+GST_RTMP_SRC_CAST
GST_IS_RTMP_SRC
-GST_TYPE_RTMP_SRC
-gst_rtmp_src_get_type
GST_RTMP_SRC_CLASS
GST_IS_RTMP_SRC_CLASS
+GST_TYPE_RTMP_SRC
+<SUBSECTION Private>
+gst_rtmp_src_get_type
+</SECTION>
+
+<SECTION>
+<FILE>element-removesilence</FILE>
+<TITLE>removesilence</TITLE>
+GstRemoveSilence
+<SUBSECTION Standard>
+GstRemoveSilenceClass
+GST_REMOVE_SILENCE
+GST_REMOVE_SILENCE_CAST
+GST_IS_REMOVE_SILENCE
+GST_REMOVE_SILENCE_CLASS
+GST_IS_REMOVE_SILENCE_CLASS
+GST_TYPE_REMOVE_SILENCE
+<SUBSECTION Private>
+gst_remove_silence_get_type
+</SECTION>
+
+<SECTION>
+<FILE>element-retinex</FILE>
+<TITLE>retinex</TITLE>
+GstRetinex
+GstRetinexMethod
+<SUBSECTION Standard>
+GstRetinexClass
+GST_RETINEX
+GST_RETINEX_CAST
+GST_IS_RETINEX
+GST_RETINEX_CLASS
+GST_IS_RETINEX_CLASS
+GST_TYPE_RETINEX
+<SUBSECTION Private>
+gst_retinex_get_type
+</SECTION>
+
+<SECTION>
+<FILE>element-rfbsrc</FILE>
+<TITLE>rfbsrc</TITLE>
+GstRfbSrc
+<SUBSECTION Standard>
+GstRfbSrcClass
+GST_RFB_SRC
+GST_RFB_SRC_CAST
+GST_IS_RFB_SRC
+GST_RFB_SRC_CLASS
+GST_IS_RFB_SRC_CLASS
+GST_TYPE_RFB_SRC
+<SUBSECTION Private>
+gst_rfb_src_get_type
+</SECTION>
+
+<SECTION>
+<FILE>element-rotate</FILE>
+<TITLE>rotate</TITLE>
+GstRotate
+<SUBSECTION Standard>
+GstRotateClass
+GST_ROTATE
+GST_ROTATE_CAST
+GST_IS_ROTATE
+GST_ROTATE_CLASS
+GST_IS_ROTATE_CLASS
+GST_TYPE_ROTATE
+<SUBSECTION Private>
+gst_rotate_get_type
+</SECTION>
+
+<SECTION>
+<FILE>element-rsvgdec</FILE>
+<TITLE>rsvgdec</TITLE>
+GstRsvgDec
+<SUBSECTION Standard>
+GstRsvgDecClass
+GST_RSVG_DEC
+GST_RSVG_DEC_CAST
+GST_IS_RSVG_DEC
+GST_RSVG_DEC_CLASS
+GST_IS_RSVG_DEC_CLASS
+GST_TYPE_RSVG_DEC
+<SUBSECTION Private>
+gst_rsvg_dec_get_type
+</SECTION>
+
+<SECTION>
+<FILE>element-rsvgoverlay</FILE>
+<TITLE>rsvgoverlay</TITLE>
+GstRsvgOverlay
+<SUBSECTION Standard>
+GstRsvgOverlayClass
+GST_RSVG_OVERLAY
+GST_RSVG_OVERLAY_CAST
+GST_IS_RSVG_OVERLAY
+GST_RSVG_OVERLAY_CLASS
+GST_IS_RSVG_OVERLAY_CLASS
+GST_TYPE_RSVG_OVERLAY
+<SUBSECTION Private>
+gst_rsvg_overlay_get_type
+</SECTION>
+
+<SECTION>
+<FILE>element-rtpasfpay</FILE>
+<TITLE>rtpasfpay</TITLE>
+GstRtpAsfPay
+<SUBSECTION Standard>
+GstRtpAsfPayClass
+GST_RTP_ASF_PAY
+GST_RTP_ASF_PAY_CAST
+GST_IS_RTP_ASF_PAY
+GST_RTP_ASF_PAY_CLASS
+GST_IS_RTP_ASF_PAY_CLASS
+GST_TYPE_RTP_ASF_PAY
+<SUBSECTION Private>
+gst_rtp_asf_pay_get_type
+</SECTION>
+
+<SECTION>
+<FILE>element-rtponvifparse</FILE>
+<TITLE>rtponvifparse</TITLE>
+GstRtpOnvifParse
+<SUBSECTION Standard>
+GstRtpOnvifParseClass
+GST_RTP_ONVIF_PARSE
+GST_RTP_ONVIF_PARSE_CAST
+GST_IS_RTP_ONVIF_PARSE
+GST_RTP_ONVIF_PARSE_CLASS
+GST_IS_RTP_ONVIF_PARSE_CLASS
+GST_TYPE_RTP_ONVIF_PARSE
+<SUBSECTION Private>
+gst_rtp_onvif_parse_get_type
+</SECTION>
+
+<SECTION>
+<FILE>element-rtponviftimestamp</FILE>
+<TITLE>rtponviftimestamp</TITLE>
+GstRtpOnvifTimestamp
+<SUBSECTION Standard>
+GstRtpOnvifTimestampClass
+GST_RTP_ONVIF_TIMESTAMP
+GST_RTP_ONVIF_TIMESTAMP_CAST
+GST_IS_RTP_ONVIF_TIMESTAMP
+GST_RTP_ONVIF_TIMESTAMP_CLASS
+GST_IS_RTP_ONVIF_TIMESTAMP_CLASS
+GST_TYPE_RTP_ONVIF_TIMESTAMP
+<SUBSECTION Private>
+gst_rtp_onvif_timestamp_get_type
</SECTION>
<SECTION>
@@ -1254,17 +3321,111 @@
GstSDPDemux
<SUBSECTION Standard>
GstSDPDemuxClass
-GstSDPStream
GST_SDP_DEMUX
-GST_SDP_DEMUX_CLASS
+GST_SDP_DEMUX_CAST
GST_IS_SDP_DEMUX
+GST_SDP_DEMUX_CLASS
GST_IS_SDP_DEMUX_CLASS
GST_TYPE_SDP_DEMUX
+<SUBSECTION Private>
gst_sdp_demux_get_type
-GST_SDP_DEMUX_CAST
-GST_SDP_STREAM_GET_LOCK
-GST_SDP_STREAM_LOCK
-GST_SDP_STREAM_UNLOCK
+</SECTION>
+
+<SECTION>
+<FILE>element-sfdec</FILE>
+<TITLE>sfdec</TITLE>
+GstSFDec
+<SUBSECTION Standard>
+GstSFDecClass
+GST_SF_DEC
+GST_SF_DEC_CAST
+GST_IS_SF_DEC
+GST_SF_DEC_CLASS
+GST_IS_SF_DEC_CLASS
+GST_TYPE_SF_DEC
+<SUBSECTION Private>
+gst_sf_dec_get_type
+</SECTION>
+
+<SECTION>
+<FILE>element-scenechange</FILE>
+<TITLE>scenechange</TITLE>
+GstSceneChange
+<SUBSECTION Standard>
+GstSceneChangeClass
+GST_SCENE_CHANGE
+GST_SCENE_CHANGE_CAST
+GST_IS_SCENE_CHANGE
+GST_SCENE_CHANGE_CLASS
+GST_IS_SCENE_CHANGE_CLASS
+GST_TYPE_SCENE_CHANGE
+<SUBSECTION Private>
+gst_scene_change_get_type
+</SECTION>
+
+<SECTION>
+<FILE>element-schrodec</FILE>
+<TITLE>schrodec</TITLE>
+GstSchroDec
+<SUBSECTION Standard>
+GstSchroDecClass
+GST_SCHRO_DEC
+GST_SCHRO_DEC_CAST
+GST_IS_SCHRO_DEC
+GST_SCHRO_DEC_CLASS
+GST_IS_SCHRO_DEC_CLASS
+GST_TYPE_SCHRO_DEC
+<SUBSECTION Private>
+gst_schro_dec_get_type
+</SECTION>
+
+<SECTION>
+<FILE>element-schroenc</FILE>
+<TITLE>schroenc</TITLE>
+GstSchroEnc
+<SUBSECTION Standard>
+GstSchroEncClass
+GST_SCHRO_ENC
+GST_SCHRO_ENC_CAST
+GST_IS_SCHRO_ENC
+GST_SCHRO_ENC_CLASS
+GST_IS_SCHRO_ENC_CLASS
+GST_TYPE_SCHRO_ENC
+<SUBSECTION Private>
+gst_schro_enc_get_type
+</SECTION>
+
+<SECTION>
+<FILE>element-sdpsrc</FILE>
+<TITLE>sdpsrc</TITLE>
+GstSdpSrc
+<SUBSECTION Standard>
+GstSdpSrcClass
+GST_SDP_SRC
+GST_SDP_SRC_CAST
+GST_IS_SDP_SRC
+GST_SDP_SRC_CLASS
+GST_IS_SDP_SRC_CLASS
+GST_TYPE_SDP_SRC
+<SUBSECTION Private>
+gst_sdp_src_get_type
+</SECTION>
+
+<SECTION>
+<FILE>element-segmentation</FILE>
+<TITLE>segmentation</TITLE>
+GstSegmentation
+GstSegmentationMethod
+<SUBSECTION Standard>
+GstSegmentationClass
+GST_SEGMENTATION
+GST_SEGMENTATION_CAST
+GST_IS_SEGMENTATION
+GST_SEGMENTATION_CLASS
+GST_IS_SEGMENTATION_CLASS
+GST_TYPE_SEGMENTATION
+<SUBSECTION Private>
+gst_segmentation_get_type
</SECTION>
<SECTION>
@@ -1273,11 +3434,13 @@
GstShmSink
<SUBSECTION Standard>
GstShmSinkClass
-GST_IS_SHM_SINK
-GST_IS_SHM_SINK_CLASS
GST_SHM_SINK
+GST_SHM_SINK_CAST
+GST_IS_SHM_SINK
GST_SHM_SINK_CLASS
+GST_IS_SHM_SINK_CLASS
GST_TYPE_SHM_SINK
+<SUBSECTION Private>
gst_shm_sink_get_type
</SECTION>
@@ -1287,54 +3450,174 @@
GstShmSrc
<SUBSECTION Standard>
GstShmSrcClass
-GST_IS_SHM_SRC
-GST_IS_SHM_SRC_CLASS
GST_SHM_SRC
+GST_SHM_SRC_CAST
+GST_IS_SHM_SRC
GST_SHM_SRC_CLASS
+GST_IS_SHM_SRC_CLASS
GST_TYPE_SHM_SRC
+<SUBSECTION Private>
gst_shm_src_get_type
</SECTION>
<SECTION>
+<FILE>element-simplevideomark</FILE>
+<TITLE>simplevideomark</TITLE>
+GstSimpleVideoMark
+<SUBSECTION Standard>
+GstSimpleVideoMarkClass
+GST_SIMPLE_VIDEO_MARK
+GST_SIMPLE_VIDEO_MARK_CAST
+GST_IS_SIMPLE_VIDEO_MARK
+GST_SIMPLE_VIDEO_MARK_CLASS
+GST_IS_SIMPLE_VIDEO_MARK_CLASS
+GST_TYPE_SIMPLE_VIDEO_MARK
+<SUBSECTION Private>
+gst_simple_video_mark_get_type
+</SECTION>
+
+<SECTION>
+<FILE>element-simplevideomarkdetect</FILE>
+<TITLE>simplevideomarkdetect</TITLE>
+GstSimpleVideoMarkDetect
+<SUBSECTION Standard>
+GstSimpleVideoMarkDetectClass
+GST_SIMPLE_VIDEO_MARK_DETECT
+GST_SIMPLE_VIDEO_MARK_DETECT_CAST
+GST_IS_SIMPLE_VIDEO_MARK_DETECT
+GST_SIMPLE_VIDEO_MARK_DETECT_CLASS
+GST_IS_SIMPLE_VIDEO_MARK_DETECT_CLASS
+GST_TYPE_SIMPLE_VIDEO_MARK_DETECT
+<SUBSECTION Private>
+gst_simple_video_mark_detect_get_type
+</SECTION>
+
+<SECTION>
+<FILE>element-sirendec</FILE>
+<TITLE>sirendec</TITLE>
+GstSirenDec
+<SUBSECTION Standard>
+GstSirenDecClass
+GST_SIREN_DEC
+GST_SIREN_DEC_CAST
+GST_IS_SIREN_DEC
+GST_SIREN_DEC_CLASS
+GST_IS_SIREN_DEC_CLASS
+GST_TYPE_SIREN_DEC
+<SUBSECTION Private>
+gst_siren_dec_get_type
+</SECTION>
+
+<SECTION>
+<FILE>element-sirenenc</FILE>
+<TITLE>sirenenc</TITLE>
+GstSirenEnc
+<SUBSECTION Standard>
+GstSirenEncClass
+GST_SIREN_ENC
+GST_SIREN_ENC_CAST
+GST_IS_SIREN_ENC
+GST_SIREN_ENC_CLASS
+GST_IS_SIREN_ENC_CLASS
+GST_TYPE_SIREN_ENC
+<SUBSECTION Private>
+gst_siren_enc_get_type
+</SECTION>
+
+<SECTION>
+<FILE>element-skindetect</FILE>
+<TITLE>skindetect</TITLE>
+GstSkinDetect
+<SUBSECTION Standard>
+GstSkinDetectClass
+GST_SKIN_DETECT
+GST_SKIN_DETECT_CAST
+GST_IS_SKIN_DETECT
+GST_SKIN_DETECT_CLASS
+GST_IS_SKIN_DETECT_CLASS
+GST_TYPE_SKIN_DETECT
+<SUBSECTION Private>
+gst_skin_detect_get_type
+</SECTION>
+
+<SECTION>
+<FILE>element-smooth</FILE>
+<TITLE>smooth</TITLE>
+GstSmooth
+<SUBSECTION Standard>
+GstSmoothClass
+GST_SMOOTH
+GST_SMOOTH_CAST
+GST_IS_SMOOTH
+GST_SMOOTH_CLASS
+GST_IS_SMOOTH_CLASS
+GST_TYPE_SMOOTH
+<SUBSECTION Private>
+gst_smooth_get_type
+</SECTION>
+
+<SECTION>
<FILE>element-solarize</FILE>
<TITLE>solarize</TITLE>
GstSolarize
<SUBSECTION Standard>
GstSolarizeClass
GST_SOLARIZE
-GST_SOLARIZE_CLASS
+GST_SOLARIZE_CAST
GST_IS_SOLARIZE
+GST_SOLARIZE_CLASS
GST_IS_SOLARIZE_CLASS
GST_TYPE_SOLARIZE
+<SUBSECTION Private>
gst_solarize_get_type
-gst_solarize_plugin_init
</SECTION>
<SECTION>
<FILE>element-spacescope</FILE>
<TITLE>spacescope</TITLE>
GstSpaceScope
+GstSpaceScopeStyle
<SUBSECTION Standard>
GstSpaceScopeClass
GST_SPACE_SCOPE
-GST_SPACE_SCOPE_CLASS
+GST_SPACE_SCOPE_CAST
GST_IS_SPACE_SCOPE
+GST_SPACE_SCOPE_CLASS
GST_IS_SPACE_SCOPE_CLASS
GST_TYPE_SPACE_SCOPE
+<SUBSECTION Private>
gst_space_scope_get_type
</SECTION>
<SECTION>
+<FILE>element-spanplc</FILE>
+<TITLE>spanplc</TITLE>
+GstSpanPlc
+<SUBSECTION Standard>
+GstSpanPlcClass
+GST_SPAN_PLC
+GST_SPAN_PLC_CAST
+GST_IS_SPAN_PLC
+GST_SPAN_PLC_CLASS
+GST_IS_SPAN_PLC_CLASS
+GST_TYPE_SPAN_PLC
+<SUBSECTION Private>
+gst_span_plc_get_type
+</SECTION>
+
+<SECTION>
<FILE>element-spectrascope</FILE>
<TITLE>spectrascope</TITLE>
GstSpectraScope
<SUBSECTION Standard>
GstSpectraScopeClass
GST_SPECTRA_SCOPE
-GST_SPECTRA_SCOPE_CLASS
+GST_SPECTRA_SCOPE_CAST
GST_IS_SPECTRA_SCOPE
+GST_SPECTRA_SCOPE_CLASS
GST_IS_SPECTRA_SCOPE_CLASS
GST_TYPE_SPECTRA_SCOPE
+<SUBSECTION Private>
gst_spectra_scope_get_type
</SECTION>
@@ -1344,12 +3627,13 @@
GstSpeed
<SUBSECTION Standard>
GstSpeedClass
-GstSpeedFormat
GST_SPEED
-GST_SPEED_CLASS
+GST_SPEED_CAST
GST_IS_SPEED
+GST_SPEED_CLASS
GST_IS_SPEED_CLASS
GST_TYPE_SPEED
+<SUBSECTION Private>
gst_speed_get_type
</SECTION>
@@ -1361,12 +3645,12 @@
GstSphereClass
GST_SPHERE
GST_SPHERE_CAST
-GST_SPHERE_CLASS
GST_IS_SPHERE
+GST_SPHERE_CLASS
GST_IS_SPHERE_CLASS
GST_TYPE_SPHERE
+<SUBSECTION Private>
gst_sphere_get_type
-gst_sphere_plugin_init
</SECTION>
<SECTION>
@@ -1377,12 +3661,60 @@
GstSquareClass
GST_SQUARE
GST_SQUARE_CAST
-GST_SQUARE_CLASS
GST_IS_SQUARE
+GST_SQUARE_CLASS
GST_IS_SQUARE_CLASS
GST_TYPE_SQUARE
+<SUBSECTION Private>
gst_square_get_type
-gst_square_plugin_init
+</SECTION>
+
+<SECTION>
+<FILE>element-srtenc</FILE>
+<TITLE>srtenc</TITLE>
+GstSrtEnc
+<SUBSECTION Standard>
+GstSrtEncClass
+GST_SRT_ENC
+GST_SRT_ENC_CAST
+GST_IS_SRT_ENC
+GST_SRT_ENC_CLASS
+GST_IS_SRT_ENC_CLASS
+GST_TYPE_SRT_ENC
+<SUBSECTION Private>
+gst_srt_enc_get_type
+</SECTION>
+
+<SECTION>
+<FILE>element-srtpdec</FILE>
+<TITLE>srtpdec</TITLE>
+GstSrtpDec
+<SUBSECTION Standard>
+GstSrtpDecClass
+GST_SRTP_DEC
+GST_SRTP_DEC_CAST
+GST_IS_SRTP_DEC
+GST_SRTP_DEC_CLASS
+GST_IS_SRTP_DEC_CLASS
+GST_TYPE_SRTP_DEC
+<SUBSECTION Private>
+gst_srtp_dec_get_type
+</SECTION>
+
+<SECTION>
+<FILE>element-srtpenc</FILE>
+<TITLE>srtpenc</TITLE>
+GstSrtpEnc
+<SUBSECTION Standard>
+GstSrtpEncClass
+GST_SRTP_ENC
+GST_SRTP_ENC_CAST
+GST_IS_SRTP_ENC
+GST_SRTP_ENC_CLASS
+GST_IS_SRTP_ENC_CLASS
+GST_TYPE_SRTP_ENC
+<SUBSECTION Private>
+gst_srtp_enc_get_type
</SECTION>
<SECTION>
@@ -1392,10 +3724,12 @@
<SUBSECTION Standard>
GstStereoClass
GST_STEREO
-GST_STEREO_CLASS
+GST_STEREO_CAST
GST_IS_STEREO
+GST_STEREO_CLASS
GST_IS_STEREO_CLASS
GST_TYPE_STEREO
+<SUBSECTION Private>
gst_stereo_get_type
</SECTION>
@@ -1407,12 +3741,12 @@
GstStretchClass
GST_STRETCH
GST_STRETCH_CAST
-GST_STRETCH_CLASS
GST_IS_STRETCH
+GST_STRETCH_CLASS
GST_IS_STRETCH_CLASS
GST_TYPE_STRETCH
+<SUBSECTION Private>
gst_stretch_get_type
-gst_stretch_plugin_init
</SECTION>
<SECTION>
@@ -1422,25 +3756,77 @@
<SUBSECTION Standard>
GstSynaeScopeClass
GST_SYNAE_SCOPE
-GST_SYNAE_SCOPE_CLASS
+GST_SYNAE_SCOPE_CAST
GST_IS_SYNAE_SCOPE
+GST_SYNAE_SCOPE_CLASS
GST_IS_SYNAE_SCOPE_CLASS
GST_TYPE_SYNAE_SCOPE
+<SUBSECTION Private>
gst_synae_scope_get_type
</SECTION>
+<SECTION>
+<FILE>element-tsdemux</FILE>
+<TITLE>tsdemux</TITLE>
+GstTSDemux
+<SUBSECTION Standard>
+GstTSDemuxClass
+GST_TS_DEMUX
+GST_TS_DEMUX_CAST
+GST_IS_TS_DEMUX
+GST_TS_DEMUX_CLASS
+GST_IS_TS_DEMUX_CLASS
+GST_TYPE_TS_DEMUX
+<SUBSECTION Private>
+gst_ts_demux_get_type
+</SECTION>
+
+<SECTION>
+<FILE>element-teletextdec</FILE>
+<TITLE>teletextdec</TITLE>
+GstTeletextDec
+<SUBSECTION Standard>
+GstTeletextDecClass
+GST_TELETEXT_DEC
+GST_TELETEXT_DEC_CAST
+GST_IS_TELETEXT_DEC
+GST_TELETEXT_DEC_CLASS
+GST_IS_TELETEXT_DEC_CLASS
+GST_TYPE_TELETEXT_DEC
+<SUBSECTION Private>
+gst_teletext_dec_get_type
+</SECTION>
+
+<SECTION>
<FILE>element-templatematch</FILE>
<TITLE>templatematch</TITLE>
GstTemplateMatch
<SUBSECTION Standard>
GstTemplateMatchClass
-GST_TEMPLATEMATCH
-GST_TEMPLATEMATCH_CLASS
-GST_TYPE_TEMPLATEMATCH
-GST_IS_TEMPLATEMATCH
-GST_IS_TEMPLATEMATCH_CLASS
-gst_templatematch_get_type
-gst_templatematch_plugin_init
+GST_TEMPLATE_MATCH
+GST_TEMPLATE_MATCH_CAST
+GST_IS_TEMPLATE_MATCH
+GST_TEMPLATE_MATCH_CLASS
+GST_IS_TEMPLATE_MATCH_CLASS
+GST_TYPE_TEMPLATE_MATCH
+<SUBSECTION Private>
+gst_template_match_get_type
+</SECTION>
+
+<SECTION>
+<FILE>element-tonegeneratesrc</FILE>
+<TITLE>tonegeneratesrc</TITLE>
+GstToneGenerateSrc
+<SUBSECTION Standard>
+GstToneGenerateSrcClass
+GST_TONE_GENERATE_SRC
+GST_TONE_GENERATE_SRC_CAST
+GST_IS_TONE_GENERATE_SRC
+GST_TONE_GENERATE_SRC_CLASS
+GST_IS_TONE_GENERATE_SRC_CLASS
+GST_TYPE_TONE_GENERATE_SRC
+<SUBSECTION Private>
+gst_tone_generate_src_get_type
</SECTION>
<SECTION>
@@ -1465,12 +3851,12 @@
GstTunnelClass
GST_TUNNEL
GST_TUNNEL_CAST
-GST_TUNNEL_CLASS
GST_IS_TUNNEL
+GST_TUNNEL_CLASS
GST_IS_TUNNEL_CLASS
GST_TYPE_TUNNEL
+<SUBSECTION Private>
gst_tunnel_get_type
-gst_tunnel_plugin_init
</SECTION>
<SECTION>
@@ -1481,12 +3867,124 @@
GstTwirlClass
GST_TWIRL
GST_TWIRL_CAST
-GST_TWIRL_CLASS
GST_IS_TWIRL
+GST_TWIRL_CLASS
GST_IS_TWIRL_CLASS
GST_TYPE_TWIRL
+<SUBSECTION Private>
gst_twirl_get_type
-gst_twirl_plugin_init
+</SECTION>
+
+<SECTION>
+<FILE>element-unalignedaudioparse</FILE>
+<TITLE>unalignedaudioparse</TITLE>
+GstUnalignedAudioParse
+<SUBSECTION Standard>
+GstUnalignedAudioParseClass
+GST_UNALIGNED_AUDIO_PARSE
+GST_UNALIGNED_AUDIO_PARSE_CAST
+GST_IS_UNALIGNED_AUDIO_PARSE
+GST_UNALIGNED_AUDIO_PARSE_CLASS
+GST_IS_UNALIGNED_AUDIO_PARSE_CLASS
+GST_TYPE_UNALIGNED_AUDIO_PARSE
+<SUBSECTION Private>
+gst_unaligned_audio_parse_get_type
+</SECTION>
+
+<SECTION>
+<FILE>element-uvch264mjpgdemux</FILE>
+<TITLE>uvch264mjpgdemux</TITLE>
+GstUvcH264MjpgDemux
+<SUBSECTION Standard>
+GstUvcH264MjpgDemuxClass
+GST_UVC_H264_MJPG_DEMUX
+GST_UVC_H264_MJPG_DEMUX_CAST
+GST_IS_UVC_H264_MJPG_DEMUX
+GST_UVC_H264_MJPG_DEMUX_CLASS
+GST_IS_UVC_H264_MJPG_DEMUX_CLASS
+GST_TYPE_UVC_H264_MJPG_DEMUX
+<SUBSECTION Private>
+gst_uvc_h264_mjpg_demux_get_type
+</SECTION>
+
+<SECTION>
+<FILE>element-uvch264src</FILE>
+<TITLE>uvch264src</TITLE>
+GstUvcH264Src
+<SUBSECTION Standard>
+GstUvcH264SrcClass
+GST_UVC_H264_SRC
+GST_UVC_H264_SRC_CAST
+GST_IS_UVC_H264_SRC
+GST_UVC_H264_SRC_CLASS
+GST_IS_UVC_H264_SRC_CLASS
+GST_TYPE_UVC_H264_SRC
+<SUBSECTION Private>
+gst_uvc_h264_src_get_type
+</SECTION>
+
+<SECTION>
+<FILE>element-vc1parse</FILE>
+<TITLE>vc1parse</TITLE>
+GstVC1Parse
+<SUBSECTION Standard>
+GstVC1ParseClass
+GST_V_C1_PARSE
+GST_V_C1_PARSE_CAST
+GST_IS_V_C1_PARSE
+GST_V_C1_PARSE_CLASS
+GST_IS_V_C1_PARSE_CLASS
+GST_TYPE_V_C1_PARSE
+<SUBSECTION Private>
+gst_v_c1_parse_get_type
+</SECTION>
+
+<SECTION>
+<FILE>element-vcdsrc</FILE>
+<TITLE>vcdsrc</TITLE>
+GstVCDSrc
+<SUBSECTION Standard>
+GstVCDSrcClass
+GST_VCD_SRC
+GST_VCD_SRC_CAST
+GST_IS_VCD_SRC
+GST_VCD_SRC_CLASS
+GST_IS_VCD_SRC_CLASS
+GST_TYPE_VCD_SRC
+<SUBSECTION Private>
+gst_vcd_src_get_type
+</SECTION>
+
+<SECTION>
+<FILE>element-vmncdec</FILE>
+<TITLE>vmncdec</TITLE>
+GstVMncDec
+<SUBSECTION Standard>
+GstVMncDecClass
+GST_V_MNC_DEC
+GST_V_MNC_DEC_CAST
+GST_IS_V_MNC_DEC
+GST_V_MNC_DEC_CLASS
+GST_IS_V_MNC_DEC_CLASS
+GST_TYPE_V_MNC_DEC
+<SUBSECTION Private>
+gst_v_mnc_dec_get_type
+</SECTION>
+
+<SECTION>
+<FILE>element-vdpaumpegdec</FILE>
+<TITLE>vdpaumpegdec</TITLE>
+GstVdpMpegDec
+<SUBSECTION Standard>
+GstVdpMpegDecClass
+GST_VDP_MPEG_DEC
+GST_VDP_MPEG_DEC_CAST
+GST_IS_VDP_MPEG_DEC
+GST_VDP_MPEG_DEC_CLASS
+GST_IS_VDP_MPEG_DEC_CLASS
+GST_TYPE_VDP_MPEG_DEC
+<SUBSECTION Private>
+gst_vdp_mpeg_dec_get_type
</SECTION>
<SECTION>
@@ -1496,40 +3994,45 @@
<SUBSECTION Standard>
GstVideoAnalyseClass
GST_VIDEO_ANALYSE
+GST_VIDEO_ANALYSE_CAST
GST_IS_VIDEO_ANALYSE
-GST_TYPE_VIDEO_ANALYSE
-gst_video_analyse_get_type
GST_VIDEO_ANALYSE_CLASS
GST_IS_VIDEO_ANALYSE_CLASS
-gst_wildmidi_get_type
+GST_TYPE_VIDEO_ANALYSE
+<SUBSECTION Private>
+gst_video_analyse_get_type
</SECTION>
<SECTION>
-<FILE>element-videodetect</FILE>
-<TITLE>videodetect</TITLE>
-GstVideoDetect
+<FILE>element-videodiff</FILE>
+<TITLE>videodiff</TITLE>
+GstVideoDiff
<SUBSECTION Standard>
-GstVideoDetectClass
-GST_VIDEO_DETECT
-GST_IS_VIDEO_DETECT
-GST_TYPE_VIDEO_DETECT
-gst_video_detect_get_type
-GST_VIDEO_DETECT_CLASS
-GST_IS_VIDEO_DETECT_CLASS
+GstVideoDiffClass
+GST_VIDEO_DIFF
+GST_VIDEO_DIFF_CAST
+GST_IS_VIDEO_DIFF
+GST_VIDEO_DIFF_CLASS
+GST_IS_VIDEO_DIFF_CLASS
+GST_TYPE_VIDEO_DIFF
+<SUBSECTION Private>
+gst_video_diff_get_type
</SECTION>
<SECTION>
-<FILE>element-videomark</FILE>
-<TITLE>videomark</TITLE>
-GstVideoMark
+<FILE>element-videoframe-audiolevel</FILE>
+<TITLE>videoframe-audiolevel</TITLE>
+GstVideoFrameAudioLevel
<SUBSECTION Standard>
-GstVideoMarkClass
-GST_VIDEO_MARK
-GST_IS_VIDEO_MARK
-GST_TYPE_VIDEO_MARK
-gst_video_mark_get_type
-GST_VIDEO_MARK_CLASS
-GST_IS_VIDEO_MARK_CLASS
+GstVideoFrameAudioLevelClass
+GST_VIDEO_FRAME_AUDIO_LEVEL
+GST_VIDEO_FRAME_AUDIO_LEVEL_CAST
+GST_IS_VIDEO_FRAME_AUDIO_LEVEL
+GST_VIDEO_FRAME_AUDIO_LEVEL_CLASS
+GST_IS_VIDEO_FRAME_AUDIO_LEVEL_CLASS
+GST_TYPE_VIDEO_FRAME_AUDIO_LEVEL
+<SUBSECTION Private>
+gst_video_frame_audio_level_get_type
</SECTION>
<SECTION>
@@ -1539,14 +4042,81 @@
<SUBSECTION Standard>
GstVideoParseClass
GST_VIDEO_PARSE
-GST_VIDEO_PARSE_CLASS
+GST_VIDEO_PARSE_CAST
GST_IS_VIDEO_PARSE
+GST_VIDEO_PARSE_CLASS
GST_IS_VIDEO_PARSE_CLASS
GST_TYPE_VIDEO_PARSE
+<SUBSECTION Private>
gst_video_parse_get_type
</SECTION>
<SECTION>
+<FILE>element-videosegmentclip</FILE>
+<TITLE>videosegmentclip</TITLE>
+GstVideoSegmentClip
+<SUBSECTION Standard>
+GstVideoSegmentClipClass
+GST_VIDEO_SEGMENT_CLIP
+GST_VIDEO_SEGMENT_CLIP_CAST
+GST_IS_VIDEO_SEGMENT_CLIP
+GST_VIDEO_SEGMENT_CLIP_CLASS
+GST_IS_VIDEO_SEGMENT_CLIP_CLASS
+GST_TYPE_VIDEO_SEGMENT_CLIP
+<SUBSECTION Private>
+gst_video_segment_clip_get_type
+</SECTION>
+
+<SECTION>
+<FILE>element-viewfinderbin</FILE>
+<TITLE>viewfinderbin</TITLE>
+GstViewfinderBin
+<SUBSECTION Standard>
+GstViewfinderBinClass
+GST_VIEWFINDER_BIN
+GST_VIEWFINDER_BIN_CAST
+GST_IS_VIEWFINDER_BIN
+GST_VIEWFINDER_BIN_CLASS
+GST_IS_VIEWFINDER_BIN_CLASS
+GST_TYPE_VIEWFINDER_BIN
+<SUBSECTION Private>
+gst_viewfinder_bin_get_type
+</SECTION>
+
+<SECTION>
+<FILE>element-voamrwbenc</FILE>
+<TITLE>voamrwbenc</TITLE>
+GstVoAmrWbEnc
+GstVoAmrWbEncBandMode
+<SUBSECTION Standard>
+GstVoAmrWbEncClass
+GST_VO_AMR_WB_ENC
+GST_VO_AMR_WB_ENC_CAST
+GST_IS_VO_AMR_WB_ENC
+GST_VO_AMR_WB_ENC_CLASS
+GST_IS_VO_AMR_WB_ENC_CLASS
+GST_TYPE_VO_AMR_WB_ENC
+<SUBSECTION Private>
+gst_vo_amr_wb_enc_get_type
+</SECTION>
+
+<SECTION>
+<FILE>element-watchdog</FILE>
+<TITLE>watchdog</TITLE>
+GstWatchdog
+<SUBSECTION Standard>
+GstWatchdogClass
+GST_WATCHDOG
+GST_WATCHDOG_CAST
+GST_IS_WATCHDOG
+GST_WATCHDOG_CLASS
+GST_IS_WATCHDOG_CLASS
+GST_TYPE_WATCHDOG
+<SUBSECTION Private>
+gst_watchdog_get_type
+</SECTION>
+
+<SECTION>
<FILE>element-waterripple</FILE>
<TITLE>waterripple</TITLE>
GstWaterRipple
@@ -1554,39 +4124,158 @@
GstWaterRippleClass
GST_WATER_RIPPLE
GST_WATER_RIPPLE_CAST
-GST_WATER_RIPPLE_CLASS
GST_IS_WATER_RIPPLE
+GST_WATER_RIPPLE_CLASS
GST_IS_WATER_RIPPLE_CLASS
GST_TYPE_WATER_RIPPLE
+<SUBSECTION Private>
gst_water_ripple_get_type
-gst_water_ripple_plugin_init
</SECTION>
<SECTION>
<FILE>element-wavescope</FILE>
<TITLE>wavescope</TITLE>
GstWaveScope
+GstWaveScopeStyle
<SUBSECTION Standard>
GstWaveScopeClass
GST_WAVE_SCOPE
-GST_WAVE_SCOPE_CLASS
+GST_WAVE_SCOPE_CAST
GST_IS_WAVE_SCOPE
+GST_WAVE_SCOPE_CLASS
GST_IS_WAVE_SCOPE_CLASS
GST_TYPE_WAVE_SCOPE
+<SUBSECTION Private>
gst_wave_scope_get_type
</SECTION>
<SECTION>
+<FILE>element-waylandsink</FILE>
+<TITLE>waylandsink</TITLE>
+GstWaylandSink
+<SUBSECTION Standard>
+GstWaylandSinkClass
+GST_WAYLAND_SINK
+GST_WAYLAND_SINK_CAST
+GST_IS_WAYLAND_SINK
+GST_WAYLAND_SINK_CLASS
+GST_IS_WAYLAND_SINK_CLASS
+GST_TYPE_WAYLAND_SINK
+<SUBSECTION Private>
+gst_wayland_sink_get_type
+</SECTION>
+
+<SECTION>
+<FILE>element-webpdec</FILE>
+<TITLE>webpdec</TITLE>
+GstWebPDec
+<SUBSECTION Standard>
+GstWebPDecClass
+GST_WEB_P_DEC
+GST_WEB_P_DEC_CAST
+GST_IS_WEB_P_DEC
+GST_WEB_P_DEC_CLASS
+GST_IS_WEB_P_DEC_CLASS
+GST_TYPE_WEB_P_DEC
+<SUBSECTION Private>
+gst_web_p_dec_get_type
+</SECTION>
+
+<SECTION>
+<FILE>element-webpenc</FILE>
+<TITLE>webpenc</TITLE>
+GstWebpEnc
+GstWebpEncPreset
+<SUBSECTION Standard>
+GstWebpEncClass
+GST_WEBP_ENC
+GST_WEBP_ENC_CAST
+GST_IS_WEBP_ENC
+GST_WEBP_ENC_CLASS
+GST_IS_WEBP_ENC_CLASS
+GST_TYPE_WEBP_ENC
+<SUBSECTION Private>
+gst_webp_enc_get_type
+</SECTION>
+
+<SECTION>
+<FILE>element-webrtcdsp</FILE>
+<TITLE>webrtcdsp</TITLE>
+GstWebrtcDsp
+<SUBSECTION Standard>
+GstWebrtcDspClass
+GST_WEBRTC_DSP
+GST_WEBRTC_DSP_CAST
+GST_IS_WEBRTC_DSP
+GST_WEBRTC_DSP_CLASS
+GST_IS_WEBRTC_DSP_CLASS
+GST_TYPE_WEBRTC_DSP
+<SUBSECTION Private>
+gst_webrtc_dsp_get_type
+</SECTION>
+
+<SECTION>
+<FILE>element-webrtcechoprobe</FILE>
+<TITLE>webrtcechoprobe</TITLE>
+GstWebrtcEchoProbe
+<SUBSECTION Standard>
+GstWebrtcEchoProbeClass
+GST_WEBRTC_ECHO_PROBE
+GST_WEBRTC_ECHO_PROBE_CAST
+GST_IS_WEBRTC_ECHO_PROBE
+GST_WEBRTC_ECHO_PROBE_CLASS
+GST_IS_WEBRTC_ECHO_PROBE_CLASS
+GST_TYPE_WEBRTC_ECHO_PROBE
+<SUBSECTION Private>
+gst_webrtc_echo_probe_get_type
+</SECTION>
+
+<SECTION>
+<FILE>element-webvttenc</FILE>
+<TITLE>webvttenc</TITLE>
+GstWebvttEnc
+<SUBSECTION Standard>
+GstWebvttEncClass
+GST_WEBVTT_ENC
+GST_WEBVTT_ENC_CAST
+GST_IS_WEBVTT_ENC
+GST_WEBVTT_ENC_CLASS
+GST_IS_WEBVTT_ENC_CLASS
+GST_TYPE_WEBVTT_ENC
+<SUBSECTION Private>
+gst_webvtt_enc_get_type
+</SECTION>
+
+<SECTION>
<FILE>element-wildmidi</FILE>
<TITLE>wildmidi</TITLE>
GstWildmidi
<SUBSECTION Standard>
GstWildmidiClass
GST_WILDMIDI
-GST_WILDMIDI_CLASS
+GST_WILDMIDI_CAST
GST_IS_WILDMIDI
+GST_WILDMIDI_CLASS
GST_IS_WILDMIDI_CLASS
GST_TYPE_WILDMIDI
+<SUBSECTION Private>
+gst_wildmidi_get_type
+</SECTION>
+
+<SECTION>
+<FILE>element-wrappercamerabinsrc</FILE>
+<TITLE>wrappercamerabinsrc</TITLE>
+GstWrapperCameraBinSrc
+<SUBSECTION Standard>
+GstWrapperCameraBinSrcClass
+GST_WRAPPER_CAMERA_BIN_SRC
+GST_WRAPPER_CAMERA_BIN_SRC_CAST
+GST_IS_WRAPPER_CAMERA_BIN_SRC
+GST_WRAPPER_CAMERA_BIN_SRC_CLASS
+GST_IS_WRAPPER_CAMERA_BIN_SRC_CLASS
+GST_TYPE_WRAPPER_CAMERA_BIN_SRC
+<SUBSECTION Private>
+gst_wrapper_camera_bin_src_get_type
</SECTION>
<SECTION>
@@ -1604,17 +4293,52 @@
</SECTION>
<SECTION>
-<FILE>element-voamrwbenc</FILE>
-<TITLE>voamrwbenc</TITLE>
-GstVoAmrwbEnc
+<FILE>element-x265enc</FILE>
+<TITLE>x265enc</TITLE>
+GstX265Enc
<SUBSECTION Standard>
-GstVoAmrwbEncClass
-GST_VOAMRWBENC
-GST_VOAMRWBENC_CLASS
-GST_IS_VOAMRWBENC
-GST_IS_VOAMRWBENC_CLASS
-GST_TYPE_VOAMRWBENC
-gst_voamrwbenc_get_type
+GstX265EncClass
+GST_X265_ENC
+GST_X265_ENC_CAST
+GST_IS_X265_ENC
+GST_X265_ENC_CLASS
+GST_IS_X265_ENC_CLASS
+GST_TYPE_X265_ENC
+<SUBSECTION Private>
+gst_x265_enc_get_type
+</SECTION>
+
+<SECTION>
+<FILE>element-y4mdec</FILE>
+<TITLE>y4mdec</TITLE>
+GstY4mDec
+<SUBSECTION Standard>
+GstY4mDecClass
+GST_Y4M_DEC
+GST_Y4M_DEC_CAST
+GST_IS_Y4M_DEC
+GST_Y4M_DEC_CLASS
+GST_IS_Y4M_DEC_CLASS
+GST_TYPE_Y4M_DEC
+<SUBSECTION Private>
+gst_y4m_dec_get_type
+</SECTION>
+
+<SECTION>
+<FILE>element-yadif</FILE>
+<TITLE>yadif</TITLE>
+GstYadif
+GstYadifModes
+<SUBSECTION Standard>
+GstYadifClass
+GST_YADIF
+GST_YADIF_CAST
+GST_IS_YADIF
+GST_YADIF_CLASS
+GST_IS_YADIF_CLASS
+GST_TYPE_YADIF
+<SUBSECTION Private>
+gst_yadif_get_type
</SECTION>
<SECTION>
@@ -1623,42 +4347,397 @@
GstZBar
<SUBSECTION Standard>
GstZBarClass
-GST_ZBAR
-GST_ZBAR_CLASS
-GST_IS_ZBAR
-GST_IS_ZBAR_CLASS
-GST_TYPE_ZBAR
+GST_Z_BAR
+GST_Z_BAR_CAST
+GST_IS_Z_BAR
+GST_Z_BAR_CLASS
+GST_IS_Z_BAR_CLASS
+GST_TYPE_Z_BAR
+<SUBSECTION Private>
+gst_z_bar_get_type
</SECTION>
<SECTION>
-<FILE>element-gltransformation</FILE>
-<TITLE>gltransformation</TITLE>
-GstGLTransformation
+<FILE>element-zebrastripe</FILE>
+<TITLE>zebrastripe</TITLE>
+GstZebraStripe
<SUBSECTION Standard>
-GstGLTransformationClass
-GST_GL_TRANSFORMATION
-GST_GL_TRANSFORMATION_CLASS
-GST_IS_GL_TRANSFORMATION
-GST_IS_GL_TRANSFORMATION_CLASS
-GST_TYPE_GL_TRANSFORMATION
+GstZebraStripeClass
+GST_ZEBRA_STRIPE
+GST_ZEBRA_STRIPE_CAST
+GST_IS_ZEBRA_STRIPE
+GST_ZEBRA_STRIPE_CLASS
+GST_IS_ZEBRA_STRIPE_CLASS
+GST_TYPE_ZEBRA_STRIPE
+<SUBSECTION Private>
+gst_zebra_stripe_get_type
</SECTION>
<SECTION>
-<FILE>element-compositor</FILE>
-<TITLE>compositor</TITLE>
+<FILE>element-mpegpsmux</FILE>
+<TITLE>mpegpsmux</TITLE>
+GstgPsMux
<SUBSECTION Standard>
-GstCompositorClass
-GstCompositor
-GST_COMPOSITOR
-GST_COMPOSITOR_CLASS
-GST_IS_COMPOSITOR
-GST_IS_COMPOSITOR_CLASS
-GST_TYPE_COMPOSITOR
-GstCompositorPad
-GstCompositorPadClass
-GST_COMPOSITOR_PAD
-GST_COMPOSITOR_PAD_CLASS
-GST_IS_COMPOSITOR_PAD
-GST_IS_COMPOSITOR_PAD_CLASS
-GST_TYPE_COMPOSITOR_PAD
+GstgPsMuxClass
+GST_G_PS_MUX
+GST_G_PS_MUX_CAST
+GST_IS_G_PS_MUX
+GST_G_PS_MUX_CLASS
+GST_IS_G_PS_MUX_CLASS
+GST_TYPE_G_PS_MUX
+<SUBSECTION Private>
+gst_g_ps_mux_get_type
</SECTION>
+
+<SECTION>
+<FILE>element-tsparse</FILE>
+<TITLE>tsparse</TITLE>
+GstgTSParse2
+<SUBSECTION Standard>
+GstgTSParse2Class
+GST_G_TS_PARSE2
+GST_G_TS_PARSE2_CAST
+GST_IS_G_TS_PARSE2
+GST_G_TS_PARSE2_CLASS
+GST_IS_G_TS_PARSE2_CLASS
+GST_TYPE_G_TS_PARSE2
+<SUBSECTION Private>
+gst_g_ts_parse2_get_type
+</SECTION>
+
+<SECTION>
+<FILE>element-mpegtsmux</FILE>
+<TITLE>mpegtsmux</TITLE>
+GstgTsMux
+<SUBSECTION Standard>
+GstgTsMuxClass
+GST_G_TS_MUX
+GST_G_TS_MUX_CAST
+GST_IS_G_TS_MUX
+GST_G_TS_MUX_CLASS
+GST_IS_G_TS_MUX_CLASS
+GST_TYPE_G_TS_MUX
+<SUBSECTION Private>
+gst_g_ts_mux_get_type
+</SECTION>
+
+<SECTION>
+<FILE>element-rsndvdbin</FILE>
+<TITLE>rsndvdbin</TITLE>
+GstDvdBin
+<SUBSECTION Standard>
+GstDvdBinClass
+GST_DVD_BIN
+GST_DVD_BIN_CAST
+GST_IS_DVD_BIN
+GST_DVD_BIN_CLASS
+GST_IS_DVD_BIN_CLASS
+GST_TYPE_DVD_BIN
+<SUBSECTION Private>
+gst_dvd_bin_get_type
+</SECTION>
+
+<SECTION>
+<FILE>element-gleffects_blur</FILE>
+<TITLE>gleffects_blur</TITLE>
+Gstffects_blur
+<SUBSECTION Standard>
+Gstffects_blurClass
+GST_FFECTS_BLUR
+GST_FFECTS_BLUR_CAST
+GST_IS_FFECTS_BLUR
+GST_FFECTS_BLUR_CLASS
+GST_IS_FFECTS_BLUR_CLASS
+GST_TYPE_FFECTS_BLUR
+<SUBSECTION Private>
+gst_ffects_blur_get_type
+</SECTION>
+
+<SECTION>
+<FILE>element-gleffects_bulge</FILE>
+<TITLE>gleffects_bulge</TITLE>
+Gstffects_bulge
+<SUBSECTION Standard>
+Gstffects_bulgeClass
+GST_FFECTS_BULGE
+GST_FFECTS_BULGE_CAST
+GST_IS_FFECTS_BULGE
+GST_FFECTS_BULGE_CLASS
+GST_IS_FFECTS_BULGE_CLASS
+GST_TYPE_FFECTS_BULGE
+<SUBSECTION Private>
+gst_ffects_bulge_get_type
+</SECTION>
+
+<SECTION>
+<FILE>element-gleffects_fisheye</FILE>
+<TITLE>gleffects_fisheye</TITLE>
+Gstffects_fisheye
+<SUBSECTION Standard>
+Gstffects_fisheyeClass
+GST_FFECTS_FISHEYE
+GST_FFECTS_FISHEYE_CAST
+GST_IS_FFECTS_FISHEYE
+GST_FFECTS_FISHEYE_CLASS
+GST_IS_FFECTS_FISHEYE_CLASS
+GST_TYPE_FFECTS_FISHEYE
+<SUBSECTION Private>
+gst_ffects_fisheye_get_type
+</SECTION>
+
+<SECTION>
+<FILE>element-gleffects_glow</FILE>
+<TITLE>gleffects_glow</TITLE>
+Gstffects_glow
+<SUBSECTION Standard>
+Gstffects_glowClass
+GST_FFECTS_GLOW
+GST_FFECTS_GLOW_CAST
+GST_IS_FFECTS_GLOW
+GST_FFECTS_GLOW_CLASS
+GST_IS_FFECTS_GLOW_CLASS
+GST_TYPE_FFECTS_GLOW
+<SUBSECTION Private>
+gst_ffects_glow_get_type
+</SECTION>
+
+<SECTION>
+<FILE>element-gleffects_heat</FILE>
+<TITLE>gleffects_heat</TITLE>
+Gstffects_heat
+<SUBSECTION Standard>
+Gstffects_heatClass
+GST_FFECTS_HEAT
+GST_FFECTS_HEAT_CAST
+GST_IS_FFECTS_HEAT
+GST_FFECTS_HEAT_CLASS
+GST_IS_FFECTS_HEAT_CLASS
+GST_TYPE_FFECTS_HEAT
+<SUBSECTION Private>
+gst_ffects_heat_get_type
+</SECTION>
+
+<SECTION>
+<FILE>element-gleffects_identity</FILE>
+<TITLE>gleffects_identity</TITLE>
+Gstffects_identity
+<SUBSECTION Standard>
+Gstffects_identityClass
+GST_FFECTS_IDENTITY
+GST_FFECTS_IDENTITY_CAST
+GST_IS_FFECTS_IDENTITY
+GST_FFECTS_IDENTITY_CLASS
+GST_IS_FFECTS_IDENTITY_CLASS
+GST_TYPE_FFECTS_IDENTITY
+<SUBSECTION Private>
+gst_ffects_identity_get_type
+</SECTION>
+
+<SECTION>
+<FILE>element-gleffects_laplacian</FILE>
+<TITLE>gleffects_laplacian</TITLE>
+Gstffects_laplacian
+<SUBSECTION Standard>
+Gstffects_laplacianClass
+GST_FFECTS_LAPLACIAN
+GST_FFECTS_LAPLACIAN_CAST
+GST_IS_FFECTS_LAPLACIAN
+GST_FFECTS_LAPLACIAN_CLASS
+GST_IS_FFECTS_LAPLACIAN_CLASS
+GST_TYPE_FFECTS_LAPLACIAN
+<SUBSECTION Private>
+gst_ffects_laplacian_get_type
+</SECTION>
+
+<SECTION>
+<FILE>element-gleffects_lumaxpro</FILE>
+<TITLE>gleffects_lumaxpro</TITLE>
+Gstffects_lumaxpro
+<SUBSECTION Standard>
+Gstffects_lumaxproClass
+GST_FFECTS_LUMAXPRO
+GST_FFECTS_LUMAXPRO_CAST
+GST_IS_FFECTS_LUMAXPRO
+GST_FFECTS_LUMAXPRO_CLASS
+GST_IS_FFECTS_LUMAXPRO_CLASS
+GST_TYPE_FFECTS_LUMAXPRO
+<SUBSECTION Private>
+gst_ffects_lumaxpro_get_type
+</SECTION>
+
+<SECTION>
+<FILE>element-gleffects_mirror</FILE>
+<TITLE>gleffects_mirror</TITLE>
+Gstffects_mirror
+<SUBSECTION Standard>
+Gstffects_mirrorClass
+GST_FFECTS_MIRROR
+GST_FFECTS_MIRROR_CAST
+GST_IS_FFECTS_MIRROR
+GST_FFECTS_MIRROR_CLASS
+GST_IS_FFECTS_MIRROR_CLASS
+GST_TYPE_FFECTS_MIRROR
+<SUBSECTION Private>
+gst_ffects_mirror_get_type
+</SECTION>
+
+<SECTION>
+<FILE>element-gleffects_sepia</FILE>
+<TITLE>gleffects_sepia</TITLE>
+Gstffects_sepia
+<SUBSECTION Standard>
+Gstffects_sepiaClass
+GST_FFECTS_SEPIA
+GST_FFECTS_SEPIA_CAST
+GST_IS_FFECTS_SEPIA
+GST_FFECTS_SEPIA_CLASS
+GST_IS_FFECTS_SEPIA_CLASS
+GST_TYPE_FFECTS_SEPIA
+<SUBSECTION Private>
+gst_ffects_sepia_get_type
+</SECTION>
+
+<SECTION>
+<FILE>element-gleffects_sin</FILE>
+<TITLE>gleffects_sin</TITLE>
+Gstffects_sin
+<SUBSECTION Standard>
+Gstffects_sinClass
+GST_FFECTS_SIN
+GST_FFECTS_SIN_CAST
+GST_IS_FFECTS_SIN
+GST_FFECTS_SIN_CLASS
+GST_IS_FFECTS_SIN_CLASS
+GST_TYPE_FFECTS_SIN
+<SUBSECTION Private>
+gst_ffects_sin_get_type
+</SECTION>
+
+<SECTION>
+<FILE>element-gleffects_sobel</FILE>
+<TITLE>gleffects_sobel</TITLE>
+Gstffects_sobel
+<SUBSECTION Standard>
+Gstffects_sobelClass
+GST_FFECTS_SOBEL
+GST_FFECTS_SOBEL_CAST
+GST_IS_FFECTS_SOBEL
+GST_FFECTS_SOBEL_CLASS
+GST_IS_FFECTS_SOBEL_CLASS
+GST_TYPE_FFECTS_SOBEL
+<SUBSECTION Private>
+gst_ffects_sobel_get_type
+</SECTION>
+
+<SECTION>
+<FILE>element-gleffects_square</FILE>
+<TITLE>gleffects_square</TITLE>
+Gstffects_square
+<SUBSECTION Standard>
+Gstffects_squareClass
+GST_FFECTS_SQUARE
+GST_FFECTS_SQUARE_CAST
+GST_IS_FFECTS_SQUARE
+GST_FFECTS_SQUARE_CLASS
+GST_IS_FFECTS_SQUARE_CLASS
+GST_TYPE_FFECTS_SQUARE
+<SUBSECTION Private>
+gst_ffects_square_get_type
+</SECTION>
+
+<SECTION>
+<FILE>element-gleffects_squeeze</FILE>
+<TITLE>gleffects_squeeze</TITLE>
+Gstffects_squeeze
+<SUBSECTION Standard>
+Gstffects_squeezeClass
+GST_FFECTS_SQUEEZE
+GST_FFECTS_SQUEEZE_CAST
+GST_IS_FFECTS_SQUEEZE
+GST_FFECTS_SQUEEZE_CLASS
+GST_IS_FFECTS_SQUEEZE_CLASS
+GST_TYPE_FFECTS_SQUEEZE
+<SUBSECTION Private>
+gst_ffects_squeeze_get_type
+</SECTION>
+
+<SECTION>
+<FILE>element-gleffects_stretch</FILE>
+<TITLE>gleffects_stretch</TITLE>
+Gstffects_stretch
+<SUBSECTION Standard>
+Gstffects_stretchClass
+GST_FFECTS_STRETCH
+GST_FFECTS_STRETCH_CAST
+GST_IS_FFECTS_STRETCH
+GST_FFECTS_STRETCH_CLASS
+GST_IS_FFECTS_STRETCH_CLASS
+GST_TYPE_FFECTS_STRETCH
+<SUBSECTION Private>
+gst_ffects_stretch_get_type
+</SECTION>
+
+<SECTION>
+<FILE>element-gleffects_tunnel</FILE>
+<TITLE>gleffects_tunnel</TITLE>
+Gstffects_tunnel
+<SUBSECTION Standard>
+Gstffects_tunnelClass
+GST_FFECTS_TUNNEL
+GST_FFECTS_TUNNEL_CAST
+GST_IS_FFECTS_TUNNEL
+GST_FFECTS_TUNNEL_CLASS
+GST_IS_FFECTS_TUNNEL_CLASS
+GST_TYPE_FFECTS_TUNNEL
+<SUBSECTION Private>
+gst_ffects_tunnel_get_type
+</SECTION>
+
+<SECTION>
+<FILE>element-gleffects_twirl</FILE>
+<TITLE>gleffects_twirl</TITLE>
+Gstffects_twirl
+<SUBSECTION Standard>
+Gstffects_twirlClass
+GST_FFECTS_TWIRL
+GST_FFECTS_TWIRL_CAST
+GST_IS_FFECTS_TWIRL
+GST_FFECTS_TWIRL_CLASS
+GST_IS_FFECTS_TWIRL_CLASS
+GST_TYPE_FFECTS_TWIRL
+<SUBSECTION Private>
+gst_ffects_twirl_get_type
+</SECTION>
+
+<SECTION>
+<FILE>element-gleffects_xpro</FILE>
+<TITLE>gleffects_xpro</TITLE>
+Gstffects_xpro
+<SUBSECTION Standard>
+Gstffects_xproClass
+GST_FFECTS_XPRO
+GST_FFECTS_XPRO_CAST
+GST_IS_FFECTS_XPRO
+GST_FFECTS_XPRO_CLASS
+GST_IS_FFECTS_XPRO_CLASS
+GST_TYPE_FFECTS_XPRO
+<SUBSECTION Private>
+gst_ffects_xpro_get_type
+</SECTION>
+
+<SECTION>
+<FILE>element-gleffects_xray</FILE>
+<TITLE>gleffects_xray</TITLE>
+Gstffects_xray
+<SUBSECTION Standard>
+Gstffects_xrayClass
+GST_FFECTS_XRAY
+GST_FFECTS_XRAY_CAST
+GST_IS_FFECTS_XRAY
+GST_FFECTS_XRAY_CLASS
+GST_IS_FFECTS_XRAY_CLASS
+GST_TYPE_FFECTS_XRAY
+<SUBSECTION Private>
+gst_ffects_xray_get_type
+</SECTION>
+
diff --git a/docs/plugins/gst-plugins-bad-plugins.args b/docs/plugins/gst-plugins-bad-plugins.args
index 0bdbfbd..ce94f99 100644
--- a/docs/plugins/gst-plugins-bad-plugins.args
+++ b/docs/plugins/gst-plugins-bad-plugins.args
@@ -1399,6 +1399,16 @@
</ARG>
<ARG>
+<NAME>GstGLImageSink::rotate-method</NAME>
+<TYPE>GstGLRotateMethod</TYPE>
+<RANGE></RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>rotate method</NICK>
+<BLURB>rotate method.</BLURB>
+<DEFAULT>Identity (no rotation)</DEFAULT>
+</ARG>
+
+<ARG>
<NAME>GstRgAnalysis::forced</NAME>
<TYPE>gboolean</TYPE>
<RANGE></RANGE>
@@ -1704,7 +1714,7 @@
<RANGE></RANGE>
<FLAGS>rw</FLAGS>
<NICK>bandwidth-hz</NICK>
-<BLURB>(DVB-T) Bandwidth in Hz.</BLURB>
+<BLURB>Channel bandwidth in Hz.</BLURB>
<DEFAULT>8000000</DEFAULT>
</ARG>
@@ -1814,7 +1824,7 @@
<RANGE></RANGE>
<FLAGS>w</FLAGS>
<NICK>pids</NICK>
-<BLURB>Colon seperated list of pids (eg. 110:120).</BLURB>
+<BLURB>Colon-separated list of PIDs (eg. 110:120) to capture. ACT and CAT are automatically included but PMT should be added explicitly. Special value 8192 gets full MPEG-TS.</BLURB>
<DEFAULT>"8192"</DEFAULT>
</ARG>
@@ -2003,7 +2013,7 @@
<TYPE>guint</TYPE>
<RANGE>[1,7]</RANGE>
<FLAGS>rw</FLAGS>
-<NICK>ISB-T layer enabled</NICK>
+<NICK>ISDB-T layer enabled</NICK>
<BLURB>(ISDB-T) Layer Enabled (7 = All layers).</BLURB>
<DEFAULT>7</DEFAULT>
</ARG>
@@ -2033,7 +2043,7 @@
<TYPE>gint</TYPE>
<RANGE>[G_MAXULONG,13]</RANGE>
<FLAGS>rw</FLAGS>
-<NICK>ISB-T layer A segment count</NICK>
+<NICK>ISDB-T layer A segment count</NICK>
<BLURB>(ISDB-T) Layer A segment count (-1 = AUTO).</BLURB>
<DEFAULT>-1</DEFAULT>
</ARG>
@@ -2043,7 +2053,7 @@
<TYPE>gint</TYPE>
<RANGE>[G_MAXULONG,8]</RANGE>
<FLAGS>rw</FLAGS>
-<NICK>ISB-T layer A time interleaving </NICK>
+<NICK>ISDB-T layer A time interleaving</NICK>
<BLURB>(ISDB-T) Layer A time interleaving (-1 = AUTO).</BLURB>
<DEFAULT>-1</DEFAULT>
</ARG>
@@ -2073,7 +2083,7 @@
<TYPE>gint</TYPE>
<RANGE>[G_MAXULONG,13]</RANGE>
<FLAGS>rw</FLAGS>
-<NICK>ISB-T layer B segment count</NICK>
+<NICK>ISDB-T layer B segment count</NICK>
<BLURB>(ISDB-T) Layer B segment count (-1 = AUTO).</BLURB>
<DEFAULT>-1</DEFAULT>
</ARG>
@@ -2083,7 +2093,7 @@
<TYPE>gint</TYPE>
<RANGE>[G_MAXULONG,8]</RANGE>
<FLAGS>rw</FLAGS>
-<NICK>ISB-T layer B time interleaving </NICK>
+<NICK>ISDB-T layer B time interleaving</NICK>
<BLURB>(ISDB-T) Layer B time interleaving (-1 = AUTO).</BLURB>
<DEFAULT>-1</DEFAULT>
</ARG>
@@ -2113,7 +2123,7 @@
<TYPE>gint</TYPE>
<RANGE>[G_MAXULONG,13]</RANGE>
<FLAGS>rw</FLAGS>
-<NICK>ISB-T layer C segment count</NICK>
+<NICK>ISDB-T layer C segment count</NICK>
<BLURB>(ISDB-T) Layer C segment count (-1 = AUTO).</BLURB>
<DEFAULT>-1</DEFAULT>
</ARG>
@@ -2123,7 +2133,7 @@
<TYPE>gint</TYPE>
<RANGE>[G_MAXULONG,8]</RANGE>
<FLAGS>rw</FLAGS>
-<NICK>ISB-T layer C time interleaving </NICK>
+<NICK>ISDB-T layer C time interleaving</NICK>
<BLURB>(ISDB-T) Layer C time interleaving (-1 = AUTO).</BLURB>
<DEFAULT>-1</DEFAULT>
</ARG>
@@ -2133,7 +2143,7 @@
<TYPE>gint</TYPE>
<RANGE>[G_MAXULONG,1]</RANGE>
<FLAGS>rw</FLAGS>
-<NICK>ISB-T partial reception</NICK>
+<NICK>ISDB-T partial reception</NICK>
<BLURB>(ISDB-T) Partial Reception (-1 = AUTO).</BLURB>
<DEFAULT>1</DEFAULT>
</ARG>
@@ -2143,7 +2153,7 @@
<TYPE>guint</TYPE>
<RANGE>[1,13]</RANGE>
<FLAGS>rw</FLAGS>
-<NICK>ISB-T SB segment count</NICK>
+<NICK>ISDB-T SB segment count</NICK>
<BLURB>(ISDB-T) SB segment count.</BLURB>
<DEFAULT>1</DEFAULT>
</ARG>
@@ -2153,7 +2163,7 @@
<TYPE>gint</TYPE>
<RANGE>[0,12]</RANGE>
<FLAGS>rw</FLAGS>
-<NICK>ISB-T SB segment IDX</NICK>
+<NICK>ISDB-T SB segment IDX</NICK>
<BLURB>(ISDB-T) SB segment IDX.</BLURB>
<DEFAULT>0</DEFAULT>
</ARG>
@@ -2163,7 +2173,7 @@
<TYPE>gint</TYPE>
<RANGE>[G_MAXULONG,41]</RANGE>
<FLAGS>rw</FLAGS>
-<NICK>ISB-T SB subchannel ID</NICK>
+<NICK>ISDB-T SB subchannel ID</NICK>
<BLURB>(ISDB-T) SB Subchannel ID (-1 = AUTO).</BLURB>
<DEFAULT>0</DEFAULT>
</ARG>
@@ -2173,7 +2183,7 @@
<TYPE>gint</TYPE>
<RANGE>[0,1]</RANGE>
<FLAGS>rw</FLAGS>
-<NICK>ISB-T sound broadcasting</NICK>
+<NICK>ISDB-T sound broadcasting</NICK>
<BLURB>(ISDB-T) Sound Broadcasting.</BLURB>
<DEFAULT>0</DEFAULT>
</ARG>
@@ -18174,7 +18184,7 @@
<RANGE></RANGE>
<FLAGS>rw</FLAGS>
<NICK>bandwidth-hz</NICK>
-<BLURB>(DVB-T) Bandwidth in Hz.</BLURB>
+<BLURB>Channel bandwidth in Hz.</BLURB>
<DEFAULT>8000000</DEFAULT>
</ARG>
@@ -18233,7 +18243,7 @@
<TYPE>guint</TYPE>
<RANGE>[1,7]</RANGE>
<FLAGS>rw</FLAGS>
-<NICK>ISB-T layer enabled</NICK>
+<NICK>ISDB-T layer enabled</NICK>
<BLURB>(ISDB-T) Layer Enabled (7 = All layers).</BLURB>
<DEFAULT>7</DEFAULT>
</ARG>
@@ -18263,7 +18273,7 @@
<TYPE>gint</TYPE>
<RANGE>[G_MAXULONG,13]</RANGE>
<FLAGS>rw</FLAGS>
-<NICK>ISB-T layer A segment count</NICK>
+<NICK>ISDB-T layer A segment count</NICK>
<BLURB>(ISDB-T) Layer A segment count (-1 = AUTO).</BLURB>
<DEFAULT>-1</DEFAULT>
</ARG>
@@ -18273,7 +18283,7 @@
<TYPE>gint</TYPE>
<RANGE>[G_MAXULONG,8]</RANGE>
<FLAGS>rw</FLAGS>
-<NICK>ISB-T layer A time interleaving </NICK>
+<NICK>ISDB-T layer A time interleaving</NICK>
<BLURB>(ISDB-T) Layer A time interleaving (-1 = AUTO).</BLURB>
<DEFAULT>-1</DEFAULT>
</ARG>
@@ -18303,7 +18313,7 @@
<TYPE>gint</TYPE>
<RANGE>[G_MAXULONG,13]</RANGE>
<FLAGS>rw</FLAGS>
-<NICK>ISB-T layer B segment count</NICK>
+<NICK>ISDB-T layer B segment count</NICK>
<BLURB>(ISDB-T) Layer B segment count (-1 = AUTO).</BLURB>
<DEFAULT>-1</DEFAULT>
</ARG>
@@ -18313,7 +18323,7 @@
<TYPE>gint</TYPE>
<RANGE>[G_MAXULONG,8]</RANGE>
<FLAGS>rw</FLAGS>
-<NICK>ISB-T layer B time interleaving </NICK>
+<NICK>ISDB-T layer B time interleaving</NICK>
<BLURB>(ISDB-T) Layer B time interleaving (-1 = AUTO).</BLURB>
<DEFAULT>-1</DEFAULT>
</ARG>
@@ -18343,7 +18353,7 @@
<TYPE>gint</TYPE>
<RANGE>[G_MAXULONG,13]</RANGE>
<FLAGS>rw</FLAGS>
-<NICK>ISB-T layer C segment count</NICK>
+<NICK>ISDB-T layer C segment count</NICK>
<BLURB>(ISDB-T) Layer C segment count (-1 = AUTO).</BLURB>
<DEFAULT>-1</DEFAULT>
</ARG>
@@ -18353,7 +18363,7 @@
<TYPE>gint</TYPE>
<RANGE>[G_MAXULONG,8]</RANGE>
<FLAGS>rw</FLAGS>
-<NICK>ISB-T layer C time interleaving </NICK>
+<NICK>ISDB-T layer C time interleaving</NICK>
<BLURB>(ISDB-T) Layer C time interleaving (-1 = AUTO).</BLURB>
<DEFAULT>-1</DEFAULT>
</ARG>
@@ -18363,7 +18373,7 @@
<TYPE>gint</TYPE>
<RANGE>[G_MAXULONG,1]</RANGE>
<FLAGS>rw</FLAGS>
-<NICK>ISB-T partial reception</NICK>
+<NICK>ISDB-T partial reception</NICK>
<BLURB>(ISDB-T) Partial Reception (-1 = AUTO).</BLURB>
<DEFAULT>1</DEFAULT>
</ARG>
@@ -18373,7 +18383,7 @@
<TYPE>guint</TYPE>
<RANGE>[1,13]</RANGE>
<FLAGS>rw</FLAGS>
-<NICK>ISB-T SB segment count</NICK>
+<NICK>ISDB-T SB segment count</NICK>
<BLURB>(ISDB-T) SB segment count.</BLURB>
<DEFAULT>1</DEFAULT>
</ARG>
@@ -18383,7 +18393,7 @@
<TYPE>gint</TYPE>
<RANGE>[0,12]</RANGE>
<FLAGS>rw</FLAGS>
-<NICK>ISB-T SB segment IDX</NICK>
+<NICK>ISDB-T SB segment IDX</NICK>
<BLURB>(ISDB-T) SB segment IDX.</BLURB>
<DEFAULT>0</DEFAULT>
</ARG>
@@ -18393,7 +18403,7 @@
<TYPE>gint</TYPE>
<RANGE>[G_MAXULONG,41]</RANGE>
<FLAGS>rw</FLAGS>
-<NICK>ISB-T SB subchannel ID</NICK>
+<NICK>ISDB-T SB subchannel ID</NICK>
<BLURB>(ISDB-T) SB Subchannel ID (-1 = AUTO).</BLURB>
<DEFAULT>0</DEFAULT>
</ARG>
@@ -18403,7 +18413,7 @@
<TYPE>gint</TYPE>
<RANGE>[0,1]</RANGE>
<FLAGS>rw</FLAGS>
-<NICK>ISB-T sound broadcasting</NICK>
+<NICK>ISDB-T sound broadcasting</NICK>
<BLURB>(ISDB-T) Sound Broadcasting.</BLURB>
<DEFAULT>0</DEFAULT>
</ARG>
@@ -18900,11 +18910,11 @@
<ARG>
<NAME>GstH264Parse::config-interval</NAME>
-<TYPE>guint</TYPE>
-<RANGE><= 3600</RANGE>
+<TYPE>gint</TYPE>
+<RANGE>[G_MAXULONG,3600]</RANGE>
<FLAGS>rwx</FLAGS>
<NICK>SPS PPS Send Interval</NICK>
-<BLURB>Send SPS and PPS Insertion Interval in seconds (sprop parameter sets will be multiplexed in the data stream when detected.) (0 = disabled).</BLURB>
+<BLURB>Send SPS and PPS Insertion Interval in seconds (sprop parameter sets will be multiplexed in the data stream when detected.) (0 = disabled, -1 = send with every IDR frame).</BLURB>
<DEFAULT>0</DEFAULT>
</ARG>
@@ -27264,8 +27274,8 @@
<RANGE>[0,1]</RANGE>
<FLAGS>rw</FLAGS>
<NICK>diffspace</NICK>
-<BLURB>difference space: a value from 0 to 256.</BLURB>
-<DEFAULT>1</DEFAULT>
+<BLURB>difference space: a value from 0 to 256 (mapped to [0,1]).</BLURB>
+<DEFAULT>0.00390625</DEFAULT>
</ARG>
<ARG>
@@ -27274,8 +27284,8 @@
<RANGE>[0,1]</RANGE>
<FLAGS>rw</FLAGS>
<NICK>triplevel</NICK>
-<BLURB>level of trip: use high numbers, incremented by 100.</BLURB>
-<DEFAULT>0</DEFAULT>
+<BLURB>level of trip: mapped to [0,1] asymptotical.</BLURB>
+<DEFAULT>1</DEFAULT>
</ARG>
<ARG>
@@ -27313,7 +27323,7 @@
<TYPE>gdouble</TYPE>
<RANGE>[0,1]</RANGE>
<FLAGS>rw</FLAGS>
-<NICK>brightness</NICK>
+<NICK>Brightness</NICK>
<BLURB></BLURB>
<DEFAULT>0.5</DEFAULT>
</ARG>
@@ -27359,6 +27369,46 @@
</ARG>
<ARG>
+<NAME>frei0r-filter-lens-correction::correction-near-center</NAME>
+<TYPE>gdouble</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Correction near center</NICK>
+<BLURB></BLURB>
+<DEFAULT>0.5</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-lens-correction::correction-near-edges</NAME>
+<TYPE>gdouble</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Correction near edges</NICK>
+<BLURB></BLURB>
+<DEFAULT>0.5</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-lens-correction::x-center</NAME>
+<TYPE>gdouble</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>X center</NICK>
+<BLURB></BLURB>
+<DEFAULT>0.5</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-lens-correction::y-center</NAME>
+<TYPE>gdouble</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Y center</NICK>
+<BLURB></BLURB>
+<DEFAULT>0.5</DEFAULT>
+</ARG>
+
+<ARG>
<NAME>frei0r-filter-brightness::brightness</NAME>
<TYPE>gdouble</TYPE>
<RANGE>[0,1]</RANGE>
@@ -27429,6 +27479,26 @@
</ARG>
<ARG>
+<NAME>frei0r-filter-pixeliz0r::block-height</NAME>
+<TYPE>gdouble</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Block height</NICK>
+<BLURB>Vertical size of one "pixel".</BLURB>
+<DEFAULT>0.0291667</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-pixeliz0r::block-width</NAME>
+<TYPE>gdouble</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Block width</NICK>
+<BLURB>Horizontal size of one "pixel".</BLURB>
+<DEFAULT>0.021875</DEFAULT>
+</ARG>
+
+<ARG>
<NAME>frei0r-filter-3dflippo::center-position--x-</NAME>
<TYPE>gdouble</TYPE>
<RANGE>[0,1]</RANGE>
@@ -27605,7 +27675,7 @@
<FLAGS>rw</FLAGS>
<NICK>Saturation</NICK>
<BLURB>The saturation value.</BLURB>
-<DEFAULT>0</DEFAULT>
+<DEFAULT>0.125</DEFAULT>
</ARG>
<ARG>
@@ -27635,7 +27705,7 @@
<FLAGS>rw</FLAGS>
<NICK>lredscale</NICK>
<BLURB>multiplier for downscaling non-edge brightness.</BLURB>
-<DEFAULT>5.48413e-322</DEFAULT>
+<DEFAULT>0</DEFAULT>
</ARG>
<ARG>
@@ -27645,7 +27715,7 @@
<FLAGS>rw</FLAGS>
<NICK>lthresh</NICK>
<BLURB>threshold for edge lightening.</BLURB>
-<DEFAULT>8.00386e-321</DEFAULT>
+<DEFAULT>0</DEFAULT>
</ARG>
<ARG>
@@ -27655,7 +27725,7 @@
<FLAGS>rw</FLAGS>
<NICK>lupscale</NICK>
<BLURB>multiplier for upscaling edge brightness.</BLURB>
-<DEFAULT>7.93469e-321</DEFAULT>
+<DEFAULT>0</DEFAULT>
</ARG>
<ARG>
@@ -27685,7 +27755,7 @@
<FLAGS>rw</FLAGS>
<NICK>Green Tint</NICK>
<BLURB>Adjust the level of green.</BLURB>
-<DEFAULT>0</DEFAULT>
+<DEFAULT>0.133333</DEFAULT>
</ARG>
<ARG>
@@ -27825,7 +27895,7 @@
<FLAGS>rw</FLAGS>
<NICK>blend</NICK>
<BLURB>blend factor.</BLURB>
-<DEFAULT>0</DEFAULT>
+<DEFAULT>7.49023e-11</DEFAULT>
</ARG>
<ARG>
@@ -28015,7 +28085,7 @@
<FLAGS>rw</FLAGS>
<NICK>HSync</NICK>
<BLURB>the hsync offset.</BLURB>
-<DEFAULT>2.11543e-316</DEFAULT>
+<DEFAULT>0</DEFAULT>
</ARG>
<ARG>
@@ -33995,7 +34065,7 @@
<FLAGS>rw</FLAGS>
<NICK>Histogram position</NICK>
<BLURB>Histogram position.</BLURB>
-<DEFAULT>0</DEFAULT>
+<DEFAULT>0.3</DEFAULT>
</ARG>
<ARG>
@@ -34125,7 +34195,7 @@
<FLAGS>rw</FLAGS>
<NICK>Color (G)</NICK>
<BLURB>The color to make transparent (B G R).</BLURB>
-<DEFAULT>0</DEFAULT>
+<DEFAULT>0.94</DEFAULT>
</ARG>
<ARG>
@@ -34145,7 +34215,7 @@
<FLAGS>rw</FLAGS>
<NICK>Distance</NICK>
<BLURB>Distance to Color (127 is good).</BLURB>
-<DEFAULT>0</DEFAULT>
+<DEFAULT>0.288</DEFAULT>
</ARG>
<ARG>
@@ -34345,7 +34415,7 @@
<FLAGS>rw</FLAGS>
<NICK>Zoomrate</NICK>
<BLURB>Zoomrate.</BLURB>
-<DEFAULT>0</DEFAULT>
+<DEFAULT>0.202</DEFAULT>
</ARG>
<ARG>
@@ -34354,8 +34424,8 @@
<RANGE>[0,1]</RANGE>
<FLAGS>rw</FLAGS>
<NICK>Channel</NICK>
-<BLURB>Channel to adjust levels (1 = RED; 2 = GREEN; 3 = BLUE; 4 = LUMA).</BLURB>
-<DEFAULT>0</DEFAULT>
+<BLURB>Channel to adjust (0 = red, 0.1 = green, 0.2 = blue, 0.3 = alpha, 0.4 = luma, 0.5 = rgb, 0.6 = hue, 0.7 = saturation).</BLURB>
+<DEFAULT>0.5</DEFAULT>
</ARG>
<ARG>
@@ -34364,8 +34434,8 @@
<RANGE>[0,1]</RANGE>
<FLAGS>rw</FLAGS>
<NICK>Curve point number</NICK>
-<BLURB>Number of point to use to build curve.</BLURB>
-<DEFAULT>0</DEFAULT>
+<BLURB>Number of points to use to build curve (/10 to fit [0,1] parameter range). Minimum 2 (0.2), Maximum 5 (0.5). Not relevant for Bézier spline.</BLURB>
+<DEFAULT>0.2</DEFAULT>
</ARG>
<ARG>
@@ -34374,8 +34444,8 @@
<RANGE>[0,1]</RANGE>
<FLAGS>rw</FLAGS>
<NICK>Graph position</NICK>
-<BLURB>Output image corner where curve graph will be drawn (1 = TOP,LEFT; 2 = TOP,RIGHT; 3 = BOTTOM,LEFT; 4 = BOTTOM, RIGHT).</BLURB>
-<DEFAULT>0</DEFAULT>
+<BLURB>Output image corner where curve graph will be drawn (0.1 = TOP,LEFT; 0.2 = TOP,RIGHT; 0.3 = BOTTOM,LEFT; 0.4 = BOTTOM, RIGHT).</BLURB>
+<DEFAULT>0.3</DEFAULT>
</ARG>
<ARG>
@@ -34385,7 +34455,7 @@
<FLAGS>rw</FLAGS>
<NICK>Point 1 input value</NICK>
<BLURB>Point 1 input value.</BLURB>
-<DEFAULT>1</DEFAULT>
+<DEFAULT>0</DEFAULT>
</ARG>
<ARG>
@@ -34395,7 +34465,7 @@
<FLAGS>rw</FLAGS>
<NICK>Point 1 output value</NICK>
<BLURB>Point 1 output value.</BLURB>
-<DEFAULT>1</DEFAULT>
+<DEFAULT>0</DEFAULT>
</ARG>
<ARG>
@@ -34425,7 +34495,7 @@
<FLAGS>rw</FLAGS>
<NICK>Point 3 input value</NICK>
<BLURB>Point 3 input value.</BLURB>
-<DEFAULT>1</DEFAULT>
+<DEFAULT>0</DEFAULT>
</ARG>
<ARG>
@@ -34435,7 +34505,7 @@
<FLAGS>rw</FLAGS>
<NICK>Point 3 output value</NICK>
<BLURB>Point 3 output value.</BLURB>
-<DEFAULT>1</DEFAULT>
+<DEFAULT>0</DEFAULT>
</ARG>
<ARG>
@@ -34445,7 +34515,7 @@
<FLAGS>rw</FLAGS>
<NICK>Point 4 input value</NICK>
<BLURB>Point 4 input value.</BLURB>
-<DEFAULT>1</DEFAULT>
+<DEFAULT>0</DEFAULT>
</ARG>
<ARG>
@@ -34455,7 +34525,7 @@
<FLAGS>rw</FLAGS>
<NICK>Point 4 output value</NICK>
<BLURB>Point 4 output value.</BLURB>
-<DEFAULT>1</DEFAULT>
+<DEFAULT>0</DEFAULT>
</ARG>
<ARG>
@@ -34465,7 +34535,7 @@
<FLAGS>rw</FLAGS>
<NICK>Point 5 input value</NICK>
<BLURB>Point 5 input value.</BLURB>
-<DEFAULT>1</DEFAULT>
+<DEFAULT>0</DEFAULT>
</ARG>
<ARG>
@@ -34475,7 +34545,7 @@
<FLAGS>rw</FLAGS>
<NICK>Point 5 output value</NICK>
<BLURB>Point 5 output value.</BLURB>
-<DEFAULT>1</DEFAULT>
+<DEFAULT>0</DEFAULT>
</ARG>
<ARG>
@@ -34489,6 +34559,26 @@
</ARG>
<ARG>
+<NAME>frei0r-filter-curves::b--zier-spline</NAME>
+<TYPE>gchar*</TYPE>
+<RANGE></RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Bézier spline</NICK>
+<BLURB>Use cubic Bézier spline. Has to be a sorted list of points in the format "handle1x;handle1y#pointx;pointy#handle2x;handle2y"(pointx = in, pointy = out). Points are separated by a "|".The values can have "double" precision. x, y for points should be in the range 0-1. x,y for handles might also be out of this range.</BLURB>
+<DEFAULT>""</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-curves::luma-formula</NAME>
+<TYPE>gboolean</TYPE>
+<RANGE></RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Luma formula</NICK>
+<BLURB>Use Rec. 601 (false) or Rec. 709 (true).</BLURB>
+<DEFAULT>TRUE</DEFAULT>
+</ARG>
+
+<ARG>
<NAME>VdpSink::display</NAME>
<TYPE>gchar*</TYPE>
<RANGE></RANGE>
@@ -46409,6 +46499,16 @@
</ARG>
<ARG>
+<NAME>GstRTMPSrc::timeout</NAME>
+<TYPE>gint</TYPE>
+<RANGE>>= 0</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>RTMP Timeout</NICK>
+<BLURB>Time without receiving any data from the server to wait before to timeout the session.</BLURB>
+<DEFAULT>120</DEFAULT>
+</ARG>
+
+<ARG>
<NAME>GstFliteTestSrc::samplesperbuffer</NAME>
<TYPE>gint</TYPE>
<RANGE>>= 1</RANGE>
@@ -46909,46 +47009,6 @@
</ARG>
<ARG>
-<NAME>Gstpyramidsegment::level</NAME>
-<TYPE>gint</TYPE>
-<RANGE>[0,4]</RANGE>
-<FLAGS>rw</FLAGS>
-<NICK>Level</NICK>
-<BLURB>Maximum level of the pyramid segmentation.</BLURB>
-<DEFAULT>4</DEFAULT>
-</ARG>
-
-<ARG>
-<NAME>Gstpyramidsegment::silent</NAME>
-<TYPE>gboolean</TYPE>
-<RANGE></RANGE>
-<FLAGS>rw</FLAGS>
-<NICK>Silent</NICK>
-<BLURB>Produce verbose output ?.</BLURB>
-<DEFAULT>FALSE</DEFAULT>
-</ARG>
-
-<ARG>
-<NAME>Gstpyramidsegment::threshold1</NAME>
-<TYPE>gdouble</TYPE>
-<RANGE>[0,1000]</RANGE>
-<FLAGS>rw</FLAGS>
-<NICK>Threshold1</NICK>
-<BLURB>Error threshold for establishing links.</BLURB>
-<DEFAULT>50</DEFAULT>
-</ARG>
-
-<ARG>
-<NAME>Gstpyramidsegment::threshold2</NAME>
-<TYPE>gdouble</TYPE>
-<RANGE>[0,1000]</RANGE>
-<FLAGS>rw</FLAGS>
-<NICK>Threshold2</NICK>
-<BLURB>Error threshold for segment clustering.</BLURB>
-<DEFAULT>60</DEFAULT>
-</ARG>
-
-<ARG>
<NAME>Gstfacedetect::display</NAME>
<TYPE>gboolean</TYPE>
<RANGE></RANGE>
@@ -58905,7 +58965,7 @@
<FLAGS>rw</FLAGS>
<NICK>Eyes profile</NICK>
<BLURB>Location of Haar cascade file to use for eye-pair detection.</BLURB>
-<DEFAULT>"/usr/share/OpenCV/haarcascades/haarcascade_mcs_eyepair_small.xml"</DEFAULT>
+<DEFAULT>"/usr/share/opencv/haarcascades/haarcascade_mcs_eyepair_small.xml"</DEFAULT>
</ARG>
<ARG>
@@ -58955,7 +59015,7 @@
<FLAGS>rw</FLAGS>
<NICK>Mouth profile</NICK>
<BLURB>Location of Haar cascade file to use for mouth detection.</BLURB>
-<DEFAULT>"/usr/share/OpenCV/haarcascades/haarcascade_mcs_mouth.xml"</DEFAULT>
+<DEFAULT>"/usr/share/opencv/haarcascades/haarcascade_mcs_mouth.xml"</DEFAULT>
</ARG>
<ARG>
@@ -58965,7 +59025,7 @@
<FLAGS>rw</FLAGS>
<NICK>Nose profile</NICK>
<BLURB>Location of Haar cascade file to use for nose detection.</BLURB>
-<DEFAULT>"/usr/share/OpenCV/haarcascades/haarcascade_mcs_nose.xml"</DEFAULT>
+<DEFAULT>"/usr/share/opencv/haarcascades/haarcascade_mcs_nose.xml"</DEFAULT>
</ARG>
<ARG>
@@ -58975,7 +59035,7 @@
<FLAGS>rw</FLAGS>
<NICK>Face profile</NICK>
<BLURB>Location of Haar cascade file to use for face detection.</BLURB>
-<DEFAULT>"/usr/share/OpenCV/haarcascades/haarcascade_frontalface_default.xml"</DEFAULT>
+<DEFAULT>"/usr/share/opencv/haarcascades/haarcascade_frontalface_default.xml"</DEFAULT>
</ARG>
<ARG>
@@ -59015,7 +59075,7 @@
<FLAGS>rw</FLAGS>
<NICK>Profile</NICK>
<BLURB>Location of Haar cascade file to use for face blurion.</BLURB>
-<DEFAULT>"/usr/share/OpenCV/haarcascades/haarcascade_frontalface_default.xml"</DEFAULT>
+<DEFAULT>"/usr/share/opencv/haarcascades/haarcascade_frontalface_default.xml"</DEFAULT>
</ARG>
<ARG>
@@ -66743,6 +66803,16 @@
</ARG>
<ARG>
+<NAME>GstSrtpEnc::stats</NAME>
+<TYPE>GstStructure*</TYPE>
+<RANGE></RANGE>
+<FLAGS>r</FLAGS>
+<NICK>Statistics</NICK>
+<BLURB>Various statistics.</BLURB>
+<DEFAULT></DEFAULT>
+</ARG>
+
+<ARG>
<NAME>GstSegmentation::learning-rate</NAME>
<TYPE>gfloat</TYPE>
<RANGE>[0,1]</RANGE>
@@ -67672,11 +67742,11 @@
<ARG>
<NAME>GstRtpH265Pay::config-interval</NAME>
-<TYPE>guint</TYPE>
-<RANGE><= 3600</RANGE>
+<TYPE>gint</TYPE>
+<RANGE>[G_MAXULONG,3600]</RANGE>
<FLAGS>rw</FLAGS>
<NICK>VPS SPS PPS Send Interval</NICK>
-<BLURB>Send VPS, SPS and PPS Insertion Interval in seconds (sprop parameter sets will be multiplexed in the data stream when detected.) (0 = disabled).</BLURB>
+<BLURB>Send VPS, SPS and PPS Insertion Interval in seconds (sprop parameter sets will be multiplexed in the data stream when detected.) (0 = disabled, -1 = send with every IDR frame).</BLURB>
<DEFAULT>0</DEFAULT>
</ARG>
@@ -67737,7 +67807,7 @@
<FLAGS>rwx</FLAGS>
<NICK>Connection</NICK>
<BLURB>Video input connection to use.</BLURB>
-<DEFAULT>auto</DEFAULT>
+<DEFAULT>Auto</DEFAULT>
</ARG>
<ARG>
@@ -67757,7 +67827,17 @@
<FLAGS>rwx</FLAGS>
<NICK>Playback Mode</NICK>
<BLURB>Video Mode to use for playback.</BLURB>
-<DEFAULT>auto</DEFAULT>
+<DEFAULT>Automatic detection</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>GstDecklinkVideoSrc::video-format</NAME>
+<TYPE>GstDecklinkVideoFormat</TYPE>
+<RANGE></RANGE>
+<FLAGS>rwx</FLAGS>
+<NICK>Video format</NICK>
+<BLURB>Video format type to use for input (Only use auto for mode=auto).</BLURB>
+<DEFAULT>Auto</DEFAULT>
</ARG>
<ARG>
@@ -67777,7 +67857,17 @@
<FLAGS>rwx</FLAGS>
<NICK>Playback Mode</NICK>
<BLURB>Video Mode to use for playback.</BLURB>
-<DEFAULT>ntsc</DEFAULT>
+<DEFAULT>NTSC SD 60i</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>GstDecklinkVideoSink::video-format</NAME>
+<TYPE>GstDecklinkVideoFormat</TYPE>
+<RANGE></RANGE>
+<FLAGS>rwx</FLAGS>
+<NICK>Video format</NICK>
+<BLURB>Video format type to use for playback.</BLURB>
+<DEFAULT>bmdFormat8BitYUV</DEFAULT>
</ARG>
<ARG>
@@ -67807,7 +67897,7 @@
<FLAGS>rwx</FLAGS>
<NICK>Connection</NICK>
<BLURB>Audio input connection to use.</BLURB>
-<DEFAULT>auto</DEFAULT>
+<DEFAULT>Automatic</DEFAULT>
</ARG>
<ARG>
@@ -67967,7 +68057,7 @@
<FLAGS>rw</FLAGS>
<NICK>Slice mode</NICK>
<BLURB>Slice mode.</BLURB>
-<DEFAULT>num-slices slices</DEFAULT>
+<DEFAULT>Fixed number of slices</DEFAULT>
</ARG>
<ARG>
@@ -67991,6 +68081,16 @@
</ARG>
<ARG>
+<NAME>GstOpenh264Enc::max-bitrate</NAME>
+<TYPE>guint</TYPE>
+<RANGE></RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Max Bitrate</NICK>
+<BLURB>Maximum Bitrate (in bits per second).</BLURB>
+<DEFAULT>0</DEFAULT>
+</ARG>
+
+<ARG>
<NAME>GstLibde265Dec::max-threads</NAME>
<TYPE>gint</TYPE>
<RANGE>>= 0</RANGE>
@@ -68211,6 +68311,26 @@
</ARG>
<ARG>
+<NAME>GstGLMixerBin::start-time</NAME>
+<TYPE>guint64</TYPE>
+<RANGE></RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Start Time</NICK>
+<BLURB>Start time to use if start-time-selection=set.</BLURB>
+<DEFAULT>18446744073709551615</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>GstGLMixerBin::start-time-selection</NAME>
+<TYPE>GstGLMixerBinStartTimeSelection</TYPE>
+<RANGE></RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Start Time Selection</NICK>
+<BLURB>Decides which start time is output.</BLURB>
+<DEFAULT>Start at 0 running time (default)</DEFAULT>
+</ARG>
+
+<ARG>
<NAME>GstGLImageSinkBin::async</NAME>
<TYPE>gboolean</TYPE>
<RANGE></RANGE>
@@ -68411,6 +68531,16 @@
</ARG>
<ARG>
+<NAME>GstGLImageSinkBin::rotate-method</NAME>
+<TYPE>GstGLRotateMethod</TYPE>
+<RANGE></RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>rotate method</NICK>
+<BLURB>rotate method.</BLURB>
+<DEFAULT>Identity (no rotation)</DEFAULT>
+</ARG>
+
+<ARG>
<NAME>GstGLFilterBin::filter</NAME>
<TYPE>GstElement*</TYPE>
<RANGE></RANGE>
@@ -69360,3 +69490,2753 @@
<DEFAULT>0</DEFAULT>
</ARG>
+<ARG>
+<NAME>GstChecksumSink::hash</NAME>
+<TYPE>GstChecksumSinkHash</TYPE>
+<RANGE></RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Hash</NICK>
+<BLURB>Checksum type.</BLURB>
+<DEFAULT>SHA-1</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>GstSdpSrc::location</NAME>
+<TYPE>gchar*</TYPE>
+<RANGE></RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Location</NICK>
+<BLURB>URI to SDP file (sdp:///path/to/file).</BLURB>
+<DEFAULT>NULL</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>GstSdpSrc::sdp</NAME>
+<TYPE>gchar*</TYPE>
+<RANGE></RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>SDP</NICK>
+<BLURB>SDP description used instead of location.</BLURB>
+<DEFAULT>NULL</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>GstGLDeinterlace::method</NAME>
+<TYPE>GstGLDeinterlaceMethod</TYPE>
+<RANGE></RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Deinterlace Method</NICK>
+<BLURB>Select which deinterlace method apply to GL video texture.</BLURB>
+<DEFAULT>Blur Vertical</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-src-test-pat-r::amplitude</NAME>
+<TYPE>gdouble</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Amplitude</NICK>
+<BLURB>Amplitude (contrast) of the pattern.</BLURB>
+<DEFAULT>0.8</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-src-test-pat-r::aspect-type</NAME>
+<TYPE>gdouble</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Aspect type</NICK>
+<BLURB>Pixel aspect ratio presets.</BLURB>
+<DEFAULT>0</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-src-test-pat-r::channel</NAME>
+<TYPE>gdouble</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Channel</NICK>
+<BLURB>Into which color channel to draw.</BLURB>
+<DEFAULT>0</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-src-test-pat-r::freq-1</NAME>
+<TYPE>gdouble</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Freq 1</NICK>
+<BLURB>Pattern 7 H frequency.</BLURB>
+<DEFAULT>0.03</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-src-test-pat-r::freq-2</NAME>
+<TYPE>gdouble</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Freq 2</NICK>
+<BLURB>Pattern 7 V frequency.</BLURB>
+<DEFAULT>0.03</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-src-test-pat-r::lin-p-swp</NAME>
+<TYPE>gboolean</TYPE>
+<RANGE></RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Lin P swp</NICK>
+<BLURB>Use linear period sweep.</BLURB>
+<DEFAULT>FALSE</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-src-test-pat-r::manual-aspect</NAME>
+<TYPE>gdouble</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Manual aspect</NICK>
+<BLURB>Manual pixel aspect ratio.</BLURB>
+<DEFAULT>0.5</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-src-test-pat-r::type</NAME>
+<TYPE>gdouble</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Type</NICK>
+<BLURB>Type of test pattern.</BLURB>
+<DEFAULT>0</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-src-test-pat-l::channel</NAME>
+<TYPE>gdouble</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Channel</NICK>
+<BLURB>Into which color channel to draw.</BLURB>
+<DEFAULT>0</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-src-test-pat-l::type</NAME>
+<TYPE>gdouble</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Type</NICK>
+<BLURB>Type of test pattern.</BLURB>
+<DEFAULT>0</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-src-test-pat-i::amplitude</NAME>
+<TYPE>gdouble</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Amplitude</NICK>
+<BLURB>Amplitude (contrast) of the pattern.</BLURB>
+<DEFAULT>0.8</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-src-test-pat-i::channel</NAME>
+<TYPE>gdouble</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Channel</NICK>
+<BLURB>Into which color channel to draw.</BLURB>
+<DEFAULT>0</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-src-test-pat-i::negative</NAME>
+<TYPE>gboolean</TYPE>
+<RANGE></RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Negative</NICK>
+<BLURB>Change polarity of impulse/step.</BLURB>
+<DEFAULT>FALSE</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-src-test-pat-i::tilt</NAME>
+<TYPE>gdouble</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Tilt</NICK>
+<BLURB>Angle of step function.</BLURB>
+<DEFAULT>0.5</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-src-test-pat-i::type</NAME>
+<TYPE>gdouble</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Type</NICK>
+<BLURB>Type of test pattern.</BLURB>
+<DEFAULT>0</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-src-test-pat-i::width</NAME>
+<TYPE>gdouble</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Width</NICK>
+<BLURB>Width of impulse.</BLURB>
+<DEFAULT>0.040404</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-src-test-pat-g::aspect-type</NAME>
+<TYPE>gdouble</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Aspect type</NICK>
+<BLURB>Pixel aspect ratio presets.</BLURB>
+<DEFAULT>0</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-src-test-pat-g::manual-aspect</NAME>
+<TYPE>gdouble</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Manual Aspect</NICK>
+<BLURB>Manual pixel aspect ratio.</BLURB>
+<DEFAULT>0.5</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-src-test-pat-g::negative</NAME>
+<TYPE>gboolean</TYPE>
+<RANGE></RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Negative</NICK>
+<BLURB>Polarity of image.</BLURB>
+<DEFAULT>FALSE</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-src-test-pat-g::size-1</NAME>
+<TYPE>gdouble</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Size 1</NICK>
+<BLURB>Size of major features.</BLURB>
+<DEFAULT>0.28125</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-src-test-pat-g::size-2</NAME>
+<TYPE>gdouble</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Size 2</NICK>
+<BLURB>Size of minor features.</BLURB>
+<DEFAULT>0.0625</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-src-test-pat-g::type</NAME>
+<TYPE>gdouble</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Type</NICK>
+<BLURB>Type of test pattern.</BLURB>
+<DEFAULT>0</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-src-test-pat-c::color-space</NAME>
+<TYPE>gdouble</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Color space</NICK>
+<BLURB></BLURB>
+<DEFAULT>0</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-src-test-pat-c::cross-section</NAME>
+<TYPE>gdouble</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Cross section</NICK>
+<BLURB></BLURB>
+<DEFAULT>0</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-src-test-pat-c::fullscreen</NAME>
+<TYPE>gboolean</TYPE>
+<RANGE></RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Fullscreen</NICK>
+<BLURB></BLURB>
+<DEFAULT>TRUE</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-src-test-pat-c::third-axis-value</NAME>
+<TYPE>gdouble</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Third axis value</NICK>
+<BLURB></BLURB>
+<DEFAULT>0.5</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-src-test-pat-b::aspect-type</NAME>
+<TYPE>gdouble</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Aspect type</NICK>
+<BLURB>7 choices, pixel aspect ratio.</BLURB>
+<DEFAULT>0</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-src-test-pat-b::manual-aspect</NAME>
+<TYPE>gdouble</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Manual Aspect</NICK>
+<BLURB>Manual pixel aspect ratio (Aspect type 6).</BLURB>
+<DEFAULT>0.5</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-src-test-pat-b::type</NAME>
+<TYPE>gdouble</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Type</NICK>
+<BLURB>8 choices, select test pattern.</BLURB>
+<DEFAULT>0</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-mixer-cairoblend::blend-mode</NAME>
+<TYPE>gchar*</TYPE>
+<RANGE></RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>blend mode</NICK>
+<BLURB>Blend mode used to compose image. Accepted values: 'normal', 'add', 'saturate', 'multiply', 'screen', 'overlay', 'darken', 'lighten', 'colordodge', 'colorburn', 'hardlight', 'softlight', 'difference', 'exclusion', 'hslhue', 'hslsaturation', 'hslcolor', 'hslluminosity'.</BLURB>
+<DEFAULT>"normal"</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-mixer-cairoblend::opacity</NAME>
+<TYPE>gdouble</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>opacity</NICK>
+<BLURB>Opacity of composited image.</BLURB>
+<DEFAULT>1</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-mixer-cairoaffineblend::anchor-x</NAME>
+<TYPE>gdouble</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>anchor x</NICK>
+<BLURB>X position of rotation center within the second input.</BLURB>
+<DEFAULT>0</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-mixer-cairoaffineblend::anchor-y</NAME>
+<TYPE>gdouble</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>anchor y</NICK>
+<BLURB>Y position of rotation center within the second input.</BLURB>
+<DEFAULT>0</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-mixer-cairoaffineblend::blend-mode</NAME>
+<TYPE>gchar*</TYPE>
+<RANGE></RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>blend mode</NICK>
+<BLURB>Blend mode used to compose image. Accepted values: 'normal', 'add', 'saturate', 'multiply', 'screen', 'overlay', 'darken', 'lighten', 'colordodge', 'colorburn', 'hardlight', 'softlight', 'difference', 'exclusion', 'hslhue', 'hslsaturation', 'hslcolor', 'hslluminosity'.</BLURB>
+<DEFAULT>"normal"</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-mixer-cairoaffineblend::opacity</NAME>
+<TYPE>gdouble</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>opacity</NICK>
+<BLURB>Opacity of second input.</BLURB>
+<DEFAULT>1</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-mixer-cairoaffineblend::rotation</NAME>
+<TYPE>gdouble</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>rotation</NICK>
+<BLURB>Rotation of second input, value interperted as range 0 - 360.</BLURB>
+<DEFAULT>0</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-mixer-cairoaffineblend::x</NAME>
+<TYPE>gdouble</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>x</NICK>
+<BLURB>X position of second input, value interperted as range -2*width - 3*width.</BLURB>
+<DEFAULT>0.4</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-mixer-cairoaffineblend::x-scale</NAME>
+<TYPE>gdouble</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>x scale</NICK>
+<BLURB>X scale of second input, value interperted as range 0 - 5.</BLURB>
+<DEFAULT>0.2</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-mixer-cairoaffineblend::y</NAME>
+<TYPE>gdouble</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>y</NICK>
+<BLURB>Y position of second input, value interperted as range -2*height - 3*height.</BLURB>
+<DEFAULT>0.4</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-mixer-cairoaffineblend::y-scale</NAME>
+<TYPE>gdouble</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>y scale</NICK>
+<BLURB>Y scale of second input, value interperted as range 0 - 5.</BLURB>
+<DEFAULT>0.2</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-white-balance--lms-space-::color-temperature</NAME>
+<TYPE>gdouble</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Color Temperature</NICK>
+<BLURB>Choose an output color temperature, if different from 6500 K.</BLURB>
+<DEFAULT>0.433333</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-white-balance--lms-space-::neutral-color-b</NAME>
+<TYPE>gfloat</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Neutral Color (B)</NICK>
+<BLURB>Choose a color from the source image that should be white.</BLURB>
+<DEFAULT>0.5</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-white-balance--lms-space-::neutral-color-g</NAME>
+<TYPE>gfloat</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Neutral Color (G)</NICK>
+<BLURB>Choose a color from the source image that should be white.</BLURB>
+<DEFAULT>0.5</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-white-balance--lms-space-::neutral-color-r</NAME>
+<TYPE>gfloat</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Neutral Color (R)</NICK>
+<BLURB>Choose a color from the source image that should be white.</BLURB>
+<DEFAULT>0.5</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-vignette::aspect</NAME>
+<TYPE>gdouble</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>aspect</NICK>
+<BLURB>Aspect ratio.</BLURB>
+<DEFAULT>0.5</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-vignette::clearcenter</NAME>
+<TYPE>gdouble</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>clearCenter</NICK>
+<BLURB>Size of the unaffected center.</BLURB>
+<DEFAULT>0</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-vignette::soft</NAME>
+<TYPE>gdouble</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>soft</NICK>
+<BLURB>Softness.</BLURB>
+<DEFAULT>0.6</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-vectorscope::mix</NAME>
+<TYPE>gdouble</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>mix</NICK>
+<BLURB>The amount of source image mixed into background of display.</BLURB>
+<DEFAULT>0</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-vectorscope::overlay-sides</NAME>
+<TYPE>gboolean</TYPE>
+<RANGE></RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>overlay sides</NICK>
+<BLURB>If false, the sides of image are shown without overlay.</BLURB>
+<DEFAULT>TRUE</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-timeout-indicator::color-b</NAME>
+<TYPE>gfloat</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>color (B)</NICK>
+<BLURB>Indicator colour.</BLURB>
+<DEFAULT>6.44597e-44</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-timeout-indicator::color-g</NAME>
+<TYPE>gfloat</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>color (G)</NICK>
+<BLURB>Indicator colour.</BLURB>
+<DEFAULT>0</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-timeout-indicator::color-r</NAME>
+<TYPE>gfloat</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>color (R)</NICK>
+<BLURB>Indicator colour.</BLURB>
+<DEFAULT>1.28487e-37</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-timeout-indicator::time</NAME>
+<TYPE>gdouble</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>time</NICK>
+<BLURB>Current time.</BLURB>
+<DEFAULT>1.80984e-316</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-timeout-indicator::transparency</NAME>
+<TYPE>gdouble</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>transparency</NICK>
+<BLURB>Indicator transparency.</BLURB>
+<DEFAULT>1.80984e-316</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-spillsupress::supresstype</NAME>
+<TYPE>gdouble</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>supresstype</NICK>
+<BLURB>Defines if green or blue screen spill supress is applied.</BLURB>
+<DEFAULT>0</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-sop-sat::aoffset</NAME>
+<TYPE>gdouble</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>aOffset</NICK>
+<BLURB>Offset of the alpha component.</BLURB>
+<DEFAULT>0.5</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-sop-sat::apower</NAME>
+<TYPE>gdouble</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>aPower</NICK>
+<BLURB>Power (Gamma) of the alpha component.</BLURB>
+<DEFAULT>0.05</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-sop-sat::aslope</NAME>
+<TYPE>gdouble</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>aSlope</NICK>
+<BLURB>Slope of the alpha component.</BLURB>
+<DEFAULT>0.05</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-sop-sat::boffset</NAME>
+<TYPE>gdouble</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>bOffset</NICK>
+<BLURB>Offset of the blue color component.</BLURB>
+<DEFAULT>0.5</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-sop-sat::bpower</NAME>
+<TYPE>gdouble</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>bPower</NICK>
+<BLURB>Power (Gamma) of the blue color component.</BLURB>
+<DEFAULT>0.05</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-sop-sat::bslope</NAME>
+<TYPE>gdouble</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>bSlope</NICK>
+<BLURB>Slope of the blue color component.</BLURB>
+<DEFAULT>0.05</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-sop-sat::goffset</NAME>
+<TYPE>gdouble</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>gOffset</NICK>
+<BLURB>Offset of the green color component.</BLURB>
+<DEFAULT>0.5</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-sop-sat::gpower</NAME>
+<TYPE>gdouble</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>gPower</NICK>
+<BLURB>Power (Gamma) of the green color component.</BLURB>
+<DEFAULT>0.05</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-sop-sat::gslope</NAME>
+<TYPE>gdouble</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>gSlope</NICK>
+<BLURB>Slope of the green color component.</BLURB>
+<DEFAULT>0.05</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-sop-sat::roffset</NAME>
+<TYPE>gdouble</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>rOffset</NICK>
+<BLURB>Offset of the red color component.</BLURB>
+<DEFAULT>0.5</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-sop-sat::rpower</NAME>
+<TYPE>gdouble</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>rPower</NICK>
+<BLURB>Power (Gamma) of the red color component.</BLURB>
+<DEFAULT>0.05</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-sop-sat::rslope</NAME>
+<TYPE>gdouble</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>rSlope</NICK>
+<BLURB>Slope of the red color component.</BLURB>
+<DEFAULT>0.05</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-sop-sat::saturation</NAME>
+<TYPE>gdouble</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>saturation</NICK>
+<BLURB>Overall saturation.</BLURB>
+<DEFAULT>0.1</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-softglow::blur</NAME>
+<TYPE>gdouble</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>blur</NICK>
+<BLURB>Blur of the glow.</BLURB>
+<DEFAULT>0.5</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-softglow::blurblend</NAME>
+<TYPE>gdouble</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>blurblend</NICK>
+<BLURB>Blend mode used to blend highlight blur with input image.</BLURB>
+<DEFAULT>0</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-softglow::brightness</NAME>
+<TYPE>gdouble</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>brightness</NICK>
+<BLURB>Brightness of highlight areas.</BLURB>
+<DEFAULT>0.75</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-softglow::sharpness</NAME>
+<TYPE>gdouble</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>sharpness</NICK>
+<BLURB>Sharpness of highlight areas.</BLURB>
+<DEFAULT>0.85</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-sigmoidaltransfer::brightness</NAME>
+<TYPE>gdouble</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>brightness</NICK>
+<BLURB>Brightnesss of image.</BLURB>
+<DEFAULT>0.75</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-sigmoidaltransfer::sharpness</NAME>
+<TYPE>gdouble</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>sharpness</NICK>
+<BLURB>Sharpness of transfer.</BLURB>
+<DEFAULT>0.85</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-sharpness::amount</NAME>
+<TYPE>gdouble</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Amount</NICK>
+<BLURB></BLURB>
+<DEFAULT>0.3</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-sharpness::size</NAME>
+<TYPE>gdouble</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Size</NICK>
+<BLURB></BLURB>
+<DEFAULT>0</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-select0r::color-to-select-b</NAME>
+<TYPE>gfloat</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Color to select (B)</NICK>
+<BLURB></BLURB>
+<DEFAULT>0</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-select0r::color-to-select-g</NAME>
+<TYPE>gfloat</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Color to select (G)</NICK>
+<BLURB></BLURB>
+<DEFAULT>0.8</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-select0r::color-to-select-r</NAME>
+<TYPE>gfloat</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Color to select (R)</NICK>
+<BLURB></BLURB>
+<DEFAULT>0</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-select0r::delta-b---i---i</NAME>
+<TYPE>gdouble</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Delta B / I / I</NICK>
+<BLURB></BLURB>
+<DEFAULT>0.2</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-select0r::delta-g---b---chroma</NAME>
+<TYPE>gdouble</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Delta G / B / Chroma</NICK>
+<BLURB></BLURB>
+<DEFAULT>0.2</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-select0r::delta-r---a---hue</NAME>
+<TYPE>gdouble</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Delta R / A / Hue</NICK>
+<BLURB></BLURB>
+<DEFAULT>0.2</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-select0r::edge-mode</NAME>
+<TYPE>gdouble</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Edge mode</NICK>
+<BLURB></BLURB>
+<DEFAULT>0</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-select0r::invert-selection</NAME>
+<TYPE>gboolean</TYPE>
+<RANGE></RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Invert selection</NICK>
+<BLURB></BLURB>
+<DEFAULT>FALSE</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-select0r::operation</NAME>
+<TYPE>gdouble</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Operation</NICK>
+<BLURB></BLURB>
+<DEFAULT>0</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-select0r::selection-subspace</NAME>
+<TYPE>gdouble</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Selection subspace</NICK>
+<BLURB></BLURB>
+<DEFAULT>0</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-select0r::slope</NAME>
+<TYPE>gdouble</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Slope</NICK>
+<BLURB></BLURB>
+<DEFAULT>0</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-select0r::subspace-shape</NAME>
+<TYPE>gdouble</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Subspace shape</NICK>
+<BLURB></BLURB>
+<DEFAULT>0</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-rgbnoise::noise</NAME>
+<TYPE>gdouble</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>noise</NICK>
+<BLURB>Amount of noise added.</BLURB>
+<DEFAULT>0.2</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-rgb-parade::mix</NAME>
+<TYPE>gdouble</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>mix</NICK>
+<BLURB>The amount of source image mixed into background of display.</BLURB>
+<DEFAULT>0</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-rgb-parade::overlay-sides</NAME>
+<TYPE>gboolean</TYPE>
+<RANGE></RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>overlay sides</NICK>
+<BLURB>If false, the sides of image are shown without overlay.</BLURB>
+<DEFAULT>TRUE</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-pr0file::alpha-trace</NAME>
+<TYPE>gboolean</TYPE>
+<RANGE></RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Alpha trace</NICK>
+<BLURB>Show Alpha trace on scope.</BLURB>
+<DEFAULT>FALSE</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-pr0file::b-trace</NAME>
+<TYPE>gboolean</TYPE>
+<RANGE></RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>B trace</NICK>
+<BLURB>Show B trace on scope.</BLURB>
+<DEFAULT>TRUE</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-pr0file::channel</NAME>
+<TYPE>gdouble</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Channel</NICK>
+<BLURB>Channel to numerically display.</BLURB>
+<DEFAULT>0.375005</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-pr0file::color</NAME>
+<TYPE>gdouble</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Color</NICK>
+<BLURB>rec 601 or rec 709.</BLURB>
+<DEFAULT>0</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-pr0file::crosshair-color</NAME>
+<TYPE>gdouble</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Crosshair color</NICK>
+<BLURB>Color of the profile marker.</BLURB>
+<DEFAULT>0</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-pr0file::display-average</NAME>
+<TYPE>gboolean</TYPE>
+<RANGE></RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Display average</NICK>
+<BLURB>e.</BLURB>
+<DEFAULT>TRUE</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-pr0file::display-maximum</NAME>
+<TYPE>gboolean</TYPE>
+<RANGE></RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Display maximum</NICK>
+<BLURB></BLURB>
+<DEFAULT>FALSE</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-pr0file::display-minimum</NAME>
+<TYPE>gboolean</TYPE>
+<RANGE></RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Display minimum</NICK>
+<BLURB></BLURB>
+<DEFAULT>FALSE</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-pr0file::display-rms</NAME>
+<TYPE>gboolean</TYPE>
+<RANGE></RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Display RMS</NICK>
+<BLURB></BLURB>
+<DEFAULT>TRUE</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-pr0file::g-trace</NAME>
+<TYPE>gboolean</TYPE>
+<RANGE></RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>G trace</NICK>
+<BLURB>Show G trace on scope.</BLURB>
+<DEFAULT>TRUE</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-pr0file::length</NAME>
+<TYPE>gdouble</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Length</NICK>
+<BLURB>Length of profile.</BLURB>
+<DEFAULT>0.589744</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-pr0file::marker-1</NAME>
+<TYPE>gdouble</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Marker 1</NICK>
+<BLURB>Position of marker 1.</BLURB>
+<DEFAULT>0</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-pr0file::marker-2</NAME>
+<TYPE>gdouble</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Marker 2</NICK>
+<BLURB>Position of marker 2.</BLURB>
+<DEFAULT>0</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-pr0file::param-256-scale</NAME>
+<TYPE>gboolean</TYPE>
+<RANGE></RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>256 scale</NICK>
+<BLURB>use 0-255 instead of 0.0-1.0.</BLURB>
+<DEFAULT>FALSE</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-pr0file::pb-trace</NAME>
+<TYPE>gboolean</TYPE>
+<RANGE></RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Pb trace</NICK>
+<BLURB>Show Pb trace on scope.</BLURB>
+<DEFAULT>FALSE</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-pr0file::pr-trace</NAME>
+<TYPE>gboolean</TYPE>
+<RANGE></RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Pr trace</NICK>
+<BLURB>Show Pr trace on scope.</BLURB>
+<DEFAULT>FALSE</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-pr0file::r-trace</NAME>
+<TYPE>gboolean</TYPE>
+<RANGE></RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>R trace</NICK>
+<BLURB>Show R trace on scope.</BLURB>
+<DEFAULT>TRUE</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-pr0file::tilt</NAME>
+<TYPE>gdouble</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Tilt</NICK>
+<BLURB>Tilt of profile.</BLURB>
+<DEFAULT>0.5</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-pr0file::x</NAME>
+<TYPE>gdouble</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>X</NICK>
+<BLURB>X position of profile.</BLURB>
+<DEFAULT>0.5</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-pr0file::y</NAME>
+<TYPE>gdouble</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Y</NICK>
+<BLURB>Y position of profile.</BLURB>
+<DEFAULT>0.5</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-pr0file::y-trace</NAME>
+<TYPE>gboolean</TYPE>
+<RANGE></RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Y trace</NICK>
+<BLURB>Show Y' trace on scope.</BLURB>
+<DEFAULT>FALSE</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-pr0be::big-window</NAME>
+<TYPE>gboolean</TYPE>
+<RANGE></RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Big window</NICK>
+<BLURB>Display more data.</BLURB>
+<DEFAULT>FALSE</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-pr0be::measurement</NAME>
+<TYPE>gdouble</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Measurement</NICK>
+<BLURB>What measurement to display.</BLURB>
+<DEFAULT>0</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-pr0be::param-256-scale</NAME>
+<TYPE>gboolean</TYPE>
+<RANGE></RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>256 scale</NICK>
+<BLURB>use 0-255 instead of 0.0-1.0.</BLURB>
+<DEFAULT>FALSE</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-pr0be::show-alpha</NAME>
+<TYPE>gboolean</TYPE>
+<RANGE></RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Show alpha</NICK>
+<BLURB>Display alpha value too.</BLURB>
+<DEFAULT>FALSE</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-pr0be::x</NAME>
+<TYPE>gdouble</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>X</NICK>
+<BLURB>X position of probe.</BLURB>
+<DEFAULT>0.5</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-pr0be::x-size</NAME>
+<TYPE>gdouble</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>X size</NICK>
+<BLURB>X size of probe.</BLURB>
+<DEFAULT>0.25</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-pr0be::y</NAME>
+<TYPE>gdouble</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Y</NICK>
+<BLURB>Y position of probe.</BLURB>
+<DEFAULT>0.5</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-pr0be::y-size</NAME>
+<TYPE>gdouble</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Y size</NICK>
+<BLURB>Y size of probe.</BLURB>
+<DEFAULT>0.25</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-posterize::levels</NAME>
+<TYPE>gdouble</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>levels</NICK>
+<BLURB>Number of values per channel.</BLURB>
+<DEFAULT>0.104167</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-ndvi-filter::color-map</NAME>
+<TYPE>gchar*</TYPE>
+<RANGE></RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Color Map</NICK>
+<BLURB>The color map to use. One of 'earth', 'grayscale', 'heat' or 'rainbow'.</BLURB>
+<DEFAULT>"grayscale"</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-ndvi-filter::index-calculation</NAME>
+<TYPE>gchar*</TYPE>
+<RANGE></RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Index Calculation</NICK>
+<BLURB>The index calculation to use. One of 'ndvi' or 'vi'.</BLURB>
+<DEFAULT>"ndvi"</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-ndvi-filter::legend</NAME>
+<TYPE>gchar*</TYPE>
+<RANGE></RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Legend</NICK>
+<BLURB>Control legend display. One of 'off' or 'bottom'.</BLURB>
+<DEFAULT>"off"</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-ndvi-filter::levels</NAME>
+<TYPE>gdouble</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Levels</NICK>
+<BLURB>The number of color levels to use in the false image (divided by 1000).</BLURB>
+<DEFAULT>0.256</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-ndvi-filter::nir-channel</NAME>
+<TYPE>gchar*</TYPE>
+<RANGE></RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>NIR Channel</NICK>
+<BLURB>The channel to use for the near-infrared component. One of 'r', 'g', or 'b'.</BLURB>
+<DEFAULT>"r"</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-ndvi-filter::nir-offset</NAME>
+<TYPE>gdouble</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>NIR Offset</NICK>
+<BLURB>An offset to be applied to the near-infrared component (mapped to [-100%, 100%].</BLURB>
+<DEFAULT>0.5</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-ndvi-filter::nir-scale</NAME>
+<TYPE>gdouble</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>NIR Scale</NICK>
+<BLURB>A scaling factor to be applied to the near-infrared component (divided by 10).</BLURB>
+<DEFAULT>0.1</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-ndvi-filter::vis-offset</NAME>
+<TYPE>gdouble</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>VIS Offset</NICK>
+<BLURB>An offset to be applied to the visible component (mapped to [-100%, 100%].</BLURB>
+<DEFAULT>0.5</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-ndvi-filter::vis-scale</NAME>
+<TYPE>gdouble</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>VIS Scale</NICK>
+<BLURB>A scaling factor to be applied to the visible component (divided by 10).</BLURB>
+<DEFAULT>0.1</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-ndvi-filter::visible-channel</NAME>
+<TYPE>gchar*</TYPE>
+<RANGE></RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Visible Channel</NICK>
+<BLURB>The channel to use for the visible component. One of 'r', 'g', or 'b'.</BLURB>
+<DEFAULT>"b"</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-medians::size</NAME>
+<TYPE>gdouble</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Size</NICK>
+<BLURB>Size for 'var size' type filter.</BLURB>
+<DEFAULT>0.1</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-medians::type</NAME>
+<TYPE>gchar*</TYPE>
+<RANGE></RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Type</NICK>
+<BLURB>Choose type of median: Cross5, Square3x3, Bilevel, Diamond3x3, Square5x5, Temp3, Temp5, ArceBI, ML3D, ML3dEX, VarSize.</BLURB>
+<DEFAULT>"Square3x3"</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-light-graffiti::backgroundweight</NAME>
+<TYPE>gdouble</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>backgroundWeight</NICK>
+<BLURB>Describes how strong the (accumulated) background should shine through.</BLURB>
+<DEFAULT>0</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-light-graffiti::blackreference</NAME>
+<TYPE>gdouble</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>blackReference</NICK>
+<BLURB>Uses black as background image instead of the first frame.</BLURB>
+<DEFAULT>0</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-light-graffiti::dim</NAME>
+<TYPE>gdouble</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>dim</NICK>
+<BLURB>Dimming of the light mask.</BLURB>
+<DEFAULT>0</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-light-graffiti::longalpha</NAME>
+<TYPE>gdouble</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>longAlpha</NICK>
+<BLURB>Alpha value for moving average.</BLURB>
+<DEFAULT>0</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-light-graffiti::loweroverexposure</NAME>
+<TYPE>gdouble</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>lowerOverexposure</NICK>
+<BLURB>Prevents some overexposure if the light source stays steady too long (varying speed).</BLURB>
+<DEFAULT>0</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-light-graffiti::nonlineardim</NAME>
+<TYPE>gdouble</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>nonlinearDim</NICK>
+<BLURB>Nonlinear dimming (may look more natural).</BLURB>
+<DEFAULT>0</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-light-graffiti::reset</NAME>
+<TYPE>gdouble</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>reset</NICK>
+<BLURB>Reset filter masks.</BLURB>
+<DEFAULT>0</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-light-graffiti::saturation</NAME>
+<TYPE>gdouble</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>saturation</NICK>
+<BLURB>Saturation of lights.</BLURB>
+<DEFAULT>0.25</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-light-graffiti::sensitivity</NAME>
+<TYPE>gdouble</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>sensitivity</NICK>
+<BLURB>Sensitivity of the effect for light (higher sensitivity will lead to brighter lights).</BLURB>
+<DEFAULT>0.2</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-light-graffiti::statsbrightness</NAME>
+<TYPE>gdouble</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>statsBrightness</NICK>
+<BLURB>Display the brightness and threshold, for adjusting the brightness threshold parameter.</BLURB>
+<DEFAULT>0</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-light-graffiti::statsdifference</NAME>
+<TYPE>gdouble</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>statsDifference</NICK>
+<BLURB>Display the background difference and threshold.</BLURB>
+<DEFAULT>0</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-light-graffiti::statsdiffsum</NAME>
+<TYPE>gdouble</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>statsDiffSum</NICK>
+<BLURB>Display the sum of the background difference and the threshold.</BLURB>
+<DEFAULT>0</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-light-graffiti::thresholdbrightness</NAME>
+<TYPE>gdouble</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>thresholdBrightness</NICK>
+<BLURB>Brightness threshold to distinguish between foreground and background.</BLURB>
+<DEFAULT>0.588235</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-light-graffiti::thresholddifference</NAME>
+<TYPE>gdouble</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>thresholdDifference</NICK>
+<BLURB>Threshold: Difference to background to distinguish between fore- and background.</BLURB>
+<DEFAULT>0</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-light-graffiti::thresholddiffsum</NAME>
+<TYPE>gdouble</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>thresholdDiffSum</NICK>
+<BLURB>Threshold for sum of differences. Can in most cases be ignored (set to 0).</BLURB>
+<DEFAULT>0</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-light-graffiti::transparentbackground</NAME>
+<TYPE>gdouble</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>transparentBackground</NICK>
+<BLURB>Make the background transparent.</BLURB>
+<DEFAULT>0</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-keyspillm0pup::amount-1</NAME>
+<TYPE>gdouble</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Amount 1</NICK>
+<BLURB></BLURB>
+<DEFAULT>0.55</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-keyspillm0pup::amount-2</NAME>
+<TYPE>gdouble</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Amount 2</NICK>
+<BLURB></BLURB>
+<DEFAULT>0</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-keyspillm0pup::hue-gate</NAME>
+<TYPE>gdouble</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Hue gate</NICK>
+<BLURB>Restrict mask to hues close to key.</BLURB>
+<DEFAULT>0.25</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-keyspillm0pup::key-color-b</NAME>
+<TYPE>gfloat</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Key color (B)</NICK>
+<BLURB>Key color that was used for chroma keying.</BLURB>
+<DEFAULT>0.1</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-keyspillm0pup::key-color-g</NAME>
+<TYPE>gfloat</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Key color (G)</NICK>
+<BLURB>Key color that was used for chroma keying.</BLURB>
+<DEFAULT>0.8</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-keyspillm0pup::key-color-r</NAME>
+<TYPE>gfloat</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Key color (R)</NICK>
+<BLURB>Key color that was used for chroma keying.</BLURB>
+<DEFAULT>0.1</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-keyspillm0pup::mask-to-alpha</NAME>
+<TYPE>gboolean</TYPE>
+<RANGE></RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Mask to Alpha</NICK>
+<BLURB>Replace alpha channel with the mask.</BLURB>
+<DEFAULT>FALSE</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-keyspillm0pup::mask-type</NAME>
+<TYPE>gchar*</TYPE>
+<RANGE></RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Mask type</NICK>
+<BLURB>Which mask to apply [0,1,2,3].</BLURB>
+<DEFAULT>"0"</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-keyspillm0pup::operation-1</NAME>
+<TYPE>gchar*</TYPE>
+<RANGE></RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Operation 1</NICK>
+<BLURB>First operation 1 [0,1,2].</BLURB>
+<DEFAULT>"1"</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-keyspillm0pup::operation-2</NAME>
+<TYPE>gchar*</TYPE>
+<RANGE></RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Operation 2</NICK>
+<BLURB>Second operation 2 [0,1,2].</BLURB>
+<DEFAULT>"0"</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-keyspillm0pup::saturation-threshold</NAME>
+<TYPE>gdouble</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Saturation threshold</NICK>
+<BLURB>Restrict mask to saturated colors.</BLURB>
+<DEFAULT>0.15</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-keyspillm0pup::show-mask</NAME>
+<TYPE>gboolean</TYPE>
+<RANGE></RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Show mask</NICK>
+<BLURB>Replace image with the mask.</BLURB>
+<DEFAULT>FALSE</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-keyspillm0pup::slope</NAME>
+<TYPE>gdouble</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Slope</NICK>
+<BLURB>Range of colors around the key where effect gradually decreases.</BLURB>
+<DEFAULT>0.4</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-keyspillm0pup::target-color-b</NAME>
+<TYPE>gfloat</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Target color (B)</NICK>
+<BLURB>Desired color to replace key residue with.</BLURB>
+<DEFAULT>0.4</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-keyspillm0pup::target-color-g</NAME>
+<TYPE>gfloat</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Target color (G)</NICK>
+<BLURB>Desired color to replace key residue with.</BLURB>
+<DEFAULT>0.5</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-keyspillm0pup::target-color-r</NAME>
+<TYPE>gfloat</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Target color (R)</NICK>
+<BLURB>Desired color to replace key residue with.</BLURB>
+<DEFAULT>0.78</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-keyspillm0pup::tolerance</NAME>
+<TYPE>gdouble</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Tolerance</NICK>
+<BLURB>Range of colors around the key, where effect is full strength.</BLURB>
+<DEFAULT>0.24</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-iir-blur::amount</NAME>
+<TYPE>gdouble</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Amount</NICK>
+<BLURB>Amount of blur.</BLURB>
+<DEFAULT>0.2</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-iir-blur::edge</NAME>
+<TYPE>gboolean</TYPE>
+<RANGE></RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Edge</NICK>
+<BLURB>Edge compensation.</BLURB>
+<DEFAULT>TRUE</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-iir-blur::type</NAME>
+<TYPE>gdouble</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Type</NICK>
+<BLURB>Blur type.</BLURB>
+<DEFAULT>0.333344</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-hqdn3d::spatial</NAME>
+<TYPE>gdouble</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Spatial</NICK>
+<BLURB>Amount of spatial filtering.</BLURB>
+<DEFAULT>0.04</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-hqdn3d::temporal</NAME>
+<TYPE>gdouble</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Temporal</NICK>
+<BLURB>Amount of temporal filtering.</BLURB>
+<DEFAULT>0.06</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-emboss::azimuth</NAME>
+<TYPE>gdouble</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>azimuth</NICK>
+<BLURB>Light direction.</BLURB>
+<DEFAULT>0.375</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-emboss::elevation</NAME>
+<TYPE>gdouble</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>elevation</NICK>
+<BLURB>Background lightness.</BLURB>
+<DEFAULT>0.333333</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-emboss::width45</NAME>
+<TYPE>gdouble</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>width45</NICK>
+<BLURB>Bump height.</BLURB>
+<DEFAULT>0.25</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-dither::levels</NAME>
+<TYPE>gdouble</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>levels</NICK>
+<BLURB>Number of values per channel.</BLURB>
+<DEFAULT>0.104167</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-dither::matrixid</NAME>
+<TYPE>gdouble</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>matrixid</NICK>
+<BLURB>Id of matrix used for dithering.</BLURB>
+<DEFAULT>1</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-defish0r::amount</NAME>
+<TYPE>gdouble</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Amount</NICK>
+<BLURB>Focal Ratio.</BLURB>
+<DEFAULT>0</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-defish0r::aspect-type</NAME>
+<TYPE>gdouble</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Aspect type</NICK>
+<BLURB>Pixel aspect ratio presets.</BLURB>
+<DEFAULT>0</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-defish0r::defish</NAME>
+<TYPE>gboolean</TYPE>
+<RANGE></RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>DeFish</NICK>
+<BLURB>Fish or Defish.</BLURB>
+<DEFAULT>FALSE</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-defish0r::interpolator</NAME>
+<TYPE>gdouble</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Interpolator</NICK>
+<BLURB>Quality of interpolation.</BLURB>
+<DEFAULT>0.166667</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-defish0r::manual-aspect</NAME>
+<TYPE>gdouble</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Manual Aspect</NICK>
+<BLURB>Manual Pixel Aspect ratio.</BLURB>
+<DEFAULT>0.5</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-defish0r::manual-scale</NAME>
+<TYPE>gdouble</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Manual Scale</NICK>
+<BLURB>Manual Scale.</BLURB>
+<DEFAULT>0.5</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-defish0r::scaling</NAME>
+<TYPE>gdouble</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Scaling</NICK>
+<BLURB>Scaling method.</BLURB>
+<DEFAULT>0.666667</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-defish0r::type</NAME>
+<TYPE>gdouble</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Type</NICK>
+<BLURB>Mapping function.</BLURB>
+<DEFAULT>0.666667</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-colortap::table</NAME>
+<TYPE>gchar*</TYPE>
+<RANGE></RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>table</NICK>
+<BLURB>Lookup table used to filter colors. One of: xpro, sepia, heat, red_green, old_photo, xray, esses, yellow_blue.</BLURB>
+<DEFAULT>"esses"</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-colorize::hue</NAME>
+<TYPE>gdouble</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>hue</NICK>
+<BLURB>Color shade of the colorized image.</BLURB>
+<DEFAULT>0.5</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-colorize::lightness</NAME>
+<TYPE>gdouble</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>lightness</NICK>
+<BLURB>Lightness of the colorized image.</BLURB>
+<DEFAULT>0.5</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-colorize::saturation</NAME>
+<TYPE>gdouble</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>saturation</NICK>
+<BLURB>Amount of color in the colorized image.</BLURB>
+<DEFAULT>0.5</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-colorhalftone::cyan-angle</NAME>
+<TYPE>gdouble</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>cyan angle</NICK>
+<BLURB>Cyan dots angle.</BLURB>
+<DEFAULT>0.3</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-colorhalftone::dot-radius</NAME>
+<TYPE>gdouble</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>dot radius</NICK>
+<BLURB>Halftone pattern dot size.</BLURB>
+<DEFAULT>0.4</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-colorhalftone::magenta-angle</NAME>
+<TYPE>gdouble</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>magenta angle</NICK>
+<BLURB>Magenta dots angle.</BLURB>
+<DEFAULT>0.45</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-colorhalftone::yellow-angle</NAME>
+<TYPE>gdouble</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>yellow angle</NICK>
+<BLURB>Yellow dots angle.</BLURB>
+<DEFAULT>0.25</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-coloradj-rgb::action</NAME>
+<TYPE>gdouble</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Action</NICK>
+<BLURB>Type of color adjustment.</BLURB>
+<DEFAULT>0.333344</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-coloradj-rgb::alpha-controlled</NAME>
+<TYPE>gboolean</TYPE>
+<RANGE></RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Alpha controlled</NICK>
+<BLURB>Adjust only areas with nonzero alpha.</BLURB>
+<DEFAULT>FALSE</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-coloradj-rgb::b</NAME>
+<TYPE>gdouble</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>B</NICK>
+<BLURB>Amount of blue.</BLURB>
+<DEFAULT>0.5</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-coloradj-rgb::g</NAME>
+<TYPE>gdouble</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>G</NICK>
+<BLURB>Amount of green.</BLURB>
+<DEFAULT>0.5</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-coloradj-rgb::keep-luma</NAME>
+<TYPE>gboolean</TYPE>
+<RANGE></RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Keep luma</NICK>
+<BLURB>Don't change brightness.</BLURB>
+<DEFAULT>TRUE</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-coloradj-rgb::luma-formula</NAME>
+<TYPE>gdouble</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Luma formula</NICK>
+<BLURB></BLURB>
+<DEFAULT>0.500025</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-coloradj-rgb::r</NAME>
+<TYPE>gdouble</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>R</NICK>
+<BLURB>Amount of red.</BLURB>
+<DEFAULT>0.5</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-cairoimagegrid::columns</NAME>
+<TYPE>gdouble</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>columns</NICK>
+<BLURB>Number of columns in the image grid. Input range 0 - 1 is interpreted as range 1 - 20.</BLURB>
+<DEFAULT>0.105263</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-cairoimagegrid::rows</NAME>
+<TYPE>gdouble</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>rows</NICK>
+<BLURB>Number of rows in the image grid. Input range 0 - 1 is interpreted as range 1 - 20.</BLURB>
+<DEFAULT>0.105263</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-cairogradient::blend-mode</NAME>
+<TYPE>gchar*</TYPE>
+<RANGE></RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>blend mode</NICK>
+<BLURB>Blend mode used to compose gradient on image. Accepted values: 'normal', 'add', 'saturate', 'multiply', 'screen', 'overlay', 'darken', 'lighten', 'colordodge', 'colorburn', 'hardlight', 'softlight', 'difference', 'exclusion', 'hslhue', 'hslsaturation', 'hslcolor', 'hslluminosity'.</BLURB>
+<DEFAULT>"normal"</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-cairogradient::end-color-b</NAME>
+<TYPE>gfloat</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>end color (B)</NICK>
+<BLURB>Second color of the gradient.</BLURB>
+<DEFAULT>1</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-cairogradient::end-color-g</NAME>
+<TYPE>gfloat</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>end color (G)</NICK>
+<BLURB>Second color of the gradient.</BLURB>
+<DEFAULT>1</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-cairogradient::end-color-r</NAME>
+<TYPE>gfloat</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>end color (R)</NICK>
+<BLURB>Second color of the gradient.</BLURB>
+<DEFAULT>1</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-cairogradient::end-opacity</NAME>
+<TYPE>gdouble</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>end opacity</NICK>
+<BLURB>Opacity of the second color of the gradient.</BLURB>
+<DEFAULT>0.5</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-cairogradient::end-x</NAME>
+<TYPE>gdouble</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>end x</NICK>
+<BLURB>X position of the end point of the gradient.</BLURB>
+<DEFAULT>0.5</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-cairogradient::end-y</NAME>
+<TYPE>gdouble</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>end y</NICK>
+<BLURB>Y position of the end point of the gradient.</BLURB>
+<DEFAULT>1</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-cairogradient::offset</NAME>
+<TYPE>gdouble</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>offset</NICK>
+<BLURB>Position of first color in the line connecting gradient ends, really useful only for radial gradient.</BLURB>
+<DEFAULT>0</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-cairogradient::pattern</NAME>
+<TYPE>gchar*</TYPE>
+<RANGE></RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>pattern</NICK>
+<BLURB>Linear or radial gradient.</BLURB>
+<DEFAULT>"gradient_linear"</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-cairogradient::start-color-b</NAME>
+<TYPE>gfloat</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>start color (B)</NICK>
+<BLURB>First color of the gradient.</BLURB>
+<DEFAULT>0</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-cairogradient::start-color-g</NAME>
+<TYPE>gfloat</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>start color (G)</NICK>
+<BLURB>First color of the gradient.</BLURB>
+<DEFAULT>0</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-cairogradient::start-color-r</NAME>
+<TYPE>gfloat</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>start color (R)</NICK>
+<BLURB>First color of the gradient.</BLURB>
+<DEFAULT>0</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-cairogradient::start-opacity</NAME>
+<TYPE>gdouble</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>start opacity</NICK>
+<BLURB>Opacity of the first color of the gradient.</BLURB>
+<DEFAULT>0.5</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-cairogradient::start-x</NAME>
+<TYPE>gdouble</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>start x</NICK>
+<BLURB>X position of the start point of the gradient.</BLURB>
+<DEFAULT>0.5</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-cairogradient::start-y</NAME>
+<TYPE>gdouble</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>start y</NICK>
+<BLURB>Y position of the start point of the gradient.</BLURB>
+<DEFAULT>0</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-c0rners::alpha-operation</NAME>
+<TYPE>gdouble</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Alpha operation</NICK>
+<BLURB></BLURB>
+<DEFAULT>0</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-c0rners::corner-1-x</NAME>
+<TYPE>gdouble</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Corner 1 X</NICK>
+<BLURB>X coordinate of corner 1.</BLURB>
+<DEFAULT>0.333333</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-c0rners::corner-1-y</NAME>
+<TYPE>gdouble</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Corner 1 Y</NICK>
+<BLURB>Y coordinate of corner 1.</BLURB>
+<DEFAULT>0.333333</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-c0rners::corner-2-x</NAME>
+<TYPE>gdouble</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Corner 2 X</NICK>
+<BLURB>X coordinate of corner 2.</BLURB>
+<DEFAULT>0.666666</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-c0rners::corner-2-y</NAME>
+<TYPE>gdouble</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Corner 2 Y</NICK>
+<BLURB>Y coordinate of corner 2.</BLURB>
+<DEFAULT>0.333333</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-c0rners::corner-3-x</NAME>
+<TYPE>gdouble</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Corner 3 X</NICK>
+<BLURB>X coordinate of corner 3.</BLURB>
+<DEFAULT>0.666666</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-c0rners::corner-3-y</NAME>
+<TYPE>gdouble</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Corner 3 Y</NICK>
+<BLURB>Y coordinate of corner 3.</BLURB>
+<DEFAULT>0.666666</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-c0rners::corner-4-x</NAME>
+<TYPE>gdouble</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Corner 4 X</NICK>
+<BLURB>X coordinate of corner 4.</BLURB>
+<DEFAULT>0.333333</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-c0rners::corner-4-y</NAME>
+<TYPE>gdouble</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Corner 4 Y</NICK>
+<BLURB>Y coordinate of corner 4.</BLURB>
+<DEFAULT>0.666666</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-c0rners::enable-stretch</NAME>
+<TYPE>gboolean</TYPE>
+<RANGE></RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Enable Stretch</NICK>
+<BLURB>Enable stretching.</BLURB>
+<DEFAULT>FALSE</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-c0rners::feather-alpha</NAME>
+<TYPE>gdouble</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Feather Alpha</NICK>
+<BLURB>Makes smooth transition into transparent.</BLURB>
+<DEFAULT>0.01</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-c0rners::interpolator</NAME>
+<TYPE>gdouble</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Interpolator</NICK>
+<BLURB>Quality of interpolation.</BLURB>
+<DEFAULT>0.166667</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-c0rners::stretch-x</NAME>
+<TYPE>gdouble</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Stretch X</NICK>
+<BLURB>Amount of stretching in X direction.</BLURB>
+<DEFAULT>0.5</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-c0rners::stretch-y</NAME>
+<TYPE>gdouble</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Stretch Y</NICK>
+<BLURB>Amount of stretching in Y direction.</BLURB>
+<DEFAULT>0.5</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-c0rners::transparent-background</NAME>
+<TYPE>gboolean</TYPE>
+<RANGE></RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Transparent Background</NICK>
+<BLURB>Makes background transparent.</BLURB>
+<DEFAULT>FALSE</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-alphaspot::max</NAME>
+<TYPE>gdouble</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Max</NICK>
+<BLURB></BLURB>
+<DEFAULT>1</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-alphaspot::min</NAME>
+<TYPE>gdouble</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Min</NICK>
+<BLURB></BLURB>
+<DEFAULT>0</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-alphaspot::operation</NAME>
+<TYPE>gdouble</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Operation</NICK>
+<BLURB></BLURB>
+<DEFAULT>0</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-alphaspot::position-x</NAME>
+<TYPE>gdouble</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Position X</NICK>
+<BLURB></BLURB>
+<DEFAULT>0.5</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-alphaspot::position-y</NAME>
+<TYPE>gdouble</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Position Y</NICK>
+<BLURB></BLURB>
+<DEFAULT>0.5</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-alphaspot::shape</NAME>
+<TYPE>gdouble</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Shape</NICK>
+<BLURB></BLURB>
+<DEFAULT>0</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-alphaspot::size-x</NAME>
+<TYPE>gdouble</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Size X</NICK>
+<BLURB></BLURB>
+<DEFAULT>0.1</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-alphaspot::size-y</NAME>
+<TYPE>gdouble</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Size Y</NICK>
+<BLURB></BLURB>
+<DEFAULT>0.1</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-alphaspot::tilt</NAME>
+<TYPE>gdouble</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Tilt</NICK>
+<BLURB></BLURB>
+<DEFAULT>0.5</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-alphaspot::transition-width</NAME>
+<TYPE>gdouble</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Transition width</NICK>
+<BLURB></BLURB>
+<DEFAULT>0.2</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-alphagrad::max</NAME>
+<TYPE>gdouble</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Max</NICK>
+<BLURB></BLURB>
+<DEFAULT>1</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-alphagrad::min</NAME>
+<TYPE>gdouble</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Min</NICK>
+<BLURB></BLURB>
+<DEFAULT>0</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-alphagrad::operation</NAME>
+<TYPE>gdouble</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Operation</NICK>
+<BLURB></BLURB>
+<DEFAULT>0</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-alphagrad::position</NAME>
+<TYPE>gdouble</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Position</NICK>
+<BLURB></BLURB>
+<DEFAULT>0.5</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-alphagrad::tilt</NAME>
+<TYPE>gdouble</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Tilt</NICK>
+<BLURB></BLURB>
+<DEFAULT>0.5</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-alphagrad::transition-width</NAME>
+<TYPE>gdouble</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Transition width</NICK>
+<BLURB></BLURB>
+<DEFAULT>0.5</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-alpha0ps::display</NAME>
+<TYPE>gdouble</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Display</NICK>
+<BLURB></BLURB>
+<DEFAULT>0</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-alpha0ps::display-input-alpha</NAME>
+<TYPE>gboolean</TYPE>
+<RANGE></RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Display input alpha</NICK>
+<BLURB></BLURB>
+<DEFAULT>FALSE</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-alpha0ps::invert</NAME>
+<TYPE>gboolean</TYPE>
+<RANGE></RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Invert</NICK>
+<BLURB></BLURB>
+<DEFAULT>FALSE</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-alpha0ps::operation</NAME>
+<TYPE>gdouble</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Operation</NICK>
+<BLURB></BLURB>
+<DEFAULT>0</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-alpha0ps::shrink-grow-blur-amount</NAME>
+<TYPE>gdouble</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Shrink/Grow/Blur amount</NICK>
+<BLURB></BLURB>
+<DEFAULT>0.333344</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>frei0r-filter-alpha0ps::threshold</NAME>
+<TYPE>gdouble</TYPE>
+<RANGE>[0,1]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Threshold</NICK>
+<BLURB></BLURB>
+<DEFAULT>0.5</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>GstKMSSink::connector-id</NAME>
+<TYPE>gint</TYPE>
+<RANGE>>= G_MAXULONG</RANGE>
+<FLAGS>rwx</FLAGS>
+<NICK>Connector ID</NICK>
+<BLURB>DRM connector id.</BLURB>
+<DEFAULT>-1</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>GstKMSSink::driver-name</NAME>
+<TYPE>gchar*</TYPE>
+<RANGE></RANGE>
+<FLAGS>rwx</FLAGS>
+<NICK>device name</NICK>
+<BLURB>DRM device driver name.</BLURB>
+<DEFAULT>NULL</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>GstKMSSink::plane-id</NAME>
+<TYPE>gint</TYPE>
+<RANGE>>= G_MAXULONG</RANGE>
+<FLAGS>rwx</FLAGS>
+<NICK>Plane ID</NICK>
+<BLURB>DRM plane id.</BLURB>
+<DEFAULT>-1</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>GstBs2b::fcut</NAME>
+<TYPE>gint</TYPE>
+<RANGE>[300,2000]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Frequency cut</NICK>
+<BLURB>Low-pass filter cut frequency (Hz).</BLURB>
+<DEFAULT>700</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>GstBs2b::feed</NAME>
+<TYPE>gint</TYPE>
+<RANGE>[10,150]</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Feed level</NICK>
+<BLURB>Feed Level (dB/10).</BLURB>
+<DEFAULT>45</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>GstWebrtcDsp::echo-cancel</NAME>
+<TYPE>gboolean</TYPE>
+<RANGE></RANGE>
+<FLAGS>rwx</FLAGS>
+<NICK>Echo Cancel</NICK>
+<BLURB>Enable or disable echo canceller, note that it will be disabled if no webrtcechoprobe has been found.</BLURB>
+<DEFAULT>TRUE</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>GstWebrtcDsp::experimental-agc</NAME>
+<TYPE>gboolean</TYPE>
+<RANGE></RANGE>
+<FLAGS>rwx</FLAGS>
+<NICK>Experimental AGC</NICK>
+<BLURB>Enable or disable experimental automatic gain control.</BLURB>
+<DEFAULT>FALSE</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>GstWebrtcDsp::extended-filter</NAME>
+<TYPE>gboolean</TYPE>
+<RANGE></RANGE>
+<FLAGS>rwx</FLAGS>
+<NICK>Extended Filter</NICK>
+<BLURB>Enable or disable the extended filter.</BLURB>
+<DEFAULT>TRUE</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>GstWebrtcDsp::gain-control</NAME>
+<TYPE>gboolean</TYPE>
+<RANGE></RANGE>
+<FLAGS>rwx</FLAGS>
+<NICK>Gain Control</NICK>
+<BLURB>Enable or disable automatic digital gain control.</BLURB>
+<DEFAULT>TRUE</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>GstWebrtcDsp::high-pass-filter</NAME>
+<TYPE>gboolean</TYPE>
+<RANGE></RANGE>
+<FLAGS>rwx</FLAGS>
+<NICK>High Pass Filter</NICK>
+<BLURB>Enable or disable high pass filtering.</BLURB>
+<DEFAULT>TRUE</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>GstWebrtcDsp::noise-suppression</NAME>
+<TYPE>gboolean</TYPE>
+<RANGE></RANGE>
+<FLAGS>rwx</FLAGS>
+<NICK>Noise Suppression</NICK>
+<BLURB>Enable or disable noise suppression.</BLURB>
+<DEFAULT>TRUE</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>GstWebrtcDsp::probe</NAME>
+<TYPE>gchar*</TYPE>
+<RANGE></RANGE>
+<FLAGS>rwx</FLAGS>
+<NICK>Echo Probe</NICK>
+<BLURB>The name of the webrtcechoprobe element that record the audio being played through loud speakers. Must be set before PAUSED state.</BLURB>
+<DEFAULT>"webrtcechoprobe0"</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>GstWebrtcDsp::echo-suppression-level</NAME>
+<TYPE>GstWebrtcEchoSuppressionLevel</TYPE>
+<RANGE></RANGE>
+<FLAGS>rwx</FLAGS>
+<NICK>Echo Suppression Level</NICK>
+<BLURB>Controls the aggressiveness of the suppressor. A higher level trades off double-talk performance for increased echo suppression.</BLURB>
+<DEFAULT>Moderate Suppression</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>GstWebrtcDsp::noise-suppression-level</NAME>
+<TYPE>GstWebrtcNoiseSuppressionLevel</TYPE>
+<RANGE></RANGE>
+<FLAGS>rwx</FLAGS>
+<NICK>Noise Suppression Level</NICK>
+<BLURB>Controls the aggressiveness of the suppression. Increasing the level will reduce the noise level at the expense of a higher speech distortion.</BLURB>
+<DEFAULT>Moderate Suppression</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>GstDC1394Src::dma</NAME>
+<TYPE>guint</TYPE>
+<RANGE>>= 1</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>DMA ring buffer size</NICK>
+<BLURB>The number of frames in the Direct Memory Access ring buffer.</BLURB>
+<DEFAULT>10</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>GstDC1394Src::guid</NAME>
+<TYPE>gchar*</TYPE>
+<RANGE></RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Camera GUID</NICK>
+<BLURB>The hexadecimal representation of the GUID of the camera (use first camera available if null).</BLURB>
+<DEFAULT>NULL</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>GstDC1394Src::iso</NAME>
+<TYPE>GstDC1394ISOSpeed</TYPE>
+<RANGE></RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>ISO bandwidth</NICK>
+<BLURB>The ISO bandwidth in Mbps.</BLURB>
+<DEFAULT>DC1394 ISO speed 400</DEFAULT>
+</ARG>
+
+<ARG>
+<NAME>GstDC1394Src::unit</NAME>
+<TYPE>gint</TYPE>
+<RANGE>>= G_MAXULONG</RANGE>
+<FLAGS>rw</FLAGS>
+<NICK>Camera unit</NICK>
+<BLURB>The unit number of the camera (-1 if no unit number is used).</BLURB>
+<DEFAULT>-1</DEFAULT>
+</ARG>
+
diff --git a/docs/plugins/gst-plugins-bad-plugins.hierarchy b/docs/plugins/gst-plugins-bad-plugins.hierarchy
index 5a912cb..2405c41 100644
--- a/docs/plugins/gst-plugins-bad-plugins.hierarchy
+++ b/docs/plugins/gst-plugins-bad-plugins.hierarchy
@@ -60,6 +60,7 @@
GstH265Parse
GstIRTSPParse
GstIvfParse
+ GstJPEG2000Parse
GstJpegParse
GstMpeg4VParse
GstMpegvParse
@@ -108,6 +109,7 @@
GstAudioBaseSrc
GstAudioSrc
GstOpenalSrc
+ GstDC1394Src
GstDecklinkAudioSrc
GstDecklinkVideoSrc
GstDvbSrc
@@ -123,6 +125,7 @@
GstAccurip
GstAudioChannelMix
GstBPMDetect
+ GstBs2b
GstChromaprint
GstLADSPAFilter
ladspa-amp-so-amp-mono
@@ -206,8 +209,27 @@
GstPerspective
GstRotate
GstSquare
+ GstGrabcut
+ GstOpencvVideoFilter
+ GstCvDilateErode
+ GstCvDilate
+ GstCvErode
+ GstCvEqualizeHist
+ GstCvLaplace
+ GstCvSmooth
+ GstCvSobel
+ GstEdgeDetect
+ GstFaceBlur
+ GstFaceDetect
+ GstHanddetect
+ GstMotioncells
+ GstOpencvTextOverlay
+ GstSkinDetect
+ GstTemplateMatch
+ GstRetinex
GstRsvgOverlay
GstSceneChange
+ GstSegmentation
GstSimpleVideoMark
GstSimpleVideoMarkDetect
GstSmooth
@@ -244,6 +266,8 @@
GstPipeline
GstCameraBin
GstSDPDemux
+ GstSdpSrc
+ GstUnalignedAudioParse
GstViewfinderBin
RsnDvdBin
GstBz2dec
@@ -252,6 +276,7 @@
GstCompare
GstDVBSubOverlay
GstDVDSpu
+ GstDisparity
GstDtlsDec
GstDtlsEnc
GstDtlsSrtpDemux
@@ -278,6 +303,7 @@
GstMpeg2enc
GstMpegPSDemux
GstMplex
+ GstMusepackDec
GstNetSim
GstPcapParse
GstPitch
@@ -305,6 +331,7 @@
GstLibde265Dec
GstOpenEXRDec
GstOpenJPEGDec
+ GstOpenh264Dec
GstPnmdec
GstRsvgDec
GstSchroDec
@@ -312,6 +339,7 @@
GstWebPDec
GstVideoEncoder
GstOpenJPEGEnc
+ GstOpenh264Enc
GstPnmenc
GstSchroEnc
GstWebpEnc
diff --git a/docs/plugins/gst-plugins-bad-plugins.interfaces b/docs/plugins/gst-plugins-bad-plugins.interfaces
index c9d803f..1a5967c 100644
--- a/docs/plugins/gst-plugins-bad-plugins.interfaces
+++ b/docs/plugins/gst-plugins-bad-plugins.interfaces
@@ -13,6 +13,7 @@
GstBaseCameraSrc GstChildProxy
GstBaseVideoEncoder GstPreset
GstBin GstChildProxy
+GstBs2b GstPreset
GstCameraBin GstChildProxy GstImplementsInterface GstColorBalance GstTagSetter
GstCameraBin GstChildProxy GstTagSetter
GstCameraBin2 GstChildProxy GstTagSetter
@@ -77,8 +78,10 @@
GstSDPDemux GstChildProxy
GstSbcEnc GstPreset
GstSchroEnc GstPreset
+GstSdpSrc GstChildProxy GstURIHandler
GstSirenEnc GstPreset
GstTagMux GstTagSetter
+GstUnalignedAudioParse GstChildProxy
GstUvcH264Src GstChildProxy
GstVCDSrc GstURIHandler
GstVP8Enc GstPreset GstTagSetter
diff --git a/docs/plugins/html/ch01.html b/docs/plugins/html/ch01.html
index db8e432..f4d2a1e 100644
--- a/docs/plugins/html/ch01.html
+++ b/docs/plugins/html/ch01.html
@@ -99,7 +99,7 @@
<span class="refentrytitle"><a href="gst-plugins-bad-plugins-dodge.html">dodge</a></span><span class="refpurpose"></span>
</dt>
<dt>
-<span class="refentrytitle"><a href="gst-plugins-bad-plugins-dtmfdetect.html">dtmfdetect</a></span><span class="refpurpose"></span>
+<span class="refentrytitle"><a href="gst-plugins-bad-plugins-dtmfdetect.html">dtmfdetect</a></span><span class="refpurpose"> — Detects DTMF tones</span>
</dt>
<dt>
<span class="refentrytitle"><a href="gst-plugins-bad-plugins-dtsdec.html">dtsdec</a></span><span class="refpurpose"></span>
@@ -183,10 +183,10 @@
<span class="refentrytitle"><a href="gst-plugins-bad-plugins-ofa.html">ofa</a></span><span class="refpurpose"></span>
</dt>
<dt>
-<span class="refentrytitle"><a href="gst-plugins-bad-plugins-openalsrc.html">openalsrc</a></span><span class="refpurpose"></span>
+<span class="refentrytitle"><a href="gst-plugins-bad-plugins-openalsrc.html">openalsrc</a></span><span class="refpurpose"> — capture raw audio samples through OpenAL</span>
</dt>
<dt>
-<span class="refentrytitle"><a href="gst-plugins-bad-plugins-openalsink.html">openalsink</a></span><span class="refpurpose"></span>
+<span class="refentrytitle"><a href="gst-plugins-bad-plugins-openalsink.html">openalsink</a></span><span class="refpurpose"> — capture raw audio samples through OpenAL</span>
</dt>
<dt>
<span class="refentrytitle"><a href="gst-plugins-bad-plugins-pcapparse.html">pcapparse</a></span><span class="refpurpose"></span>
@@ -195,9 +195,6 @@
<span class="refentrytitle"><a href="gst-plugins-bad-plugins-pinch.html">pinch</a></span><span class="refpurpose"></span>
</dt>
<dt>
-<span class="refentrytitle"><a href="gst-plugins-bad-plugins-pyramidsegment.html">pyramidsegment</a></span><span class="refpurpose"></span>
-</dt>
-<dt>
<span class="refentrytitle"><a href="gst-plugins-bad-plugins-rfbsrc.html">rfbsrc</a></span><span class="refpurpose"></span>
</dt>
<dt>
@@ -269,6 +266,12 @@
<dt>
<span class="refentrytitle"><a href="gst-plugins-bad-plugins-wavescope.html">wavescope</a></span><span class="refpurpose"></span>
</dt>
+<dt>
+<span class="refentrytitle"><a href="gst-plugins-bad-plugins-webrtcdsp.html">webrtcdsp</a></span><span class="refpurpose"> — Audio Filter using WebRTC Audio Processing library</span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="gst-plugins-bad-plugins-webrtcechoprobe.html">webrtcechoprobe</a></span><span class="refpurpose"></span>
+</dt>
</dl></div>
</div>
<div class="footer">
diff --git a/docs/plugins/html/ch02.html b/docs/plugins/html/ch02.html
index e4a6f00..a375336 100644
--- a/docs/plugins/html/ch02.html
+++ b/docs/plugins/html/ch02.html
@@ -6,7 +6,7 @@
<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
<link rel="home" href="index.html" title="GStreamer Bad Plugins 1.0 Plugins Reference Manual">
<link rel="up" href="index.html" title="GStreamer Bad Plugins 1.0 Plugins Reference Manual">
-<link rel="prev" href="gst-plugins-bad-plugins-wavescope.html" title="wavescope">
+<link rel="prev" href="gst-plugins-bad-plugins-webrtcechoprobe.html" title="webrtcechoprobe">
<link rel="next" href="gst-plugins-bad-plugins-plugin-aiff.html" title="aiff">
<meta name="generator" content="GTK-Doc V1.25 (XML mode)">
<link rel="stylesheet" href="style.css" type="text/css">
@@ -16,7 +16,7 @@
<td width="100%" align="left" class="shortcuts"></td>
<td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
<td><img src="up-insensitive.png" width="16" height="16" border="0"></td>
-<td><a accesskey="p" href="gst-plugins-bad-plugins-wavescope.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
+<td><a accesskey="p" href="gst-plugins-bad-plugins-webrtcechoprobe.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
<td><a accesskey="n" href="gst-plugins-bad-plugins-plugin-aiff.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
</tr></table>
<div class="chapter">
@@ -156,6 +156,9 @@
<span class="refentrytitle"><a href="gst-plugins-bad-plugins-plugin-voamrwbenc.html">voamrwbenc</a></span><span class="refpurpose"> — Adaptive Multi-Rate Wide-Band Encoder</span>
</dt>
<dt>
+<span class="refentrytitle"><a href="gst-plugins-bad-plugins-plugin-webrtcdsp.html">webrtcdsp</a></span><span class="refpurpose"> — Voice pre-processing using WebRTC Audio Processing Library</span>
+</dt>
+<dt>
<span class="refentrytitle"><a href="gst-plugins-bad-plugins-plugin-zbar.html">zbar</a></span><span class="refpurpose"> — zbar barcode scanner</span>
</dt>
</dl></div>
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-1.0.devhelp2 b/docs/plugins/html/gst-plugins-bad-plugins-1.0.devhelp2
index 520ca60..948d2cf 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-1.0.devhelp2
+++ b/docs/plugins/html/gst-plugins-bad-plugins-1.0.devhelp2
@@ -59,7 +59,6 @@
<sub name="openalsink" link="gst-plugins-bad-plugins-openalsink.html"/>
<sub name="pcapparse" link="gst-plugins-bad-plugins-pcapparse.html"/>
<sub name="pinch" link="gst-plugins-bad-plugins-pinch.html"/>
- <sub name="pyramidsegment" link="gst-plugins-bad-plugins-pyramidsegment.html"/>
<sub name="rfbsrc" link="gst-plugins-bad-plugins-rfbsrc.html"/>
<sub name="rtmpsink" link="gst-plugins-bad-plugins-rtmpsink.html"/>
<sub name="rtmpsrc" link="gst-plugins-bad-plugins-rtmpsrc.html"/>
@@ -84,6 +83,8 @@
<sub name="voaacenc" link="gst-plugins-bad-plugins-voaacenc.html"/>
<sub name="voamrwbenc" link="gst-plugins-bad-plugins-voamrwbenc.html"/>
<sub name="wavescope" link="gst-plugins-bad-plugins-wavescope.html"/>
+ <sub name="webrtcdsp" link="gst-plugins-bad-plugins-webrtcdsp.html"/>
+ <sub name="webrtcechoprobe" link="gst-plugins-bad-plugins-webrtcechoprobe.html"/>
</sub>
<sub name="gst-plugins-bad Plugins" link="ch02.html">
<sub name="aiff" link="gst-plugins-bad-plugins-plugin-aiff.html"/>
@@ -130,6 +131,7 @@
<sub name="speed" link="gst-plugins-bad-plugins-plugin-speed.html"/>
<sub name="voaacenc" link="gst-plugins-bad-plugins-plugin-voaacenc.html"/>
<sub name="voamrwbenc" link="gst-plugins-bad-plugins-plugin-voamrwbenc.html"/>
+ <sub name="webrtcdsp" link="gst-plugins-bad-plugins-plugin-webrtcdsp.html"/>
<sub name="zbar" link="gst-plugins-bad-plugins-plugin-zbar.html"/>
</sub>
</chapters>
@@ -155,12 +157,15 @@
<keyword type="struct" name="struct GstAutoConvert" link="gst-plugins-bad-plugins-autoconvert.html#GstAutoConvert-struct"/>
<keyword type="property" name="The “factories” property" link="gst-plugins-bad-plugins-autoconvert.html#GstAutoConvert--factories"/>
<keyword type="property" name="The “initial-identity” property" link="gst-plugins-bad-plugins-autoconvert.html#GstAutoConvert--initial-identity"/>
- <keyword type="struct" name="struct GstBs2b" link="gst-plugins-bad-plugins-bs2b.html#GstBs2b"/>
+ <keyword type="struct" name="struct GstBs2b" link="gst-plugins-bad-plugins-bs2b.html#GstBs2b-struct"/>
+ <keyword type="property" name="The “fcut” property" link="gst-plugins-bad-plugins-bs2b.html#GstBs2b--fcut"/>
+ <keyword type="property" name="The “feed” property" link="gst-plugins-bad-plugins-bs2b.html#GstBs2b--feed"/>
<keyword type="struct" name="struct GstBulge" link="gst-plugins-bad-plugins-bulge.html#GstBulge-struct"/>
<keyword type="property" name="The “zoom” property" link="gst-plugins-bad-plugins-bulge.html#GstBulge--zoom"/>
<keyword type="struct" name="struct GstBurn" link="gst-plugins-bad-plugins-burn.html#GstBurn-struct"/>
<keyword type="property" name="The “silent” property" link="gst-plugins-bad-plugins-burn.html#GstBurn--silent"/>
<keyword type="property" name="The “adjustment” property" link="gst-plugins-bad-plugins-burn.html#GstBurn--adjustment"/>
+ <keyword type="typedef" name="GstChromium" link="gst-plugins-bad-plugins-chromium.html#GstChromium"/>
<keyword type="property" name="The “silent” property" link="gst-plugins-bad-plugins-chromium.html#GstChromium--silent"/>
<keyword type="property" name="The “edge-a” property" link="gst-plugins-bad-plugins-chromium.html#GstChromium--edge-a"/>
<keyword type="property" name="The “edge-b” property" link="gst-plugins-bad-plugins-chromium.html#GstChromium--edge-b"/>
@@ -169,17 +174,20 @@
<keyword type="property" name="The “height” property" link="gst-plugins-bad-plugins-circle.html#GstCircle--height"/>
<keyword type="property" name="The “spread-angle” property" link="gst-plugins-bad-plugins-circle.html#GstCircle--spread-angle"/>
<keyword type="struct" name="struct GstColorEffects" link="gst-plugins-bad-plugins-coloreffects.html#GstColorEffects-struct"/>
+ <keyword type="enum" name="enum GstColorEffectsPreset" link="gst-plugins-bad-plugins-coloreffects.html#GstColorEffectsPreset"/>
<keyword type="property" name="The “preset” property" link="gst-plugins-bad-plugins-coloreffects.html#GstColorEffects--preset"/>
+ <keyword type="struct" name="struct GstCompositor" link="gst-plugins-bad-plugins-compositor.html#GstCompositor-struct"/>
+ <keyword type="enum" name="enum GstCompositorBackground" link="gst-plugins-bad-plugins-compositor.html#GstCompositorBackground"/>
<keyword type="property" name="The “background” property" link="gst-plugins-bad-plugins-compositor.html#GstCompositor--background"/>
- <keyword type="struct" name="struct GstCvDilate" link="gst-plugins-bad-plugins-cvdilate.html#GstCvDilate"/>
- <keyword type="struct" name="struct GstCvErode" link="gst-plugins-bad-plugins-cverode.html#GstCvErode"/>
- <keyword type="struct" name="struct GstCvEqualizeHist" link="gst-plugins-bad-plugins-cvequalizehist.html#GstCvEqualizeHist"/>
- <keyword type="struct" name="struct GstCvLaplace" link="gst-plugins-bad-plugins-cvlaplace.html#GstCvLaplace"/>
+ <keyword type="struct" name="struct GstCvDilate" link="gst-plugins-bad-plugins-cvdilate.html#GstCvDilate-struct"/>
+ <keyword type="struct" name="struct GstCvErode" link="gst-plugins-bad-plugins-cverode.html#GstCvErode-struct"/>
+ <keyword type="struct" name="struct GstCvEqualizeHist" link="gst-plugins-bad-plugins-cvequalizehist.html#GstCvEqualizeHist-struct"/>
+ <keyword type="struct" name="struct GstCvLaplace" link="gst-plugins-bad-plugins-cvlaplace.html#GstCvLaplace-struct"/>
<keyword type="property" name="The “aperture-size” property" link="gst-plugins-bad-plugins-cvlaplace.html#GstCvLaplace--aperture-size"/>
<keyword type="property" name="The “scale” property" link="gst-plugins-bad-plugins-cvlaplace.html#GstCvLaplace--scale"/>
<keyword type="property" name="The “shift” property" link="gst-plugins-bad-plugins-cvlaplace.html#GstCvLaplace--shift"/>
<keyword type="property" name="The “mask” property" link="gst-plugins-bad-plugins-cvlaplace.html#GstCvLaplace--mask"/>
- <keyword type="struct" name="struct GstCvSmooth" link="gst-plugins-bad-plugins-cvsmooth.html#GstCvSmooth"/>
+ <keyword type="struct" name="struct GstCvSmooth" link="gst-plugins-bad-plugins-cvsmooth.html#GstCvSmooth-struct"/>
<keyword type="property" name="The “param1” property" link="gst-plugins-bad-plugins-cvsmooth.html#GstCvSmooth--param1"/>
<keyword type="property" name="The “param2” property" link="gst-plugins-bad-plugins-cvsmooth.html#GstCvSmooth--param2"/>
<keyword type="property" name="The “param3” property" link="gst-plugins-bad-plugins-cvsmooth.html#GstCvSmooth--param3"/>
@@ -189,7 +197,7 @@
<keyword type="property" name="The “height” property" link="gst-plugins-bad-plugins-cvsmooth.html#GstCvSmooth--height"/>
<keyword type="property" name="The “spatial” property" link="gst-plugins-bad-plugins-cvsmooth.html#GstCvSmooth--spatial"/>
<keyword type="property" name="The “width” property" link="gst-plugins-bad-plugins-cvsmooth.html#GstCvSmooth--width"/>
- <keyword type="struct" name="struct GstCvSobel" link="gst-plugins-bad-plugins-cvsobel.html#GstCvSobel"/>
+ <keyword type="struct" name="struct GstCvSobel" link="gst-plugins-bad-plugins-cvsobel.html#GstCvSobel-struct"/>
<keyword type="property" name="The “aperture-size” property" link="gst-plugins-bad-plugins-cvsobel.html#GstCvSobel--aperture-size"/>
<keyword type="property" name="The “x-order” property" link="gst-plugins-bad-plugins-cvsobel.html#GstCvSobel--x-order"/>
<keyword type="property" name="The “y-order” property" link="gst-plugins-bad-plugins-cvsobel.html#GstCvSobel--y-order"/>
@@ -267,6 +275,11 @@
<keyword type="struct" name="struct GstExclusion" link="gst-plugins-bad-plugins-exclusion.html#GstExclusion-struct"/>
<keyword type="property" name="The “silent” property" link="gst-plugins-bad-plugins-exclusion.html#GstExclusion--silent"/>
<keyword type="property" name="The “factor” property" link="gst-plugins-bad-plugins-exclusion.html#GstExclusion--factor"/>
+ <keyword type="struct" name="struct GstEdgeDetect" link="gst-plugins-bad-plugins-edgedetect.html#GstEdgeDetect-struct"/>
+ <keyword type="property" name="The “aperture” property" link="gst-plugins-bad-plugins-edgedetect.html#GstEdgeDetect--aperture"/>
+ <keyword type="property" name="The “mask” property" link="gst-plugins-bad-plugins-edgedetect.html#GstEdgeDetect--mask"/>
+ <keyword type="property" name="The “threshold1” property" link="gst-plugins-bad-plugins-edgedetect.html#GstEdgeDetect--threshold1"/>
+ <keyword type="property" name="The “threshold2” property" link="gst-plugins-bad-plugins-edgedetect.html#GstEdgeDetect--threshold2"/>
<keyword type="struct" name="struct GstFaac" link="gst-plugins-bad-plugins-faac.html#GstFaac-struct"/>
<keyword type="property" name="The “bitrate” property" link="gst-plugins-bad-plugins-faac.html#GstFaac--bitrate"/>
<keyword type="property" name="The “midside” property" link="gst-plugins-bad-plugins-faac.html#GstFaac--midside"/>
@@ -277,6 +290,27 @@
<keyword type="property" name="The “quality” property" link="gst-plugins-bad-plugins-faac.html#GstFaac--quality"/>
<keyword type="property" name="The “rate-control” property" link="gst-plugins-bad-plugins-faac.html#GstFaac--rate-control"/>
<keyword type="struct" name="GstFaad" link="gst-plugins-bad-plugins-faad.html#GstFaad-struct"/>
+ <keyword type="struct" name="struct GstFaceBlur" link="gst-plugins-bad-plugins-faceblur.html#GstFaceBlur-struct"/>
+ <keyword type="property" name="The “profile” property" link="gst-plugins-bad-plugins-faceblur.html#GstFaceBlur--profile"/>
+ <keyword type="property" name="The “flags” property" link="gst-plugins-bad-plugins-faceblur.html#GstFaceBlur--flags"/>
+ <keyword type="property" name="The “min-neighbors” property" link="gst-plugins-bad-plugins-faceblur.html#GstFaceBlur--min-neighbors"/>
+ <keyword type="property" name="The “min-size-height” property" link="gst-plugins-bad-plugins-faceblur.html#GstFaceBlur--min-size-height"/>
+ <keyword type="property" name="The “min-size-width” property" link="gst-plugins-bad-plugins-faceblur.html#GstFaceBlur--min-size-width"/>
+ <keyword type="property" name="The “scale-factor” property" link="gst-plugins-bad-plugins-faceblur.html#GstFaceBlur--scale-factor"/>
+ <keyword type="struct" name="struct GstFaceDetect" link="gst-plugins-bad-plugins-facedetect.html#GstFaceDetect-struct"/>
+ <keyword type="enum" name="enum GstFaceDetectUpdates" link="gst-plugins-bad-plugins-facedetect.html#GstFaceDetectUpdates"/>
+ <keyword type="property" name="The “display” property" link="gst-plugins-bad-plugins-facedetect.html#GstFaceDetect--display"/>
+ <keyword type="property" name="The “eyes-profile” property" link="gst-plugins-bad-plugins-facedetect.html#GstFaceDetect--eyes-profile"/>
+ <keyword type="property" name="The “flags” property" link="gst-plugins-bad-plugins-facedetect.html#GstFaceDetect--flags"/>
+ <keyword type="property" name="The “min-neighbors” property" link="gst-plugins-bad-plugins-facedetect.html#GstFaceDetect--min-neighbors"/>
+ <keyword type="property" name="The “min-size-height” property" link="gst-plugins-bad-plugins-facedetect.html#GstFaceDetect--min-size-height"/>
+ <keyword type="property" name="The “min-size-width” property" link="gst-plugins-bad-plugins-facedetect.html#GstFaceDetect--min-size-width"/>
+ <keyword type="property" name="The “mouth-profile” property" link="gst-plugins-bad-plugins-facedetect.html#GstFaceDetect--mouth-profile"/>
+ <keyword type="property" name="The “nose-profile” property" link="gst-plugins-bad-plugins-facedetect.html#GstFaceDetect--nose-profile"/>
+ <keyword type="property" name="The “profile” property" link="gst-plugins-bad-plugins-facedetect.html#GstFaceDetect--profile"/>
+ <keyword type="property" name="The “scale-factor” property" link="gst-plugins-bad-plugins-facedetect.html#GstFaceDetect--scale-factor"/>
+ <keyword type="property" name="The “updates” property" link="gst-plugins-bad-plugins-facedetect.html#GstFaceDetect--updates"/>
+ <keyword type="property" name="The “min-stddev” property" link="gst-plugins-bad-plugins-facedetect.html#GstFaceDetect--min-stddev"/>
<keyword type="struct" name="struct GstFestival" link="gst-plugins-bad-plugins-festival.html#GstFestival-struct"/>
<keyword type="struct" name="struct GstFisheye" link="gst-plugins-bad-plugins-fisheye.html#GstFisheye-struct"/>
<keyword type="struct" name="struct GstFPSDisplaySink" link="gst-plugins-bad-plugins-fpsdisplaysink.html#GstFPSDisplaySink-struct"/>
@@ -292,14 +326,9 @@
<keyword type="property" name="The “last-message” property" link="gst-plugins-bad-plugins-fpsdisplaysink.html#GstFPSDisplaySink--last-message"/>
<keyword type="property" name="The “silent” property" link="gst-plugins-bad-plugins-fpsdisplaysink.html#GstFPSDisplaySink--silent"/>
<keyword type="signal" name="The “fps-measurements” signal" link="gst-plugins-bad-plugins-fpsdisplaysink.html#GstFPSDisplaySink-fps-measurements"/>
- <keyword type="macro" name="GST_JPEG_PARSE()" link="gst-plugins-bad-plugins-jpegparse.html#GST-JPEG-PARSE:CAPS"/>
- <keyword type="macro" name="GST_JPEG_PARSE_CLASS()" link="gst-plugins-bad-plugins-jpegparse.html#GST-JPEG-PARSE-CLASS:CAPS"/>
- <keyword type="macro" name="GST_IS_JPEG_PARSE()" link="gst-plugins-bad-plugins-jpegparse.html#GST-IS-JPEG-PARSE:CAPS"/>
- <keyword type="macro" name="GST_IS_JPEG_PARSE_CLASS()" link="gst-plugins-bad-plugins-jpegparse.html#GST-IS-JPEG-PARSE-CLASS:CAPS"/>
- <keyword type="function" name="gst_jpeg_parse_get_type ()" link="gst-plugins-bad-plugins-jpegparse.html#gst-jpeg-parse-get-type"/>
+ <keyword type="typedef" name="GstGaussianBlur" link="gst-plugins-bad-plugins-gaussianblur.html#GstGaussianBlur"/>
+ <keyword type="property" name="The “sigma” property" link="gst-plugins-bad-plugins-gaussianblur.html#GstGaussianBlur--sigma"/>
<keyword type="struct" name="struct GstJpegParse" link="gst-plugins-bad-plugins-jpegparse.html#GstJpegParse-struct"/>
- <keyword type="struct" name="struct GstJpegParseClass" link="gst-plugins-bad-plugins-jpegparse.html#GstJpegParseClass"/>
- <keyword type="macro" name="GST_TYPE_JPEG_PARSE" link="gst-plugins-bad-plugins-jpegparse.html#GST-TYPE-JPEG-PARSE:CAPS"/>
<keyword type="struct" name="struct GstKaleidoscope" link="gst-plugins-bad-plugins-kaleidoscope.html#GstKaleidoscope-struct"/>
<keyword type="property" name="The “angle” property" link="gst-plugins-bad-plugins-kaleidoscope.html#GstKaleidoscope--angle"/>
<keyword type="property" name="The “angle2” property" link="gst-plugins-bad-plugins-kaleidoscope.html#GstKaleidoscope--angle2"/>
@@ -313,6 +342,7 @@
<keyword type="property" name="The “paused-mode” property" link="gst-plugins-bad-plugins-mimenc.html#GstMimEnc--paused-mode"/>
<keyword type="struct" name="struct GstMimDec" link="gst-plugins-bad-plugins-mimdec.html#GstMimDec-struct"/>
<keyword type="struct" name="struct GstMirror" link="gst-plugins-bad-plugins-mirror.html#GstMirror-struct"/>
+ <keyword type="enum" name="enum GstMirrorMode" link="gst-plugins-bad-plugins-mirror.html#GstMirrorMode"/>
<keyword type="property" name="The “mode” property" link="gst-plugins-bad-plugins-mirror.html#GstMirror--mode"/>
<keyword type="struct" name="GstModPlug" link="gst-plugins-bad-plugins-modplug.html#GstModPlug-struct"/>
<keyword type="property" name="The “megabass” property" link="gst-plugins-bad-plugins-modplug.html#GstModPlug--megabass"/>
@@ -362,13 +392,6 @@
<keyword type="property" name="The “sequence-length” property" link="gst-plugins-bad-plugins-mpeg2enc.html#GstMpeg2enc--sequence-length"/>
<keyword type="property" name="The “unit-coeff-elim” property" link="gst-plugins-bad-plugins-mpeg2enc.html#GstMpeg2enc--unit-coeff-elim"/>
<keyword type="property" name="The “vcd-still-size” property" link="gst-plugins-bad-plugins-mpeg2enc.html#GstMpeg2enc--vcd-still-size"/>
- <keyword type="property" name="The “aggregate-gops” property" link="gst-plugins-bad-plugins-mpegpsmux.html#MpegPsMux--aggregate-gops"/>
- <keyword type="property" name="The “m2ts-mode” property" link="gst-plugins-bad-plugins-mpegtsmux.html#MpegTsMux--m2ts-mode"/>
- <keyword type="property" name="The “prog-map” property" link="gst-plugins-bad-plugins-mpegtsmux.html#MpegTsMux--prog-map"/>
- <keyword type="property" name="The “pat-interval” property" link="gst-plugins-bad-plugins-mpegtsmux.html#MpegTsMux--pat-interval"/>
- <keyword type="property" name="The “pmt-interval” property" link="gst-plugins-bad-plugins-mpegtsmux.html#MpegTsMux--pmt-interval"/>
- <keyword type="property" name="The “alignment” property" link="gst-plugins-bad-plugins-mpegtsmux.html#MpegTsMux--alignment"/>
- <keyword type="property" name="The “si-interval” property" link="gst-plugins-bad-plugins-mpegtsmux.html#MpegTsMux--si-interval"/>
<keyword type="struct" name="GstMplex" link="gst-plugins-bad-plugins-mplex.html#GstMplex-struct"/>
<keyword type="property" name="The “bufsize” property" link="gst-plugins-bad-plugins-mplex.html#GstMplex--bufsize"/>
<keyword type="property" name="The “format” property" link="gst-plugins-bad-plugins-mplex.html#GstMplex--format"/>
@@ -397,6 +420,15 @@
<keyword type="struct" name="struct GstOpenalSrc" link="gst-plugins-bad-plugins-openalsrc.html#GstOpenalSrc-struct"/>
<keyword type="property" name="The “device” property" link="gst-plugins-bad-plugins-openalsrc.html#GstOpenalSrc--device"/>
<keyword type="property" name="The “device-name” property" link="gst-plugins-bad-plugins-openalsrc.html#GstOpenalSrc--device-name"/>
+ <keyword type="struct" name="struct GstOpenALSink" link="gst-plugins-bad-plugins-openalsink.html#GstOpenALSink-struct"/>
+ <keyword type="property" name="The “context-handle” property" link="gst-plugins-bad-plugins-openalsink.html#GstOpenALSink--context-handle"/>
+ <keyword type="property" name="The “device” property" link="gst-plugins-bad-plugins-openalsink.html#GstOpenALSink--device"/>
+ <keyword type="property" name="The “device-handle” property" link="gst-plugins-bad-plugins-openalsink.html#GstOpenALSink--device-handle"/>
+ <keyword type="property" name="The “device-name” property" link="gst-plugins-bad-plugins-openalsink.html#GstOpenALSink--device-name"/>
+ <keyword type="property" name="The “source-id” property" link="gst-plugins-bad-plugins-openalsink.html#GstOpenALSink--source-id"/>
+ <keyword type="property" name="The “user-context” property" link="gst-plugins-bad-plugins-openalsink.html#GstOpenALSink--user-context"/>
+ <keyword type="property" name="The “user-device” property" link="gst-plugins-bad-plugins-openalsink.html#GstOpenALSink--user-device"/>
+ <keyword type="property" name="The “user-source” property" link="gst-plugins-bad-plugins-openalsink.html#GstOpenALSink--user-source"/>
<keyword type="struct" name="struct GstPcapParse" link="gst-plugins-bad-plugins-pcapparse.html#GstPcapParse-struct"/>
<keyword type="property" name="The “dst-ip” property" link="gst-plugins-bad-plugins-pcapparse.html#GstPcapParse--dst-ip"/>
<keyword type="property" name="The “dst-port” property" link="gst-plugins-bad-plugins-pcapparse.html#GstPcapParse--dst-port"/>
@@ -423,6 +455,7 @@
<keyword type="property" name="The “location” property" link="gst-plugins-bad-plugins-rtmpsink.html#GstRTMPSink--location"/>
<keyword type="struct" name="struct GstRTMPSrc" link="gst-plugins-bad-plugins-rtmpsrc.html#GstRTMPSrc-struct"/>
<keyword type="property" name="The “location” property" link="gst-plugins-bad-plugins-rtmpsrc.html#GstRTMPSrc--location"/>
+ <keyword type="property" name="The “timeout” property" link="gst-plugins-bad-plugins-rtmpsrc.html#GstRTMPSrc--timeout"/>
<keyword type="struct" name="struct GstShmSink" link="gst-plugins-bad-plugins-shmsink.html#GstShmSink-struct"/>
<keyword type="property" name="The “perms” property" link="gst-plugins-bad-plugins-shmsink.html#GstShmSink--perms"/>
<keyword type="property" name="The “shm-size” property" link="gst-plugins-bad-plugins-shmsink.html#GstShmSink--shm-size"/>
@@ -459,11 +492,11 @@
<keyword type="property" name="The “zoom” property" link="gst-plugins-bad-plugins-square.html#GstSquare--zoom"/>
<keyword type="struct" name="struct GstStretch" link="gst-plugins-bad-plugins-stretch.html#GstStretch-struct"/>
<keyword type="property" name="The “intensity” property" link="gst-plugins-bad-plugins-stretch.html#GstStretch--intensity"/>
- <keyword type="struct" name="struct GstTemplateMatch" link="gst-plugins-bad-plugins-templatematch.html#GstTemplateMatch"/>
+ <keyword type="struct" name="struct GstTemplateMatch" link="gst-plugins-bad-plugins-templatematch.html#GstTemplateMatch-struct"/>
<keyword type="property" name="The “display” property" link="gst-plugins-bad-plugins-templatematch.html#GstTemplateMatch--display"/>
<keyword type="property" name="The “method” property" link="gst-plugins-bad-plugins-templatematch.html#GstTemplateMatch--method"/>
<keyword type="property" name="The “template” property" link="gst-plugins-bad-plugins-templatematch.html#GstTemplateMatch--template"/>
- <keyword type="struct" name="struct GstOpencvTextOverlay" link="gst-plugins-bad-plugins-opencvtextoverlay.html#GstOpencvTextOverlay"/>
+ <keyword type="struct" name="struct GstOpencvTextOverlay" link="gst-plugins-bad-plugins-opencvtextoverlay.html#GstOpencvTextOverlay-struct"/>
<keyword type="property" name="The “colorB” property" link="gst-plugins-bad-plugins-opencvtextoverlay.html#GstOpencvTextOverlay--colorB"/>
<keyword type="property" name="The “colorG” property" link="gst-plugins-bad-plugins-opencvtextoverlay.html#GstOpencvTextOverlay--colorG"/>
<keyword type="property" name="The “colorR” property" link="gst-plugins-bad-plugins-opencvtextoverlay.html#GstOpencvTextOverlay--colorR"/>
@@ -504,7 +537,38 @@
<keyword type="property" name="The “attach-frame” property" link="gst-plugins-bad-plugins-zbar.html#GstZBar--attach-frame"/>
<keyword type="struct" name="struct GstVoAacEnc" link="gst-plugins-bad-plugins-voaacenc.html#GstVoAacEnc-struct"/>
<keyword type="property" name="The “bitrate” property" link="gst-plugins-bad-plugins-voaacenc.html#GstVoAacEnc--bitrate"/>
+ <keyword type="struct" name="struct GstVoAmrWbEnc" link="gst-plugins-bad-plugins-voamrwbenc.html#GstVoAmrWbEnc-struct"/>
+ <keyword type="property" name="The “band-mode” property" link="gst-plugins-bad-plugins-voamrwbenc.html#GstVoAmrWbEnc--band-mode"/>
<keyword type="struct" name="struct GstWaveScope" link="gst-plugins-bad-plugins-wavescope.html#GstWaveScope-struct"/>
<keyword type="property" name="The “style” property" link="gst-plugins-bad-plugins-wavescope.html#GstWaveScope--style"/>
+ <keyword type="struct" name="GstWebrtcDsp" link="gst-plugins-bad-plugins-webrtcdsp.html#GstWebrtcDsp"/>
+ <keyword type="property" name="The “echo-cancel” property" link="gst-plugins-bad-plugins-webrtcdsp.html#GstWebrtcDsp--echo-cancel"/>
+ <keyword type="property" name="The “experimental-agc” property" link="gst-plugins-bad-plugins-webrtcdsp.html#GstWebrtcDsp--experimental-agc"/>
+ <keyword type="property" name="The “extended-filter” property" link="gst-plugins-bad-plugins-webrtcdsp.html#GstWebrtcDsp--extended-filter"/>
+ <keyword type="property" name="The “gain-control” property" link="gst-plugins-bad-plugins-webrtcdsp.html#GstWebrtcDsp--gain-control"/>
+ <keyword type="property" name="The “high-pass-filter” property" link="gst-plugins-bad-plugins-webrtcdsp.html#GstWebrtcDsp--high-pass-filter"/>
+ <keyword type="property" name="The “noise-suppression” property" link="gst-plugins-bad-plugins-webrtcdsp.html#GstWebrtcDsp--noise-suppression"/>
+ <keyword type="property" name="The “probe” property" link="gst-plugins-bad-plugins-webrtcdsp.html#GstWebrtcDsp--probe"/>
+ <keyword type="property" name="The “echo-suppression-level” property" link="gst-plugins-bad-plugins-webrtcdsp.html#GstWebrtcDsp--echo-suppression-level"/>
+ <keyword type="property" name="The “noise-suppression-level” property" link="gst-plugins-bad-plugins-webrtcdsp.html#GstWebrtcDsp--noise-suppression-level"/>
+ <keyword type="struct" name="struct GstWebrtcEchoProbe" link="gst-plugins-bad-plugins-webrtcechoprobe.html#GstWebrtcEchoProbe"/>
+ <keyword type="constant" name="GST_COLOR_EFFECTS_PRESET_NONE" link="gst-plugins-bad-plugins-coloreffects.html#GST-COLOR-EFFECTS-PRESET-NONE:CAPS"/>
+ <keyword type="constant" name="GST_COLOR_EFFECTS_PRESET_HEAT" link="gst-plugins-bad-plugins-coloreffects.html#GST-COLOR-EFFECTS-PRESET-HEAT:CAPS"/>
+ <keyword type="constant" name="GST_COLOR_EFFECTS_PRESET_SEPIA" link="gst-plugins-bad-plugins-coloreffects.html#GST-COLOR-EFFECTS-PRESET-SEPIA:CAPS"/>
+ <keyword type="constant" name="GST_COLOR_EFFECTS_PRESET_XRAY" link="gst-plugins-bad-plugins-coloreffects.html#GST-COLOR-EFFECTS-PRESET-XRAY:CAPS"/>
+ <keyword type="constant" name="GST_COLOR_EFFECTS_PRESET_XPRO" link="gst-plugins-bad-plugins-coloreffects.html#GST-COLOR-EFFECTS-PRESET-XPRO:CAPS"/>
+ <keyword type="constant" name="GST_COLOR_EFFECTS_PRESET_YELLOWBLUE" link="gst-plugins-bad-plugins-coloreffects.html#GST-COLOR-EFFECTS-PRESET-YELLOWBLUE:CAPS"/>
+ <keyword type="constant" name="COMPOSITOR_BACKGROUND_CHECKER" link="gst-plugins-bad-plugins-compositor.html#COMPOSITOR-BACKGROUND-CHECKER:CAPS"/>
+ <keyword type="constant" name="COMPOSITOR_BACKGROUND_BLACK" link="gst-plugins-bad-plugins-compositor.html#COMPOSITOR-BACKGROUND-BLACK:CAPS"/>
+ <keyword type="constant" name="COMPOSITOR_BACKGROUND_WHITE" link="gst-plugins-bad-plugins-compositor.html#COMPOSITOR-BACKGROUND-WHITE:CAPS"/>
+ <keyword type="constant" name="COMPOSITOR_BACKGROUND_TRANSPARENT" link="gst-plugins-bad-plugins-compositor.html#COMPOSITOR-BACKGROUND-TRANSPARENT:CAPS"/>
+ <keyword type="constant" name="GST_FACEDETECT_UPDATES_EVERY_FRAME" link="gst-plugins-bad-plugins-facedetect.html#GST-FACEDETECT-UPDATES-EVERY-FRAME:CAPS"/>
+ <keyword type="constant" name="GST_FACEDETECT_UPDATES_ON_CHANGE" link="gst-plugins-bad-plugins-facedetect.html#GST-FACEDETECT-UPDATES-ON-CHANGE:CAPS"/>
+ <keyword type="constant" name="GST_FACEDETECT_UPDATES_ON_FACE" link="gst-plugins-bad-plugins-facedetect.html#GST-FACEDETECT-UPDATES-ON-FACE:CAPS"/>
+ <keyword type="constant" name="GST_FACEDETECT_UPDATES_NONE" link="gst-plugins-bad-plugins-facedetect.html#GST-FACEDETECT-UPDATES-NONE:CAPS"/>
+ <keyword type="constant" name="GST_MIRROR_MODE_LEFT" link="gst-plugins-bad-plugins-mirror.html#GST-MIRROR-MODE-LEFT:CAPS"/>
+ <keyword type="constant" name="GST_MIRROR_MODE_RIGHT" link="gst-plugins-bad-plugins-mirror.html#GST-MIRROR-MODE-RIGHT:CAPS"/>
+ <keyword type="constant" name="GST_MIRROR_MODE_TOP" link="gst-plugins-bad-plugins-mirror.html#GST-MIRROR-MODE-TOP:CAPS"/>
+ <keyword type="constant" name="GST_MIRROR_MODE_BOTTOM" link="gst-plugins-bad-plugins-mirror.html#GST-MIRROR-MODE-BOTTOM:CAPS"/>
</functions>
</book>
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-assrender.html b/docs/plugins/html/gst-plugins-bad-plugins-assrender.html
index 1246a6c..3d042c0 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-assrender.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-assrender.html
@@ -84,10 +84,25 @@
</div>
<div class="refsect1">
<a name="gst-plugins-bad-plugins-assrender.description"></a><h2>Description</h2>
+<p>Renders timestamped SSA/ASS subtitles on top of a video stream.</p>
+<div class="refsect2">
+<a name="id-1.2.5.7.3"></a><h3>Example launch line</h3>
+<div class="informalexample">
+ <table class="listing_frame" border="0" cellpadding="0" cellspacing="0">
+ <tbody>
+ <tr>
+ <td class="listing_lines" align="right"><pre>1</pre></td>
+ <td class="listing_code"><pre class="programlisting">gst<span class="gtkdoc opt">-</span>launch<span class="gtkdoc opt">-</span><span class="number">1.0</span> <span class="gtkdoc opt">-</span>v filesrc location<span class="gtkdoc opt">=/</span>path<span class="gtkdoc opt">/</span>to<span class="gtkdoc opt">/</span>mkv <span class="gtkdoc opt">!</span> matroskademux name<span class="gtkdoc opt">=</span>d <span class="gtkdoc opt">!</span> queue <span class="gtkdoc opt">!</span> mpegaudioparse <span class="gtkdoc opt">!</span> mad <span class="gtkdoc opt">!</span> audioconvert <span class="gtkdoc opt">!</span> autoaudiosink d<span class="gtkdoc opt">. !</span> queue <span class="gtkdoc opt">!</span> h264parse <span class="gtkdoc opt">!</span> avdec_h264 <span class="gtkdoc opt">!</span> videoconvert <span class="gtkdoc opt">!</span> r<span class="gtkdoc opt">.</span> d<span class="gtkdoc opt">. !</span> queue <span class="gtkdoc opt">!</span> <span class="string">"application/x-ass"</span> <span class="gtkdoc opt">!</span> assrender name<span class="gtkdoc opt">=</span>r <span class="gtkdoc opt">!</span> videoconvert <span class="gtkdoc opt">!</span> autovideosink</pre></td>
+ </tr>
+ </tbody>
+ </table>
+</div>
+ This pipeline demuxes a Matroska file with h.264 video, MP3 audio and embedded ASS subtitles and renders the subtitles on top of the video.
+</div>
<div class="refsynopsisdiv">
<h2>Synopsis</h2>
<div class="refsect2">
-<a name="id-1.2.5.7.2.1"></a><h3>Element Information</h3>
+<a name="id-1.2.5.7.4.1"></a><h3>Element Information</h3>
<div class="variablelist"><table border="0" class="variablelist">
<colgroup>
<col align="left" valign="top">
@@ -113,7 +128,7 @@
</div>
<hr>
<div class="refsect2">
-<a name="id-1.2.5.7.2.2"></a><h3>Element Pads</h3>
+<a name="id-1.2.5.7.4.2"></a><h3>Element Pads</h3>
<div class="variablelist"><table border="0" class="variablelist">
<colgroup>
<col align="left" valign="top">
@@ -166,7 +181,7 @@
</tr>
<tr>
<td><p><span class="term"></span></p></td>
-<td> video/x-raw(ANY), format=(string){ I420, YV12, YUY2, UYVY, AYUV, RGBx, BGRx, xRGB, xBGR, RGBA, BGRA, ARGB, ABGR, RGB, BGR, Y41B, Y42B, YVYU, Y444, v210, v216, NV12, NV21, NV16, NV61, NV24, GRAY8, GRAY16_BE, GRAY16_LE, v308, RGB16, BGR16, RGB15, BGR15, UYVP, A420, RGB8P, YUV9, YVU9, IYU1, ARGB64, AYUV64, r210, I420_10LE, I420_10BE, I422_10LE, I422_10BE, Y444_10LE, Y444_10BE, GBR, GBR_10LE, GBR_10BE, NV12_64Z32, A420_10LE, A420_10BE, A422_10LE, A422_10BE, A444_10LE, A444_10BE }, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]</td>
+<td> video/x-raw(ANY), format=(string){ I420, YV12, YUY2, UYVY, AYUV, RGBx, BGRx, xRGB, xBGR, RGBA, BGRA, ARGB, ABGR, RGB, BGR, Y41B, Y42B, YVYU, Y444, v210, v216, NV12, NV21, NV16, NV61, NV24, GRAY8, GRAY16_BE, GRAY16_LE, v308, IYU2, RGB16, BGR16, RGB15, BGR15, UYVP, A420, RGB8P, YUV9, YVU9, IYU1, ARGB64, AYUV64, r210, I420_10LE, I420_10BE, I422_10LE, I422_10BE, Y444_10LE, Y444_10BE, GBR, GBR_10LE, GBR_10BE, NV12_64Z32, A420_10LE, A420_10BE, A422_10LE, A422_10BE, A444_10LE, A444_10BE, P010_10LE, P010_10BE }, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]</td>
</tr>
</tbody>
</table></div>
@@ -194,7 +209,7 @@
</tr>
<tr>
<td><p><span class="term"></span></p></td>
-<td> video/x-raw(ANY), format=(string){ I420, YV12, YUY2, UYVY, AYUV, RGBx, BGRx, xRGB, xBGR, RGBA, BGRA, ARGB, ABGR, RGB, BGR, Y41B, Y42B, YVYU, Y444, v210, v216, NV12, NV21, NV16, NV61, NV24, GRAY8, GRAY16_BE, GRAY16_LE, v308, RGB16, BGR16, RGB15, BGR15, UYVP, A420, RGB8P, YUV9, YVU9, IYU1, ARGB64, AYUV64, r210, I420_10LE, I420_10BE, I422_10LE, I422_10BE, Y444_10LE, Y444_10BE, GBR, GBR_10LE, GBR_10BE, NV12_64Z32, A420_10LE, A420_10BE, A422_10LE, A422_10BE, A444_10LE, A444_10BE }, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]</td>
+<td> video/x-raw(ANY), format=(string){ I420, YV12, YUY2, UYVY, AYUV, RGBx, BGRx, xRGB, xBGR, RGBA, BGRA, ARGB, ABGR, RGB, BGR, Y41B, Y42B, YVYU, Y444, v210, v216, NV12, NV21, NV16, NV61, NV24, GRAY8, GRAY16_BE, GRAY16_LE, v308, IYU2, RGB16, BGR16, RGB15, BGR15, UYVP, A420, RGB8P, YUV9, YVU9, IYU1, ARGB64, AYUV64, r210, I420_10LE, I420_10BE, I422_10LE, I422_10BE, Y444_10LE, Y444_10BE, GBR, GBR_10LE, GBR_10BE, NV12_64Z32, A420_10LE, A420_10BE, A422_10LE, A422_10BE, A444_10LE, A444_10BE, P010_10LE, P010_10BE }, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]</td>
</tr>
</tbody>
</table></div>
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-bs2b.html b/docs/plugins/html/gst-plugins-bad-plugins-bs2b.html
index b69aa30..7411cd8 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-bs2b.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-bs2b.html
@@ -15,7 +15,10 @@
<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="5"><tr valign="middle">
<td width="100%" align="left" class="shortcuts">
<a href="#" class="shortcut">Top</a><span id="nav_description"> <span class="dim">|</span>
- <a href="#gst-plugins-bad-plugins-bs2b.description" class="shortcut">Description</a></span>
+ <a href="#gst-plugins-bad-plugins-bs2b.description" class="shortcut">Description</a></span><span id="nav_hierarchy"> <span class="dim">|</span>
+ <a href="#gst-plugins-bad-plugins-bs2b.object-hierarchy" class="shortcut">Object Hierarchy</a></span><span id="nav_interfaces"> <span class="dim">|</span>
+ <a href="#gst-plugins-bad-plugins-bs2b.implemented-interfaces" class="shortcut">Implemented Interfaces</a></span><span id="nav_properties"> <span class="dim">|</span>
+ <a href="#gst-plugins-bad-plugins-bs2b.properties" class="shortcut">Properties</a></span>
</td>
<td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
<td><a accesskey="u" href="ch01.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
@@ -32,6 +35,28 @@
<td class="gallery_image" valign="top" align="right"></td>
</tr></table></div>
<div class="refsect1">
+<a name="gst-plugins-bad-plugins-bs2b.properties"></a><h2>Properties</h2>
+<div class="informaltable"><table class="informaltable" border="0">
+<colgroup>
+<col width="150px" class="properties_type">
+<col width="300px" class="properties_name">
+<col width="200px" class="properties_flags">
+</colgroup>
+<tbody>
+<tr>
+<td class="property_type"><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gint"><span class="type">gint</span></a></td>
+<td class="property_name"><a class="link" href="gst-plugins-bad-plugins-bs2b.html#GstBs2b--fcut" title="The “fcut” property">fcut</a></td>
+<td class="property_flags">Read / Write</td>
+</tr>
+<tr>
+<td class="property_type"><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gint"><span class="type">gint</span></a></td>
+<td class="property_name"><a class="link" href="gst-plugins-bad-plugins-bs2b.html#GstBs2b--feed" title="The “feed” property">feed</a></td>
+<td class="property_flags">Read / Write</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<a name="GstBs2b"></a><div class="refsect1">
<a name="gst-plugins-bad-plugins-bs2b.other"></a><h2>Types and Values</h2>
<div class="informaltable"><table class="informaltable" width="100%" border="0">
<colgroup>
@@ -40,16 +65,50 @@
</colgroup>
<tbody><tr>
<td class="datatype_keyword">struct</td>
-<td class="function_name"><a class="link" href="gst-plugins-bad-plugins-bs2b.html#GstBs2b" title="struct GstBs2b">GstBs2b</a></td>
+<td class="function_name"><a class="link" href="gst-plugins-bad-plugins-bs2b.html#GstBs2b-struct" title="struct GstBs2b">GstBs2b</a></td>
</tr></tbody>
</table></div>
</div>
<div class="refsect1">
+<a name="gst-plugins-bad-plugins-bs2b.object-hierarchy"></a><h2>Object Hierarchy</h2>
+<pre class="screen"> <a href="/usr/share/gtk-doc/html/gobjectgobject-The-Base-Object-Type.html#GObject-struct">GObject</a>
+ <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gobjectgobject-The-Base-Object-Type.html#GInitiallyUnowned">GInitiallyUnowned</a>
+ <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gstreamer-1.0GstObject.html#GstObject-struct">GstObject</a>
+ <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gstreamer-1.0GstElement.html#GstElement-struct">GstElement</a>
+ <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gstreamer-libs-1.0GstBaseTransform.html#GstBaseTransform-struct">GstBaseTransform</a>
+ <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gst-plugins-base-libs-1.0gst-plugins-base-libs-gstaudiofilter.html#GstAudioFilter-struct">GstAudioFilter</a>
+ <span class="lineart">╰──</span> GstBs2b
+</pre>
+</div>
+<div class="refsect1">
+<a name="gst-plugins-bad-plugins-bs2b.implemented-interfaces"></a><h2>Implemented Interfaces</h2>
+<p>
+GstBs2b implements
+ <a href="/usr/share/gtk-doc/html/gstreamer-1.0GstPreset.html#GstPreset-struct">GstPreset</a>.</p>
+</div>
+<div class="refsect1">
<a name="gst-plugins-bad-plugins-bs2b.description"></a><h2>Description</h2>
+<p>Improve headphone listening of stereo audio records using the bs2b library.
+It does so by mixing the left and right channel in a way that simulates
+a stereo speaker setup while using headphones.</p>
+<div class="refsect2">
+<a name="id-1.2.9.8.3"></a><h3>Example pipelines</h3>
+<div class="informalexample">
+ <table class="listing_frame" border="0" cellpadding="0" cellspacing="0">
+ <tbody>
+ <tr>
+ <td class="listing_lines" align="right"><pre>1</pre></td>
+ <td class="listing_code"><pre class="programlisting">gst<span class="gtkdoc opt">-</span>launch<span class="gtkdoc opt">-</span><span class="number">1.0</span> audiotestsrc <span class="gtkdoc opt">!</span> <span class="string">"audio/x-raw,channel-mask=(bitmask)0x1"</span> <span class="gtkdoc opt">!</span> interleave name<span class="gtkdoc opt">=</span>i <span class="gtkdoc opt">!</span> bs2b <span class="gtkdoc opt">!</span> autoaudiosink audiotestsrc freq<span class="gtkdoc opt">=</span><span class="number">330</span> <span class="gtkdoc opt">!</span> <span class="string">"audio/x-raw,channel-mask=(bitmask)0x2"</span> <span class="gtkdoc opt">!</span> i<span class="gtkdoc opt">.</span></pre></td>
+ </tr>
+ </tbody>
+ </table>
+</div>
+ Play two independent sine test sources and crossfeed them.
+</div>
<div class="refsynopsisdiv">
<h2>Synopsis</h2>
<div class="refsect2">
-<a name="id-1.2.9.4.2.1"></a><h3>Element Information</h3>
+<a name="id-1.2.9.8.4.1"></a><h3>Element Information</h3>
<div class="variablelist"><table border="0" class="variablelist">
<colgroup>
<col align="left" valign="top">
@@ -68,14 +127,14 @@
</tr>
<tr>
<td><p><span class="term">class</span></p></td>
-<td>Effect/Audio</td>
+<td>Filter/Effect/Audio</td>
</tr>
</tbody>
</table></div>
</div>
<hr>
<div class="refsect2">
-<a name="id-1.2.9.4.2.2"></a><h3>Element Pads</h3>
+<a name="id-1.2.9.8.4.2"></a><h3>Element Pads</h3>
<div class="variablelist"><table border="0" class="variablelist">
<colgroup>
<col align="left" valign="top">
@@ -142,11 +201,28 @@
<div class="refsect1">
<a name="gst-plugins-bad-plugins-bs2b.other_details"></a><h2>Types and Values</h2>
<div class="refsect2">
-<a name="GstBs2b"></a><h3>struct GstBs2b</h3>
-<pre class="programlisting">struct GstBs2b {
- GstAudioFilter element;
-};
-</pre>
+<a name="GstBs2b-struct"></a><h3>struct GstBs2b</h3>
+<pre class="programlisting">struct GstBs2b;</pre>
+</div>
+</div>
+<div class="refsect1">
+<a name="gst-plugins-bad-plugins-bs2b.property-details"></a><h2>Property Details</h2>
+<div class="refsect2">
+<a name="GstBs2b--fcut"></a><h3>The <code class="literal">“fcut”</code> property</h3>
+<pre class="programlisting"> “fcut” <a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gint"><span class="type">gint</span></a></pre>
+<p>Low-pass filter cut frequency (Hz).</p>
+<p>Flags: Read / Write</p>
+<p>Allowed values: [300,2000]</p>
+<p>Default value: 700</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstBs2b--feed"></a><h3>The <code class="literal">“feed”</code> property</h3>
+<pre class="programlisting"> “feed” <a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gint"><span class="type">gint</span></a></pre>
+<p>Feed Level (dB/10).</p>
+<p>Flags: Read / Write</p>
+<p>Allowed values: [10,150]</p>
+<p>Default value: 45</p>
</div>
</div>
</div>
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-chromium.html b/docs/plugins/html/gst-plugins-bad-plugins-chromium.html
index 35591c3..da80981 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-chromium.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-chromium.html
@@ -61,6 +61,19 @@
</table></div>
</div>
<a name="GstChromium"></a><div class="refsect1">
+<a name="gst-plugins-bad-plugins-chromium.other"></a><h2>Types and Values</h2>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
+<col width="150px" class="name">
+<col class="description">
+</colgroup>
+<tbody><tr>
+<td class="typedef_keyword">typedef</td>
+<td class="function_name"><a class="link" href="gst-plugins-bad-plugins-chromium.html#GstChromium">GstChromium</a></td>
+</tr></tbody>
+</table></div>
+</div>
+<div class="refsect1">
<a name="gst-plugins-bad-plugins-chromium.object-hierarchy"></a><h2>Object Hierarchy</h2>
<pre class="screen"> <a href="/usr/share/gtk-doc/html/gobjectgobject-The-Base-Object-Type.html#GObject-struct">GObject</a>
<span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gobjectgobject-The-Base-Object-Type.html#GInitiallyUnowned">GInitiallyUnowned</a>
@@ -75,7 +88,7 @@
<a name="gst-plugins-bad-plugins-chromium.description"></a><h2>Description</h2>
<p>Chromium breaks the colors of a video stream in realtime.</p>
<div class="refsect2">
-<a name="id-1.2.13.6.3"></a><h3>Example launch line</h3>
+<a name="id-1.2.13.7.3"></a><h3>Example launch line</h3>
<div class="informalexample">
<table class="listing_frame" border="0" cellpadding="0" cellspacing="0">
<tbody>
@@ -91,7 +104,7 @@
<div class="refsynopsisdiv">
<h2>Synopsis</h2>
<div class="refsect2">
-<a name="id-1.2.13.6.4.1"></a><h3>Element Information</h3>
+<a name="id-1.2.13.7.4.1"></a><h3>Element Information</h3>
<div class="variablelist"><table border="0" class="variablelist">
<colgroup>
<col align="left" valign="top">
@@ -117,7 +130,7 @@
</div>
<hr>
<div class="refsect2">
-<a name="id-1.2.13.6.4.2"></a><h3>Element Pads</h3>
+<a name="id-1.2.13.7.4.2"></a><h3>Element Pads</h3>
<div class="variablelist"><table border="0" class="variablelist">
<colgroup>
<col align="left" valign="top">
@@ -175,6 +188,11 @@
</div>
<div class="refsect1">
<a name="gst-plugins-bad-plugins-chromium.other_details"></a><h2>Types and Values</h2>
+<div class="refsect2">
+<a name="GstChromium"></a><h3>GstChromium</h3>
+<pre class="programlisting">typedef struct GstChromium GstChromium;
+</pre>
+</div>
</div>
<div class="refsect1">
<a name="gst-plugins-bad-plugins-chromium.property-details"></a><h2>Property Details</h2>
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-coloreffects.html b/docs/plugins/html/gst-plugins-bad-plugins-coloreffects.html
index c7b755b..9adb740 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-coloreffects.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-coloreffects.html
@@ -42,7 +42,7 @@
<col width="200px" class="properties_flags">
</colgroup>
<tbody><tr>
-<td class="property_type"><span class="type">GstColorEffectsPreset</span></td>
+<td class="property_type"><a class="link" href="gst-plugins-bad-plugins-coloreffects.html#GstColorEffectsPreset" title="enum GstColorEffectsPreset"><span class="type">GstColorEffectsPreset</span></a></td>
<td class="property_name"><a class="link" href="gst-plugins-bad-plugins-coloreffects.html#GstColorEffects--preset" title="The “preset” property">preset</a></td>
<td class="property_flags">Read / Write</td>
</tr></tbody>
@@ -55,10 +55,16 @@
<col width="150px" class="name">
<col class="description">
</colgroup>
-<tbody><tr>
+<tbody>
+<tr>
<td class="datatype_keyword">struct</td>
<td class="function_name"><a class="link" href="gst-plugins-bad-plugins-coloreffects.html#GstColorEffects-struct" title="struct GstColorEffects">GstColorEffects</a></td>
-</tr></tbody>
+</tr>
+<tr>
+<td class="datatype_keyword">enum</td>
+<td class="function_name"><a class="link" href="gst-plugins-bad-plugins-coloreffects.html#GstColorEffectsPreset" title="enum GstColorEffectsPreset">GstColorEffectsPreset</a></td>
+</tr>
+</tbody>
</table></div>
</div>
<div class="refsect1">
@@ -183,12 +189,59 @@
<pre class="programlisting">struct GstColorEffects;</pre>
<p>Opaque datastructure.</p>
</div>
+<hr>
+<div class="refsect2">
+<a name="GstColorEffectsPreset"></a><h3>enum GstColorEffectsPreset</h3>
+<p>The lookup table to use to convert input colors</p>
+<div class="refsect3">
+<a name="GstColorEffectsPreset.members"></a><h4>Members</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
+<col width="300px" class="enum_members_name">
+<col class="enum_members_description">
+<col width="200px" class="enum_members_annotations">
+</colgroup>
+<tbody>
+<tr>
+<td class="enum_member_name"><p><a name="GST-COLOR-EFFECTS-PRESET-NONE:CAPS"></a>GST_COLOR_EFFECTS_PRESET_NONE</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-COLOR-EFFECTS-PRESET-HEAT:CAPS"></a>GST_COLOR_EFFECTS_PRESET_HEAT</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-COLOR-EFFECTS-PRESET-SEPIA:CAPS"></a>GST_COLOR_EFFECTS_PRESET_SEPIA</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-COLOR-EFFECTS-PRESET-XRAY:CAPS"></a>GST_COLOR_EFFECTS_PRESET_XRAY</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-COLOR-EFFECTS-PRESET-XPRO:CAPS"></a>GST_COLOR_EFFECTS_PRESET_XPRO</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-COLOR-EFFECTS-PRESET-YELLOWBLUE:CAPS"></a>GST_COLOR_EFFECTS_PRESET_YELLOWBLUE</p></td>
+<td> </td>
+<td> </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+</div>
</div>
<div class="refsect1">
<a name="gst-plugins-bad-plugins-coloreffects.property-details"></a><h2>Property Details</h2>
<div class="refsect2">
<a name="GstColorEffects--preset"></a><h3>The <code class="literal">“preset”</code> property</h3>
-<pre class="programlisting"> “preset” <span class="type">GstColorEffectsPreset</span></pre>
+<pre class="programlisting"> “preset” <a class="link" href="gst-plugins-bad-plugins-coloreffects.html#GstColorEffectsPreset" title="enum GstColorEffectsPreset"><span class="type">GstColorEffectsPreset</span></a></pre>
<p>Color effect preset to use.</p>
<p>Flags: Read / Write</p>
<p>Default value: Do nothing preset</p>
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-compositor.html b/docs/plugins/html/gst-plugins-bad-plugins-compositor.html
index 13e52d4..968bf0d 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-compositor.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-compositor.html
@@ -16,7 +16,8 @@
<td width="100%" align="left" class="shortcuts">
<a href="#" class="shortcut">Top</a><span id="nav_description"> <span class="dim">|</span>
<a href="#gst-plugins-bad-plugins-compositor.description" class="shortcut">Description</a></span><span id="nav_hierarchy"> <span class="dim">|</span>
- <a href="#gst-plugins-bad-plugins-compositor.object-hierarchy" class="shortcut">Object Hierarchy</a></span><span id="nav_properties"> <span class="dim">|</span>
+ <a href="#gst-plugins-bad-plugins-compositor.object-hierarchy" class="shortcut">Object Hierarchy</a></span><span id="nav_interfaces"> <span class="dim">|</span>
+ <a href="#gst-plugins-bad-plugins-compositor.implemented-interfaces" class="shortcut">Implemented Interfaces</a></span><span id="nav_properties"> <span class="dim">|</span>
<a href="#gst-plugins-bad-plugins-compositor.properties" class="shortcut">Properties</a></span>
</td>
<td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
@@ -42,28 +43,49 @@
<col width="200px" class="properties_flags">
</colgroup>
<tbody><tr>
-<td class="property_type"><span class="type">GstCompositorBackground</span></td>
+<td class="property_type"><a class="link" href="gst-plugins-bad-plugins-compositor.html#GstCompositorBackground" title="enum GstCompositorBackground"><span class="type">GstCompositorBackground</span></a></td>
<td class="property_name"><a class="link" href="gst-plugins-bad-plugins-compositor.html#GstCompositor--background" title="The “background” property">background</a></td>
<td class="property_flags">Read / Write</td>
</tr></tbody>
</table></div>
</div>
-<a name="GstCompositor"></a><a name="GstCompositorPad"></a><div class="refsect1">
+<a name="GstCompositor"></a><div class="refsect1">
+<a name="gst-plugins-bad-plugins-compositor.other"></a><h2>Types and Values</h2>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
+<col width="150px" class="name">
+<col class="description">
+</colgroup>
+<tbody>
+<tr>
+<td class="datatype_keyword">struct</td>
+<td class="function_name"><a class="link" href="gst-plugins-bad-plugins-compositor.html#GstCompositor-struct" title="struct GstCompositor">GstCompositor</a></td>
+</tr>
+<tr>
+<td class="datatype_keyword">enum</td>
+<td class="function_name"><a class="link" href="gst-plugins-bad-plugins-compositor.html#GstCompositorBackground" title="enum GstCompositorBackground">GstCompositorBackground</a></td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<div class="refsect1">
<a name="gst-plugins-bad-plugins-compositor.object-hierarchy"></a><h2>Object Hierarchy</h2>
<pre class="screen"> <a href="/usr/share/gtk-doc/html/gobjectgobject-The-Base-Object-Type.html#GObject-struct">GObject</a>
<span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gobjectgobject-The-Base-Object-Type.html#GInitiallyUnowned">GInitiallyUnowned</a>
<span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gstreamer-1.0GstObject.html#GstObject-struct">GstObject</a>
- <span class="lineart">├──</span> <a href="/usr/share/gtk-doc/html/gstreamer-1.0GstElement.html#GstElement-struct">GstElement</a>
- <span class="lineart">│</span> <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gst-plugins-bad-libs-1.0gst-plugins-bad-libs-GstAggregator.html#GstAggregator">GstAggregator</a>
- <span class="lineart">│</span> <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gst-plugins-bad-libs-1.0gst-plugins-bad-libs-GstVideoAggregator.html#GstVideoAggregator">GstVideoAggregator</a>
- <span class="lineart">│</span> <span class="lineart">╰──</span> GstCompositor
- <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gstreamer-1.0GstPad.html#GstPad-struct">GstPad</a>
- <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gst-plugins-bad-libs-1.0gst-plugins-bad-libs-GstAggregatorPad.html#GstAggregatorPad">GstAggregatorPad</a>
- <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gst-plugins-bad-libs-1.0gst-plugins-bad-libs-GstVideoAggregatorPad.html#GstVideoAggregatorPad">GstVideoAggregatorPad</a>
- <span class="lineart">╰──</span> GstCompositorPad
+ <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gstreamer-1.0GstElement.html#GstElement-struct">GstElement</a>
+ <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gst-plugins-bad-libs-1.0gst-plugins-bad-libs-GstAggregator.html#GstAggregator">GstAggregator</a>
+ <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gst-plugins-bad-libs-1.0gst-plugins-bad-libs-GstVideoAggregator.html#GstVideoAggregator">GstVideoAggregator</a>
+ <span class="lineart">╰──</span> GstCompositor
</pre>
</div>
<div class="refsect1">
+<a name="gst-plugins-bad-plugins-compositor.implemented-interfaces"></a><h2>Implemented Interfaces</h2>
+<p>
+GstCompositor implements
+ <a href="/usr/share/gtk-doc/html/gstreamer-1.0GstChildProxy.html#GstChildProxy-struct">GstChildProxy</a>.</p>
+</div>
+<div class="refsect1">
<a name="gst-plugins-bad-plugins-compositor.description"></a><h2>Description</h2>
<p>Compositor can accept AYUV, ARGB and BGRA video streams. For each of the requested
sink pads it will compare the incoming geometry and framerate to define the
@@ -71,7 +93,7 @@
biggest incoming video stream and the framerate of the fastest incoming one.</p>
<p>Compositor will do colorspace conversion.</p>
<p>Individual parameters for each input stream can be configured on the
-<a class="link" href="gst-plugins-bad-plugins-compositor.html#GstCompositorPad"><span class="type">GstCompositorPad</span></a>:</p>
+<span class="type">GstCompositorPad</span>:</p>
<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
<li class="listitem">
"xpos": The x-coordinate position of the top-left corner of the picture
@@ -100,7 +122,7 @@
</li>
</ul></div>
<div class="refsect2">
-<a name="id-1.2.16.7.6"></a><h3>Sample pipelines</h3>
+<a name="id-1.2.16.8.6"></a><h3>Sample pipelines</h3>
<div class="informalexample">
<table class="listing_frame" border="0" cellpadding="0" cellspacing="0">
<tbody>
@@ -128,7 +150,7 @@
A pipeline to demonstrate compositor used together with videobox.
This should show a 320x240 pixels video test source with some transparency
showing the background checker pattern. Another video test source with just
-the snow pattern of 100x100 pixels is overlayed on top of the first one on
+the snow pattern of 100x100 pixels is overlaid on top of the first one on
the left vertically centered with a small transparency showing the first
video test source behind and the checker pattern under it. Note that the
framerate of the output video is 10 frames per second.
@@ -199,7 +221,7 @@
<div class="refsynopsisdiv">
<h2>Synopsis</h2>
<div class="refsect2">
-<a name="id-1.2.16.7.7.1"></a><h3>Element Information</h3>
+<a name="id-1.2.16.8.7.1"></a><h3>Element Information</h3>
<div class="variablelist"><table border="0" class="variablelist">
<colgroup>
<col align="left" valign="top">
@@ -225,7 +247,7 @@
</div>
<hr>
<div class="refsect2">
-<a name="id-1.2.16.7.7.2"></a><h3>Element Pads</h3>
+<a name="id-1.2.16.8.7.2"></a><h3>Element Pads</h3>
<div class="variablelist"><table border="0" class="variablelist">
<colgroup>
<col align="left" valign="top">
@@ -283,12 +305,53 @@
</div>
<div class="refsect1">
<a name="gst-plugins-bad-plugins-compositor.other_details"></a><h2>Types and Values</h2>
+<div class="refsect2">
+<a name="GstCompositor-struct"></a><h3>struct GstCompositor</h3>
+<pre class="programlisting">struct GstCompositor;</pre>
+<p>The opaque <a class="link" href="gst-plugins-bad-plugins-compositor.html#GstCompositor"><span class="type">GstCompositor</span></a> structure.</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstCompositorBackground"></a><h3>enum GstCompositorBackground</h3>
+<div class="refsect3">
+<a name="GstCompositorBackground.members"></a><h4>Members</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
+<col width="300px" class="enum_members_name">
+<col class="enum_members_description">
+<col width="200px" class="enum_members_annotations">
+</colgroup>
+<tbody>
+<tr>
+<td class="enum_member_name"><p><a name="COMPOSITOR-BACKGROUND-CHECKER:CAPS"></a>COMPOSITOR_BACKGROUND_CHECKER</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="COMPOSITOR-BACKGROUND-BLACK:CAPS"></a>COMPOSITOR_BACKGROUND_BLACK</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="COMPOSITOR-BACKGROUND-WHITE:CAPS"></a>COMPOSITOR_BACKGROUND_WHITE</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="COMPOSITOR-BACKGROUND-TRANSPARENT:CAPS"></a>COMPOSITOR_BACKGROUND_TRANSPARENT</p></td>
+<td> </td>
+<td> </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+</div>
</div>
<div class="refsect1">
<a name="gst-plugins-bad-plugins-compositor.property-details"></a><h2>Property Details</h2>
<div class="refsect2">
<a name="GstCompositor--background"></a><h3>The <code class="literal">“background”</code> property</h3>
-<pre class="programlisting"> “background” <span class="type">GstCompositorBackground</span></pre>
+<pre class="programlisting"> “background” <a class="link" href="gst-plugins-bad-plugins-compositor.html#GstCompositorBackground" title="enum GstCompositorBackground"><span class="type">GstCompositorBackground</span></a></pre>
<p>Background type.</p>
<p>Flags: Read / Write</p>
<p>Default value: Checker pattern</p>
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-cvdilate.html b/docs/plugins/html/gst-plugins-bad-plugins-cvdilate.html
index 1ba97cb..50c3922 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-cvdilate.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-cvdilate.html
@@ -15,7 +15,8 @@
<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="5"><tr valign="middle">
<td width="100%" align="left" class="shortcuts">
<a href="#" class="shortcut">Top</a><span id="nav_description"> <span class="dim">|</span>
- <a href="#gst-plugins-bad-plugins-cvdilate.description" class="shortcut">Description</a></span>
+ <a href="#gst-plugins-bad-plugins-cvdilate.description" class="shortcut">Description</a></span><span id="nav_hierarchy"> <span class="dim">|</span>
+ <a href="#gst-plugins-bad-plugins-cvdilate.object-hierarchy" class="shortcut">Object Hierarchy</a></span>
</td>
<td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
<td><a accesskey="u" href="ch01.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
@@ -31,7 +32,7 @@
</td>
<td class="gallery_image" valign="top" align="right"></td>
</tr></table></div>
-<div class="refsect1">
+<a name="GstCvDilate"></a><div class="refsect1">
<a name="gst-plugins-bad-plugins-cvdilate.other"></a><h2>Types and Values</h2>
<div class="informaltable"><table class="informaltable" width="100%" border="0">
<colgroup>
@@ -40,16 +41,44 @@
</colgroup>
<tbody><tr>
<td class="datatype_keyword">struct</td>
-<td class="function_name"><a class="link" href="gst-plugins-bad-plugins-cvdilate.html#GstCvDilate" title="struct GstCvDilate">GstCvDilate</a></td>
+<td class="function_name"><a class="link" href="gst-plugins-bad-plugins-cvdilate.html#GstCvDilate-struct" title="struct GstCvDilate">GstCvDilate</a></td>
</tr></tbody>
</table></div>
</div>
<div class="refsect1">
+<a name="gst-plugins-bad-plugins-cvdilate.object-hierarchy"></a><h2>Object Hierarchy</h2>
+<pre class="screen"> <a href="/usr/share/gtk-doc/html/gobjectgobject-The-Base-Object-Type.html#GObject-struct">GObject</a>
+ <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gobjectgobject-The-Base-Object-Type.html#GInitiallyUnowned">GInitiallyUnowned</a>
+ <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gstreamer-1.0GstObject.html#GstObject-struct">GstObject</a>
+ <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gstreamer-1.0GstElement.html#GstElement-struct">GstElement</a>
+ <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gstreamer-libs-1.0GstBaseTransform.html#GstBaseTransform-struct">GstBaseTransform</a>
+ <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gst-plugins-base-libs-1.0gst-plugins-base-libs-gstvideofilter.html#GstVideoFilter-struct">GstVideoFilter</a>
+ <span class="lineart">╰──</span> GstOpencvVideoFilter
+ <span class="lineart">╰──</span> GstCvDilateErode
+ <span class="lineart">╰──</span> GstCvDilate
+</pre>
+</div>
+<div class="refsect1">
<a name="gst-plugins-bad-plugins-cvdilate.description"></a><h2>Description</h2>
+<p>Dilates the image with the cvDilate OpenCV function.</p>
+<div class="refsect2">
+<a name="id-1.2.17.6.3"></a><h3>Example launch line</h3>
+<div class="informalexample">
+ <table class="listing_frame" border="0" cellpadding="0" cellspacing="0">
+ <tbody>
+ <tr>
+ <td class="listing_lines" align="right"><pre>1</pre></td>
+ <td class="listing_code"><pre class="programlisting">gst<span class="gtkdoc opt">-</span>launch<span class="gtkdoc opt">-</span><span class="number">1.0</span> videotestsrc <span class="gtkdoc opt">!</span> cvdilate <span class="gtkdoc opt">!</span> videoconvert <span class="gtkdoc opt">!</span> autovideosink</pre></td>
+ </tr>
+ </tbody>
+ </table>
+</div>
+
+</div>
<div class="refsynopsisdiv">
<h2>Synopsis</h2>
<div class="refsect2">
-<a name="id-1.2.17.4.2.1"></a><h3>Element Information</h3>
+<a name="id-1.2.17.6.4.1"></a><h3>Element Information</h3>
<div class="variablelist"><table border="0" class="variablelist">
<colgroup>
<col align="left" valign="top">
@@ -75,7 +104,7 @@
</div>
<hr>
<div class="refsect2">
-<a name="id-1.2.17.4.2.2"></a><h3>Element Pads</h3>
+<a name="id-1.2.17.6.4.2"></a><h3>Element Pads</h3>
<div class="variablelist"><table border="0" class="variablelist">
<colgroup>
<col align="left" valign="top">
@@ -230,11 +259,8 @@
<div class="refsect1">
<a name="gst-plugins-bad-plugins-cvdilate.other_details"></a><h2>Types and Values</h2>
<div class="refsect2">
-<a name="GstCvDilate"></a><h3>struct GstCvDilate</h3>
-<pre class="programlisting">struct GstCvDilate {
- GstCvDilateErode element;
-};
-</pre>
+<a name="GstCvDilate-struct"></a><h3>struct GstCvDilate</h3>
+<pre class="programlisting">struct GstCvDilate;</pre>
</div>
</div>
</div>
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-cvequalizehist.html b/docs/plugins/html/gst-plugins-bad-plugins-cvequalizehist.html
index bbc427f..e31ee3d 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-cvequalizehist.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-cvequalizehist.html
@@ -15,7 +15,8 @@
<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="5"><tr valign="middle">
<td width="100%" align="left" class="shortcuts">
<a href="#" class="shortcut">Top</a><span id="nav_description"> <span class="dim">|</span>
- <a href="#gst-plugins-bad-plugins-cvequalizehist.description" class="shortcut">Description</a></span>
+ <a href="#gst-plugins-bad-plugins-cvequalizehist.description" class="shortcut">Description</a></span><span id="nav_hierarchy"> <span class="dim">|</span>
+ <a href="#gst-plugins-bad-plugins-cvequalizehist.object-hierarchy" class="shortcut">Object Hierarchy</a></span>
</td>
<td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
<td><a accesskey="u" href="ch01.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
@@ -31,7 +32,7 @@
</td>
<td class="gallery_image" valign="top" align="right"></td>
</tr></table></div>
-<div class="refsect1">
+<a name="GstCvEqualizeHist"></a><div class="refsect1">
<a name="gst-plugins-bad-plugins-cvequalizehist.other"></a><h2>Types and Values</h2>
<div class="informaltable"><table class="informaltable" width="100%" border="0">
<colgroup>
@@ -40,16 +41,44 @@
</colgroup>
<tbody><tr>
<td class="datatype_keyword">struct</td>
-<td class="function_name"><a class="link" href="gst-plugins-bad-plugins-cvequalizehist.html#GstCvEqualizeHist" title="struct GstCvEqualizeHist">GstCvEqualizeHist</a></td>
+<td class="function_name"><a class="link" href="gst-plugins-bad-plugins-cvequalizehist.html#GstCvEqualizeHist-struct" title="struct GstCvEqualizeHist">GstCvEqualizeHist</a></td>
</tr></tbody>
</table></div>
</div>
<div class="refsect1">
+<a name="gst-plugins-bad-plugins-cvequalizehist.object-hierarchy"></a><h2>Object Hierarchy</h2>
+<pre class="screen"> <a href="/usr/share/gtk-doc/html/gobjectgobject-The-Base-Object-Type.html#GObject-struct">GObject</a>
+ <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gobjectgobject-The-Base-Object-Type.html#GInitiallyUnowned">GInitiallyUnowned</a>
+ <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gstreamer-1.0GstObject.html#GstObject-struct">GstObject</a>
+ <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gstreamer-1.0GstElement.html#GstElement-struct">GstElement</a>
+ <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gstreamer-libs-1.0GstBaseTransform.html#GstBaseTransform-struct">GstBaseTransform</a>
+ <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gst-plugins-base-libs-1.0gst-plugins-base-libs-gstvideofilter.html#GstVideoFilter-struct">GstVideoFilter</a>
+ <span class="lineart">╰──</span> GstOpencvVideoFilter
+ <span class="lineart">╰──</span> GstCvEqualizeHist
+</pre>
+</div>
+<div class="refsect1">
<a name="gst-plugins-bad-plugins-cvequalizehist.description"></a><h2>Description</h2>
+<p>Equalizes the histogram of a grayscale image with the cvEqualizeHist OpenCV
+function.</p>
+<div class="refsect2">
+<a name="id-1.2.19.6.3"></a><h3>Example launch line</h3>
+<div class="informalexample">
+ <table class="listing_frame" border="0" cellpadding="0" cellspacing="0">
+ <tbody>
+ <tr>
+ <td class="listing_lines" align="right"><pre>1</pre></td>
+ <td class="listing_code"><pre class="programlisting">gst<span class="gtkdoc opt">-</span>launch<span class="gtkdoc opt">-</span><span class="number">1.0</span> videotestsrc pattern<span class="gtkdoc opt">=</span><span class="number">23</span> <span class="gtkdoc opt">!</span> cvequalizehist <span class="gtkdoc opt">!</span> videoconvert <span class="gtkdoc opt">!</span> autovideosink</pre></td>
+ </tr>
+ </tbody>
+ </table>
+</div>
+
+</div>
<div class="refsynopsisdiv">
<h2>Synopsis</h2>
<div class="refsect2">
-<a name="id-1.2.19.4.2.1"></a><h3>Element Information</h3>
+<a name="id-1.2.19.6.4.1"></a><h3>Element Information</h3>
<div class="variablelist"><table border="0" class="variablelist">
<colgroup>
<col align="left" valign="top">
@@ -75,7 +104,7 @@
</div>
<hr>
<div class="refsect2">
-<a name="id-1.2.19.4.2.2"></a><h3>Element Pads</h3>
+<a name="id-1.2.19.6.4.2"></a><h3>Element Pads</h3>
<div class="variablelist"><table border="0" class="variablelist">
<colgroup>
<col align="left" valign="top">
@@ -134,11 +163,8 @@
<div class="refsect1">
<a name="gst-plugins-bad-plugins-cvequalizehist.other_details"></a><h2>Types and Values</h2>
<div class="refsect2">
-<a name="GstCvEqualizeHist"></a><h3>struct GstCvEqualizeHist</h3>
-<pre class="programlisting">struct GstCvEqualizeHist {
- GstOpencvVideoFilter element;
-};
-</pre>
+<a name="GstCvEqualizeHist-struct"></a><h3>struct GstCvEqualizeHist</h3>
+<pre class="programlisting">struct GstCvEqualizeHist;</pre>
</div>
</div>
</div>
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-cverode.html b/docs/plugins/html/gst-plugins-bad-plugins-cverode.html
index c038210..0601245 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-cverode.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-cverode.html
@@ -15,7 +15,8 @@
<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="5"><tr valign="middle">
<td width="100%" align="left" class="shortcuts">
<a href="#" class="shortcut">Top</a><span id="nav_description"> <span class="dim">|</span>
- <a href="#gst-plugins-bad-plugins-cverode.description" class="shortcut">Description</a></span>
+ <a href="#gst-plugins-bad-plugins-cverode.description" class="shortcut">Description</a></span><span id="nav_hierarchy"> <span class="dim">|</span>
+ <a href="#gst-plugins-bad-plugins-cverode.object-hierarchy" class="shortcut">Object Hierarchy</a></span>
</td>
<td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
<td><a accesskey="u" href="ch01.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
@@ -31,7 +32,7 @@
</td>
<td class="gallery_image" valign="top" align="right"></td>
</tr></table></div>
-<div class="refsect1">
+<a name="GstCvErode"></a><div class="refsect1">
<a name="gst-plugins-bad-plugins-cverode.other"></a><h2>Types and Values</h2>
<div class="informaltable"><table class="informaltable" width="100%" border="0">
<colgroup>
@@ -40,16 +41,44 @@
</colgroup>
<tbody><tr>
<td class="datatype_keyword">struct</td>
-<td class="function_name"><a class="link" href="gst-plugins-bad-plugins-cverode.html#GstCvErode" title="struct GstCvErode">GstCvErode</a></td>
+<td class="function_name"><a class="link" href="gst-plugins-bad-plugins-cverode.html#GstCvErode-struct" title="struct GstCvErode">GstCvErode</a></td>
</tr></tbody>
</table></div>
</div>
<div class="refsect1">
+<a name="gst-plugins-bad-plugins-cverode.object-hierarchy"></a><h2>Object Hierarchy</h2>
+<pre class="screen"> <a href="/usr/share/gtk-doc/html/gobjectgobject-The-Base-Object-Type.html#GObject-struct">GObject</a>
+ <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gobjectgobject-The-Base-Object-Type.html#GInitiallyUnowned">GInitiallyUnowned</a>
+ <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gstreamer-1.0GstObject.html#GstObject-struct">GstObject</a>
+ <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gstreamer-1.0GstElement.html#GstElement-struct">GstElement</a>
+ <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gstreamer-libs-1.0GstBaseTransform.html#GstBaseTransform-struct">GstBaseTransform</a>
+ <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gst-plugins-base-libs-1.0gst-plugins-base-libs-gstvideofilter.html#GstVideoFilter-struct">GstVideoFilter</a>
+ <span class="lineart">╰──</span> GstOpencvVideoFilter
+ <span class="lineart">╰──</span> GstCvDilateErode
+ <span class="lineart">╰──</span> GstCvErode
+</pre>
+</div>
+<div class="refsect1">
<a name="gst-plugins-bad-plugins-cverode.description"></a><h2>Description</h2>
+<p>Erodes the image with the cvErode OpenCV function.</p>
+<div class="refsect2">
+<a name="id-1.2.18.6.3"></a><h3>Example launch line</h3>
+<div class="informalexample">
+ <table class="listing_frame" border="0" cellpadding="0" cellspacing="0">
+ <tbody>
+ <tr>
+ <td class="listing_lines" align="right"><pre>1</pre></td>
+ <td class="listing_code"><pre class="programlisting">gst<span class="gtkdoc opt">-</span>launch<span class="gtkdoc opt">-</span><span class="number">1.0</span> videotestsrc <span class="gtkdoc opt">!</span> cverode <span class="gtkdoc opt">!</span> videoconvert <span class="gtkdoc opt">!</span> autovideosink</pre></td>
+ </tr>
+ </tbody>
+ </table>
+</div>
+
+</div>
<div class="refsynopsisdiv">
<h2>Synopsis</h2>
<div class="refsect2">
-<a name="id-1.2.18.4.2.1"></a><h3>Element Information</h3>
+<a name="id-1.2.18.6.4.1"></a><h3>Element Information</h3>
<div class="variablelist"><table border="0" class="variablelist">
<colgroup>
<col align="left" valign="top">
@@ -75,7 +104,7 @@
</div>
<hr>
<div class="refsect2">
-<a name="id-1.2.18.4.2.2"></a><h3>Element Pads</h3>
+<a name="id-1.2.18.6.4.2"></a><h3>Element Pads</h3>
<div class="variablelist"><table border="0" class="variablelist">
<colgroup>
<col align="left" valign="top">
@@ -230,11 +259,8 @@
<div class="refsect1">
<a name="gst-plugins-bad-plugins-cverode.other_details"></a><h2>Types and Values</h2>
<div class="refsect2">
-<a name="GstCvErode"></a><h3>struct GstCvErode</h3>
-<pre class="programlisting">struct GstCvErode {
- GstCvDilateErode element;
-};
-</pre>
+<a name="GstCvErode-struct"></a><h3>struct GstCvErode</h3>
+<pre class="programlisting">struct GstCvErode;</pre>
</div>
</div>
</div>
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-cvlaplace.html b/docs/plugins/html/gst-plugins-bad-plugins-cvlaplace.html
index 318c67b..d09961b 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-cvlaplace.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-cvlaplace.html
@@ -15,7 +15,8 @@
<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="5"><tr valign="middle">
<td width="100%" align="left" class="shortcuts">
<a href="#" class="shortcut">Top</a><span id="nav_description"> <span class="dim">|</span>
- <a href="#gst-plugins-bad-plugins-cvlaplace.description" class="shortcut">Description</a></span><span id="nav_properties"> <span class="dim">|</span>
+ <a href="#gst-plugins-bad-plugins-cvlaplace.description" class="shortcut">Description</a></span><span id="nav_hierarchy"> <span class="dim">|</span>
+ <a href="#gst-plugins-bad-plugins-cvlaplace.object-hierarchy" class="shortcut">Object Hierarchy</a></span><span id="nav_properties"> <span class="dim">|</span>
<a href="#gst-plugins-bad-plugins-cvlaplace.properties" class="shortcut">Properties</a></span>
</td>
<td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
@@ -64,7 +65,7 @@
</tbody>
</table></div>
</div>
-<div class="refsect1">
+<a name="GstCvLaplace"></a><div class="refsect1">
<a name="gst-plugins-bad-plugins-cvlaplace.other"></a><h2>Types and Values</h2>
<div class="informaltable"><table class="informaltable" width="100%" border="0">
<colgroup>
@@ -73,16 +74,43 @@
</colgroup>
<tbody><tr>
<td class="datatype_keyword">struct</td>
-<td class="function_name"><a class="link" href="gst-plugins-bad-plugins-cvlaplace.html#GstCvLaplace" title="struct GstCvLaplace">GstCvLaplace</a></td>
+<td class="function_name"><a class="link" href="gst-plugins-bad-plugins-cvlaplace.html#GstCvLaplace-struct" title="struct GstCvLaplace">GstCvLaplace</a></td>
</tr></tbody>
</table></div>
</div>
<div class="refsect1">
+<a name="gst-plugins-bad-plugins-cvlaplace.object-hierarchy"></a><h2>Object Hierarchy</h2>
+<pre class="screen"> <a href="/usr/share/gtk-doc/html/gobjectgobject-The-Base-Object-Type.html#GObject-struct">GObject</a>
+ <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gobjectgobject-The-Base-Object-Type.html#GInitiallyUnowned">GInitiallyUnowned</a>
+ <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gstreamer-1.0GstObject.html#GstObject-struct">GstObject</a>
+ <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gstreamer-1.0GstElement.html#GstElement-struct">GstElement</a>
+ <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gstreamer-libs-1.0GstBaseTransform.html#GstBaseTransform-struct">GstBaseTransform</a>
+ <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gst-plugins-base-libs-1.0gst-plugins-base-libs-gstvideofilter.html#GstVideoFilter-struct">GstVideoFilter</a>
+ <span class="lineart">╰──</span> GstOpencvVideoFilter
+ <span class="lineart">╰──</span> GstCvLaplace
+</pre>
+</div>
+<div class="refsect1">
<a name="gst-plugins-bad-plugins-cvlaplace.description"></a><h2>Description</h2>
+<p>Applies cvLaplace OpenCV function to the image.</p>
+<div class="refsect2">
+<a name="id-1.2.20.7.3"></a><h3>Example launch line</h3>
+<div class="informalexample">
+ <table class="listing_frame" border="0" cellpadding="0" cellspacing="0">
+ <tbody>
+ <tr>
+ <td class="listing_lines" align="right"><pre>1</pre></td>
+ <td class="listing_code"><pre class="programlisting">gst<span class="gtkdoc opt">-</span>launch<span class="gtkdoc opt">-</span><span class="number">1.0</span> videotestsrc <span class="gtkdoc opt">!</span> cvlaplace <span class="gtkdoc opt">!</span> videoconvert <span class="gtkdoc opt">!</span> autovideosink</pre></td>
+ </tr>
+ </tbody>
+ </table>
+</div>
+
+</div>
<div class="refsynopsisdiv">
<h2>Synopsis</h2>
<div class="refsect2">
-<a name="id-1.2.20.5.2.1"></a><h3>Element Information</h3>
+<a name="id-1.2.20.7.4.1"></a><h3>Element Information</h3>
<div class="variablelist"><table border="0" class="variablelist">
<colgroup>
<col align="left" valign="top">
@@ -108,7 +136,7 @@
</div>
<hr>
<div class="refsect2">
-<a name="id-1.2.20.5.2.2"></a><h3>Element Pads</h3>
+<a name="id-1.2.20.7.4.2"></a><h3>Element Pads</h3>
<div class="variablelist"><table border="0" class="variablelist">
<colgroup>
<col align="left" valign="top">
@@ -167,21 +195,8 @@
<div class="refsect1">
<a name="gst-plugins-bad-plugins-cvlaplace.other_details"></a><h2>Types and Values</h2>
<div class="refsect2">
-<a name="GstCvLaplace"></a><h3>struct GstCvLaplace</h3>
-<pre class="programlisting">struct GstCvLaplace {
- GstOpencvVideoFilter element;
-
- gint aperture_size;
- gdouble scale;
- gdouble shift;
- gboolean mask;
-
- IplImage *intermediary_img;
- IplImage *cvGray;
- IplImage *Laplace;
- IplImage *CLaplace;
-};
-</pre>
+<a name="GstCvLaplace-struct"></a><h3>struct GstCvLaplace</h3>
+<pre class="programlisting">struct GstCvLaplace;</pre>
</div>
</div>
<div class="refsect1">
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-cvsmooth.html b/docs/plugins/html/gst-plugins-bad-plugins-cvsmooth.html
index 1b3e9af..8f1476d 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-cvsmooth.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-cvsmooth.html
@@ -15,7 +15,8 @@
<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="5"><tr valign="middle">
<td width="100%" align="left" class="shortcuts">
<a href="#" class="shortcut">Top</a><span id="nav_description"> <span class="dim">|</span>
- <a href="#gst-plugins-bad-plugins-cvsmooth.description" class="shortcut">Description</a></span><span id="nav_properties"> <span class="dim">|</span>
+ <a href="#gst-plugins-bad-plugins-cvsmooth.description" class="shortcut">Description</a></span><span id="nav_hierarchy"> <span class="dim">|</span>
+ <a href="#gst-plugins-bad-plugins-cvsmooth.object-hierarchy" class="shortcut">Object Hierarchy</a></span><span id="nav_properties"> <span class="dim">|</span>
<a href="#gst-plugins-bad-plugins-cvsmooth.properties" class="shortcut">Properties</a></span>
</td>
<td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
@@ -89,7 +90,7 @@
</tbody>
</table></div>
</div>
-<div class="refsect1">
+<a name="GstCvSmooth"></a><div class="refsect1">
<a name="gst-plugins-bad-plugins-cvsmooth.other"></a><h2>Types and Values</h2>
<div class="informaltable"><table class="informaltable" width="100%" border="0">
<colgroup>
@@ -98,16 +99,43 @@
</colgroup>
<tbody><tr>
<td class="datatype_keyword">struct</td>
-<td class="function_name"><a class="link" href="gst-plugins-bad-plugins-cvsmooth.html#GstCvSmooth" title="struct GstCvSmooth">GstCvSmooth</a></td>
+<td class="function_name"><a class="link" href="gst-plugins-bad-plugins-cvsmooth.html#GstCvSmooth-struct" title="struct GstCvSmooth">GstCvSmooth</a></td>
</tr></tbody>
</table></div>
</div>
<div class="refsect1">
+<a name="gst-plugins-bad-plugins-cvsmooth.object-hierarchy"></a><h2>Object Hierarchy</h2>
+<pre class="screen"> <a href="/usr/share/gtk-doc/html/gobjectgobject-The-Base-Object-Type.html#GObject-struct">GObject</a>
+ <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gobjectgobject-The-Base-Object-Type.html#GInitiallyUnowned">GInitiallyUnowned</a>
+ <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gstreamer-1.0GstObject.html#GstObject-struct">GstObject</a>
+ <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gstreamer-1.0GstElement.html#GstElement-struct">GstElement</a>
+ <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gstreamer-libs-1.0GstBaseTransform.html#GstBaseTransform-struct">GstBaseTransform</a>
+ <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gst-plugins-base-libs-1.0gst-plugins-base-libs-gstvideofilter.html#GstVideoFilter-struct">GstVideoFilter</a>
+ <span class="lineart">╰──</span> GstOpencvVideoFilter
+ <span class="lineart">╰──</span> GstCvSmooth
+</pre>
+</div>
+<div class="refsect1">
<a name="gst-plugins-bad-plugins-cvsmooth.description"></a><h2>Description</h2>
+<p>Smooths the image using thes cvSmooth OpenCV function.</p>
+<div class="refsect2">
+<a name="id-1.2.21.7.3"></a><h3>Example launch line</h3>
+<div class="informalexample">
+ <table class="listing_frame" border="0" cellpadding="0" cellspacing="0">
+ <tbody>
+ <tr>
+ <td class="listing_lines" align="right"><pre>1</pre></td>
+ <td class="listing_code"><pre class="programlisting">gst<span class="gtkdoc opt">-</span>launch<span class="gtkdoc opt">-</span><span class="number">1.0</span> videotestsrc <span class="gtkdoc opt">!</span> cvsmooth <span class="gtkdoc opt">!</span> videoconvert <span class="gtkdoc opt">!</span> autovideosink</pre></td>
+ </tr>
+ </tbody>
+ </table>
+</div>
+
+</div>
<div class="refsynopsisdiv">
<h2>Synopsis</h2>
<div class="refsect2">
-<a name="id-1.2.21.5.2.1"></a><h3>Element Information</h3>
+<a name="id-1.2.21.7.4.1"></a><h3>Element Information</h3>
<div class="variablelist"><table border="0" class="variablelist">
<colgroup>
<col align="left" valign="top">
@@ -133,7 +161,7 @@
</div>
<hr>
<div class="refsect2">
-<a name="id-1.2.21.5.2.2"></a><h3>Element Pads</h3>
+<a name="id-1.2.21.7.4.2"></a><h3>Element Pads</h3>
<div class="variablelist"><table border="0" class="variablelist">
<colgroup>
<col align="left" valign="top">
@@ -208,18 +236,8 @@
<div class="refsect1">
<a name="gst-plugins-bad-plugins-cvsmooth.other_details"></a><h2>Types and Values</h2>
<div class="refsect2">
-<a name="GstCvSmooth"></a><h3>struct GstCvSmooth</h3>
-<pre class="programlisting">struct GstCvSmooth {
- GstOpencvVideoFilter element;
-
- gint type;
-
- gint width;
- gint height;
- gdouble colorsigma;
- gdouble spatialsigma;
-};
-</pre>
+<a name="GstCvSmooth-struct"></a><h3>struct GstCvSmooth</h3>
+<pre class="programlisting">struct GstCvSmooth;</pre>
</div>
</div>
<div class="refsect1">
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-cvsobel.html b/docs/plugins/html/gst-plugins-bad-plugins-cvsobel.html
index f18a753..ae72eb7 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-cvsobel.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-cvsobel.html
@@ -15,7 +15,8 @@
<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="5"><tr valign="middle">
<td width="100%" align="left" class="shortcuts">
<a href="#" class="shortcut">Top</a><span id="nav_description"> <span class="dim">|</span>
- <a href="#gst-plugins-bad-plugins-cvsobel.description" class="shortcut">Description</a></span><span id="nav_properties"> <span class="dim">|</span>
+ <a href="#gst-plugins-bad-plugins-cvsobel.description" class="shortcut">Description</a></span><span id="nav_hierarchy"> <span class="dim">|</span>
+ <a href="#gst-plugins-bad-plugins-cvsobel.object-hierarchy" class="shortcut">Object Hierarchy</a></span><span id="nav_properties"> <span class="dim">|</span>
<a href="#gst-plugins-bad-plugins-cvsobel.properties" class="shortcut">Properties</a></span>
</td>
<td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
@@ -64,7 +65,7 @@
</tbody>
</table></div>
</div>
-<div class="refsect1">
+<a name="GstCvSobel"></a><div class="refsect1">
<a name="gst-plugins-bad-plugins-cvsobel.other"></a><h2>Types and Values</h2>
<div class="informaltable"><table class="informaltable" width="100%" border="0">
<colgroup>
@@ -73,16 +74,43 @@
</colgroup>
<tbody><tr>
<td class="datatype_keyword">struct</td>
-<td class="function_name"><a class="link" href="gst-plugins-bad-plugins-cvsobel.html#GstCvSobel" title="struct GstCvSobel">GstCvSobel</a></td>
+<td class="function_name"><a class="link" href="gst-plugins-bad-plugins-cvsobel.html#GstCvSobel-struct" title="struct GstCvSobel">GstCvSobel</a></td>
</tr></tbody>
</table></div>
</div>
<div class="refsect1">
+<a name="gst-plugins-bad-plugins-cvsobel.object-hierarchy"></a><h2>Object Hierarchy</h2>
+<pre class="screen"> <a href="/usr/share/gtk-doc/html/gobjectgobject-The-Base-Object-Type.html#GObject-struct">GObject</a>
+ <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gobjectgobject-The-Base-Object-Type.html#GInitiallyUnowned">GInitiallyUnowned</a>
+ <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gstreamer-1.0GstObject.html#GstObject-struct">GstObject</a>
+ <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gstreamer-1.0GstElement.html#GstElement-struct">GstElement</a>
+ <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gstreamer-libs-1.0GstBaseTransform.html#GstBaseTransform-struct">GstBaseTransform</a>
+ <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gst-plugins-base-libs-1.0gst-plugins-base-libs-gstvideofilter.html#GstVideoFilter-struct">GstVideoFilter</a>
+ <span class="lineart">╰──</span> GstOpencvVideoFilter
+ <span class="lineart">╰──</span> GstCvSobel
+</pre>
+</div>
+<div class="refsect1">
<a name="gst-plugins-bad-plugins-cvsobel.description"></a><h2>Description</h2>
+<p>Applies the cvSobel OpenCV function to the image.</p>
+<div class="refsect2">
+<a name="id-1.2.22.7.3"></a><h3>Example launch line</h3>
+<div class="informalexample">
+ <table class="listing_frame" border="0" cellpadding="0" cellspacing="0">
+ <tbody>
+ <tr>
+ <td class="listing_lines" align="right"><pre>1</pre></td>
+ <td class="listing_code"><pre class="programlisting">gst<span class="gtkdoc opt">-</span>launch<span class="gtkdoc opt">-</span><span class="number">1.0</span> videotestsrc <span class="gtkdoc opt">!</span> cvsobel <span class="gtkdoc opt">!</span> videoconvert <span class="gtkdoc opt">!</span> autovideosink</pre></td>
+ </tr>
+ </tbody>
+ </table>
+</div>
+
+</div>
<div class="refsynopsisdiv">
<h2>Synopsis</h2>
<div class="refsect2">
-<a name="id-1.2.22.5.2.1"></a><h3>Element Information</h3>
+<a name="id-1.2.22.7.4.1"></a><h3>Element Information</h3>
<div class="variablelist"><table border="0" class="variablelist">
<colgroup>
<col align="left" valign="top">
@@ -108,7 +136,7 @@
</div>
<hr>
<div class="refsect2">
-<a name="id-1.2.22.5.2.2"></a><h3>Element Pads</h3>
+<a name="id-1.2.22.7.4.2"></a><h3>Element Pads</h3>
<div class="variablelist"><table border="0" class="variablelist">
<colgroup>
<col align="left" valign="top">
@@ -167,20 +195,8 @@
<div class="refsect1">
<a name="gst-plugins-bad-plugins-cvsobel.other_details"></a><h2>Types and Values</h2>
<div class="refsect2">
-<a name="GstCvSobel"></a><h3>struct GstCvSobel</h3>
-<pre class="programlisting">struct GstCvSobel {
- GstOpencvVideoFilter element;
-
- gint x_order;
- gint y_order;
- gint aperture_size;
- gboolean mask;
-
- IplImage *cvCSobel;
- IplImage *cvGray;
- IplImage *cvSobel;
-};
-</pre>
+<a name="GstCvSobel-struct"></a><h3>struct GstCvSobel</h3>
+<pre class="programlisting">struct GstCvSobel;</pre>
</div>
</div>
<div class="refsect1">
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-dtmfdetect.html b/docs/plugins/html/gst-plugins-bad-plugins-dtmfdetect.html
index 29c6103..43092e6 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-dtmfdetect.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-dtmfdetect.html
@@ -28,7 +28,7 @@
<div class="refnamediv"><table width="100%"><tr>
<td valign="top">
<h2><span class="refentrytitle"><a name="gst-plugins-bad-plugins-dtmfdetect.top_of_page"></a>dtmfdetect</span></h2>
-<p>dtmfdetect</p>
+<p>dtmfdetect — Detects DTMF tones</p>
</td>
<td class="gallery_image" valign="top" align="right"></td>
</tr></table></div>
@@ -57,10 +57,31 @@
</div>
<div class="refsect1">
<a name="gst-plugins-bad-plugins-dtmfdetect.description"></a><h2>Description</h2>
+<p>This element will detect DTMF tones and emit messages.</p>
+<p>The message is called <code class="classname">"dtmf-event"</code> and has
+the following fields:</p>
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
+<li class="listitem"><p>
+ gint <code class="classname">type</code> (0-1):
+ The application uses this field to specify which of the two methods
+ specified in RFC 2833 to use. The value should be 0 for tones and 1 for
+ named events. Tones are specified by their frequencies and events are
+ specfied by their number. This element can only take events as input.
+ Do not confuse with "method" which specified the output.
+ </p></li>
+<li class="listitem"><p>
+ gint <code class="classname">number</code> (0-16):
+ The event number.
+ </p></li>
+<li class="listitem"><p>
+ gint <code class="classname">method</code> (2):
+ This field will always been 2 (ie sound) from this element.
+ </p></li>
+</ul></div>
<div class="refsynopsisdiv">
<h2>Synopsis</h2>
<div class="refsect2">
-<a name="id-1.2.27.6.2.1"></a><h3>Element Information</h3>
+<a name="id-1.2.27.6.5.1"></a><h3>Element Information</h3>
<div class="variablelist"><table border="0" class="variablelist">
<colgroup>
<col align="left" valign="top">
@@ -86,7 +107,7 @@
</div>
<hr>
<div class="refsect2">
-<a name="id-1.2.27.6.2.2"></a><h3>Element Pads</h3>
+<a name="id-1.2.27.6.5.2"></a><h3>Element Pads</h3>
<div class="variablelist"><table border="0" class="variablelist">
<colgroup>
<col align="left" valign="top">
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-dtsdec.html b/docs/plugins/html/gst-plugins-bad-plugins-dtsdec.html
index 5924ce1..7b494d7 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-dtsdec.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-dtsdec.html
@@ -73,10 +73,36 @@
</div>
<div class="refsect1">
<a name="gst-plugins-bad-plugins-dtsdec.description"></a><h2>Description</h2>
+<p>Digital Theatre System (DTS) audio decoder</p>
+<div class="refsect2">
+<a name="id-1.2.28.7.3"></a><h3>Example launch line</h3>
+<div class="informalexample">
+ <table class="listing_frame" border="0" cellpadding="0" cellspacing="0">
+ <tbody>
+ <tr>
+ <td class="listing_lines" align="right"><pre>1</pre></td>
+ <td class="listing_code"><pre class="programlisting">gst<span class="gtkdoc opt">-</span>launch<span class="gtkdoc opt">-</span><span class="number">1.0</span> dvdreadsrc title<span class="gtkdoc opt">=</span><span class="number">1</span> <span class="gtkdoc opt">!</span> mpegpsdemux <span class="gtkdoc opt">!</span> dtsdec <span class="gtkdoc opt">!</span> audioresample <span class="gtkdoc opt">!</span> audioconvert <span class="gtkdoc opt">!</span> alsasink</pre></td>
+ </tr>
+ </tbody>
+ </table>
+</div>
+ Play a DTS audio track from a dvd.
+<div class="informalexample">
+ <table class="listing_frame" border="0" cellpadding="0" cellspacing="0">
+ <tbody>
+ <tr>
+ <td class="listing_lines" align="right"><pre>1</pre></td>
+ <td class="listing_code"><pre class="programlisting">gst<span class="gtkdoc opt">-</span>launch<span class="gtkdoc opt">-</span><span class="number">1.0</span> filesrc location<span class="gtkdoc opt">=</span>abc<span class="gtkdoc opt">.</span>dts <span class="gtkdoc opt">!</span> dtsdec <span class="gtkdoc opt">!</span> audioresample <span class="gtkdoc opt">!</span> audioconvert <span class="gtkdoc opt">!</span> alsasink</pre></td>
+ </tr>
+ </tbody>
+ </table>
+</div>
+ Decode a standalone file and play it.
+</div>
<div class="refsynopsisdiv">
<h2>Synopsis</h2>
<div class="refsect2">
-<a name="id-1.2.28.7.2.1"></a><h3>Element Information</h3>
+<a name="id-1.2.28.7.4.1"></a><h3>Element Information</h3>
<div class="variablelist"><table border="0" class="variablelist">
<colgroup>
<col align="left" valign="top">
@@ -102,7 +128,7 @@
</div>
<hr>
<div class="refsect2">
-<a name="id-1.2.28.7.2.2"></a><h3>Element Pads</h3>
+<a name="id-1.2.28.7.4.2"></a><h3>Element Pads</h3>
<div class="variablelist"><table border="0" class="variablelist">
<colgroup>
<col align="left" valign="top">
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-dvbsrc.html b/docs/plugins/html/gst-plugins-bad-plugins-dvbsrc.html
index d431f36..a71cc8d 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-dvbsrc.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-dvbsrc.html
@@ -366,10 +366,70 @@
</div>
<div class="refsect1">
<a name="gst-plugins-bad-plugins-dvbsrc.description"></a><h2>Description</h2>
+<p>dvbsrc can be used to capture media from DVB cards. Supported DTV
+broadcasting standards include DVB-T/C/S, ATSC, ISDB-T and DTMB.</p>
+<div class="refsect2">
+<a name="id-1.2.29.8.3"></a><h3>Example launch line</h3>
+<div class="informalexample">
+ <table class="listing_frame" border="0" cellpadding="0" cellspacing="0">
+ <tbody>
+ <tr>
+ <td class="listing_lines" align="right"><pre>1</pre></td>
+ <td class="listing_code"><pre class="programlisting">gst<span class="gtkdoc opt">-</span>launch<span class="gtkdoc opt">-</span><span class="number">1.0</span> dvbsrc modulation<span class="gtkdoc opt">=</span><span class="string">"QAM 64"</span> trans<span class="gtkdoc opt">-</span>mode<span class="gtkdoc opt">=</span><span class="number">8</span>k bandwidth<span class="gtkdoc opt">=</span><span class="number">8</span> frequency<span class="gtkdoc opt">=</span><span class="number">514000000</span> code<span class="gtkdoc opt">-</span>rate<span class="gtkdoc opt">-</span>lp<span class="gtkdoc opt">=</span>AUTO code<span class="gtkdoc opt">-</span>rate<span class="gtkdoc opt">-</span>hp<span class="gtkdoc opt">=</span><span class="number">2</span><span class="gtkdoc opt">/</span><span class="number">3</span> guard<span class="gtkdoc opt">=</span><span class="number">4</span> hierarchy<span class="gtkdoc opt">=</span><span class="number">0</span> <span class="gtkdoc opt">!</span> mpegtsdemux name<span class="gtkdoc opt">=</span>demux <span class="gtkdoc opt">!</span> queue max<span class="gtkdoc opt">-</span>size<span class="gtkdoc opt">-</span>buffers<span class="gtkdoc opt">=</span><span class="number">0</span> max<span class="gtkdoc opt">-</span>size<span class="gtkdoc opt">-</span>time<span class="gtkdoc opt">=</span><span class="number">0</span> <span class="gtkdoc opt">!</span> mpeg2dec <span class="gtkdoc opt">!</span> xvimagesink demux<span class="gtkdoc opt">. !</span> queue max<span class="gtkdoc opt">-</span>size<span class="gtkdoc opt">-</span>buffers<span class="gtkdoc opt">=</span><span class="number">0</span> max<span class="gtkdoc opt">-</span>size<span class="gtkdoc opt">-</span>time<span class="gtkdoc opt">=</span><span class="number">0</span> <span class="gtkdoc opt">!</span> mad <span class="gtkdoc opt">!</span> alsasink</pre></td>
+ </tr>
+ </tbody>
+ </table>
+</div>
+ Captures a full transport stream from DVB card 0 that is a DVB-T card at tuned frequency 514000000 Hz with other parameters as seen in the pipeline and renders the first TV program on the transport stream.
+<div class="informalexample">
+ <table class="listing_frame" border="0" cellpadding="0" cellspacing="0">
+ <tbody>
+ <tr>
+ <td class="listing_lines" align="right"><pre>1</pre></td>
+ <td class="listing_code"><pre class="programlisting">gst<span class="gtkdoc opt">-</span>launch<span class="gtkdoc opt">-</span><span class="number">1.0</span> dvbsrc modulation<span class="gtkdoc opt">=</span><span class="string">"QAM 64"</span> trans<span class="gtkdoc opt">-</span>mode<span class="gtkdoc opt">=</span><span class="number">8</span>k bandwidth<span class="gtkdoc opt">=</span><span class="number">8</span> frequency<span class="gtkdoc opt">=</span><span class="number">514000000</span> code<span class="gtkdoc opt">-</span>rate<span class="gtkdoc opt">-</span>lp<span class="gtkdoc opt">=</span>AUTO code<span class="gtkdoc opt">-</span>rate<span class="gtkdoc opt">-</span>hp<span class="gtkdoc opt">=</span><span class="number">2</span><span class="gtkdoc opt">/</span><span class="number">3</span> guard<span class="gtkdoc opt">=</span><span class="number">4</span> hierarchy<span class="gtkdoc opt">=</span><span class="number">0</span> pids<span class="gtkdoc opt">=</span><span class="number">100</span><span class="gtkdoc opt">:</span><span class="number">256</span><span class="gtkdoc opt">:</span><span class="number">257</span> <span class="gtkdoc opt">!</span> mpegtsdemux name<span class="gtkdoc opt">=</span>demux <span class="gtkdoc opt">!</span> queue max<span class="gtkdoc opt">-</span>size<span class="gtkdoc opt">-</span>buffers<span class="gtkdoc opt">=</span><span class="number">0</span> max<span class="gtkdoc opt">-</span>size<span class="gtkdoc opt">-</span>time<span class="gtkdoc opt">=</span><span class="number">0</span> <span class="gtkdoc opt">!</span> mpeg2dec <span class="gtkdoc opt">!</span> xvimagesink demux<span class="gtkdoc opt">. !</span> queue max<span class="gtkdoc opt">-</span>size<span class="gtkdoc opt">-</span>buffers<span class="gtkdoc opt">=</span><span class="number">0</span> max<span class="gtkdoc opt">-</span>size<span class="gtkdoc opt">-</span>time<span class="gtkdoc opt">=</span><span class="number">0</span> <span class="gtkdoc opt">!</span> mad <span class="gtkdoc opt">!</span> alsasink</pre></td>
+ </tr>
+ </tbody>
+ </table>
+</div>
+ Captures and renders a transport stream from DVB card 0 that is a DVB-T card for a program at tuned frequency 514000000 Hz with PMT PID 100 and elementary stream PIDs of 256, 257 with other parameters as seen in the pipeline.
+<div class="informalexample">
+ <table class="listing_frame" border="0" cellpadding="0" cellspacing="0">
+ <tbody>
+ <tr>
+ <td class="listing_lines" align="right"><pre>1</pre></td>
+ <td class="listing_code"><pre class="programlisting">gst<span class="gtkdoc opt">-</span>launch<span class="gtkdoc opt">-</span><span class="number">1.0</span> dvbsrc polarity<span class="gtkdoc opt">=</span><span class="string">"h"</span> frequency<span class="gtkdoc opt">=</span><span class="number">11302000</span> symbol<span class="gtkdoc opt">-</span>rate<span class="gtkdoc opt">=</span><span class="number">27500</span> diseqc<span class="gtkdoc opt">-</span>source<span class="gtkdoc opt">=</span><span class="number">0</span> pids<span class="gtkdoc opt">=</span><span class="number">50</span><span class="gtkdoc opt">:</span><span class="number">102</span><span class="gtkdoc opt">:</span><span class="number">103</span> <span class="gtkdoc opt">!</span> mpegtsdemux name<span class="gtkdoc opt">=</span>demux <span class="gtkdoc opt">!</span> queue max<span class="gtkdoc opt">-</span>size<span class="gtkdoc opt">-</span>buffers<span class="gtkdoc opt">=</span><span class="number">0</span> max<span class="gtkdoc opt">-</span>size<span class="gtkdoc opt">-</span>time<span class="gtkdoc opt">=</span><span class="number">0</span> <span class="gtkdoc opt">!</span> mpeg2dec <span class="gtkdoc opt">!</span> xvimagesink demux<span class="gtkdoc opt">. !</span> queue max<span class="gtkdoc opt">-</span>size<span class="gtkdoc opt">-</span>buffers<span class="gtkdoc opt">=</span><span class="number">0</span> max<span class="gtkdoc opt">-</span>size<span class="gtkdoc opt">-</span>time<span class="gtkdoc opt">=</span><span class="number">0</span> <span class="gtkdoc opt">!</span> mad <span class="gtkdoc opt">!</span> alsasink</pre></td>
+ </tr>
+ </tbody>
+ </table>
+</div>
+ Captures and renders a transport stream from DVB card 0 that is a DVB-S card for a program at tuned frequency 11302000 kHz, symbol rate of 27500 kBd (kilo bauds) with PMT PID of 50 and elementary stream PIDs of 102 and 103.
+<div class="informalexample">
+ <table class="listing_frame" border="0" cellpadding="0" cellspacing="0">
+ <tbody>
+ <tr>
+ <td class="listing_lines" align="right"><pre>1</pre></td>
+ <td class="listing_code"><pre class="programlisting">gst<span class="gtkdoc opt">-</span>launch<span class="gtkdoc opt">-</span><span class="number">1.0</span> dvbsrc frequency<span class="gtkdoc opt">=</span><span class="number">515142857</span> guard<span class="gtkdoc opt">=</span><span class="number">16</span> trans<span class="gtkdoc opt">-</span>mode<span class="gtkdoc opt">=</span><span class="string">"8k"</span> isdbt<span class="gtkdoc opt">-</span>layer<span class="gtkdoc opt">-</span>enabled<span class="gtkdoc opt">=</span><span class="number">7</span> isdbt<span class="gtkdoc opt">-</span>partial<span class="gtkdoc opt">-</span>reception<span class="gtkdoc opt">=</span><span class="number">1</span> isdbt<span class="gtkdoc opt">-</span>layera<span class="gtkdoc opt">-</span>fec<span class="gtkdoc opt">=</span><span class="string">"2/3"</span> isdbt<span class="gtkdoc opt">-</span>layera<span class="gtkdoc opt">-</span>modulation<span class="gtkdoc opt">=</span><span class="string">"QPSK"</span> isdbt<span class="gtkdoc opt">-</span>layera<span class="gtkdoc opt">-</span>segment<span class="gtkdoc opt">-</span>count<span class="gtkdoc opt">=</span><span class="number">1</span> isdbt<span class="gtkdoc opt">-</span>layera<span class="gtkdoc opt">-</span>time<span class="gtkdoc opt">-</span>interleaving<span class="gtkdoc opt">=</span><span class="number">4</span> isdbt<span class="gtkdoc opt">-</span>layerb<span class="gtkdoc opt">-</span>fec<span class="gtkdoc opt">=</span><span class="string">"3/4"</span> isdbt<span class="gtkdoc opt">-</span>layerb<span class="gtkdoc opt">-</span>modulation<span class="gtkdoc opt">=</span><span class="string">"qam-64"</span> isdbt<span class="gtkdoc opt">-</span>layerb<span class="gtkdoc opt">-</span>segment<span class="gtkdoc opt">-</span>count<span class="gtkdoc opt">=</span><span class="number">12</span> isdbt<span class="gtkdoc opt">-</span>layerb<span class="gtkdoc opt">-</span>time<span class="gtkdoc opt">-</span>interleaving<span class="gtkdoc opt">=</span><span class="number">2</span> isdbt<span class="gtkdoc opt">-</span>layerc<span class="gtkdoc opt">-</span>fec<span class="gtkdoc opt">=</span><span class="string">"1/2"</span> isdbt<span class="gtkdoc opt">-</span>layerc<span class="gtkdoc opt">-</span>modulation<span class="gtkdoc opt">=</span><span class="string">"qam-64"</span> isdbt<span class="gtkdoc opt">-</span>layerc<span class="gtkdoc opt">-</span>segment<span class="gtkdoc opt">-</span>count<span class="gtkdoc opt">=</span><span class="number">0</span> isdbt<span class="gtkdoc opt">-</span>layerc<span class="gtkdoc opt">-</span>time<span class="gtkdoc opt">-</span>interleaving<span class="gtkdoc opt">=</span><span class="number">0</span> delsys<span class="gtkdoc opt">=</span><span class="string">"isdb-t"</span> <span class="gtkdoc opt">!</span> tsdemux <span class="gtkdoc opt">!</span> <span class="string">"video/x-h264"</span> <span class="gtkdoc opt">!</span> h264parse <span class="gtkdoc opt">!</span> queue <span class="gtkdoc opt">!</span> avdec_h264 <span class="gtkdoc opt">!</span> videoconvert <span class="gtkdoc opt">!</span> queue <span class="gtkdoc opt">!</span> autovideosink</pre></td>
+ </tr>
+ </tbody>
+ </table>
+</div>
+ Captures and renders the video track of TV Paraíba HD (Globo affiliate) in Campina Grande, Brazil. This is an ISDB-T (Brazilian ISDB-Tb variant) broadcast.
+<div class="informalexample">
+ <table class="listing_frame" border="0" cellpadding="0" cellspacing="0">
+ <tbody>
+ <tr>
+ <td class="listing_lines" align="right"><pre>1</pre></td>
+ <td class="listing_code"><pre class="programlisting">gst<span class="gtkdoc opt">-</span>launch<span class="gtkdoc opt">-</span><span class="number">1.0</span> dvbsrc frequency<span class="gtkdoc opt">=</span><span class="number">503000000</span> delsys<span class="gtkdoc opt">=</span><span class="string">"atsc"</span> modulation<span class="gtkdoc opt">=</span><span class="string">"8vsb"</span> pids<span class="gtkdoc opt">=</span><span class="number">48</span><span class="gtkdoc opt">:</span><span class="number">49</span><span class="gtkdoc opt">:</span><span class="number">52</span> <span class="gtkdoc opt">!</span> decodebin name<span class="gtkdoc opt">=</span>dec dec<span class="gtkdoc opt">. !</span> videoconvert <span class="gtkdoc opt">!</span> autovideosink dec<span class="gtkdoc opt">. !</span> audioconvert <span class="gtkdoc opt">!</span> autoaudiosink</pre></td>
+ </tr>
+ </tbody>
+ </table>
+</div>
+ Captures and renders KOFY-HD in San Jose, California. This is an ATSC broadcast, PMT ID 48, Audio/Video elementary stream PIDs 49 and 52 respectively.
+</div>
<div class="refsynopsisdiv">
<h2>Synopsis</h2>
<div class="refsect2">
-<a name="id-1.2.29.8.2.1"></a><h3>Element Information</h3>
+<a name="id-1.2.29.8.4.1"></a><h3>Element Information</h3>
<div class="variablelist"><table border="0" class="variablelist">
<colgroup>
<col align="left" valign="top">
@@ -396,7 +456,7 @@
</div>
<hr>
<div class="refsect2">
-<a name="id-1.2.29.8.2.2"></a><h3>Element Pads</h3>
+<a name="id-1.2.29.8.4.2"></a><h3>Element Pads</h3>
<div class="variablelist"><table border="0" class="variablelist">
<colgroup>
<col align="left" valign="top">
@@ -440,7 +500,7 @@
<div class="refsect2">
<a name="GstDvbSrc--bandwidth-hz"></a><h3>The <code class="literal">“bandwidth-hz”</code> property</h3>
<pre class="programlisting"> “bandwidth-hz” <a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint"><span class="type">guint</span></a></pre>
-<p>(DVB-T) Bandwidth in Hz.</p>
+<p>Channel bandwidth in Hz.</p>
<p>Flags: Read / Write</p>
<p>Default value: 8000000</p>
</div>
@@ -530,7 +590,7 @@
<div class="refsect2">
<a name="GstDvbSrc--pids"></a><h3>The <code class="literal">“pids”</code> property</h3>
<pre class="programlisting"> “pids” <a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *</pre>
-<p>Colon seperated list of pids (eg. 110:120).</p>
+<p>Colon-separated list of PIDs (eg. 110:120) to capture. ACT and CAT are automatically included but PMT should be added explicitly. Special value 8192 gets full MPEG-TS.</p>
<p>Flags: Write</p>
<p>Default value: "8192"</p>
</div>
@@ -878,6 +938,29 @@
<pre class="programlisting"><span class="returnvalue">void</span>
user_function (<a class="link" href="gst-plugins-bad-plugins-dvbsrc.html#GstDvbSrc"><span class="type">GstDvbSrc</span></a> *gstdvbsrc,
<a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a> user_data)</pre>
+<p>Signal emited when the tunner has successfully got a lock on a signal.</p>
+<div class="refsect3">
+<a name="GstDvbSrc-tuning-done.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody>
+<tr>
+<td class="parameter_name"><p>gstdvbsrc</p></td>
+<td class="parameter_description"><p>the element on which the signal is emitted</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>user_data</p></td>
+<td class="parameter_description"><p>user data set when the signal handler was connected.</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+</tbody>
+</table></div>
+</div>
<p>Flags: <a href="/usr/share/gtk-doc/html/gobjectgobject-Signals.html#G-SIGNAL-RUN-LAST:CAPS">Run Last</a></p>
</div>
<hr>
@@ -886,6 +969,30 @@
<pre class="programlisting"><span class="returnvalue">void</span>
user_function (<a class="link" href="gst-plugins-bad-plugins-dvbsrc.html#GstDvbSrc"><span class="type">GstDvbSrc</span></a> *gstdvbsrc,
<a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a> user_data)</pre>
+<p>Signal emited when the tunner failed to get a lock on the
+signal.</p>
+<div class="refsect3">
+<a name="GstDvbSrc-tuning-fail.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody>
+<tr>
+<td class="parameter_name"><p>gstdvbsrc</p></td>
+<td class="parameter_description"><p>the element on which the signal is emitted</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>user_data</p></td>
+<td class="parameter_description"><p>user data set when the signal handler was connected.</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+</tbody>
+</table></div>
+</div>
<p>Flags: <a href="/usr/share/gtk-doc/html/gobjectgobject-Signals.html#G-SIGNAL-RUN-LAST:CAPS">Run Last</a></p>
</div>
<hr>
@@ -894,6 +1001,30 @@
<pre class="programlisting"><span class="returnvalue">void</span>
user_function (<a class="link" href="gst-plugins-bad-plugins-dvbsrc.html#GstDvbSrc"><span class="type">GstDvbSrc</span></a> *gstdvbsrc,
<a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a> user_data)</pre>
+<p>Signal emited when the element first attempts to tune the
+frontend tunner to a given frequency.</p>
+<div class="refsect3">
+<a name="GstDvbSrc-tuning-start.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody>
+<tr>
+<td class="parameter_name"><p>gstdvbsrc</p></td>
+<td class="parameter_description"><p>the element on which the signal is emitted</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>user_data</p></td>
+<td class="parameter_description"><p>user data set when the signal handler was connected.</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+</tbody>
+</table></div>
+</div>
<p>Flags: <a href="/usr/share/gtk-doc/html/gobjectgobject-Signals.html#G-SIGNAL-RUN-LAST:CAPS">Run Last</a></p>
</div>
<hr>
@@ -902,6 +1033,30 @@
<pre class="programlisting"><span class="returnvalue">void</span>
user_function (<a class="link" href="gst-plugins-bad-plugins-dvbsrc.html#GstDvbSrc"><span class="type">GstDvbSrc</span></a> *gstdvbsrc,
<a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a> user_data)</pre>
+<p>Signal emited from the application to the element, instructing it
+to tune.</p>
+<div class="refsect3">
+<a name="GstDvbSrc-tune.parameters"></a><h4>Parameters</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
+<col width="150px" class="parameters_name">
+<col class="parameters_description">
+<col width="200px" class="parameters_annotations">
+</colgroup>
+<tbody>
+<tr>
+<td class="parameter_name"><p>gstdvbsrc</p></td>
+<td class="parameter_description"><p>the element on which the signal is emitted</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+<tr>
+<td class="parameter_name"><p>user_data</p></td>
+<td class="parameter_description"><p>user data set when the signal handler was connected.</p></td>
+<td class="parameter_annotations"> </td>
+</tr>
+</tbody>
+</table></div>
+</div>
<p>Flags: <a href="/usr/share/gtk-doc/html/gobjectgobject-Signals.html#G-SIGNAL-ACTION:CAPS">Action</a></p>
</div>
</div>
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-edgedetect.html b/docs/plugins/html/gst-plugins-bad-plugins-edgedetect.html
index 9e781a7..5802825 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-edgedetect.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-edgedetect.html
@@ -15,7 +15,9 @@
<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="5"><tr valign="middle">
<td width="100%" align="left" class="shortcuts">
<a href="#" class="shortcut">Top</a><span id="nav_description"> <span class="dim">|</span>
- <a href="#gst-plugins-bad-plugins-edgedetect.description" class="shortcut">Description</a></span>
+ <a href="#gst-plugins-bad-plugins-edgedetect.description" class="shortcut">Description</a></span><span id="nav_hierarchy"> <span class="dim">|</span>
+ <a href="#gst-plugins-bad-plugins-edgedetect.object-hierarchy" class="shortcut">Object Hierarchy</a></span><span id="nav_properties"> <span class="dim">|</span>
+ <a href="#gst-plugins-bad-plugins-edgedetect.properties" class="shortcut">Properties</a></span>
</td>
<td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
<td><a accesskey="u" href="ch01.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
@@ -32,11 +34,83 @@
<td class="gallery_image" valign="top" align="right"></td>
</tr></table></div>
<div class="refsect1">
+<a name="gst-plugins-bad-plugins-edgedetect.properties"></a><h2>Properties</h2>
+<div class="informaltable"><table class="informaltable" border="0">
+<colgroup>
+<col width="150px" class="properties_type">
+<col width="300px" class="properties_name">
+<col width="200px" class="properties_flags">
+</colgroup>
+<tbody>
+<tr>
+<td class="property_type"><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gint"><span class="type">gint</span></a></td>
+<td class="property_name"><a class="link" href="gst-plugins-bad-plugins-edgedetect.html#GstEdgeDetect--aperture" title="The “aperture” property">aperture</a></td>
+<td class="property_flags">Read / Write</td>
+</tr>
+<tr>
+<td class="property_type"><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a></td>
+<td class="property_name"><a class="link" href="gst-plugins-bad-plugins-edgedetect.html#GstEdgeDetect--mask" title="The “mask” property">mask</a></td>
+<td class="property_flags">Read / Write</td>
+</tr>
+<tr>
+<td class="property_type"><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gint"><span class="type">gint</span></a></td>
+<td class="property_name"><a class="link" href="gst-plugins-bad-plugins-edgedetect.html#GstEdgeDetect--threshold1" title="The “threshold1” property">threshold1</a></td>
+<td class="property_flags">Read / Write</td>
+</tr>
+<tr>
+<td class="property_type"><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gint"><span class="type">gint</span></a></td>
+<td class="property_name"><a class="link" href="gst-plugins-bad-plugins-edgedetect.html#GstEdgeDetect--threshold2" title="The “threshold2” property">threshold2</a></td>
+<td class="property_flags">Read / Write</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<a name="GstEdgeDetect"></a><div class="refsect1">
+<a name="gst-plugins-bad-plugins-edgedetect.other"></a><h2>Types and Values</h2>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
+<col width="150px" class="name">
+<col class="description">
+</colgroup>
+<tbody><tr>
+<td class="datatype_keyword">struct</td>
+<td class="function_name"><a class="link" href="gst-plugins-bad-plugins-edgedetect.html#GstEdgeDetect-struct" title="struct GstEdgeDetect">GstEdgeDetect</a></td>
+</tr></tbody>
+</table></div>
+</div>
+<div class="refsect1">
+<a name="gst-plugins-bad-plugins-edgedetect.object-hierarchy"></a><h2>Object Hierarchy</h2>
+<pre class="screen"> <a href="/usr/share/gtk-doc/html/gobjectgobject-The-Base-Object-Type.html#GObject-struct">GObject</a>
+ <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gobjectgobject-The-Base-Object-Type.html#GInitiallyUnowned">GInitiallyUnowned</a>
+ <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gstreamer-1.0GstObject.html#GstObject-struct">GstObject</a>
+ <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gstreamer-1.0GstElement.html#GstElement-struct">GstElement</a>
+ <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gstreamer-libs-1.0GstBaseTransform.html#GstBaseTransform-struct">GstBaseTransform</a>
+ <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gst-plugins-base-libs-1.0gst-plugins-base-libs-gstvideofilter.html#GstVideoFilter-struct">GstVideoFilter</a>
+ <span class="lineart">╰──</span> GstOpencvVideoFilter
+ <span class="lineart">╰──</span> GstEdgeDetect
+</pre>
+</div>
+<div class="refsect1">
<a name="gst-plugins-bad-plugins-edgedetect.description"></a><h2>Description</h2>
+<p>Performs canny edge detection on videos and images</p>
+<div class="refsect2">
+<a name="id-1.2.32.7.3"></a><h3>Example launch line</h3>
+<div class="informalexample">
+ <table class="listing_frame" border="0" cellpadding="0" cellspacing="0">
+ <tbody>
+ <tr>
+ <td class="listing_lines" align="right"><pre>1</pre></td>
+ <td class="listing_code"><pre class="programlisting">gst<span class="gtkdoc opt">-</span>launch<span class="gtkdoc opt">-</span><span class="number">1.0</span> videotestsrc <span class="gtkdoc opt">!</span> decodebin <span class="gtkdoc opt">!</span> videoconvert <span class="gtkdoc opt">!</span> edgedetect <span class="gtkdoc opt">!</span> videoconvert <span class="gtkdoc opt">!</span> xvimagesink</pre></td>
+ </tr>
+ </tbody>
+ </table>
+</div>
+
+</div>
<div class="refsynopsisdiv">
<h2>Synopsis</h2>
<div class="refsect2">
-<a name="id-1.2.32.3.2.1"></a><h3>Element Information</h3>
+<a name="id-1.2.32.7.4.1"></a><h3>Element Information</h3>
<div class="variablelist"><table border="0" class="variablelist">
<colgroup>
<col align="left" valign="top">
@@ -62,7 +136,7 @@
</div>
<hr>
<div class="refsect2">
-<a name="id-1.2.32.3.2.2"></a><h3>Element Pads</h3>
+<a name="id-1.2.32.7.4.2"></a><h3>Element Pads</h3>
<div class="variablelist"><table border="0" class="variablelist">
<colgroup>
<col align="left" valign="top">
@@ -120,6 +194,47 @@
</div>
<div class="refsect1">
<a name="gst-plugins-bad-plugins-edgedetect.other_details"></a><h2>Types and Values</h2>
+<div class="refsect2">
+<a name="GstEdgeDetect-struct"></a><h3>struct GstEdgeDetect</h3>
+<pre class="programlisting">struct GstEdgeDetect;</pre>
+</div>
+</div>
+<div class="refsect1">
+<a name="gst-plugins-bad-plugins-edgedetect.property-details"></a><h2>Property Details</h2>
+<div class="refsect2">
+<a name="GstEdgeDetect--aperture"></a><h3>The <code class="literal">“aperture”</code> property</h3>
+<pre class="programlisting"> “aperture” <a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gint"><span class="type">gint</span></a></pre>
+<p>Aperture size for Sobel operator (Must be either 3, 5 or 7.</p>
+<p>Flags: Read / Write</p>
+<p>Allowed values: [3,7]</p>
+<p>Default value: 3</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstEdgeDetect--mask"></a><h3>The <code class="literal">“mask”</code> property</h3>
+<pre class="programlisting"> “mask” <a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a></pre>
+<p>Sets whether the detected edges should be used as a mask on the original input or not.</p>
+<p>Flags: Read / Write</p>
+<p>Default value: TRUE</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstEdgeDetect--threshold1"></a><h3>The <code class="literal">“threshold1”</code> property</h3>
+<pre class="programlisting"> “threshold1” <a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gint"><span class="type">gint</span></a></pre>
+<p>Threshold value for canny edge detection.</p>
+<p>Flags: Read / Write</p>
+<p>Allowed values: [0,1000]</p>
+<p>Default value: 50</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstEdgeDetect--threshold2"></a><h3>The <code class="literal">“threshold2”</code> property</h3>
+<pre class="programlisting"> “threshold2” <a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gint"><span class="type">gint</span></a></pre>
+<p>Second threshold value for canny edge detection.</p>
+<p>Flags: Read / Write</p>
+<p>Allowed values: [0,1000]</p>
+<p>Default value: 150</p>
+</div>
</div>
</div>
<div class="footer">
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-faac.html b/docs/plugins/html/gst-plugins-bad-plugins-faac.html
index 7c1c563..faac749 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-faac.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-faac.html
@@ -117,10 +117,25 @@
</div>
<div class="refsect1">
<a name="gst-plugins-bad-plugins-faac.description"></a><h2>Description</h2>
+<p>faac encodes raw audio to AAC (MPEG-4 part 3) streams.</p>
+<div class="refsect2">
+<a name="id-1.2.33.8.3"></a><h3>Example launch line</h3>
+<div class="informalexample">
+ <table class="listing_frame" border="0" cellpadding="0" cellspacing="0">
+ <tbody>
+ <tr>
+ <td class="listing_lines" align="right"><pre>1</pre></td>
+ <td class="listing_code"><pre class="programlisting">gst<span class="gtkdoc opt">-</span>launch<span class="gtkdoc opt">-</span><span class="number">1.0</span> audiotestsrc wave<span class="gtkdoc opt">=</span>sine num<span class="gtkdoc opt">-</span>buffers<span class="gtkdoc opt">=</span><span class="number">100</span> <span class="gtkdoc opt">!</span> audioconvert <span class="gtkdoc opt">!</span> faac <span class="gtkdoc opt">!</span> matroskamux <span class="gtkdoc opt">!</span> filesink location<span class="gtkdoc opt">=</span>sine<span class="gtkdoc opt">.</span>mkv</pre></td>
+ </tr>
+ </tbody>
+ </table>
+</div>
+ Encode a sine beep as aac and write to matroska container.
+</div>
<div class="refsynopsisdiv">
<h2>Synopsis</h2>
<div class="refsect2">
-<a name="id-1.2.33.8.2.1"></a><h3>Element Information</h3>
+<a name="id-1.2.33.8.4.1"></a><h3>Element Information</h3>
<div class="variablelist"><table border="0" class="variablelist">
<colgroup>
<col align="left" valign="top">
@@ -146,7 +161,7 @@
</div>
<hr>
<div class="refsect2">
-<a name="id-1.2.33.8.2.2"></a><h3>Element Pads</h3>
+<a name="id-1.2.33.8.4.2"></a><h3>Element Pads</h3>
<div class="variablelist"><table border="0" class="variablelist">
<colgroup>
<col align="left" valign="top">
@@ -301,6 +316,10 @@
<p>Default value: VBR</p>
</div>
</div>
+<div class="refsect1">
+<a name="gst-plugins-bad-plugins-faac.see-also"></a><h2>See Also</h2>
+<p>faad</p>
+</div>
</div>
<div class="footer">
<hr>Generated by GTK-Doc V1.25</div>
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-faad.html b/docs/plugins/html/gst-plugins-bad-plugins-faad.html
index cb2f509..c066761 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-faad.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-faad.html
@@ -57,10 +57,36 @@
</div>
<div class="refsect1">
<a name="gst-plugins-bad-plugins-faad.description"></a><h2>Description</h2>
+<p>faad decodes AAC (MPEG-4 part 3) stream.</p>
+<div class="refsect2">
+<a name="id-1.2.34.6.3"></a><h3>Example launch lines</h3>
+<div class="informalexample">
+ <table class="listing_frame" border="0" cellpadding="0" cellspacing="0">
+ <tbody>
+ <tr>
+ <td class="listing_lines" align="right"><pre>1</pre></td>
+ <td class="listing_code"><pre class="programlisting">gst<span class="gtkdoc opt">-</span>launch<span class="gtkdoc opt">-</span><span class="number">1.0</span> filesrc location<span class="gtkdoc opt">=</span>example<span class="gtkdoc opt">.</span>mp4 <span class="gtkdoc opt">!</span> qtdemux <span class="gtkdoc opt">!</span> faad <span class="gtkdoc opt">!</span> audioconvert <span class="gtkdoc opt">!</span> audioresample <span class="gtkdoc opt">!</span> autoaudiosink</pre></td>
+ </tr>
+ </tbody>
+ </table>
+</div>
+ Play aac from mp4 file.
+<div class="informalexample">
+ <table class="listing_frame" border="0" cellpadding="0" cellspacing="0">
+ <tbody>
+ <tr>
+ <td class="listing_lines" align="right"><pre>1</pre></td>
+ <td class="listing_code"><pre class="programlisting">gst<span class="gtkdoc opt">-</span>launch<span class="gtkdoc opt">-</span><span class="number">1.0</span> filesrc location<span class="gtkdoc opt">=</span>example<span class="gtkdoc opt">.</span>adts <span class="gtkdoc opt">!</span> faad <span class="gtkdoc opt">!</span> audioconvert <span class="gtkdoc opt">!</span> audioresample <span class="gtkdoc opt">!</span> autoaudiosink</pre></td>
+ </tr>
+ </tbody>
+ </table>
+</div>
+ Play standalone aac bitstream.
+</div>
<div class="refsynopsisdiv">
<h2>Synopsis</h2>
<div class="refsect2">
-<a name="id-1.2.34.6.2.1"></a><h3>Element Information</h3>
+<a name="id-1.2.34.6.4.1"></a><h3>Element Information</h3>
<div class="variablelist"><table border="0" class="variablelist">
<colgroup>
<col align="left" valign="top">
@@ -86,7 +112,7 @@
</div>
<hr>
<div class="refsect2">
-<a name="id-1.2.34.6.2.2"></a><h3>Element Pads</h3>
+<a name="id-1.2.34.6.4.2"></a><h3>Element Pads</h3>
<div class="variablelist"><table border="0" class="variablelist">
<colgroup>
<col align="left" valign="top">
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-faceblur.html b/docs/plugins/html/gst-plugins-bad-plugins-faceblur.html
index 814a222..75812ff 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-faceblur.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-faceblur.html
@@ -15,7 +15,9 @@
<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="5"><tr valign="middle">
<td width="100%" align="left" class="shortcuts">
<a href="#" class="shortcut">Top</a><span id="nav_description"> <span class="dim">|</span>
- <a href="#gst-plugins-bad-plugins-faceblur.description" class="shortcut">Description</a></span>
+ <a href="#gst-plugins-bad-plugins-faceblur.description" class="shortcut">Description</a></span><span id="nav_hierarchy"> <span class="dim">|</span>
+ <a href="#gst-plugins-bad-plugins-faceblur.object-hierarchy" class="shortcut">Object Hierarchy</a></span><span id="nav_properties"> <span class="dim">|</span>
+ <a href="#gst-plugins-bad-plugins-faceblur.properties" class="shortcut">Properties</a></span>
</td>
<td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
<td><a accesskey="u" href="ch01.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
@@ -32,11 +34,94 @@
<td class="gallery_image" valign="top" align="right"></td>
</tr></table></div>
<div class="refsect1">
+<a name="gst-plugins-bad-plugins-faceblur.properties"></a><h2>Properties</h2>
+<div class="informaltable"><table class="informaltable" border="0">
+<colgroup>
+<col width="150px" class="properties_type">
+<col width="300px" class="properties_name">
+<col width="200px" class="properties_flags">
+</colgroup>
+<tbody>
+<tr>
+<td class="property_type">
+<a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *</td>
+<td class="property_name"><a class="link" href="gst-plugins-bad-plugins-faceblur.html#GstFaceBlur--profile" title="The “profile” property">profile</a></td>
+<td class="property_flags">Read / Write</td>
+</tr>
+<tr>
+<td class="property_type"><span class="type">GstOpencvFaceBlurFlags</span></td>
+<td class="property_name"><a class="link" href="gst-plugins-bad-plugins-faceblur.html#GstFaceBlur--flags" title="The “flags” property">flags</a></td>
+<td class="property_flags">Read / Write</td>
+</tr>
+<tr>
+<td class="property_type"><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gint"><span class="type">gint</span></a></td>
+<td class="property_name"><a class="link" href="gst-plugins-bad-plugins-faceblur.html#GstFaceBlur--min-neighbors" title="The “min-neighbors” property">min-neighbors</a></td>
+<td class="property_flags">Read / Write</td>
+</tr>
+<tr>
+<td class="property_type"><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gint"><span class="type">gint</span></a></td>
+<td class="property_name"><a class="link" href="gst-plugins-bad-plugins-faceblur.html#GstFaceBlur--min-size-height" title="The “min-size-height” property">min-size-height</a></td>
+<td class="property_flags">Read / Write</td>
+</tr>
+<tr>
+<td class="property_type"><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gint"><span class="type">gint</span></a></td>
+<td class="property_name"><a class="link" href="gst-plugins-bad-plugins-faceblur.html#GstFaceBlur--min-size-width" title="The “min-size-width” property">min-size-width</a></td>
+<td class="property_flags">Read / Write</td>
+</tr>
+<tr>
+<td class="property_type"><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gdouble"><span class="type">gdouble</span></a></td>
+<td class="property_name"><a class="link" href="gst-plugins-bad-plugins-faceblur.html#GstFaceBlur--scale-factor" title="The “scale-factor” property">scale-factor</a></td>
+<td class="property_flags">Read / Write</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<a name="GstFaceBlur"></a><div class="refsect1">
+<a name="gst-plugins-bad-plugins-faceblur.other"></a><h2>Types and Values</h2>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
+<col width="150px" class="name">
+<col class="description">
+</colgroup>
+<tbody><tr>
+<td class="datatype_keyword">struct</td>
+<td class="function_name"><a class="link" href="gst-plugins-bad-plugins-faceblur.html#GstFaceBlur-struct" title="struct GstFaceBlur">GstFaceBlur</a></td>
+</tr></tbody>
+</table></div>
+</div>
+<div class="refsect1">
+<a name="gst-plugins-bad-plugins-faceblur.object-hierarchy"></a><h2>Object Hierarchy</h2>
+<pre class="screen"> <a href="/usr/share/gtk-doc/html/gobjectgobject-The-Base-Object-Type.html#GObject-struct">GObject</a>
+ <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gobjectgobject-The-Base-Object-Type.html#GInitiallyUnowned">GInitiallyUnowned</a>
+ <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gstreamer-1.0GstObject.html#GstObject-struct">GstObject</a>
+ <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gstreamer-1.0GstElement.html#GstElement-struct">GstElement</a>
+ <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gstreamer-libs-1.0GstBaseTransform.html#GstBaseTransform-struct">GstBaseTransform</a>
+ <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gst-plugins-base-libs-1.0gst-plugins-base-libs-gstvideofilter.html#GstVideoFilter-struct">GstVideoFilter</a>
+ <span class="lineart">╰──</span> GstOpencvVideoFilter
+ <span class="lineart">╰──</span> GstFaceBlur
+</pre>
+</div>
+<div class="refsect1">
<a name="gst-plugins-bad-plugins-faceblur.description"></a><h2>Description</h2>
+<p>Blurs faces in images and videos.</p>
+<div class="refsect2">
+<a name="id-1.2.35.7.3"></a><h3>Example launch line</h3>
+<div class="informalexample">
+ <table class="listing_frame" border="0" cellpadding="0" cellspacing="0">
+ <tbody>
+ <tr>
+ <td class="listing_lines" align="right"><pre>1</pre></td>
+ <td class="listing_code"><pre class="programlisting">gst<span class="gtkdoc opt">-</span>launch<span class="gtkdoc opt">-</span><span class="number">1.0</span> autovideosrc <span class="gtkdoc opt">!</span> videoconvert <span class="gtkdoc opt">!</span> faceblur <span class="gtkdoc opt">!</span> videoconvert <span class="gtkdoc opt">!</span> autovideosink</pre></td>
+ </tr>
+ </tbody>
+ </table>
+</div>
+
+</div>
<div class="refsynopsisdiv">
<h2>Synopsis</h2>
<div class="refsect2">
-<a name="id-1.2.35.3.2.1"></a><h3>Element Information</h3>
+<a name="id-1.2.35.7.4.1"></a><h3>Element Information</h3>
<div class="variablelist"><table border="0" class="variablelist">
<colgroup>
<col align="left" valign="top">
@@ -62,7 +147,7 @@
</div>
<hr>
<div class="refsect2">
-<a name="id-1.2.35.3.2.2"></a><h3>Element Pads</h3>
+<a name="id-1.2.35.7.4.2"></a><h3>Element Pads</h3>
<div class="variablelist"><table border="0" class="variablelist">
<colgroup>
<col align="left" valign="top">
@@ -120,6 +205,64 @@
</div>
<div class="refsect1">
<a name="gst-plugins-bad-plugins-faceblur.other_details"></a><h2>Types and Values</h2>
+<div class="refsect2">
+<a name="GstFaceBlur-struct"></a><h3>struct GstFaceBlur</h3>
+<pre class="programlisting">struct GstFaceBlur;</pre>
+</div>
+</div>
+<div class="refsect1">
+<a name="gst-plugins-bad-plugins-faceblur.property-details"></a><h2>Property Details</h2>
+<div class="refsect2">
+<a name="GstFaceBlur--profile"></a><h3>The <code class="literal">“profile”</code> property</h3>
+<pre class="programlisting"> “profile” <a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *</pre>
+<p>Location of Haar cascade file to use for face blurion.</p>
+<p>Flags: Read / Write</p>
+<p>Default value: "/usr/share/opencv/haarcascades/haarcascade_frontalface_default.xml"</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstFaceBlur--flags"></a><h3>The <code class="literal">“flags”</code> property</h3>
+<pre class="programlisting"> “flags” <span class="type">GstOpencvFaceBlurFlags</span></pre>
+<p>Flags to cvHaarDetectObjects.</p>
+<p>Flags: Read / Write</p>
+<p>Default value: Do Canny edge detection to discard some regions</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstFaceBlur--min-neighbors"></a><h3>The <code class="literal">“min-neighbors”</code> property</h3>
+<pre class="programlisting"> “min-neighbors” <a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gint"><span class="type">gint</span></a></pre>
+<p>Minimum number (minus 1) of neighbor rectangles that makes up an object.</p>
+<p>Flags: Read / Write</p>
+<p>Allowed values: >= 0</p>
+<p>Default value: 3</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstFaceBlur--min-size-height"></a><h3>The <code class="literal">“min-size-height”</code> property</h3>
+<pre class="programlisting"> “min-size-height” <a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gint"><span class="type">gint</span></a></pre>
+<p>Minimum window height size.</p>
+<p>Flags: Read / Write</p>
+<p>Allowed values: >= 0</p>
+<p>Default value: 30</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstFaceBlur--min-size-width"></a><h3>The <code class="literal">“min-size-width”</code> property</h3>
+<pre class="programlisting"> “min-size-width” <a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gint"><span class="type">gint</span></a></pre>
+<p>Minimum window width size.</p>
+<p>Flags: Read / Write</p>
+<p>Allowed values: >= 0</p>
+<p>Default value: 30</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstFaceBlur--scale-factor"></a><h3>The <code class="literal">“scale-factor”</code> property</h3>
+<pre class="programlisting"> “scale-factor” <a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gdouble"><span class="type">gdouble</span></a></pre>
+<p>Factor by which the windows is scaled after each scan.</p>
+<p>Flags: Read / Write</p>
+<p>Allowed values: [1.1,10]</p>
+<p>Default value: 1.25</p>
+</div>
</div>
</div>
<div class="footer">
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-facedetect.html b/docs/plugins/html/gst-plugins-bad-plugins-facedetect.html
index b997939..4562a01 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-facedetect.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-facedetect.html
@@ -15,7 +15,9 @@
<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="5"><tr valign="middle">
<td width="100%" align="left" class="shortcuts">
<a href="#" class="shortcut">Top</a><span id="nav_description"> <span class="dim">|</span>
- <a href="#gst-plugins-bad-plugins-facedetect.description" class="shortcut">Description</a></span>
+ <a href="#gst-plugins-bad-plugins-facedetect.description" class="shortcut">Description</a></span><span id="nav_hierarchy"> <span class="dim">|</span>
+ <a href="#gst-plugins-bad-plugins-facedetect.object-hierarchy" class="shortcut">Object Hierarchy</a></span><span id="nav_properties"> <span class="dim">|</span>
+ <a href="#gst-plugins-bad-plugins-facedetect.properties" class="shortcut">Properties</a></span>
</td>
<td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
<td><a accesskey="u" href="ch01.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
@@ -32,11 +34,149 @@
<td class="gallery_image" valign="top" align="right"></td>
</tr></table></div>
<div class="refsect1">
+<a name="gst-plugins-bad-plugins-facedetect.properties"></a><h2>Properties</h2>
+<div class="informaltable"><table class="informaltable" border="0">
+<colgroup>
+<col width="150px" class="properties_type">
+<col width="300px" class="properties_name">
+<col width="200px" class="properties_flags">
+</colgroup>
+<tbody>
+<tr>
+<td class="property_type"><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a></td>
+<td class="property_name"><a class="link" href="gst-plugins-bad-plugins-facedetect.html#GstFaceDetect--display" title="The “display” property">display</a></td>
+<td class="property_flags">Read / Write</td>
+</tr>
+<tr>
+<td class="property_type">
+<a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *</td>
+<td class="property_name"><a class="link" href="gst-plugins-bad-plugins-facedetect.html#GstFaceDetect--eyes-profile" title="The “eyes-profile” property">eyes-profile</a></td>
+<td class="property_flags">Read / Write</td>
+</tr>
+<tr>
+<td class="property_type"><span class="type">GstOpencvFaceDetectFlags</span></td>
+<td class="property_name"><a class="link" href="gst-plugins-bad-plugins-facedetect.html#GstFaceDetect--flags" title="The “flags” property">flags</a></td>
+<td class="property_flags">Read / Write</td>
+</tr>
+<tr>
+<td class="property_type"><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gint"><span class="type">gint</span></a></td>
+<td class="property_name"><a class="link" href="gst-plugins-bad-plugins-facedetect.html#GstFaceDetect--min-neighbors" title="The “min-neighbors” property">min-neighbors</a></td>
+<td class="property_flags">Read / Write</td>
+</tr>
+<tr>
+<td class="property_type"><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gint"><span class="type">gint</span></a></td>
+<td class="property_name"><a class="link" href="gst-plugins-bad-plugins-facedetect.html#GstFaceDetect--min-size-height" title="The “min-size-height” property">min-size-height</a></td>
+<td class="property_flags">Read / Write</td>
+</tr>
+<tr>
+<td class="property_type"><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gint"><span class="type">gint</span></a></td>
+<td class="property_name"><a class="link" href="gst-plugins-bad-plugins-facedetect.html#GstFaceDetect--min-size-width" title="The “min-size-width” property">min-size-width</a></td>
+<td class="property_flags">Read / Write</td>
+</tr>
+<tr>
+<td class="property_type">
+<a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *</td>
+<td class="property_name"><a class="link" href="gst-plugins-bad-plugins-facedetect.html#GstFaceDetect--mouth-profile" title="The “mouth-profile” property">mouth-profile</a></td>
+<td class="property_flags">Read / Write</td>
+</tr>
+<tr>
+<td class="property_type">
+<a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *</td>
+<td class="property_name"><a class="link" href="gst-plugins-bad-plugins-facedetect.html#GstFaceDetect--nose-profile" title="The “nose-profile” property">nose-profile</a></td>
+<td class="property_flags">Read / Write</td>
+</tr>
+<tr>
+<td class="property_type">
+<a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *</td>
+<td class="property_name"><a class="link" href="gst-plugins-bad-plugins-facedetect.html#GstFaceDetect--profile" title="The “profile” property">profile</a></td>
+<td class="property_flags">Read / Write</td>
+</tr>
+<tr>
+<td class="property_type"><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gdouble"><span class="type">gdouble</span></a></td>
+<td class="property_name"><a class="link" href="gst-plugins-bad-plugins-facedetect.html#GstFaceDetect--scale-factor" title="The “scale-factor” property">scale-factor</a></td>
+<td class="property_flags">Read / Write</td>
+</tr>
+<tr>
+<td class="property_type"><a class="link" href="gst-plugins-bad-plugins-facedetect.html#GstFaceDetectUpdates" title="enum GstFaceDetectUpdates"><span class="type">GstFaceDetectUpdates</span></a></td>
+<td class="property_name"><a class="link" href="gst-plugins-bad-plugins-facedetect.html#GstFaceDetect--updates" title="The “updates” property">updates</a></td>
+<td class="property_flags">Read / Write</td>
+</tr>
+<tr>
+<td class="property_type"><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gint"><span class="type">gint</span></a></td>
+<td class="property_name"><a class="link" href="gst-plugins-bad-plugins-facedetect.html#GstFaceDetect--min-stddev" title="The “min-stddev” property">min-stddev</a></td>
+<td class="property_flags">Read / Write</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<a name="GstFaceDetect"></a><div class="refsect1">
+<a name="gst-plugins-bad-plugins-facedetect.other"></a><h2>Types and Values</h2>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
+<col width="150px" class="name">
+<col class="description">
+</colgroup>
+<tbody>
+<tr>
+<td class="datatype_keyword">struct</td>
+<td class="function_name"><a class="link" href="gst-plugins-bad-plugins-facedetect.html#GstFaceDetect-struct" title="struct GstFaceDetect">GstFaceDetect</a></td>
+</tr>
+<tr>
+<td class="datatype_keyword">enum</td>
+<td class="function_name"><a class="link" href="gst-plugins-bad-plugins-facedetect.html#GstFaceDetectUpdates" title="enum GstFaceDetectUpdates">GstFaceDetectUpdates</a></td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<div class="refsect1">
+<a name="gst-plugins-bad-plugins-facedetect.object-hierarchy"></a><h2>Object Hierarchy</h2>
+<pre class="screen"> <a href="/usr/share/gtk-doc/html/gobjectgobject-The-Base-Object-Type.html#GObject-struct">GObject</a>
+ <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gobjectgobject-The-Base-Object-Type.html#GInitiallyUnowned">GInitiallyUnowned</a>
+ <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gstreamer-1.0GstObject.html#GstObject-struct">GstObject</a>
+ <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gstreamer-1.0GstElement.html#GstElement-struct">GstElement</a>
+ <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gstreamer-libs-1.0GstBaseTransform.html#GstBaseTransform-struct">GstBaseTransform</a>
+ <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gst-plugins-base-libs-1.0gst-plugins-base-libs-gstvideofilter.html#GstVideoFilter-struct">GstVideoFilter</a>
+ <span class="lineart">╰──</span> GstOpencvVideoFilter
+ <span class="lineart">╰──</span> GstFaceDetect
+</pre>
+</div>
+<div class="refsect1">
<a name="gst-plugins-bad-plugins-facedetect.description"></a><h2>Description</h2>
+<p>Performs face detection on videos and images.
+If you have high cpu load you need to use videoscale with capsfilter and reduce the video resolution.</p>
+<p>The image is scaled down multiple times using the GstFaceDetect::scale-factor
+until the size is <= GstFaceDetect::min-size-width or
+GstFaceDetect::min-size-height.</p>
+<div class="refsect2">
+<a name="id-1.2.36.7.4"></a><h3>Example launch line</h3>
+<div class="informalexample">
+ <table class="listing_frame" border="0" cellpadding="0" cellspacing="0">
+ <tbody>
+ <tr>
+ <td class="listing_lines" align="right"><pre>1</pre></td>
+ <td class="listing_code"><pre class="programlisting">gst<span class="gtkdoc opt">-</span>launch<span class="gtkdoc opt">-</span><span class="number">1.0</span> autovideosrc <span class="gtkdoc opt">!</span> decodebin <span class="gtkdoc opt">!</span> colorspace <span class="gtkdoc opt">!</span> facedetect <span class="gtkdoc opt">!</span> videoconvert <span class="gtkdoc opt">!</span> xvimagesink</pre></td>
+ </tr>
+ </tbody>
+ </table>
+</div>
+ Detect and show faces
+<div class="informalexample">
+ <table class="listing_frame" border="0" cellpadding="0" cellspacing="0">
+ <tbody>
+ <tr>
+ <td class="listing_lines" align="right"><pre>1</pre></td>
+ <td class="listing_code"><pre class="programlisting">gst<span class="gtkdoc opt">-</span>launch<span class="gtkdoc opt">-</span><span class="number">1.0</span> autovideosrc <span class="gtkdoc opt">!</span> video<span class="gtkdoc opt">/</span>x<span class="gtkdoc opt">-</span>raw<span class="gtkdoc opt">,</span>width<span class="gtkdoc opt">=</span><span class="number">320</span><span class="gtkdoc opt">,</span>height<span class="gtkdoc opt">=</span><span class="number">240</span> <span class="gtkdoc opt">!</span> videoconvert <span class="gtkdoc opt">!</span> facedetect min<span class="gtkdoc opt">-</span>size<span class="gtkdoc opt">-</span>width<span class="gtkdoc opt">=</span><span class="number">60</span> min<span class="gtkdoc opt">-</span>size<span class="gtkdoc opt">-</span>height<span class="gtkdoc opt">=</span><span class="number">60</span> <span class="gtkdoc opt">!</span> colorspace <span class="gtkdoc opt">!</span> xvimagesink</pre></td>
+ </tr>
+ </tbody>
+ </table>
+</div>
+ Detect large faces on a smaller image
+
+</div>
<div class="refsynopsisdiv">
<h2>Synopsis</h2>
<div class="refsect2">
-<a name="id-1.2.36.3.2.1"></a><h3>Element Information</h3>
+<a name="id-1.2.36.7.5.1"></a><h3>Element Information</h3>
<div class="variablelist"><table border="0" class="variablelist">
<colgroup>
<col align="left" valign="top">
@@ -62,7 +202,7 @@
</div>
<hr>
<div class="refsect2">
-<a name="id-1.2.36.3.2.2"></a><h3>Element Pads</h3>
+<a name="id-1.2.36.7.5.2"></a><h3>Element Pads</h3>
<div class="variablelist"><table border="0" class="variablelist">
<colgroup>
<col align="left" valign="top">
@@ -120,6 +260,158 @@
</div>
<div class="refsect1">
<a name="gst-plugins-bad-plugins-facedetect.other_details"></a><h2>Types and Values</h2>
+<div class="refsect2">
+<a name="GstFaceDetect-struct"></a><h3>struct GstFaceDetect</h3>
+<pre class="programlisting">struct GstFaceDetect;</pre>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstFaceDetectUpdates"></a><h3>enum GstFaceDetectUpdates</h3>
+<p>Bus messages update scheme</p>
+<div class="refsect3">
+<a name="GstFaceDetectUpdates.members"></a><h4>Members</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
+<col width="300px" class="enum_members_name">
+<col class="enum_members_description">
+<col width="200px" class="enum_members_annotations">
+</colgroup>
+<tbody>
+<tr>
+<td class="enum_member_name"><p><a name="GST-FACEDETECT-UPDATES-EVERY-FRAME:CAPS"></a>GST_FACEDETECT_UPDATES_EVERY_FRAME</p></td>
+<td class="enum_member_description">
+<p>Send bus update messages for every frame</p>
+</td>
+<td class="enum_member_annotations"> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-FACEDETECT-UPDATES-ON-CHANGE:CAPS"></a>GST_FACEDETECT_UPDATES_ON_CHANGE</p></td>
+<td class="enum_member_description">
+<p>Send bus update messages on change (face detected/not detected)</p>
+</td>
+<td class="enum_member_annotations"> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-FACEDETECT-UPDATES-ON-FACE:CAPS"></a>GST_FACEDETECT_UPDATES_ON_FACE</p></td>
+<td class="enum_member_description">
+<p>Send bus update messages when a face is detected</p>
+</td>
+<td class="enum_member_annotations"> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-FACEDETECT-UPDATES-NONE:CAPS"></a>GST_FACEDETECT_UPDATES_NONE</p></td>
+<td class="enum_member_description">
+<p>No bus update messages</p>
+</td>
+<td class="enum_member_annotations"> </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+</div>
+</div>
+<div class="refsect1">
+<a name="gst-plugins-bad-plugins-facedetect.property-details"></a><h2>Property Details</h2>
+<div class="refsect2">
+<a name="GstFaceDetect--display"></a><h3>The <code class="literal">“display”</code> property</h3>
+<pre class="programlisting"> “display” <a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a></pre>
+<p>Sets whether the detected faces should be highlighted in the output.</p>
+<p>Flags: Read / Write</p>
+<p>Default value: TRUE</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstFaceDetect--eyes-profile"></a><h3>The <code class="literal">“eyes-profile”</code> property</h3>
+<pre class="programlisting"> “eyes-profile” <a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *</pre>
+<p>Location of Haar cascade file to use for eye-pair detection.</p>
+<p>Flags: Read / Write</p>
+<p>Default value: "/usr/share/opencv/haarcascades/haarcascade_mcs_eyepair_small.xml"</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstFaceDetect--flags"></a><h3>The <code class="literal">“flags”</code> property</h3>
+<pre class="programlisting"> “flags” <span class="type">GstOpencvFaceDetectFlags</span></pre>
+<p>Flags to cvHaarDetectObjects.</p>
+<p>Flags: Read / Write</p>
+<p>Default value: Do Canny edge detection to discard some regions</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstFaceDetect--min-neighbors"></a><h3>The <code class="literal">“min-neighbors”</code> property</h3>
+<pre class="programlisting"> “min-neighbors” <a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gint"><span class="type">gint</span></a></pre>
+<p>Minimum number (minus 1) of neighbor rectangles that makes up an object.</p>
+<p>Flags: Read / Write</p>
+<p>Allowed values: >= 0</p>
+<p>Default value: 3</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstFaceDetect--min-size-height"></a><h3>The <code class="literal">“min-size-height”</code> property</h3>
+<pre class="programlisting"> “min-size-height” <a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gint"><span class="type">gint</span></a></pre>
+<p>Minimum area height to be recognized as a face.</p>
+<p>Flags: Read / Write</p>
+<p>Allowed values: >= 0</p>
+<p>Default value: 30</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstFaceDetect--min-size-width"></a><h3>The <code class="literal">“min-size-width”</code> property</h3>
+<pre class="programlisting"> “min-size-width” <a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gint"><span class="type">gint</span></a></pre>
+<p>Minimum area width to be recognized as a face.</p>
+<p>Flags: Read / Write</p>
+<p>Allowed values: >= 0</p>
+<p>Default value: 30</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstFaceDetect--mouth-profile"></a><h3>The <code class="literal">“mouth-profile”</code> property</h3>
+<pre class="programlisting"> “mouth-profile” <a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *</pre>
+<p>Location of Haar cascade file to use for mouth detection.</p>
+<p>Flags: Read / Write</p>
+<p>Default value: "/usr/share/opencv/haarcascades/haarcascade_mcs_mouth.xml"</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstFaceDetect--nose-profile"></a><h3>The <code class="literal">“nose-profile”</code> property</h3>
+<pre class="programlisting"> “nose-profile” <a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *</pre>
+<p>Location of Haar cascade file to use for nose detection.</p>
+<p>Flags: Read / Write</p>
+<p>Default value: "/usr/share/opencv/haarcascades/haarcascade_mcs_nose.xml"</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstFaceDetect--profile"></a><h3>The <code class="literal">“profile”</code> property</h3>
+<pre class="programlisting"> “profile” <a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *</pre>
+<p>Location of Haar cascade file to use for face detection.</p>
+<p>Flags: Read / Write</p>
+<p>Default value: "/usr/share/opencv/haarcascades/haarcascade_frontalface_default.xml"</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstFaceDetect--scale-factor"></a><h3>The <code class="literal">“scale-factor”</code> property</h3>
+<pre class="programlisting"> “scale-factor” <a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gdouble"><span class="type">gdouble</span></a></pre>
+<p>Factor by which the frame is scaled after each object scan.</p>
+<p>Flags: Read / Write</p>
+<p>Allowed values: [1.1,10]</p>
+<p>Default value: 1.25</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstFaceDetect--updates"></a><h3>The <code class="literal">“updates”</code> property</h3>
+<pre class="programlisting"> “updates” <a class="link" href="gst-plugins-bad-plugins-facedetect.html#GstFaceDetectUpdates" title="enum GstFaceDetectUpdates"><span class="type">GstFaceDetectUpdates</span></a></pre>
+<p>When send update bus messages, if at all.</p>
+<p>Flags: Read / Write</p>
+<p>Default value: Send update messages on every frame</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstFaceDetect--min-stddev"></a><h3>The <code class="literal">“min-stddev”</code> property</h3>
+<pre class="programlisting"> “min-stddev” <a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gint"><span class="type">gint</span></a></pre>
+<p>Minimum image average standard deviation: on images with standard deviation lesser than this value facedetection will not be performed. Setting this property help to save cpu and reduce false positives not performing face detection on images with little changes.</p>
+<p>Flags: Read / Write</p>
+<p>Allowed values: [0,255]</p>
+<p>Default value: 0</p>
+</div>
</div>
</div>
<div class="footer">
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-gaussianblur.html b/docs/plugins/html/gst-plugins-bad-plugins-gaussianblur.html
index da74357..9c23870 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-gaussianblur.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-gaussianblur.html
@@ -15,7 +15,9 @@
<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="5"><tr valign="middle">
<td width="100%" align="left" class="shortcuts">
<a href="#" class="shortcut">Top</a><span id="nav_description"> <span class="dim">|</span>
- <a href="#gst-plugins-bad-plugins-gaussianblur.description" class="shortcut">Description</a></span>
+ <a href="#gst-plugins-bad-plugins-gaussianblur.description" class="shortcut">Description</a></span><span id="nav_hierarchy"> <span class="dim">|</span>
+ <a href="#gst-plugins-bad-plugins-gaussianblur.object-hierarchy" class="shortcut">Object Hierarchy</a></span><span id="nav_properties"> <span class="dim">|</span>
+ <a href="#gst-plugins-bad-plugins-gaussianblur.properties" class="shortcut">Properties</a></span>
</td>
<td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
<td><a accesskey="u" href="ch01.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
@@ -32,10 +34,49 @@
<td class="gallery_image" valign="top" align="right"></td>
</tr></table></div>
<div class="refsect1">
+<a name="gst-plugins-bad-plugins-gaussianblur.properties"></a><h2>Properties</h2>
+<div class="informaltable"><table class="informaltable" border="0">
+<colgroup>
+<col width="150px" class="properties_type">
+<col width="300px" class="properties_name">
+<col width="200px" class="properties_flags">
+</colgroup>
+<tbody><tr>
+<td class="property_type"><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gdouble"><span class="type">gdouble</span></a></td>
+<td class="property_name"><a class="link" href="gst-plugins-bad-plugins-gaussianblur.html#GstGaussianBlur--sigma" title="The “sigma” property">sigma</a></td>
+<td class="property_flags">Read / Write</td>
+</tr></tbody>
+</table></div>
+</div>
+<a name="GstGaussianBlur"></a><div class="refsect1">
+<a name="gst-plugins-bad-plugins-gaussianblur.other"></a><h2>Types and Values</h2>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
+<col width="150px" class="name">
+<col class="description">
+</colgroup>
+<tbody><tr>
+<td class="typedef_keyword">typedef</td>
+<td class="function_name"><a class="link" href="gst-plugins-bad-plugins-gaussianblur.html#GstGaussianBlur">GstGaussianBlur</a></td>
+</tr></tbody>
+</table></div>
+</div>
+<div class="refsect1">
+<a name="gst-plugins-bad-plugins-gaussianblur.object-hierarchy"></a><h2>Object Hierarchy</h2>
+<pre class="screen"> <a href="/usr/share/gtk-doc/html/gobjectgobject-The-Base-Object-Type.html#GObject-struct">GObject</a>
+ <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gobjectgobject-The-Base-Object-Type.html#GInitiallyUnowned">GInitiallyUnowned</a>
+ <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gstreamer-1.0GstObject.html#GstObject-struct">GstObject</a>
+ <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gstreamer-1.0GstElement.html#GstElement-struct">GstElement</a>
+ <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gstreamer-libs-1.0GstBaseTransform.html#GstBaseTransform-struct">GstBaseTransform</a>
+ <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gst-plugins-base-libs-1.0gst-plugins-base-libs-gstvideofilter.html#GstVideoFilter-struct">GstVideoFilter</a>
+ <span class="lineart">╰──</span> GstGaussianBlur
+</pre>
+</div>
+<div class="refsect1">
<a name="gst-plugins-bad-plugins-gaussianblur.description"></a><h2>Description</h2>
<p>Gaussianblur blurs the video stream in realtime.</p>
<div class="refsect2">
-<a name="id-1.2.40.3.3"></a><h3>Example launch line</h3>
+<a name="id-1.2.40.7.3"></a><h3>Example launch line</h3>
<div class="informalexample">
<table class="listing_frame" border="0" cellpadding="0" cellspacing="0">
<tbody>
@@ -51,7 +92,7 @@
<div class="refsynopsisdiv">
<h2>Synopsis</h2>
<div class="refsect2">
-<a name="id-1.2.40.3.4.1"></a><h3>Element Information</h3>
+<a name="id-1.2.40.7.4.1"></a><h3>Element Information</h3>
<div class="variablelist"><table border="0" class="variablelist">
<colgroup>
<col align="left" valign="top">
@@ -77,7 +118,7 @@
</div>
<hr>
<div class="refsect2">
-<a name="id-1.2.40.3.4.2"></a><h3>Element Pads</h3>
+<a name="id-1.2.40.7.4.2"></a><h3>Element Pads</h3>
<div class="variablelist"><table border="0" class="variablelist">
<colgroup>
<col align="left" valign="top">
@@ -135,6 +176,22 @@
</div>
<div class="refsect1">
<a name="gst-plugins-bad-plugins-gaussianblur.other_details"></a><h2>Types and Values</h2>
+<div class="refsect2">
+<a name="GstGaussianBlur"></a><h3>GstGaussianBlur</h3>
+<pre class="programlisting">typedef struct GstGaussianBlur GstGaussianBlur;
+</pre>
+</div>
+</div>
+<div class="refsect1">
+<a name="gst-plugins-bad-plugins-gaussianblur.property-details"></a><h2>Property Details</h2>
+<div class="refsect2">
+<a name="GstGaussianBlur--sigma"></a><h3>The <code class="literal">“sigma”</code> property</h3>
+<pre class="programlisting"> “sigma” <a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gdouble"><span class="type">gdouble</span></a></pre>
+<p>Sigma value for gaussian blur (negative for sharpen).</p>
+<p>Flags: Read / Write</p>
+<p>Allowed values: [-20,20]</p>
+<p>Default value: 1.2</p>
+</div>
</div>
</div>
<div class="footer">
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-jpegparse.html b/docs/plugins/html/gst-plugins-bad-plugins-jpegparse.html
index 9de33f6..1c93d97 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-jpegparse.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-jpegparse.html
@@ -32,49 +32,6 @@
</td>
<td class="gallery_image" valign="top" align="right"></td>
</tr></table></div>
-<div class="refsect1">
-<a name="gst-plugins-bad-plugins-jpegparse.functions"></a><h2>Functions</h2>
-<div class="informaltable"><table class="informaltable" width="100%" border="0">
-<colgroup>
-<col width="150px" class="functions_return">
-<col class="functions_name">
-</colgroup>
-<tbody>
-<tr>
-<td class="define_keyword">#define</td>
-<td class="function_name">
-<a class="link" href="gst-plugins-bad-plugins-jpegparse.html#GST-JPEG-PARSE:CAPS" title="GST_JPEG_PARSE()">GST_JPEG_PARSE</a><span class="c_punctuation">()</span>
-</td>
-</tr>
-<tr>
-<td class="define_keyword">#define</td>
-<td class="function_name">
-<a class="link" href="gst-plugins-bad-plugins-jpegparse.html#GST-JPEG-PARSE-CLASS:CAPS" title="GST_JPEG_PARSE_CLASS()">GST_JPEG_PARSE_CLASS</a><span class="c_punctuation">()</span>
-</td>
-</tr>
-<tr>
-<td class="define_keyword">#define</td>
-<td class="function_name">
-<a class="link" href="gst-plugins-bad-plugins-jpegparse.html#GST-IS-JPEG-PARSE:CAPS" title="GST_IS_JPEG_PARSE()">GST_IS_JPEG_PARSE</a><span class="c_punctuation">()</span>
-</td>
-</tr>
-<tr>
-<td class="define_keyword">#define</td>
-<td class="function_name">
-<a class="link" href="gst-plugins-bad-plugins-jpegparse.html#GST-IS-JPEG-PARSE-CLASS:CAPS" title="GST_IS_JPEG_PARSE_CLASS()">GST_IS_JPEG_PARSE_CLASS</a><span class="c_punctuation">()</span>
-</td>
-</tr>
-<tr>
-<td class="function_type">
-<a href="/usr/share/gtk-doc/html/gobjectgobject-Type-Information.html#GType"><span class="returnvalue">GType</span></a>
-</td>
-<td class="function_name">
-<a class="link" href="gst-plugins-bad-plugins-jpegparse.html#gst-jpeg-parse-get-type" title="gst_jpeg_parse_get_type ()">gst_jpeg_parse_get_type</a> <span class="c_punctuation">()</span>
-</td>
-</tr>
-</tbody>
-</table></div>
-</div>
<a name="GstJpegParse"></a><div class="refsect1">
<a name="gst-plugins-bad-plugins-jpegparse.other"></a><h2>Types and Values</h2>
<div class="informaltable"><table class="informaltable" width="100%" border="0">
@@ -82,20 +39,10 @@
<col width="150px" class="name">
<col class="description">
</colgroup>
-<tbody>
-<tr>
+<tbody><tr>
<td class="datatype_keyword">struct</td>
<td class="function_name"><a class="link" href="gst-plugins-bad-plugins-jpegparse.html#GstJpegParse-struct" title="struct GstJpegParse">GstJpegParse</a></td>
-</tr>
-<tr>
-<td class="datatype_keyword">struct</td>
-<td class="function_name"><a class="link" href="gst-plugins-bad-plugins-jpegparse.html#GstJpegParseClass" title="struct GstJpegParseClass">GstJpegParseClass</a></td>
-</tr>
-<tr>
-<td class="define_keyword">#define</td>
-<td class="function_name"><a class="link" href="gst-plugins-bad-plugins-jpegparse.html#GST-TYPE-JPEG-PARSE:CAPS" title="GST_TYPE_JPEG_PARSE">GST_TYPE_JPEG_PARSE</a></td>
-</tr>
-</tbody>
+</tr></tbody>
</table></div>
</div>
<div class="refsect1">
@@ -115,7 +62,7 @@
image header searching for image properties such as width and height
among others. Jpegparse can also extract metadata (e.g. xmp).</p>
<div class="refsect2">
-<a name="id-1.2.41.7.3"></a><h3>Example launch line</h3>
+<a name="id-1.2.41.6.3"></a><h3>Example launch line</h3>
<div class="informalexample">
<table class="listing_frame" border="0" cellpadding="0" cellspacing="0">
<tbody>
@@ -133,7 +80,7 @@
<div class="refsynopsisdiv">
<h2>Synopsis</h2>
<div class="refsect2">
-<a name="id-1.2.41.7.4.1"></a><h3>Element Information</h3>
+<a name="id-1.2.41.6.4.1"></a><h3>Element Information</h3>
<div class="variablelist"><table border="0" class="variablelist">
<colgroup>
<col align="left" valign="top">
@@ -159,7 +106,7 @@
</div>
<hr>
<div class="refsect2">
-<a name="id-1.2.41.7.4.2"></a><h3>Element Pads</h3>
+<a name="id-1.2.41.6.4.2"></a><h3>Element Pads</h3>
<div class="variablelist"><table border="0" class="variablelist">
<colgroup>
<col align="left" valign="top">
@@ -213,31 +160,7 @@
</div>
<div class="refsect1">
<a name="gst-plugins-bad-plugins-jpegparse.functions_details"></a><h2>Functions</h2>
-<div class="refsect2">
-<a name="GST-JPEG-PARSE:CAPS"></a><h3>GST_JPEG_PARSE()</h3>
-<pre class="programlisting">#define GST_JPEG_PARSE(obj)</pre>
-</div>
-<hr>
-<div class="refsect2">
-<a name="GST-JPEG-PARSE-CLASS:CAPS"></a><h3>GST_JPEG_PARSE_CLASS()</h3>
-<pre class="programlisting">#define GST_JPEG_PARSE_CLASS(klass)</pre>
-</div>
-<hr>
-<div class="refsect2">
-<a name="GST-IS-JPEG-PARSE:CAPS"></a><h3>GST_IS_JPEG_PARSE()</h3>
-<pre class="programlisting">#define GST_IS_JPEG_PARSE(obj)</pre>
-</div>
-<hr>
-<div class="refsect2">
-<a name="GST-IS-JPEG-PARSE-CLASS:CAPS"></a><h3>GST_IS_JPEG_PARSE_CLASS()</h3>
-<pre class="programlisting">#define GST_IS_JPEG_PARSE_CLASS(klass)</pre>
-</div>
-<hr>
-<div class="refsect2">
-<a name="gst-jpeg-parse-get-type"></a><h3>gst_jpeg_parse_get_type ()</h3>
-<pre class="programlisting"><a href="/usr/share/gtk-doc/html/gobjectgobject-Type-Information.html#GType"><span class="returnvalue">GType</span></a>
-gst_jpeg_parse_get_type (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
-</div>
+<p></p>
</div>
<div class="refsect1">
<a name="gst-plugins-bad-plugins-jpegparse.other_details"></a><h2>Types and Values</h2>
@@ -245,19 +168,6 @@
<a name="GstJpegParse-struct"></a><h3>struct GstJpegParse</h3>
<pre class="programlisting">struct GstJpegParse;</pre>
</div>
-<hr>
-<div class="refsect2">
-<a name="GstJpegParseClass"></a><h3>struct GstJpegParseClass</h3>
-<pre class="programlisting">struct GstJpegParseClass {
- GstBaseParseClass parent_class;
-};
-</pre>
-</div>
-<hr>
-<div class="refsect2">
-<a name="GST-TYPE-JPEG-PARSE:CAPS"></a><h3>GST_TYPE_JPEG_PARSE</h3>
-<pre class="programlisting">#define GST_TYPE_JPEG_PARSE</pre>
-</div>
</div>
</div>
<div class="footer">
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-mimdec.html b/docs/plugins/html/gst-plugins-bad-plugins-mimdec.html
index eb82f2d..120e472 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-mimdec.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-mimdec.html
@@ -56,10 +56,13 @@
</div>
<div class="refsect1">
<a name="gst-plugins-bad-plugins-mimdec.description"></a><h2>Description</h2>
+<p>The MIMIC codec is used by MSN Messenger's webcam support. It consumes the
+TCP header for the MIMIC codec.</p>
+<p>Its fourcc is ML20.</p>
<div class="refsynopsisdiv">
<h2>Synopsis</h2>
<div class="refsect2">
-<a name="id-1.2.46.6.2.1"></a><h3>Element Information</h3>
+<a name="id-1.2.46.6.4.1"></a><h3>Element Information</h3>
<div class="variablelist"><table border="0" class="variablelist">
<colgroup>
<col align="left" valign="top">
@@ -85,7 +88,7 @@
</div>
<hr>
<div class="refsect2">
-<a name="id-1.2.46.6.2.2"></a><h3>Element Pads</h3>
+<a name="id-1.2.46.6.4.2"></a><h3>Element Pads</h3>
<div class="variablelist"><table border="0" class="variablelist">
<colgroup>
<col align="left" valign="top">
@@ -152,6 +155,10 @@
<pre class="programlisting">struct GstMimDec;</pre>
</div>
</div>
+<div class="refsect1">
+<a name="gst-plugins-bad-plugins-mimdec.see-also"></a><h2>See Also</h2>
+<p>mimenc</p>
+</div>
</div>
<div class="footer">
<hr>Generated by GTK-Doc V1.25</div>
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-mimenc.html b/docs/plugins/html/gst-plugins-bad-plugins-mimenc.html
index 529b3a3..cd037c5 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-mimenc.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-mimenc.html
@@ -72,10 +72,19 @@
</div>
<div class="refsect1">
<a name="gst-plugins-bad-plugins-mimenc.description"></a><h2>Description</h2>
+<p>The MIMIC codec is used by MSN Messenger's webcam support. It creates the
+TCP header for the MIMIC codec.</p>
+<p>When using it to communicate directly with MSN Messenger, if the sender
+wants to stop sending, he has to send a special buffer every 4 seconds.
+When the "paused-mode" property is set to TRUE, if the element receives no
+buffer on its sink pad for 4 seconds, it will produced a special paused
+frame and will continue doing so every 4 seconds until a new buffer is
+u received on its sink pad.</p>
+<p>Its fourcc is ML20.</p>
<div class="refsynopsisdiv">
<h2>Synopsis</h2>
<div class="refsect2">
-<a name="id-1.2.45.7.2.1"></a><h3>Element Information</h3>
+<a name="id-1.2.45.7.5.1"></a><h3>Element Information</h3>
<div class="variablelist"><table border="0" class="variablelist">
<colgroup>
<col align="left" valign="top">
@@ -101,7 +110,7 @@
</div>
<hr>
<div class="refsect2">
-<a name="id-1.2.45.7.2.2"></a><h3>Element Pads</h3>
+<a name="id-1.2.45.7.5.2"></a><h3>Element Pads</h3>
<div class="variablelist"><table border="0" class="variablelist">
<colgroup>
<col align="left" valign="top">
@@ -178,6 +187,10 @@
<p>Default value: FALSE</p>
</div>
</div>
+<div class="refsect1">
+<a name="gst-plugins-bad-plugins-mimenc.see-also"></a><h2>See Also</h2>
+<p>mimdec</p>
+</div>
</div>
<div class="footer">
<hr>Generated by GTK-Doc V1.25</div>
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-mirror.html b/docs/plugins/html/gst-plugins-bad-plugins-mirror.html
index 594a684..cb7a150 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-mirror.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-mirror.html
@@ -42,7 +42,7 @@
<col width="200px" class="properties_flags">
</colgroup>
<tbody><tr>
-<td class="property_type"><span class="type">GstMirrorMode</span></td>
+<td class="property_type"><a class="link" href="gst-plugins-bad-plugins-mirror.html#GstMirrorMode" title="enum GstMirrorMode"><span class="type">GstMirrorMode</span></a></td>
<td class="property_name"><a class="link" href="gst-plugins-bad-plugins-mirror.html#GstMirror--mode" title="The “mode” property">mode</a></td>
<td class="property_flags">Read / Write</td>
</tr></tbody>
@@ -55,10 +55,16 @@
<col width="150px" class="name">
<col class="description">
</colgroup>
-<tbody><tr>
+<tbody>
+<tr>
<td class="datatype_keyword">struct</td>
<td class="function_name"><a class="link" href="gst-plugins-bad-plugins-mirror.html#GstMirror-struct" title="struct GstMirror">GstMirror</a></td>
-</tr></tbody>
+</tr>
+<tr>
+<td class="datatype_keyword">enum</td>
+<td class="function_name"><a class="link" href="gst-plugins-bad-plugins-mirror.html#GstMirrorMode" title="enum GstMirrorMode">GstMirrorMode</a></td>
+</tr>
+</tbody>
</table></div>
</div>
<div class="refsect1">
@@ -182,12 +188,48 @@
<a name="GstMirror-struct"></a><h3>struct GstMirror</h3>
<pre class="programlisting">struct GstMirror;</pre>
</div>
+<hr>
+<div class="refsect2">
+<a name="GstMirrorMode"></a><h3>enum GstMirrorMode</h3>
+<div class="refsect3">
+<a name="GstMirrorMode.members"></a><h4>Members</h4>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
+<col width="300px" class="enum_members_name">
+<col class="enum_members_description">
+<col width="200px" class="enum_members_annotations">
+</colgroup>
+<tbody>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MIRROR-MODE-LEFT:CAPS"></a>GST_MIRROR_MODE_LEFT</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MIRROR-MODE-RIGHT:CAPS"></a>GST_MIRROR_MODE_RIGHT</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MIRROR-MODE-TOP:CAPS"></a>GST_MIRROR_MODE_TOP</p></td>
+<td> </td>
+<td> </td>
+</tr>
+<tr>
+<td class="enum_member_name"><p><a name="GST-MIRROR-MODE-BOTTOM:CAPS"></a>GST_MIRROR_MODE_BOTTOM</p></td>
+<td> </td>
+<td> </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+</div>
</div>
<div class="refsect1">
<a name="gst-plugins-bad-plugins-mirror.property-details"></a><h2>Property Details</h2>
<div class="refsect2">
<a name="GstMirror--mode"></a><h3>The <code class="literal">“mode”</code> property</h3>
-<pre class="programlisting"> “mode” <span class="type">GstMirrorMode</span></pre>
+<pre class="programlisting"> “mode” <a class="link" href="gst-plugins-bad-plugins-mirror.html#GstMirrorMode" title="enum GstMirrorMode"><span class="type">GstMirrorMode</span></a></pre>
<p>How to split the video frame and which side reflect.</p>
<p>Flags: Read / Write</p>
<p>Default value: Split horizontally and reflect left into right</p>
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-modplug.html b/docs/plugins/html/gst-plugins-bad-plugins-modplug.html
index 547fcbb..b203366 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-modplug.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-modplug.html
@@ -130,10 +130,26 @@
</div>
<div class="refsect1">
<a name="gst-plugins-bad-plugins-modplug.description"></a><h2>Description</h2>
+<p>Modplug uses the <a class="ulink" href="http://modplug-xmms.sourceforge.net/" target="_top">modplug</a>
+library to decode tracked music in the MOD/S3M/XM/IT and related formats.</p>
+<div class="refsect2">
+<a name="id-1.2.48.7.3"></a><h3>Example pipeline</h3>
+<div class="informalexample">
+ <table class="listing_frame" border="0" cellpadding="0" cellspacing="0">
+ <tbody>
+ <tr>
+ <td class="listing_lines" align="right"><pre>1</pre></td>
+ <td class="listing_code"><pre class="programlisting">gst<span class="gtkdoc opt">-</span>launch<span class="gtkdoc opt">-</span><span class="number">1.0</span> <span class="gtkdoc opt">-</span>v filesrc location<span class="gtkdoc opt">=</span><span class="number">1990</span>s<span class="gtkdoc opt">-</span>nostalgia<span class="gtkdoc opt">.</span>xm <span class="gtkdoc opt">!</span> modplug <span class="gtkdoc opt">!</span> audioconvert <span class="gtkdoc opt">!</span> alsasink</pre></td>
+ </tr>
+ </tbody>
+ </table>
+</div>
+ Play a FastTracker xm file.
+</div>
<div class="refsynopsisdiv">
<h2>Synopsis</h2>
<div class="refsect2">
-<a name="id-1.2.48.7.2.1"></a><h3>Element Information</h3>
+<a name="id-1.2.48.7.4.1"></a><h3>Element Information</h3>
<div class="variablelist"><table border="0" class="variablelist">
<colgroup>
<col align="left" valign="top">
@@ -159,7 +175,7 @@
</div>
<hr>
<div class="refsect2">
-<a name="id-1.2.48.7.2.2"></a><h3>Element Pads</h3>
+<a name="id-1.2.48.7.4.2"></a><h3>Element Pads</h3>
<div class="variablelist"><table border="0" class="variablelist">
<colgroup>
<col align="left" valign="top">
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-mpeg2enc.html b/docs/plugins/html/gst-plugins-bad-plugins-mpeg2enc.html
index 2d391f1..d1801d4 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-mpeg2enc.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-mpeg2enc.html
@@ -246,10 +246,51 @@
</div>
<div class="refsect1">
<a name="gst-plugins-bad-plugins-mpeg2enc.description"></a><h2>Description</h2>
+<p>This element encodes raw video into an MPEG-1/2 elementary stream using the</p>
+<a class="ulink" href="http://mjpeg.sourceforge.net/" target="_top">mjpegtools</a> library.
+<p>Documentation on MPEG encoding in general can be found in the </p>
+<a class="ulink" href="https://sourceforge.net/docman/display_doc.php?docid=3456&group_id=5776" target="_top">MJPEG Howto</a><p>and on the various available parameters in the documentation
+of the mpeg2enc tool in particular, which shares options with this element.</p>
+<div class="refsect2">
+<a name="id-1.2.49.8.7"></a><h3>Example pipeline</h3>
+<div class="informalexample">
+ <table class="listing_frame" border="0" cellpadding="0" cellspacing="0">
+ <tbody>
+ <tr>
+ <td class="listing_lines" align="right"><pre>1</pre></td>
+ <td class="listing_code"><pre class="programlisting">gst<span class="gtkdoc opt">-</span>launch<span class="gtkdoc opt">-</span><span class="number">1.0</span> videotestsrc num<span class="gtkdoc opt">-</span>buffers<span class="gtkdoc opt">=</span><span class="number">1000</span> <span class="gtkdoc opt">!</span> mpeg2enc <span class="gtkdoc opt">!</span> filesink location<span class="gtkdoc opt">=</span>videotestsrc<span class="gtkdoc opt">.</span>m1v</pre></td>
+ </tr>
+ </tbody>
+ </table>
+</div>
+ This example pipeline will encode a test video source to a an MPEG1
+elementary stream (with Generic MPEG1 profile).
+<p>
+Likely, the <a class="link" href="gst-plugins-bad-plugins-mpeg2enc.html#GstMpeg2enc--format" title="The “format” property"><span class="type">“format”</span></a> property
+is most important, as it selects the type of MPEG stream that is produced.
+In particular, default property values are dependent on the format,
+and can even be forcibly restrained to certain pre-sets (and thereby ignored).
+Note that the (S)VCD profiles also restrict the image size, so some scaling
+may be needed to accomodate this. The so-called generic profiles (as used
+in the example above) allow most parameters to be adjusted.
+</p>
+<div class="informalexample">
+ <table class="listing_frame" border="0" cellpadding="0" cellspacing="0">
+ <tbody>
+ <tr>
+ <td class="listing_lines" align="right"><pre>1</pre></td>
+ <td class="listing_code"><pre class="programlisting">gst<span class="gtkdoc opt">-</span>launch<span class="gtkdoc opt">-</span><span class="number">1.0</span> videotestsrc num<span class="gtkdoc opt">-</span>buffers<span class="gtkdoc opt">=</span><span class="number">1000</span> <span class="gtkdoc opt">!</span> videoscale <span class="gtkdoc opt">!</span> mpeg2enc format<span class="gtkdoc opt">=</span><span class="number">1</span> norm<span class="gtkdoc opt">=</span>p <span class="gtkdoc opt">!</span> filesink location<span class="gtkdoc opt">=</span>videotestsrc<span class="gtkdoc opt">.</span>m1v</pre></td>
+ </tr>
+ </tbody>
+ </table>
+</div>
+ This will produce an MPEG1 profile stream according to VCD2.0 specifications
+for PAL <a class="link" href="gst-plugins-bad-plugins-mpeg2enc.html#GstMpeg2enc--norm" title="The “norm” property"><span class="type">“norm”</span></a> (as the image height is dependent on video norm).
+</div>
<div class="refsynopsisdiv">
<h2>Synopsis</h2>
<div class="refsect2">
-<a name="id-1.2.49.8.2.1"></a><h3>Element Information</h3>
+<a name="id-1.2.49.8.8.1"></a><h3>Element Information</h3>
<div class="variablelist"><table border="0" class="variablelist">
<colgroup>
<col align="left" valign="top">
@@ -276,7 +317,7 @@
</div>
<hr>
<div class="refsect2">
-<a name="id-1.2.49.8.2.2"></a><h3>Element Pads</h3>
+<a name="id-1.2.49.8.8.2"></a><h3>Element Pads</h3>
<div class="variablelist"><table border="0" class="variablelist">
<colgroup>
<col align="left" valign="top">
@@ -630,6 +671,10 @@
<p>Default value: 0</p>
</div>
</div>
+<div class="refsect1">
+<a name="gst-plugins-bad-plugins-mpeg2enc.see-also"></a><h2>See Also</h2>
+<p>mpeg2dec</p>
+</div>
</div>
<div class="footer">
<hr>Generated by GTK-Doc V1.25</div>
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-mpegpsmux.html b/docs/plugins/html/gst-plugins-bad-plugins-mpegpsmux.html
index a1cb9e4..c59aae2 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-mpegpsmux.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-mpegpsmux.html
@@ -15,9 +15,7 @@
<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="5"><tr valign="middle">
<td width="100%" align="left" class="shortcuts">
<a href="#" class="shortcut">Top</a><span id="nav_description"> <span class="dim">|</span>
- <a href="#gst-plugins-bad-plugins-mpegpsmux.description" class="shortcut">Description</a></span><span id="nav_hierarchy"> <span class="dim">|</span>
- <a href="#gst-plugins-bad-plugins-mpegpsmux.object-hierarchy" class="shortcut">Object Hierarchy</a></span><span id="nav_properties"> <span class="dim">|</span>
- <a href="#gst-plugins-bad-plugins-mpegpsmux.properties" class="shortcut">Properties</a></span>
+ <a href="#gst-plugins-bad-plugins-mpegpsmux.description" class="shortcut">Description</a></span>
</td>
<td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
<td><a accesskey="u" href="ch01.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
@@ -34,35 +32,11 @@
<td class="gallery_image" valign="top" align="right"></td>
</tr></table></div>
<div class="refsect1">
-<a name="gst-plugins-bad-plugins-mpegpsmux.properties"></a><h2>Properties</h2>
-<div class="informaltable"><table class="informaltable" border="0">
-<colgroup>
-<col width="150px" class="properties_type">
-<col width="300px" class="properties_name">
-<col width="200px" class="properties_flags">
-</colgroup>
-<tbody><tr>
-<td class="property_type"><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a></td>
-<td class="property_name"><a class="link" href="gst-plugins-bad-plugins-mpegpsmux.html#MpegPsMux--aggregate-gops" title="The “aggregate-gops” property">aggregate-gops</a></td>
-<td class="property_flags">Read / Write</td>
-</tr></tbody>
-</table></div>
-</div>
-<a name="MpegPsMux"></a><div class="refsect1">
-<a name="gst-plugins-bad-plugins-mpegpsmux.object-hierarchy"></a><h2>Object Hierarchy</h2>
-<pre class="screen"> <a href="/usr/share/gtk-doc/html/gobjectgobject-The-Base-Object-Type.html#GObject-struct">GObject</a>
- <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gobjectgobject-The-Base-Object-Type.html#GInitiallyUnowned">GInitiallyUnowned</a>
- <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gstreamer-1.0GstObject.html#GstObject-struct">GstObject</a>
- <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gstreamer-1.0GstElement.html#GstElement-struct">GstElement</a>
- <span class="lineart">╰──</span> MpegPsMux
-</pre>
-</div>
-<div class="refsect1">
<a name="gst-plugins-bad-plugins-mpegpsmux.description"></a><h2>Description</h2>
<div class="refsynopsisdiv">
<h2>Synopsis</h2>
<div class="refsect2">
-<a name="id-1.2.50.6.2.1"></a><h3>Element Information</h3>
+<a name="id-1.2.50.3.2.1"></a><h3>Element Information</h3>
<div class="variablelist"><table border="0" class="variablelist">
<colgroup>
<col align="left" valign="top">
@@ -88,7 +62,7 @@
</div>
<hr>
<div class="refsect2">
-<a name="id-1.2.50.6.2.2"></a><h3>Element Pads</h3>
+<a name="id-1.2.50.3.2.2"></a><h3>Element Pads</h3>
<div class="variablelist"><table border="0" class="variablelist">
<colgroup>
<col align="left" valign="top">
@@ -167,16 +141,6 @@
<div class="refsect1">
<a name="gst-plugins-bad-plugins-mpegpsmux.other_details"></a><h2>Types and Values</h2>
</div>
-<div class="refsect1">
-<a name="gst-plugins-bad-plugins-mpegpsmux.property-details"></a><h2>Property Details</h2>
-<div class="refsect2">
-<a name="MpegPsMux--aggregate-gops"></a><h3>The <code class="literal">“aggregate-gops”</code> property</h3>
-<pre class="programlisting"> “aggregate-gops” <a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a></pre>
-<p>Whether to aggregate GOPs and push them out as buffer lists.</p>
-<p>Flags: Read / Write</p>
-<p>Default value: FALSE</p>
-</div>
-</div>
</div>
<div class="footer">
<hr>Generated by GTK-Doc V1.25</div>
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-mpegtsmux.html b/docs/plugins/html/gst-plugins-bad-plugins-mpegtsmux.html
index 1b6e324..f953f29 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-mpegtsmux.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-mpegtsmux.html
@@ -15,9 +15,7 @@
<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="5"><tr valign="middle">
<td width="100%" align="left" class="shortcuts">
<a href="#" class="shortcut">Top</a><span id="nav_description"> <span class="dim">|</span>
- <a href="#gst-plugins-bad-plugins-mpegtsmux.description" class="shortcut">Description</a></span><span id="nav_hierarchy"> <span class="dim">|</span>
- <a href="#gst-plugins-bad-plugins-mpegtsmux.object-hierarchy" class="shortcut">Object Hierarchy</a></span><span id="nav_properties"> <span class="dim">|</span>
- <a href="#gst-plugins-bad-plugins-mpegtsmux.properties" class="shortcut">Properties</a></span>
+ <a href="#gst-plugins-bad-plugins-mpegtsmux.description" class="shortcut">Description</a></span>
</td>
<td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
<td><a accesskey="u" href="ch01.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
@@ -34,63 +32,11 @@
<td class="gallery_image" valign="top" align="right"></td>
</tr></table></div>
<div class="refsect1">
-<a name="gst-plugins-bad-plugins-mpegtsmux.properties"></a><h2>Properties</h2>
-<div class="informaltable"><table class="informaltable" border="0">
-<colgroup>
-<col width="150px" class="properties_type">
-<col width="300px" class="properties_name">
-<col width="200px" class="properties_flags">
-</colgroup>
-<tbody>
-<tr>
-<td class="property_type"><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a></td>
-<td class="property_name"><a class="link" href="gst-plugins-bad-plugins-mpegtsmux.html#MpegTsMux--m2ts-mode" title="The “m2ts-mode” property">m2ts-mode</a></td>
-<td class="property_flags">Read / Write</td>
-</tr>
-<tr>
-<td class="property_type">
-<a href="/usr/share/gtk-doc/html/gstreamer-1.0GstStructure.html#GstStructure-struct"><span class="type">GstStructure</span></a> *</td>
-<td class="property_name"><a class="link" href="gst-plugins-bad-plugins-mpegtsmux.html#MpegTsMux--prog-map" title="The “prog-map” property">prog-map</a></td>
-<td class="property_flags">Read / Write</td>
-</tr>
-<tr>
-<td class="property_type"><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint"><span class="type">guint</span></a></td>
-<td class="property_name"><a class="link" href="gst-plugins-bad-plugins-mpegtsmux.html#MpegTsMux--pat-interval" title="The “pat-interval” property">pat-interval</a></td>
-<td class="property_flags">Read / Write</td>
-</tr>
-<tr>
-<td class="property_type"><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint"><span class="type">guint</span></a></td>
-<td class="property_name"><a class="link" href="gst-plugins-bad-plugins-mpegtsmux.html#MpegTsMux--pmt-interval" title="The “pmt-interval” property">pmt-interval</a></td>
-<td class="property_flags">Read / Write</td>
-</tr>
-<tr>
-<td class="property_type"><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gint"><span class="type">gint</span></a></td>
-<td class="property_name"><a class="link" href="gst-plugins-bad-plugins-mpegtsmux.html#MpegTsMux--alignment" title="The “alignment” property">alignment</a></td>
-<td class="property_flags">Read / Write</td>
-</tr>
-<tr>
-<td class="property_type"><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint"><span class="type">guint</span></a></td>
-<td class="property_name"><a class="link" href="gst-plugins-bad-plugins-mpegtsmux.html#MpegTsMux--si-interval" title="The “si-interval” property">si-interval</a></td>
-<td class="property_flags">Read / Write</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<a name="MpegTsMux"></a><div class="refsect1">
-<a name="gst-plugins-bad-plugins-mpegtsmux.object-hierarchy"></a><h2>Object Hierarchy</h2>
-<pre class="screen"> <a href="/usr/share/gtk-doc/html/gobjectgobject-The-Base-Object-Type.html#GObject-struct">GObject</a>
- <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gobjectgobject-The-Base-Object-Type.html#GInitiallyUnowned">GInitiallyUnowned</a>
- <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gstreamer-1.0GstObject.html#GstObject-struct">GstObject</a>
- <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gstreamer-1.0GstElement.html#GstElement-struct">GstElement</a>
- <span class="lineart">╰──</span> MpegTsMux
-</pre>
-</div>
-<div class="refsect1">
<a name="gst-plugins-bad-plugins-mpegtsmux.description"></a><h2>Description</h2>
<div class="refsynopsisdiv">
<h2>Synopsis</h2>
<div class="refsect2">
-<a name="id-1.2.51.6.2.1"></a><h3>Element Information</h3>
+<a name="id-1.2.51.3.2.1"></a><h3>Element Information</h3>
<div class="variablelist"><table border="0" class="variablelist">
<colgroup>
<col align="left" valign="top">
@@ -116,7 +62,7 @@
</div>
<hr>
<div class="refsect2">
-<a name="id-1.2.51.6.2.2"></a><h3>Element Pads</h3>
+<a name="id-1.2.51.3.2.2"></a><h3>Element Pads</h3>
<div class="variablelist"><table border="0" class="variablelist">
<colgroup>
<col align="left" valign="top">
@@ -227,59 +173,6 @@
<div class="refsect1">
<a name="gst-plugins-bad-plugins-mpegtsmux.other_details"></a><h2>Types and Values</h2>
</div>
-<div class="refsect1">
-<a name="gst-plugins-bad-plugins-mpegtsmux.property-details"></a><h2>Property Details</h2>
-<div class="refsect2">
-<a name="MpegTsMux--m2ts-mode"></a><h3>The <code class="literal">“m2ts-mode”</code> property</h3>
-<pre class="programlisting"> “m2ts-mode” <a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a></pre>
-<p>Set to TRUE to output Blu-Ray disc format with 192 byte packets. FALSE for standard TS format with 188 byte packets.</p>
-<p>Flags: Read / Write</p>
-<p>Default value: FALSE</p>
-</div>
-<hr>
-<div class="refsect2">
-<a name="MpegTsMux--prog-map"></a><h3>The <code class="literal">“prog-map”</code> property</h3>
-<pre class="programlisting"> “prog-map” <a href="/usr/share/gtk-doc/html/gstreamer-1.0GstStructure.html#GstStructure-struct"><span class="type">GstStructure</span></a> *</pre>
-<p>A GstStructure specifies the mapping from elementary streams to programs.</p>
-<p>Flags: Read / Write</p>
-</div>
-<hr>
-<div class="refsect2">
-<a name="MpegTsMux--pat-interval"></a><h3>The <code class="literal">“pat-interval”</code> property</h3>
-<pre class="programlisting"> “pat-interval” <a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint"><span class="type">guint</span></a></pre>
-<p>Set the interval (in ticks of the 90kHz clock) for writing out the PAT table.</p>
-<p>Flags: Read / Write</p>
-<p>Allowed values: >= 1</p>
-<p>Default value: 9000</p>
-</div>
-<hr>
-<div class="refsect2">
-<a name="MpegTsMux--pmt-interval"></a><h3>The <code class="literal">“pmt-interval”</code> property</h3>
-<pre class="programlisting"> “pmt-interval” <a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint"><span class="type">guint</span></a></pre>
-<p>Set the interval (in ticks of the 90kHz clock) for writing out the PMT table.</p>
-<p>Flags: Read / Write</p>
-<p>Allowed values: >= 1</p>
-<p>Default value: 9000</p>
-</div>
-<hr>
-<div class="refsect2">
-<a name="MpegTsMux--alignment"></a><h3>The <code class="literal">“alignment”</code> property</h3>
-<pre class="programlisting"> “alignment” <a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gint"><span class="type">gint</span></a></pre>
-<p>Number of packets per buffer (padded with dummy packets on EOS) (-1 = auto, 0 = all available packets, 7 for UDP streaming).</p>
-<p>Flags: Read / Write</p>
-<p>Allowed values: >= G_MAXULONG</p>
-<p>Default value: -1</p>
-</div>
-<hr>
-<div class="refsect2">
-<a name="MpegTsMux--si-interval"></a><h3>The <code class="literal">“si-interval”</code> property</h3>
-<pre class="programlisting"> “si-interval” <a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint"><span class="type">guint</span></a></pre>
-<p>Set the interval (in ticks of the 90kHz clock) for writing out the ServiceInformation tables.</p>
-<p>Flags: Read / Write</p>
-<p>Allowed values: >= 1</p>
-<p>Default value: 9000</p>
-</div>
-</div>
</div>
<div class="footer">
<hr>Generated by GTK-Doc V1.25</div>
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-mplex.html b/docs/plugins/html/gst-plugins-bad-plugins-mplex.html
index 0fa961e..99bd156 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-mplex.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-mplex.html
@@ -104,10 +104,37 @@
</div>
<div class="refsect1">
<a name="gst-plugins-bad-plugins-mplex.description"></a><h2>Description</h2>
+<p>This element is an audio/video multiplexer for MPEG-1/2 video streams
+and (un)compressed audio streams such as AC3, MPEG layer I/II/III.
+It is based on the <a class="ulink" href="http://mjpeg.sourceforge.net/" target="_top">mjpegtools</a> library.
+Documentation on creating MPEG videos in general can be found in the</p>
+<a class="ulink" href="https://sourceforge.net/docman/display_doc.php?docid=3456&group_id=5776" target="_top">MJPEG Howto</a><p>and the man-page of the mplex tool documents the properties of this element,
+which are shared with the mplex tool.</p>
+<div class="refsect2">
+<a name="id-1.2.52.7.5"></a><h3>Example pipeline</h3>
+<div class="informalexample">
+ <table class="listing_frame" border="0" cellpadding="0" cellspacing="0">
+ <tbody>
+ <tr>
+ <td class="listing_lines" align="right"><pre>1</pre></td>
+ <td class="listing_code"><pre class="programlisting">gst<span class="gtkdoc opt">-</span>launch<span class="gtkdoc opt">-</span><span class="number">1.0</span> <span class="gtkdoc opt">-</span>v videotestsrc num<span class="gtkdoc opt">-</span>buffers<span class="gtkdoc opt">=</span><span class="number">1000</span> <span class="gtkdoc opt">!</span> mpeg2enc <span class="gtkdoc opt">!</span> mplex <span class="gtkdoc opt">!</span> filesink location<span class="gtkdoc opt">=</span>videotestsrc<span class="gtkdoc opt">.</span>mpg</pre></td>
+ </tr>
+ </tbody>
+ </table>
+</div>
+ This example pipeline will encode a test video source to an
+MPEG1 elementary stream and multiplexes this to an MPEG system stream.
+<p>
+If several streams are being multiplexed, there should (as usual) be
+a queue in each stream, and due to mplex' buffering the capacities of these
+may have to be set to a few times the default settings to prevent the
+pipeline stalling.
+</p>
+</div>
<div class="refsynopsisdiv">
<h2>Synopsis</h2>
<div class="refsect2">
-<a name="id-1.2.52.7.2.1"></a><h3>Element Information</h3>
+<a name="id-1.2.52.7.6.1"></a><h3>Element Information</h3>
<div class="variablelist"><table border="0" class="variablelist">
<colgroup>
<col align="left" valign="top">
@@ -135,7 +162,7 @@
</div>
<hr>
<div class="refsect2">
-<a name="id-1.2.52.7.2.2"></a><h3>Element Pads</h3>
+<a name="id-1.2.52.7.6.2"></a><h3>Element Pads</h3>
<div class="variablelist"><table border="0" class="variablelist">
<colgroup>
<col align="left" valign="top">
@@ -296,6 +323,10 @@
<p>Default value: FALSE</p>
</div>
</div>
+<div class="refsect1">
+<a name="gst-plugins-bad-plugins-mplex.see-also"></a><h2>See Also</h2>
+<p>mpeg2enc</p>
+</div>
</div>
<div class="footer">
<hr>Generated by GTK-Doc V1.25</div>
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-ofa.html b/docs/plugins/html/gst-plugins-bad-plugins-ofa.html
index e38327c..7b8e945 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-ofa.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-ofa.html
@@ -165,6 +165,7 @@
<div class="refsect2">
<a name="GstOFA-struct"></a><h3>struct GstOFA</h3>
<pre class="programlisting">struct GstOFA;</pre>
+<p>Opaque <a class="link" href="gst-plugins-bad-plugins-ofa.html#GstOFA"><span class="type">GstOFA</span></a> data structure</p>
</div>
</div>
<div class="refsect1">
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-openalsink.html b/docs/plugins/html/gst-plugins-bad-plugins-openalsink.html
index de88f4a..ebd948c 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-openalsink.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-openalsink.html
@@ -15,7 +15,9 @@
<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="5"><tr valign="middle">
<td width="100%" align="left" class="shortcuts">
<a href="#" class="shortcut">Top</a><span id="nav_description"> <span class="dim">|</span>
- <a href="#gst-plugins-bad-plugins-openalsink.description" class="shortcut">Description</a></span>
+ <a href="#gst-plugins-bad-plugins-openalsink.description" class="shortcut">Description</a></span><span id="nav_hierarchy"> <span class="dim">|</span>
+ <a href="#gst-plugins-bad-plugins-openalsink.object-hierarchy" class="shortcut">Object Hierarchy</a></span><span id="nav_properties"> <span class="dim">|</span>
+ <a href="#gst-plugins-bad-plugins-openalsink.properties" class="shortcut">Properties</a></span>
</td>
<td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
<td><a accesskey="u" href="ch01.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
@@ -27,16 +29,133 @@
<div class="refnamediv"><table width="100%"><tr>
<td valign="top">
<h2><span class="refentrytitle"><a name="gst-plugins-bad-plugins-openalsink.top_of_page"></a>openalsink</span></h2>
-<p>openalsink</p>
+<p>openalsink — capture raw audio samples through OpenAL</p>
</td>
<td class="gallery_image" valign="top" align="right"></td>
</tr></table></div>
<div class="refsect1">
+<a name="gst-plugins-bad-plugins-openalsink.properties"></a><h2>Properties</h2>
+<div class="informaltable"><table class="informaltable" border="0">
+<colgroup>
+<col width="150px" class="properties_type">
+<col width="300px" class="properties_name">
+<col width="200px" class="properties_flags">
+</colgroup>
+<tbody>
+<tr>
+<td class="property_type"><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a></td>
+<td class="property_name"><a class="link" href="gst-plugins-bad-plugins-openalsink.html#GstOpenALSink--context-handle" title="The “context-handle” property">context-handle</a></td>
+<td class="property_flags">Read / Write</td>
+</tr>
+<tr>
+<td class="property_type">
+<a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *</td>
+<td class="property_name"><a class="link" href="gst-plugins-bad-plugins-openalsink.html#GstOpenALSink--device" title="The “device” property">device</a></td>
+<td class="property_flags">Read / Write</td>
+</tr>
+<tr>
+<td class="property_type"><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a></td>
+<td class="property_name"><a class="link" href="gst-plugins-bad-plugins-openalsink.html#GstOpenALSink--device-handle" title="The “device-handle” property">device-handle</a></td>
+<td class="property_flags">Read / Write</td>
+</tr>
+<tr>
+<td class="property_type">
+<a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *</td>
+<td class="property_name"><a class="link" href="gst-plugins-bad-plugins-openalsink.html#GstOpenALSink--device-name" title="The “device-name” property">device-name</a></td>
+<td class="property_flags">Read</td>
+</tr>
+<tr>
+<td class="property_type"><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint"><span class="type">guint</span></a></td>
+<td class="property_name"><a class="link" href="gst-plugins-bad-plugins-openalsink.html#GstOpenALSink--source-id" title="The “source-id” property">source-id</a></td>
+<td class="property_flags">Read / Write</td>
+</tr>
+<tr>
+<td class="property_type"><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a></td>
+<td class="property_name"><a class="link" href="gst-plugins-bad-plugins-openalsink.html#GstOpenALSink--user-context" title="The “user-context” property">user-context</a></td>
+<td class="property_flags">Read / Write</td>
+</tr>
+<tr>
+<td class="property_type"><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a></td>
+<td class="property_name"><a class="link" href="gst-plugins-bad-plugins-openalsink.html#GstOpenALSink--user-device" title="The “user-device” property">user-device</a></td>
+<td class="property_flags">Read / Write</td>
+</tr>
+<tr>
+<td class="property_type"><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint"><span class="type">guint</span></a></td>
+<td class="property_name"><a class="link" href="gst-plugins-bad-plugins-openalsink.html#GstOpenALSink--user-source" title="The “user-source” property">user-source</a></td>
+<td class="property_flags">Read / Write</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<a name="GstOpenALSink"></a><div class="refsect1">
+<a name="gst-plugins-bad-plugins-openalsink.other"></a><h2>Types and Values</h2>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
+<col width="150px" class="name">
+<col class="description">
+</colgroup>
+<tbody><tr>
+<td class="datatype_keyword">struct</td>
+<td class="function_name"><a class="link" href="gst-plugins-bad-plugins-openalsink.html#GstOpenALSink-struct" title="struct GstOpenALSink">GstOpenALSink</a></td>
+</tr></tbody>
+</table></div>
+</div>
+<div class="refsect1">
+<a name="gst-plugins-bad-plugins-openalsink.object-hierarchy"></a><h2>Object Hierarchy</h2>
+<pre class="screen"> <a href="/usr/share/gtk-doc/html/gobjectgobject-The-Base-Object-Type.html#GObject-struct">GObject</a>
+ <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gobjectgobject-The-Base-Object-Type.html#GInitiallyUnowned">GInitiallyUnowned</a>
+ <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gstreamer-1.0GstObject.html#GstObject-struct">GstObject</a>
+ <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gstreamer-1.0GstElement.html#GstElement-struct">GstElement</a>
+ <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gstreamer-libs-1.0GstBaseSink.html#GstBaseSink-struct">GstBaseSink</a>
+ <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gst-plugins-base-libs-1.0gst-plugins-base-libs-gstaudiobasesink.html#GstAudioBaseSink-struct">GstAudioBaseSink</a>
+ <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gst-plugins-base-libs-1.0gst-plugins-base-libs-gstaudiosink.html#GstAudioSink-struct">GstAudioSink</a>
+ <span class="lineart">╰──</span> GstOpenALSink
+</pre>
+</div>
+<div class="refsect1">
<a name="gst-plugins-bad-plugins-openalsink.description"></a><h2>Description</h2>
+<p>This element plays raw audio samples through OpenAL.</p>
+<p>Unfortunately the capture API doesn't have a format enumeration/check. all you can do is try opening it and see if it works.</p>
+<div class="refsect2">
+<a name="id-1.2.56.7.4"></a><h3>Example pipelines</h3>
+<div class="informalexample">
+ <table class="listing_frame" border="0" cellpadding="0" cellspacing="0">
+ <tbody>
+ <tr>
+ <td class="listing_lines" align="right"><pre>1</pre></td>
+ <td class="listing_code"><pre class="programlisting">gst<span class="gtkdoc opt">-</span>launch<span class="gtkdoc opt">-</span><span class="number">1.0</span> audiotestsrc <span class="gtkdoc opt">!</span> audioconvert <span class="gtkdoc opt">!</span> volume volume<span class="gtkdoc opt">=</span><span class="number">0.5</span> <span class="gtkdoc opt">!</span> openalsink</pre></td>
+ </tr>
+ </tbody>
+ </table>
+</div>
+ will play a sine wave (continuous beep sound) through OpenAL.
+<div class="informalexample">
+ <table class="listing_frame" border="0" cellpadding="0" cellspacing="0">
+ <tbody>
+ <tr>
+ <td class="listing_lines" align="right"><pre>1</pre></td>
+ <td class="listing_code"><pre class="programlisting">gst<span class="gtkdoc opt">-</span>launch<span class="gtkdoc opt">-</span><span class="number">1.0</span> filesrc location<span class="gtkdoc opt">=</span>stream<span class="gtkdoc opt">.</span>wav <span class="gtkdoc opt">!</span> decodebin <span class="gtkdoc opt">!</span> audioconvert <span class="gtkdoc opt">!</span> openalsink</pre></td>
+ </tr>
+ </tbody>
+ </table>
+</div>
+ will play a wav audio file through OpenAL.
+<div class="informalexample">
+ <table class="listing_frame" border="0" cellpadding="0" cellspacing="0">
+ <tbody>
+ <tr>
+ <td class="listing_lines" align="right"><pre>1</pre></td>
+ <td class="listing_code"><pre class="programlisting">gst<span class="gtkdoc opt">-</span>launch<span class="gtkdoc opt">-</span><span class="number">1.0</span> openalsrc <span class="gtkdoc opt">!</span> <span class="string">"audio/x-raw,format=S16LE,rate=44100"</span> <span class="gtkdoc opt">!</span> audioconvert <span class="gtkdoc opt">!</span> volume volume<span class="gtkdoc opt">=</span><span class="number">0.25</span> <span class="gtkdoc opt">!</span> openalsink</pre></td>
+ </tr>
+ </tbody>
+ </table>
+</div>
+ will capture and play audio through OpenAL.
+</div>
<div class="refsynopsisdiv">
<h2>Synopsis</h2>
<div class="refsect2">
-<a name="id-1.2.56.3.2.1"></a><h3>Element Information</h3>
+<a name="id-1.2.56.7.5.1"></a><h3>Element Information</h3>
<div class="variablelist"><table border="0" class="variablelist">
<colgroup>
<col align="left" valign="top">
@@ -62,7 +181,7 @@
</div>
<hr>
<div class="refsect2">
-<a name="id-1.2.56.3.2.2"></a><h3>Element Pads</h3>
+<a name="id-1.2.56.7.5.2"></a><h3>Element Pads</h3>
<div class="variablelist"><table border="0" class="variablelist">
<colgroup>
<col align="left" valign="top">
@@ -108,6 +227,76 @@
</div>
<div class="refsect1">
<a name="gst-plugins-bad-plugins-openalsink.other_details"></a><h2>Types and Values</h2>
+<div class="refsect2">
+<a name="GstOpenALSink-struct"></a><h3>struct GstOpenALSink</h3>
+<pre class="programlisting">struct GstOpenALSink;</pre>
+</div>
+</div>
+<div class="refsect1">
+<a name="gst-plugins-bad-plugins-openalsink.property-details"></a><h2>Property Details</h2>
+<div class="refsect2">
+<a name="GstOpenALSink--context-handle"></a><h3>The <code class="literal">“context-handle”</code> property</h3>
+<pre class="programlisting"> “context-handle” <a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a></pre>
+<p>Custom playback context.</p>
+<p>Flags: Read / Write</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstOpenALSink--device"></a><h3>The <code class="literal">“device”</code> property</h3>
+<pre class="programlisting"> “device” <a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *</pre>
+<p>Human-readable name of the device.</p>
+<p>Flags: Read / Write</p>
+<p>Default value: NULL</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstOpenALSink--device-handle"></a><h3>The <code class="literal">“device-handle”</code> property</h3>
+<pre class="programlisting"> “device-handle” <a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a></pre>
+<p>Custom playback device.</p>
+<p>Flags: Read / Write</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstOpenALSink--device-name"></a><h3>The <code class="literal">“device-name”</code> property</h3>
+<pre class="programlisting"> “device-name” <a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *</pre>
+<p>Human-readable name of the opened device.</p>
+<p>Flags: Read</p>
+<p>Default value: ""</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstOpenALSink--source-id"></a><h3>The <code class="literal">“source-id”</code> property</h3>
+<pre class="programlisting"> “source-id” <a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint"><span class="type">guint</span></a></pre>
+<p>Custom playback sID.</p>
+<p>Flags: Read / Write</p>
+<p>Default value: 0</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstOpenALSink--user-context"></a><h3>The <code class="literal">“user-context”</code> property</h3>
+<pre class="programlisting"> “user-context” <a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a></pre>
+<p>User context.</p>
+<p>Flags: Read / Write</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstOpenALSink--user-device"></a><h3>The <code class="literal">“user-device”</code> property</h3>
+<pre class="programlisting"> “user-device” <a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gpointer"><span class="type">gpointer</span></a></pre>
+<p>User device.</p>
+<p>Flags: Read / Write</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstOpenALSink--user-source"></a><h3>The <code class="literal">“user-source”</code> property</h3>
+<pre class="programlisting"> “user-source” <a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#guint"><span class="type">guint</span></a></pre>
+<p>User source.</p>
+<p>Flags: Read / Write</p>
+<p>Default value: 0</p>
+</div>
+</div>
+<div class="refsect1">
+<a name="gst-plugins-bad-plugins-openalsink.see-also"></a><h2>See Also</h2>
+<p>openalsrc</p>
</div>
</div>
<div class="footer">
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-openalsrc.html b/docs/plugins/html/gst-plugins-bad-plugins-openalsrc.html
index ccb707e..c7305f9 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-openalsrc.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-openalsrc.html
@@ -29,7 +29,7 @@
<div class="refnamediv"><table width="100%"><tr>
<td valign="top">
<h2><span class="refentrytitle"><a name="gst-plugins-bad-plugins-openalsrc.top_of_page"></a>openalsrc</span></h2>
-<p>openalsrc</p>
+<p>openalsrc — capture raw audio samples through OpenAL</p>
</td>
<td class="gallery_image" valign="top" align="right"></td>
</tr></table></div>
@@ -85,10 +85,36 @@
</div>
<div class="refsect1">
<a name="gst-plugins-bad-plugins-openalsrc.description"></a><h2>Description</h2>
+<p>This element captures raw audio samples through OpenAL.</p>
+<div class="refsect2">
+<a name="id-1.2.55.7.3"></a><h3>Example pipelines</h3>
+<div class="informalexample">
+ <table class="listing_frame" border="0" cellpadding="0" cellspacing="0">
+ <tbody>
+ <tr>
+ <td class="listing_lines" align="right"><pre>1</pre></td>
+ <td class="listing_code"><pre class="programlisting">gst<span class="gtkdoc opt">-</span>launch<span class="gtkdoc opt">-</span><span class="number">1.0</span> <span class="gtkdoc opt">-</span>v openalsrc <span class="gtkdoc opt">!</span> audioconvert <span class="gtkdoc opt">!</span> wavenc <span class="gtkdoc opt">!</span> filesink location<span class="gtkdoc opt">=</span>stream<span class="gtkdoc opt">.</span>wav</pre></td>
+ </tr>
+ </tbody>
+ </table>
+</div>
+ * will capture sound through OpenAL and encode it to a wav file.
+<div class="informalexample">
+ <table class="listing_frame" border="0" cellpadding="0" cellspacing="0">
+ <tbody>
+ <tr>
+ <td class="listing_lines" align="right"><pre>1</pre></td>
+ <td class="listing_code"><pre class="programlisting">gst<span class="gtkdoc opt">-</span>launch<span class="gtkdoc opt">-</span><span class="number">1.0</span> openalsrc <span class="gtkdoc opt">!</span> <span class="string">"audio/x-raw,format=S16LE,rate=44100"</span> <span class="gtkdoc opt">!</span> audioconvert <span class="gtkdoc opt">!</span> volume volume<span class="gtkdoc opt">=</span><span class="number">0.25</span> <span class="gtkdoc opt">!</span> openalsink</pre></td>
+ </tr>
+ </tbody>
+ </table>
+</div>
+ will capture and play audio through OpenAL.
+</div>
<div class="refsynopsisdiv">
<h2>Synopsis</h2>
<div class="refsect2">
-<a name="id-1.2.55.7.2.1"></a><h3>Element Information</h3>
+<a name="id-1.2.55.7.4.1"></a><h3>Element Information</h3>
<div class="variablelist"><table border="0" class="variablelist">
<colgroup>
<col align="left" valign="top">
@@ -114,7 +140,7 @@
</div>
<hr>
<div class="refsect2">
-<a name="id-1.2.55.7.2.2"></a><h3>Element Pads</h3>
+<a name="id-1.2.55.7.4.2"></a><h3>Element Pads</h3>
<div class="variablelist"><table border="0" class="variablelist">
<colgroup>
<col align="left" valign="top">
@@ -175,6 +201,10 @@
<p>Default value: NULL</p>
</div>
</div>
+<div class="refsect1">
+<a name="gst-plugins-bad-plugins-openalsrc.see-also"></a><h2>See Also</h2>
+<p>openalsink</p>
+</div>
</div>
<div class="footer">
<hr>Generated by GTK-Doc V1.25</div>
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-opencvtextoverlay.html b/docs/plugins/html/gst-plugins-bad-plugins-opencvtextoverlay.html
index 94c4de1..2d226c3 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-opencvtextoverlay.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-opencvtextoverlay.html
@@ -15,7 +15,8 @@
<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="5"><tr valign="middle">
<td width="100%" align="left" class="shortcuts">
<a href="#" class="shortcut">Top</a><span id="nav_description"> <span class="dim">|</span>
- <a href="#gst-plugins-bad-plugins-opencvtextoverlay.description" class="shortcut">Description</a></span><span id="nav_properties"> <span class="dim">|</span>
+ <a href="#gst-plugins-bad-plugins-opencvtextoverlay.description" class="shortcut">Description</a></span><span id="nav_hierarchy"> <span class="dim">|</span>
+ <a href="#gst-plugins-bad-plugins-opencvtextoverlay.object-hierarchy" class="shortcut">Object Hierarchy</a></span><span id="nav_properties"> <span class="dim">|</span>
<a href="#gst-plugins-bad-plugins-opencvtextoverlay.properties" class="shortcut">Properties</a></span>
</td>
<td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
@@ -90,7 +91,7 @@
</tbody>
</table></div>
</div>
-<a name="GstOpenalSrc"></a><div class="refsect1">
+<a name="GstOpencvTextOverlay"></a><div class="refsect1">
<a name="gst-plugins-bad-plugins-opencvtextoverlay.other"></a><h2>Types and Values</h2>
<div class="informaltable"><table class="informaltable" width="100%" border="0">
<colgroup>
@@ -99,16 +100,43 @@
</colgroup>
<tbody><tr>
<td class="datatype_keyword">struct</td>
-<td class="function_name"><a class="link" href="gst-plugins-bad-plugins-opencvtextoverlay.html#GstOpencvTextOverlay" title="struct GstOpencvTextOverlay">GstOpencvTextOverlay</a></td>
+<td class="function_name"><a class="link" href="gst-plugins-bad-plugins-opencvtextoverlay.html#GstOpencvTextOverlay-struct" title="struct GstOpencvTextOverlay">GstOpencvTextOverlay</a></td>
</tr></tbody>
</table></div>
</div>
<div class="refsect1">
+<a name="gst-plugins-bad-plugins-opencvtextoverlay.object-hierarchy"></a><h2>Object Hierarchy</h2>
+<pre class="screen"> <a href="/usr/share/gtk-doc/html/gobjectgobject-The-Base-Object-Type.html#GObject-struct">GObject</a>
+ <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gobjectgobject-The-Base-Object-Type.html#GInitiallyUnowned">GInitiallyUnowned</a>
+ <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gstreamer-1.0GstObject.html#GstObject-struct">GstObject</a>
+ <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gstreamer-1.0GstElement.html#GstElement-struct">GstElement</a>
+ <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gstreamer-libs-1.0GstBaseTransform.html#GstBaseTransform-struct">GstBaseTransform</a>
+ <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gst-plugins-base-libs-1.0gst-plugins-base-libs-gstvideofilter.html#GstVideoFilter-struct">GstVideoFilter</a>
+ <span class="lineart">╰──</span> GstOpencvVideoFilter
+ <span class="lineart">╰──</span> GstOpencvTextOverlay
+</pre>
+</div>
+<div class="refsect1">
<a name="gst-plugins-bad-plugins-opencvtextoverlay.description"></a><h2>Description</h2>
+<p>opencvtextoverlay renders the text on top of the video frames</p>
+<div class="refsect2">
+<a name="id-1.2.74.7.3"></a><h3>Example launch line</h3>
+<div class="informalexample">
+ <table class="listing_frame" border="0" cellpadding="0" cellspacing="0">
+ <tbody>
+ <tr>
+ <td class="listing_lines" align="right"><pre>1</pre></td>
+ <td class="listing_code"><pre class="programlisting">gst<span class="gtkdoc opt">-</span>launch<span class="gtkdoc opt">-</span><span class="number">1.0</span> videotestsrc <span class="gtkdoc opt">!</span> videoconvert <span class="gtkdoc opt">!</span> opencvtextoverlay text<span class="gtkdoc opt">=</span><span class="string">"Opencv Text Overlay "</span> <span class="gtkdoc opt">!</span> videoconvert <span class="gtkdoc opt">!</span> xvimagesink</pre></td>
+ </tr>
+ </tbody>
+ </table>
+</div>
+
+</div>
<div class="refsynopsisdiv">
<h2>Synopsis</h2>
<div class="refsect2">
-<a name="id-1.2.75.6.2.1"></a><h3>Element Information</h3>
+<a name="id-1.2.74.7.4.1"></a><h3>Element Information</h3>
<div class="variablelist"><table border="0" class="variablelist">
<colgroup>
<col align="left" valign="top">
@@ -134,7 +162,7 @@
</div>
<hr>
<div class="refsect2">
-<a name="id-1.2.75.6.2.2"></a><h3>Element Pads</h3>
+<a name="id-1.2.74.7.4.2"></a><h3>Element Pads</h3>
<div class="variablelist"><table border="0" class="variablelist">
<colgroup>
<col align="left" valign="top">
@@ -193,21 +221,8 @@
<div class="refsect1">
<a name="gst-plugins-bad-plugins-opencvtextoverlay.other_details"></a><h2>Types and Values</h2>
<div class="refsect2">
-<a name="GstOpencvTextOverlay"></a><h3>struct GstOpencvTextOverlay</h3>
-<pre class="programlisting">struct GstOpencvTextOverlay {
- GstOpencvVideoFilter element;
-
- CvFont font;
-
- gint xpos;
- gint ypos;
- gint thickness;
- gint colorR,colorG,colorB;
- gdouble height;
- gdouble width;
- gchar *textbuf;
-};
-</pre>
+<a name="GstOpencvTextOverlay-struct"></a><h3>struct GstOpencvTextOverlay</h3>
+<pre class="programlisting">struct GstOpencvTextOverlay;</pre>
</div>
</div>
<div class="refsect1">
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-pinch.html b/docs/plugins/html/gst-plugins-bad-plugins-pinch.html
index 98c87d4..c37a2e3 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-pinch.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-pinch.html
@@ -7,7 +7,7 @@
<link rel="home" href="index.html" title="GStreamer Bad Plugins 1.0 Plugins Reference Manual">
<link rel="up" href="ch01.html" title="gst-plugins-bad Elements">
<link rel="prev" href="gst-plugins-bad-plugins-pcapparse.html" title="pcapparse">
-<link rel="next" href="gst-plugins-bad-plugins-pyramidsegment.html" title="pyramidsegment">
+<link rel="next" href="gst-plugins-bad-plugins-rfbsrc.html" title="rfbsrc">
<meta name="generator" content="GTK-Doc V1.25 (XML mode)">
<link rel="stylesheet" href="style.css" type="text/css">
</head>
@@ -22,7 +22,7 @@
<td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
<td><a accesskey="u" href="ch01.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
<td><a accesskey="p" href="gst-plugins-bad-plugins-pcapparse.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
-<td><a accesskey="n" href="gst-plugins-bad-plugins-pyramidsegment.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
+<td><a accesskey="n" href="gst-plugins-bad-plugins-rfbsrc.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
</tr></table>
<div class="refentry">
<a name="gst-plugins-bad-plugins-pinch"></a><div class="titlepage"></div>
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 0e035e2..b6987fd 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.8.2</td>
+<td>1.9.1</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 d5999ad..1e8a132 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.8.2</td>
+<td>1.9.1</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 639277e..a5d2bf5 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.8.2</td>
+<td>1.9.1</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 b726162..68929b1 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.8.2</td>
+<td>1.9.1</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 b9264d1..ed6da25 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.8.2</td>
+<td>1.9.1</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 1469702..4b1a389 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.8.2</td>
+<td>1.9.1</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 d7b3358..2b517a1 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.5.0.1</td>
+<td>1.9.1</td>
</tr>
<tr>
<td><p><span class="term">run-time license</span></p></td>
@@ -50,7 +50,7 @@
</tr>
<tr>
<td><p><span class="term">package</span></p></td>
-<td>GStreamer Bad Plug-ins git</td>
+<td>GStreamer Bad Plug-ins source release</td>
</tr>
<tr>
<td><p><span class="term">origin</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 7a91c0c..a9d4884 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.8.2</td>
+<td>1.9.1</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 39e67ee..6319a4e 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.8.2</td>
+<td>1.9.1</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 36b282b..79456c3 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.8.2</td>
+<td>1.9.1</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 14bea76..08766ec 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.8.2</td>
+<td>1.9.1</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 9db197f..7b26e80 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.8.2</td>
+<td>1.9.1</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 08524c0..d6e71e3 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.8.2</td>
+<td>1.9.1</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 d9c3546..3471f7c 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.8.2</td>
+<td>1.9.1</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 2acc772..e363b00 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.8.2</td>
+<td>1.9.1</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 209042e..75e0e8c 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.8.2</td>
+<td>1.9.1</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 b4d009c..7e276ea 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.8.2</td>
+<td>1.9.1</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 14d5490..13364ee 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.8.2</td>
+<td>1.9.1</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 34f91f7..37c5c56 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.8.2</td>
+<td>1.9.1</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 9b87ef5..ef80792 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.8.2</td>
+<td>1.9.1</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 fed18d5..6beadc7 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.8.2</td>
+<td>1.9.1</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 c9f80ce..a669ed8 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.8.2</td>
+<td>1.9.1</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 00e5d7f..2d964df 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.8.2</td>
+<td>1.9.1</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 88ef640..3c17ef0 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.8.2</td>
+<td>1.9.1</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 afbc16e..bae0b74 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.8.2</td>
+<td>1.9.1</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 7595965..d7b50d9 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.8.2</td>
+<td>1.9.1</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 4faae02..d481f32 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.8.2</td>
+<td>1.9.1</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 d31ba61..529f46b 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.8.2</td>
+<td>1.9.1</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 a8fb5e4..da41389 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.8.2</td>
+<td>1.9.1</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 50773ad..9db99e8 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.8.2</td>
+<td>1.9.1</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-neon.html b/docs/plugins/html/gst-plugins-bad-plugins-plugin-neon.html
index 0f67c78..b9bf5bd 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-plugin-neon.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-plugin-neon.html
@@ -42,7 +42,7 @@
</tr>
<tr>
<td><p><span class="term">version</span></p></td>
-<td>1.7.1</td>
+<td>1.9.0.1</td>
</tr>
<tr>
<td><p><span class="term">run-time license</span></p></td>
@@ -50,7 +50,7 @@
</tr>
<tr>
<td><p><span class="term">package</span></p></td>
-<td>GStreamer Bad Plug-ins source release</td>
+<td>GStreamer Bad Plug-ins git</td>
</tr>
<tr>
<td><p><span class="term">origin</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 12822ab..1b3b1ba 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.8.2</td>
+<td>1.9.1</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 bef5328..a0f187b 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.8.2</td>
+<td>1.9.1</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 4e42da0..b78a76d 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.7.2</td>
+<td>1.9.1</td>
</tr>
<tr>
<td><p><span class="term">run-time license</span></p></td>
@@ -126,10 +126,6 @@
<td>Write text on the top of video</td>
</tr>
<tr>
-<td><p><span class="term"><a class="link" href="gst-plugins-bad-plugins-pyramidsegment.html" title="pyramidsegment">pyramidsegment</a></span></p></td>
-<td>Applies pyramid segmentation to a video or image.</td>
-</tr>
-<tr>
<td><p><span class="term">retinex</span></p></td>
<td>Multiscale retinex for colour image enhancement</td>
</tr>
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 8df5b33..7763f8b 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.8.2</td>
+<td>1.9.1</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 4724f1d..fb60a89 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.8.2</td>
+<td>1.9.1</td>
</tr>
<tr>
<td><p><span class="term">run-time license</span></p></td>
@@ -72,6 +72,10 @@
<td>Converts stream into audio frames</td>
</tr>
<tr>
+<td><p><span class="term">unalignedaudioparse</span></p></td>
+<td>Parse unaligned raw audio data</td>
+</tr>
+<tr>
<td><p><span class="term"><a class="link" href="gst-plugins-bad-plugins-videoparse.html" title="videoparse">videoparse</a></span></p></td>
<td>Converts stream into video frames</td>
</tr>
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 cbed40f..27ae49c 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.8.2</td>
+<td>1.9.1</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 f03437a..12ec18a 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.8.2</td>
+<td>1.9.1</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 1cb48a7..1a31961 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.8.2</td>
+<td>1.9.1</td>
</tr>
<tr>
<td><p><span class="term">run-time license</span></p></td>
@@ -66,10 +66,16 @@
<col align="left" valign="top">
<col>
</colgroup>
-<tbody><tr>
+<tbody>
+<tr>
<td><p><span class="term"><a class="link" href="gst-plugins-bad-plugins-sdpdemux.html" title="sdpdemux">sdpdemux</a></span></p></td>
<td>Receive data over the network via SDP</td>
-</tr></tbody>
+</tr>
+<tr>
+<td><p><span class="term">sdpsrc</span></p></td>
+<td>Stream RTP based on an SDP</td>
+</tr>
+</tbody>
</table></div>
</div>
</div>
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 f39ca41..dcff68b 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.8.2</td>
+<td>1.9.1</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 f173608..4da2c41 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.8.2</td>
+<td>1.9.1</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 2e422a7..dcc66da 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.8.2</td>
+<td>1.9.1</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 1b6d684..a441485 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.8.2</td>
+<td>1.9.1</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 260d115..a544592 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-plugin-voamrwbenc.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-plugin-voamrwbenc.html
@@ -7,7 +7,7 @@
<link rel="home" href="index.html" title="GStreamer Bad Plugins 1.0 Plugins Reference Manual">
<link rel="up" href="ch02.html" title="gst-plugins-bad Plugins">
<link rel="prev" href="gst-plugins-bad-plugins-plugin-voaacenc.html" title="voaacenc">
-<link rel="next" href="gst-plugins-bad-plugins-plugin-zbar.html" title="zbar">
+<link rel="next" href="gst-plugins-bad-plugins-plugin-webrtcdsp.html" title="webrtcdsp">
<meta name="generator" content="GTK-Doc V1.25 (XML mode)">
<link rel="stylesheet" href="style.css" type="text/css">
</head>
@@ -17,7 +17,7 @@
<td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
<td><a accesskey="u" href="ch02.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
<td><a accesskey="p" href="gst-plugins-bad-plugins-plugin-voaacenc.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
-<td><a accesskey="n" href="gst-plugins-bad-plugins-plugin-zbar.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
+<td><a accesskey="n" href="gst-plugins-bad-plugins-plugin-webrtcdsp.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
</tr></table>
<div class="refentry">
<a name="gst-plugins-bad-plugins-plugin-voamrwbenc"></a><div class="titlepage"></div>
@@ -42,7 +42,7 @@
</tr>
<tr>
<td><p><span class="term">version</span></p></td>
-<td>1.8.2</td>
+<td>1.9.1</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
new file mode 100644
index 0000000..6cc06fd
--- /dev/null
+++ b/docs/plugins/html/gst-plugins-bad-plugins-plugin-webrtcdsp.html
@@ -0,0 +1,85 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>webrtcdsp: GStreamer Bad Plugins 1.0 Plugins Reference Manual</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
+<link rel="home" href="index.html" title="GStreamer Bad Plugins 1.0 Plugins Reference Manual">
+<link rel="up" href="ch02.html" title="gst-plugins-bad Plugins">
+<link rel="prev" href="gst-plugins-bad-plugins-plugin-voamrwbenc.html" title="voamrwbenc">
+<link rel="next" href="gst-plugins-bad-plugins-plugin-zbar.html" title="zbar">
+<meta name="generator" content="GTK-Doc V1.25 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="5"><tr valign="middle">
+<td width="100%" align="left" class="shortcuts"></td>
+<td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
+<td><a accesskey="u" href="ch02.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
+<td><a accesskey="p" href="gst-plugins-bad-plugins-plugin-voamrwbenc.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
+<td><a accesskey="n" href="gst-plugins-bad-plugins-plugin-zbar.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
+</tr></table>
+<div class="refentry">
+<a name="gst-plugins-bad-plugins-plugin-webrtcdsp"></a><div class="titlepage"></div>
+<div class="refnamediv"><table width="100%"><tr>
+<td valign="top">
+<h2><span class="refentrytitle">webrtcdsp</span></h2>
+<p>webrtcdsp — <a name="plugin-webrtcdsp"></a>Voice pre-processing using WebRTC Audio Processing Library</p>
+</td>
+<td class="gallery_image" valign="top" align="right"></td>
+</tr></table></div>
+<div class="refsect1">
+<a name="id-1.3.46.3"></a><h2>Plugin Information</h2>
+<div class="variablelist"><table border="0" class="variablelist">
+<colgroup>
+<col align="left" valign="top">
+<col>
+</colgroup>
+<tbody>
+<tr>
+<td><p><span class="term">filename</span></p></td>
+<td>libgstwebrtcdsp.so</td>
+</tr>
+<tr>
+<td><p><span class="term">version</span></p></td>
+<td>1.9.0.1</td>
+</tr>
+<tr>
+<td><p><span class="term">run-time license</span></p></td>
+<td>LGPL</td>
+</tr>
+<tr>
+<td><p><span class="term">package</span></p></td>
+<td>WebRTCDsp</td>
+</tr>
+<tr>
+<td><p><span class="term">origin</span></p></td>
+<td>http://git.collabora.com</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<div class="refsect1">
+<a name="id-1.3.46.4"></a><h2>Elements</h2>
+<div class="variablelist"><table border="0" class="variablelist">
+<colgroup>
+<col align="left" valign="top">
+<col>
+</colgroup>
+<tbody>
+<tr>
+<td><p><span class="term"><a class="link" href="gst-plugins-bad-plugins-webrtcdsp.html" title="webrtcdsp">webrtcdsp</a></span></p></td>
+<td>Pre-processes voice with WebRTC Audio Processing Library</td>
+</tr>
+<tr>
+<td><p><span class="term"><a class="link" href="gst-plugins-bad-plugins-webrtcechoprobe.html" title="webrtcechoprobe">webrtcechoprobe</a></span></p></td>
+<td>Gathers playback buffers for webrtcdsp</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+</div>
+<div class="footer">
+<hr>Generated by GTK-Doc V1.25</div>
+</body>
+</html>
\ No newline at end of file
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 084606c..b0621c0 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-plugin-zbar.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-plugin-zbar.html
@@ -6,7 +6,7 @@
<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
<link rel="home" href="index.html" title="GStreamer Bad Plugins 1.0 Plugins Reference Manual">
<link rel="up" href="ch02.html" title="gst-plugins-bad Plugins">
-<link rel="prev" href="gst-plugins-bad-plugins-plugin-voamrwbenc.html" title="voamrwbenc">
+<link rel="prev" href="gst-plugins-bad-plugins-plugin-webrtcdsp.html" title="webrtcdsp">
<meta name="generator" content="GTK-Doc V1.25 (XML mode)">
<link rel="stylesheet" href="style.css" type="text/css">
</head>
@@ -15,7 +15,7 @@
<td width="100%" align="left" class="shortcuts"></td>
<td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
<td><a accesskey="u" href="ch02.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
-<td><a accesskey="p" href="gst-plugins-bad-plugins-plugin-voamrwbenc.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
+<td><a accesskey="p" href="gst-plugins-bad-plugins-plugin-webrtcdsp.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
<td><img src="right-insensitive.png" width="16" height="16" border="0"></td>
</tr></table>
<div class="refentry">
@@ -28,7 +28,7 @@
<td class="gallery_image" valign="top" align="right"></td>
</tr></table></div>
<div class="refsect1">
-<a name="id-1.3.46.3"></a><h2>Plugin Information</h2>
+<a name="id-1.3.47.3"></a><h2>Plugin Information</h2>
<div class="variablelist"><table border="0" class="variablelist">
<colgroup>
<col align="left" valign="top">
@@ -41,7 +41,7 @@
</tr>
<tr>
<td><p><span class="term">version</span></p></td>
-<td>1.8.2</td>
+<td>1.9.1</td>
</tr>
<tr>
<td><p><span class="term">run-time license</span></p></td>
@@ -59,7 +59,7 @@
</table></div>
</div>
<div class="refsect1">
-<a name="id-1.3.46.4"></a><h2>Elements</h2>
+<a name="id-1.3.47.4"></a><h2>Elements</h2>
<div class="variablelist"><table border="0" class="variablelist">
<colgroup>
<col align="left" valign="top">
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-pyramidsegment.html b/docs/plugins/html/gst-plugins-bad-plugins-pyramidsegment.html
deleted file mode 100644
index 441d404..0000000
--- a/docs/plugins/html/gst-plugins-bad-plugins-pyramidsegment.html
+++ /dev/null
@@ -1,128 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>pyramidsegment: GStreamer Bad Plugins 1.0 Plugins Reference Manual</title>
-<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
-<link rel="home" href="index.html" title="GStreamer Bad Plugins 1.0 Plugins Reference Manual">
-<link rel="up" href="ch01.html" title="gst-plugins-bad Elements">
-<link rel="prev" href="gst-plugins-bad-plugins-pinch.html" title="pinch">
-<link rel="next" href="gst-plugins-bad-plugins-rfbsrc.html" title="rfbsrc">
-<meta name="generator" content="GTK-Doc V1.25 (XML mode)">
-<link rel="stylesheet" href="style.css" type="text/css">
-</head>
-<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
-<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="5"><tr valign="middle">
-<td width="100%" align="left" class="shortcuts">
-<a href="#" class="shortcut">Top</a><span id="nav_description"> <span class="dim">|</span>
- <a href="#gst-plugins-bad-plugins-pyramidsegment.description" class="shortcut">Description</a></span>
-</td>
-<td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
-<td><a accesskey="u" href="ch01.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
-<td><a accesskey="p" href="gst-plugins-bad-plugins-pinch.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
-<td><a accesskey="n" href="gst-plugins-bad-plugins-rfbsrc.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
-</tr></table>
-<div class="refentry">
-<a name="gst-plugins-bad-plugins-pyramidsegment"></a><div class="titlepage"></div>
-<div class="refnamediv"><table width="100%"><tr>
-<td valign="top">
-<h2><span class="refentrytitle"><a name="gst-plugins-bad-plugins-pyramidsegment.top_of_page"></a>pyramidsegment</span></h2>
-<p>pyramidsegment</p>
-</td>
-<td class="gallery_image" valign="top" align="right"></td>
-</tr></table></div>
-<a name="GstPinch"></a><div class="refsect1">
-<a name="gst-plugins-bad-plugins-pyramidsegment.description"></a><h2>Description</h2>
-<div class="refsynopsisdiv">
-<h2>Synopsis</h2>
-<div class="refsect2">
-<a name="id-1.2.59.4.2.1"></a><h3>Element Information</h3>
-<div class="variablelist"><table border="0" class="variablelist">
-<colgroup>
-<col align="left" valign="top">
-<col>
-</colgroup>
-<tbody>
-<tr>
-<td><p><span class="term">plugin</span></p></td>
-<td>
- <a class="link" href="gst-plugins-bad-plugins-plugin-opencv.html#plugin-opencv">opencv</a>
- </td>
-</tr>
-<tr>
-<td><p><span class="term">author</span></p></td>
-<td>Michael Sheldon <mike@mikeasoft.com></td>
-</tr>
-<tr>
-<td><p><span class="term">class</span></p></td>
-<td>Filter/Effect/Video</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-<hr>
-<div class="refsect2">
-<a name="id-1.2.59.4.2.2"></a><h3>Element Pads</h3>
-<div class="variablelist"><table border="0" class="variablelist">
-<colgroup>
-<col align="left" valign="top">
-<col>
-</colgroup>
-<tbody>
-<tr>
-<td><p><span class="term">name</span></p></td>
-<td>sink</td>
-</tr>
-<tr>
-<td><p><span class="term">direction</span></p></td>
-<td>sink</td>
-</tr>
-<tr>
-<td><p><span class="term">presence</span></p></td>
-<td>always</td>
-</tr>
-<tr>
-<td><p><span class="term">details</span></p></td>
-<td>video/x-raw, format=(string)RGB, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]</td>
-</tr>
-</tbody>
-</table></div>
-<div class="variablelist"><table border="0" class="variablelist">
-<colgroup>
-<col align="left" valign="top">
-<col>
-</colgroup>
-<tbody>
-<tr>
-<td><p><span class="term">name</span></p></td>
-<td>src</td>
-</tr>
-<tr>
-<td><p><span class="term">direction</span></p></td>
-<td>source</td>
-</tr>
-<tr>
-<td><p><span class="term">presence</span></p></td>
-<td>always</td>
-</tr>
-<tr>
-<td><p><span class="term">details</span></p></td>
-<td>video/x-raw, format=(string)RGB, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]</td>
-</tr>
-</tbody>
-</table></div>
-</div>
-</div>
-</div>
-<div class="refsect1">
-<a name="gst-plugins-bad-plugins-pyramidsegment.functions_details"></a><h2>Functions</h2>
-<p></p>
-</div>
-<div class="refsect1">
-<a name="gst-plugins-bad-plugins-pyramidsegment.other_details"></a><h2>Types and Values</h2>
-</div>
-</div>
-<div class="footer">
-<hr>Generated by GTK-Doc V1.25</div>
-</body>
-</html>
\ No newline at end of file
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-rfbsrc.html b/docs/plugins/html/gst-plugins-bad-plugins-rfbsrc.html
index 55d8fff..a1d31f2 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-rfbsrc.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-rfbsrc.html
@@ -6,7 +6,7 @@
<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
<link rel="home" href="index.html" title="GStreamer Bad Plugins 1.0 Plugins Reference Manual">
<link rel="up" href="ch01.html" title="gst-plugins-bad Elements">
-<link rel="prev" href="gst-plugins-bad-plugins-pyramidsegment.html" title="pyramidsegment">
+<link rel="prev" href="gst-plugins-bad-plugins-pinch.html" title="pinch">
<link rel="next" href="gst-plugins-bad-plugins-rtmpsink.html" title="rtmpsink">
<meta name="generator" content="GTK-Doc V1.25 (XML mode)">
<link rel="stylesheet" href="style.css" type="text/css">
@@ -21,7 +21,7 @@
</td>
<td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
<td><a accesskey="u" href="ch01.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
-<td><a accesskey="p" href="gst-plugins-bad-plugins-pyramidsegment.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
+<td><a accesskey="p" href="gst-plugins-bad-plugins-pinch.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
<td><a accesskey="n" href="gst-plugins-bad-plugins-rtmpsink.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
</tr></table>
<div class="refentry">
@@ -137,7 +137,7 @@
<div class="refsynopsisdiv">
<h2>Synopsis</h2>
<div class="refsect2">
-<a name="id-1.2.60.7.2.1"></a><h3>Element Information</h3>
+<a name="id-1.2.59.7.2.1"></a><h3>Element Information</h3>
<div class="variablelist"><table border="0" class="variablelist">
<colgroup>
<col align="left" valign="top">
@@ -163,7 +163,7 @@
</div>
<hr>
<div class="refsect2">
-<a name="id-1.2.60.7.2.2"></a><h3>Element Pads</h3>
+<a name="id-1.2.59.7.2.2"></a><h3>Element Pads</h3>
<div class="variablelist"><table border="0" class="variablelist">
<colgroup>
<col align="left" valign="top">
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-rtmpsink.html b/docs/plugins/html/gst-plugins-bad-plugins-rtmpsink.html
index 87df730..653803c 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-rtmpsink.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-rtmpsink.html
@@ -81,10 +81,29 @@
</div>
<div class="refsect1">
<a name="gst-plugins-bad-plugins-rtmpsink.description"></a><h2>Description</h2>
+<p>This element delivers data to a streaming server via RTMP. It uses
+librtmp, and supports any protocols/urls that librtmp supports.
+The URL/location can contain extra connection or session parameters
+for librtmp, such as 'flashver=version'. See the librtmp documentation
+for more detail</p>
+<div class="refsect2">
+<a name="id-1.2.60.8.3"></a><h3>Example launch line</h3>
+<div class="informalexample">
+ <table class="listing_frame" border="0" cellpadding="0" cellspacing="0">
+ <tbody>
+ <tr>
+ <td class="listing_lines" align="right"><pre>1</pre></td>
+ <td class="listing_code"><pre class="programlisting">gst<span class="gtkdoc opt">-</span>launch<span class="gtkdoc opt">-</span><span class="number">1.0</span> <span class="gtkdoc opt">-</span>v videotestsrc <span class="gtkdoc opt">!</span> ffenc_flv <span class="gtkdoc opt">!</span> flvmux <span class="gtkdoc opt">!</span> rtmpsink location<span class="gtkdoc opt">=</span><span class="string">'rtmp://localhost/path/to/stream live=1'</span></pre></td>
+ </tr>
+ </tbody>
+ </table>
+</div>
+ Encode a test video stream to FLV video format and stream it via RTMP.
+</div>
<div class="refsynopsisdiv">
<h2>Synopsis</h2>
<div class="refsect2">
-<a name="id-1.2.61.8.2.1"></a><h3>Element Information</h3>
+<a name="id-1.2.60.8.4.1"></a><h3>Element Information</h3>
<div class="variablelist"><table border="0" class="variablelist">
<colgroup>
<col align="left" valign="top">
@@ -110,7 +129,7 @@
</div>
<hr>
<div class="refsect2">
-<a name="id-1.2.61.8.2.2"></a><h3>Element Pads</h3>
+<a name="id-1.2.60.8.4.2"></a><h3>Element Pads</h3>
<div class="variablelist"><table border="0" class="variablelist">
<colgroup>
<col align="left" valign="top">
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-rtmpsrc.html b/docs/plugins/html/gst-plugins-bad-plugins-rtmpsrc.html
index 8d36145..93c49d3 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-rtmpsrc.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-rtmpsrc.html
@@ -42,12 +42,19 @@
<col width="300px" class="properties_name">
<col width="200px" class="properties_flags">
</colgroup>
-<tbody><tr>
+<tbody>
+<tr>
<td class="property_type">
<a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *</td>
<td class="property_name"><a class="link" href="gst-plugins-bad-plugins-rtmpsrc.html#GstRTMPSrc--location" title="The “location” property">location</a></td>
<td class="property_flags">Read / Write</td>
-</tr></tbody>
+</tr>
+<tr>
+<td class="property_type"><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gint"><span class="type">gint</span></a></td>
+<td class="property_name"><a class="link" href="gst-plugins-bad-plugins-rtmpsrc.html#GstRTMPSrc--timeout" title="The “timeout” property">timeout</a></td>
+<td class="property_flags">Read / Write</td>
+</tr>
+</tbody>
</table></div>
</div>
<a name="GstRTMPSrc"></a><div class="refsect1">
@@ -82,10 +89,27 @@
</div>
<div class="refsect1">
<a name="gst-plugins-bad-plugins-rtmpsrc.description"></a><h2>Description</h2>
+<p>This plugin reads data from a local or remote location specified
+by an URI. This location can be specified using any protocol supported by
+the RTMP library, i.e. rtmp, rtmpt, rtmps, rtmpe, rtmfp, rtmpte and rtmpts.</p>
+<div class="refsect2">
+<a name="id-1.2.61.8.3"></a><h3>Example launch lines</h3>
+<div class="informalexample">
+ <table class="listing_frame" border="0" cellpadding="0" cellspacing="0">
+ <tbody>
+ <tr>
+ <td class="listing_lines" align="right"><pre>1</pre></td>
+ <td class="listing_code"><pre class="programlisting">gst<span class="gtkdoc opt">-</span>launch<span class="gtkdoc opt">-</span><span class="number">1.0</span> <span class="gtkdoc opt">-</span>v rtmpsrc location<span class="gtkdoc opt">=</span>rtmp<span class="gtkdoc opt">:</span><span class="gtkdoc slc">//somehost/someurl ! fakesink</span></pre></td>
+ </tr>
+ </tbody>
+ </table>
+</div>
+ Open an RTMP location and pass its content to fakesink.
+</div>
<div class="refsynopsisdiv">
<h2>Synopsis</h2>
<div class="refsect2">
-<a name="id-1.2.62.8.2.1"></a><h3>Element Information</h3>
+<a name="id-1.2.61.8.4.1"></a><h3>Element Information</h3>
<div class="variablelist"><table border="0" class="variablelist">
<colgroup>
<col align="left" valign="top">
@@ -111,7 +135,7 @@
</div>
<hr>
<div class="refsect2">
-<a name="id-1.2.62.8.2.2"></a><h3>Element Pads</h3>
+<a name="id-1.2.61.8.4.2"></a><h3>Element Pads</h3>
<div class="variablelist"><table border="0" class="variablelist">
<colgroup>
<col align="left" valign="top">
@@ -148,6 +172,7 @@
<div class="refsect2">
<a name="GstRTMPSrc-struct"></a><h3>struct GstRTMPSrc</h3>
<pre class="programlisting">struct GstRTMPSrc;</pre>
+<p>Opaque data structure.</p>
</div>
</div>
<div class="refsect1">
@@ -159,6 +184,15 @@
<p>Flags: Read / Write</p>
<p>Default value: NULL</p>
</div>
+<hr>
+<div class="refsect2">
+<a name="GstRTMPSrc--timeout"></a><h3>The <code class="literal">“timeout”</code> property</h3>
+<pre class="programlisting"> “timeout” <a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gint"><span class="type">gint</span></a></pre>
+<p>Time without receiving any data from the server to wait before to timeout the session.</p>
+<p>Flags: Read / Write</p>
+<p>Allowed values: >= 0</p>
+<p>Default value: 120</p>
+</div>
</div>
</div>
<div class="footer">
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-sdpdemux.html b/docs/plugins/html/gst-plugins-bad-plugins-sdpdemux.html
index f6e9eb4..88aac0c 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-sdpdemux.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-sdpdemux.html
@@ -108,7 +108,7 @@
<p>sdpdemux acts like a live element and will therefore only generate data in the
PLAYING state.</p>
<div class="refsect2">
-<a name="id-1.2.65.8.5"></a><h3>Example launch line</h3>
+<a name="id-1.2.64.8.5"></a><h3>Example launch line</h3>
<div class="informalexample">
<table class="listing_frame" border="0" cellpadding="0" cellspacing="0">
<tbody>
@@ -125,7 +125,7 @@
<div class="refsynopsisdiv">
<h2>Synopsis</h2>
<div class="refsect2">
-<a name="id-1.2.65.8.6.1"></a><h3>Element Information</h3>
+<a name="id-1.2.64.8.6.1"></a><h3>Element Information</h3>
<div class="variablelist"><table border="0" class="variablelist">
<colgroup>
<col align="left" valign="top">
@@ -151,7 +151,7 @@
</div>
<hr>
<div class="refsect2">
-<a name="id-1.2.65.8.6.2"></a><h3>Element Pads</h3>
+<a name="id-1.2.64.8.6.2"></a><h3>Element Pads</h3>
<div class="variablelist"><table border="0" class="variablelist">
<colgroup>
<col align="left" valign="top">
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-shmsink.html b/docs/plugins/html/gst-plugins-bad-plugins-shmsink.html
index 791d2be..3021921 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-shmsink.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-shmsink.html
@@ -119,10 +119,25 @@
</div>
<div class="refsect1">
<a name="gst-plugins-bad-plugins-shmsink.description"></a><h2>Description</h2>
+<p>Send data over shared memory to the matching source.</p>
+<div class="refsect2">
+<a name="id-1.2.62.8.3"></a><h3>Example launch lines</h3>
+<div class="informalexample">
+ <table class="listing_frame" border="0" cellpadding="0" cellspacing="0">
+ <tbody>
+ <tr>
+ <td class="listing_lines" align="right"><pre>1</pre></td>
+ <td class="listing_code"><pre class="programlisting">gst<span class="gtkdoc opt">-</span>launch<span class="gtkdoc opt">-</span><span class="number">1.0</span> <span class="gtkdoc opt">-</span>v videotestsrc <span class="gtkdoc opt">!</span> shmsink socket<span class="gtkdoc opt">-</span>path<span class="gtkdoc opt">=/</span>tmp<span class="gtkdoc opt">/</span>blah shm<span class="gtkdoc opt">-</span>size<span class="gtkdoc opt">=</span><span class="number">1000000</span></pre></td>
+ </tr>
+ </tbody>
+ </table>
+</div>
+ Send video to shm buffers.
+</div>
<div class="refsynopsisdiv">
<h2>Synopsis</h2>
<div class="refsect2">
-<a name="id-1.2.63.8.2.1"></a><h3>Element Information</h3>
+<a name="id-1.2.62.8.4.1"></a><h3>Element Information</h3>
<div class="variablelist"><table border="0" class="variablelist">
<colgroup>
<col align="left" valign="top">
@@ -148,7 +163,7 @@
</div>
<hr>
<div class="refsect2">
-<a name="id-1.2.63.8.2.2"></a><h3>Element Pads</h3>
+<a name="id-1.2.62.8.4.2"></a><h3>Element Pads</h3>
<div class="variablelist"><table border="0" class="variablelist">
<colgroup>
<col align="left" valign="top">
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-shmsrc.html b/docs/plugins/html/gst-plugins-bad-plugins-shmsrc.html
index 2361a73..3779d7d 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-shmsrc.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-shmsrc.html
@@ -88,10 +88,29 @@
</div>
<div class="refsect1">
<a name="gst-plugins-bad-plugins-shmsrc.description"></a><h2>Description</h2>
+<p>Receive data from the shared memory sink.</p>
+<div class="refsect2">
+<a name="id-1.2.63.7.3"></a><h3>Example launch lines</h3>
+<div class="informalexample">
+ <table class="listing_frame" border="0" cellpadding="0" cellspacing="0">
+ <tbody>
+ <tr>
+ <td class="listing_lines" align="right"><pre>1
+2
+3</pre></td>
+ <td class="listing_code"><pre class="programlisting">gst<span class="gtkdoc opt">-</span>launch<span class="gtkdoc opt">-</span><span class="number">1.0</span> shmsrc socket<span class="gtkdoc opt">-</span>path<span class="gtkdoc opt">=/</span>tmp<span class="gtkdoc opt">/</span>blah <span class="gtkdoc opt">!</span> \
+<span class="string">"video/x-yuv, format=YUY2, color-matrix=sdtv, \</span>
+<span class="string">chroma-site=mpeg2, width=(int)320, height=(int)240, framerate=(fraction)30/1"</span> <span class="gtkdoc opt">!</span> autovideosink</pre></td>
+ </tr>
+ </tbody>
+ </table>
+</div>
+ Render video from shm buffers.
+</div>
<div class="refsynopsisdiv">
<h2>Synopsis</h2>
<div class="refsect2">
-<a name="id-1.2.64.7.2.1"></a><h3>Element Information</h3>
+<a name="id-1.2.63.7.4.1"></a><h3>Element Information</h3>
<div class="variablelist"><table border="0" class="variablelist">
<colgroup>
<col align="left" valign="top">
@@ -117,7 +136,7 @@
</div>
<hr>
<div class="refsect2">
-<a name="id-1.2.64.7.2.2"></a><h3>Element Pads</h3>
+<a name="id-1.2.63.7.4.2"></a><h3>Element Pads</h3>
<div class="variablelist"><table border="0" class="variablelist">
<colgroup>
<col align="left" valign="top">
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-solarize.html b/docs/plugins/html/gst-plugins-bad-plugins-solarize.html
index 60a28e3..68e1283 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-solarize.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-solarize.html
@@ -93,7 +93,7 @@
<a name="gst-plugins-bad-plugins-solarize.description"></a><h2>Description</h2>
<p>Solarize does a smart inverse in a video stream in realtime.</p>
<div class="refsect2">
-<a name="id-1.2.66.7.3"></a><h3>Example launch line</h3>
+<a name="id-1.2.65.7.3"></a><h3>Example launch line</h3>
<div class="informalexample">
<table class="listing_frame" border="0" cellpadding="0" cellspacing="0">
<tbody>
@@ -109,7 +109,7 @@
<div class="refsynopsisdiv">
<h2>Synopsis</h2>
<div class="refsect2">
-<a name="id-1.2.66.7.4.1"></a><h3>Element Information</h3>
+<a name="id-1.2.65.7.4.1"></a><h3>Element Information</h3>
<div class="variablelist"><table border="0" class="variablelist">
<colgroup>
<col align="left" valign="top">
@@ -135,7 +135,7 @@
</div>
<hr>
<div class="refsect2">
-<a name="id-1.2.66.7.4.2"></a><h3>Element Pads</h3>
+<a name="id-1.2.65.7.4.2"></a><h3>Element Pads</h3>
<div class="variablelist"><table border="0" class="variablelist">
<colgroup>
<col align="left" valign="top">
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-spacescope.html b/docs/plugins/html/gst-plugins-bad-plugins-spacescope.html
index 6b42299..a6f590f 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-spacescope.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-spacescope.html
@@ -76,7 +76,7 @@
<p>Spacescope is a simple audio visualisation element. It maps the left and
right channel to x and y coordinates.</p>
<div class="refsect2">
-<a name="id-1.2.67.7.3"></a><h3>Example launch line</h3>
+<a name="id-1.2.66.7.3"></a><h3>Example launch line</h3>
<div class="informalexample">
<table class="listing_frame" border="0" cellpadding="0" cellspacing="0">
<tbody>
@@ -92,7 +92,7 @@
<div class="refsynopsisdiv">
<h2>Synopsis</h2>
<div class="refsect2">
-<a name="id-1.2.67.7.4.1"></a><h3>Element Information</h3>
+<a name="id-1.2.66.7.4.1"></a><h3>Element Information</h3>
<div class="variablelist"><table border="0" class="variablelist">
<colgroup>
<col align="left" valign="top">
@@ -118,7 +118,7 @@
</div>
<hr>
<div class="refsect2">
-<a name="id-1.2.67.7.4.2"></a><h3>Element Pads</h3>
+<a name="id-1.2.66.7.4.2"></a><h3>Element Pads</h3>
<div class="variablelist"><table border="0" class="variablelist">
<colgroup>
<col align="left" valign="top">
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-spectrascope.html b/docs/plugins/html/gst-plugins-bad-plugins-spectrascope.html
index 4fa8dc7..a8f954d 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-spectrascope.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-spectrascope.html
@@ -60,7 +60,7 @@
<p>Spectrascope is a simple spectrum visualisation element. It renders the
frequency spectrum as a series of bars.</p>
<div class="refsect2">
-<a name="id-1.2.68.6.3"></a><h3>Example launch line</h3>
+<a name="id-1.2.67.6.3"></a><h3>Example launch line</h3>
<div class="informalexample">
<table class="listing_frame" border="0" cellpadding="0" cellspacing="0">
<tbody>
@@ -76,7 +76,7 @@
<div class="refsynopsisdiv">
<h2>Synopsis</h2>
<div class="refsect2">
-<a name="id-1.2.68.6.4.1"></a><h3>Element Information</h3>
+<a name="id-1.2.67.6.4.1"></a><h3>Element Information</h3>
<div class="variablelist"><table border="0" class="variablelist">
<colgroup>
<col align="left" valign="top">
@@ -102,7 +102,7 @@
</div>
<hr>
<div class="refsect2">
-<a name="id-1.2.68.6.4.2"></a><h3>Element Pads</h3>
+<a name="id-1.2.67.6.4.2"></a><h3>Element Pads</h3>
<div class="variablelist"><table border="0" class="variablelist">
<colgroup>
<col align="left" valign="top">
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-speed.html b/docs/plugins/html/gst-plugins-bad-plugins-speed.html
index 589073e..e99cf76 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-speed.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-speed.html
@@ -78,7 +78,7 @@
element (but relies on the decoder/demuxer to handle this correctly, also
requires a fairly up-to-date gst-plugins-base, as of February 2007).</p>
<div class="refsect2">
-<a name="id-1.2.70.7.4"></a><h3>Example launch line</h3>
+<a name="id-1.2.69.7.4"></a><h3>Example launch line</h3>
<div class="informalexample">
<table class="listing_frame" border="0" cellpadding="0" cellspacing="0">
<tbody>
@@ -94,7 +94,7 @@
<div class="refsynopsisdiv">
<h2>Synopsis</h2>
<div class="refsect2">
-<a name="id-1.2.70.7.5.1"></a><h3>Element Information</h3>
+<a name="id-1.2.69.7.5.1"></a><h3>Element Information</h3>
<div class="variablelist"><table border="0" class="variablelist">
<colgroup>
<col align="left" valign="top">
@@ -120,7 +120,7 @@
</div>
<hr>
<div class="refsect2">
-<a name="id-1.2.70.7.5.2"></a><h3>Element Pads</h3>
+<a name="id-1.2.69.7.5.2"></a><h3>Element Pads</h3>
<div class="variablelist"><table border="0" class="variablelist">
<colgroup>
<col align="left" valign="top">
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-sphere.html b/docs/plugins/html/gst-plugins-bad-plugins-sphere.html
index c37c2c6..870d652 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-sphere.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-sphere.html
@@ -78,7 +78,7 @@
<a name="gst-plugins-bad-plugins-sphere.description"></a><h2>Description</h2>
<p>The sphere element applies a 'sphere' geometric transform to the image.</p>
<div class="refsect2">
-<a name="id-1.2.71.7.3"></a><h3>Example launch line</h3>
+<a name="id-1.2.70.7.3"></a><h3>Example launch line</h3>
<div class="informalexample">
<table class="listing_frame" border="0" cellpadding="0" cellspacing="0">
<tbody>
@@ -94,7 +94,7 @@
<div class="refsynopsisdiv">
<h2>Synopsis</h2>
<div class="refsect2">
-<a name="id-1.2.71.7.4.1"></a><h3>Element Information</h3>
+<a name="id-1.2.70.7.4.1"></a><h3>Element Information</h3>
<div class="variablelist"><table border="0" class="variablelist">
<colgroup>
<col align="left" valign="top">
@@ -120,7 +120,7 @@
</div>
<hr>
<div class="refsect2">
-<a name="id-1.2.71.7.4.2"></a><h3>Element Pads</h3>
+<a name="id-1.2.70.7.4.2"></a><h3>Element Pads</h3>
<div class="variablelist"><table border="0" class="variablelist">
<colgroup>
<col align="left" valign="top">
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-square.html b/docs/plugins/html/gst-plugins-bad-plugins-square.html
index d80e942..96e6026 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-square.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-square.html
@@ -89,7 +89,7 @@
<a name="gst-plugins-bad-plugins-square.description"></a><h2>Description</h2>
<p>The square element distorts the center part of the image into a square.</p>
<div class="refsect2">
-<a name="id-1.2.72.7.3"></a><h3>Example launch line</h3>
+<a name="id-1.2.71.7.3"></a><h3>Example launch line</h3>
<div class="informalexample">
<table class="listing_frame" border="0" cellpadding="0" cellspacing="0">
<tbody>
@@ -105,7 +105,7 @@
<div class="refsynopsisdiv">
<h2>Synopsis</h2>
<div class="refsect2">
-<a name="id-1.2.72.7.4.1"></a><h3>Element Information</h3>
+<a name="id-1.2.71.7.4.1"></a><h3>Element Information</h3>
<div class="variablelist"><table border="0" class="variablelist">
<colgroup>
<col align="left" valign="top">
@@ -131,7 +131,7 @@
</div>
<hr>
<div class="refsect2">
-<a name="id-1.2.72.7.4.2"></a><h3>Element Pads</h3>
+<a name="id-1.2.71.7.4.2"></a><h3>Element Pads</h3>
<div class="variablelist"><table border="0" class="variablelist">
<colgroup>
<col align="left" valign="top">
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-stretch.html b/docs/plugins/html/gst-plugins-bad-plugins-stretch.html
index 2efd75b..72faba4 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-stretch.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-stretch.html
@@ -78,7 +78,7 @@
<a name="gst-plugins-bad-plugins-stretch.description"></a><h2>Description</h2>
<p>The stretch element stretches the image in a circle around the center point.</p>
<div class="refsect2">
-<a name="id-1.2.73.7.3"></a><h3>Example launch line</h3>
+<a name="id-1.2.72.7.3"></a><h3>Example launch line</h3>
<div class="informalexample">
<table class="listing_frame" border="0" cellpadding="0" cellspacing="0">
<tbody>
@@ -94,7 +94,7 @@
<div class="refsynopsisdiv">
<h2>Synopsis</h2>
<div class="refsect2">
-<a name="id-1.2.73.7.4.1"></a><h3>Element Information</h3>
+<a name="id-1.2.72.7.4.1"></a><h3>Element Information</h3>
<div class="variablelist"><table border="0" class="variablelist">
<colgroup>
<col align="left" valign="top">
@@ -120,7 +120,7 @@
</div>
<hr>
<div class="refsect2">
-<a name="id-1.2.73.7.4.2"></a><h3>Element Pads</h3>
+<a name="id-1.2.72.7.4.2"></a><h3>Element Pads</h3>
<div class="variablelist"><table border="0" class="variablelist">
<colgroup>
<col align="left" valign="top">
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-synaescope.html b/docs/plugins/html/gst-plugins-bad-plugins-synaescope.html
index 2c8b34e..f5dbbc6 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-synaescope.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-synaescope.html
@@ -60,7 +60,7 @@
<p>Synaescope is an audio visualisation element. It analyzes frequencies and
out-of phase properties of audio and draws this as clouds of stars.</p>
<div class="refsect2">
-<a name="id-1.2.69.6.3"></a><h3>Example launch line</h3>
+<a name="id-1.2.68.6.3"></a><h3>Example launch line</h3>
<div class="informalexample">
<table class="listing_frame" border="0" cellpadding="0" cellspacing="0">
<tbody>
@@ -76,7 +76,7 @@
<div class="refsynopsisdiv">
<h2>Synopsis</h2>
<div class="refsect2">
-<a name="id-1.2.69.6.4.1"></a><h3>Element Information</h3>
+<a name="id-1.2.68.6.4.1"></a><h3>Element Information</h3>
<div class="variablelist"><table border="0" class="variablelist">
<colgroup>
<col align="left" valign="top">
@@ -102,7 +102,7 @@
</div>
<hr>
<div class="refsect2">
-<a name="id-1.2.69.6.4.2"></a><h3>Element Pads</h3>
+<a name="id-1.2.68.6.4.2"></a><h3>Element Pads</h3>
<div class="variablelist"><table border="0" class="variablelist">
<colgroup>
<col align="left" valign="top">
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-templatematch.html b/docs/plugins/html/gst-plugins-bad-plugins-templatematch.html
index 1af6a1b..64c6956 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-templatematch.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-templatematch.html
@@ -15,7 +15,8 @@
<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="5"><tr valign="middle">
<td width="100%" align="left" class="shortcuts">
<a href="#" class="shortcut">Top</a><span id="nav_description"> <span class="dim">|</span>
- <a href="#gst-plugins-bad-plugins-templatematch.description" class="shortcut">Description</a></span><span id="nav_properties"> <span class="dim">|</span>
+ <a href="#gst-plugins-bad-plugins-templatematch.description" class="shortcut">Description</a></span><span id="nav_hierarchy"> <span class="dim">|</span>
+ <a href="#gst-plugins-bad-plugins-templatematch.object-hierarchy" class="shortcut">Object Hierarchy</a></span><span id="nav_properties"> <span class="dim">|</span>
<a href="#gst-plugins-bad-plugins-templatematch.properties" class="shortcut">Properties</a></span>
</td>
<td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
@@ -60,7 +61,7 @@
</tbody>
</table></div>
</div>
-<a name="GstSynaeScope"></a><div class="refsect1">
+<a name="GstTemplateMatch"></a><div class="refsect1">
<a name="gst-plugins-bad-plugins-templatematch.other"></a><h2>Types and Values</h2>
<div class="informaltable"><table class="informaltable" width="100%" border="0">
<colgroup>
@@ -69,16 +70,43 @@
</colgroup>
<tbody><tr>
<td class="datatype_keyword">struct</td>
-<td class="function_name"><a class="link" href="gst-plugins-bad-plugins-templatematch.html#GstTemplateMatch" title="struct GstTemplateMatch">GstTemplateMatch</a></td>
+<td class="function_name"><a class="link" href="gst-plugins-bad-plugins-templatematch.html#GstTemplateMatch-struct" title="struct GstTemplateMatch">GstTemplateMatch</a></td>
</tr></tbody>
</table></div>
</div>
<div class="refsect1">
+<a name="gst-plugins-bad-plugins-templatematch.object-hierarchy"></a><h2>Object Hierarchy</h2>
+<pre class="screen"> <a href="/usr/share/gtk-doc/html/gobjectgobject-The-Base-Object-Type.html#GObject-struct">GObject</a>
+ <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gobjectgobject-The-Base-Object-Type.html#GInitiallyUnowned">GInitiallyUnowned</a>
+ <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gstreamer-1.0GstObject.html#GstObject-struct">GstObject</a>
+ <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gstreamer-1.0GstElement.html#GstElement-struct">GstElement</a>
+ <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gstreamer-libs-1.0GstBaseTransform.html#GstBaseTransform-struct">GstBaseTransform</a>
+ <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gst-plugins-base-libs-1.0gst-plugins-base-libs-gstvideofilter.html#GstVideoFilter-struct">GstVideoFilter</a>
+ <span class="lineart">╰──</span> GstOpencvVideoFilter
+ <span class="lineart">╰──</span> GstTemplateMatch
+</pre>
+</div>
+<div class="refsect1">
<a name="gst-plugins-bad-plugins-templatematch.description"></a><h2>Description</h2>
+<p>Performs template matching on videos and images, providing detected positions via bus messages.</p>
+<div class="refsect2">
+<a name="id-1.2.73.7.3"></a><h3>Example launch line</h3>
+<div class="informalexample">
+ <table class="listing_frame" border="0" cellpadding="0" cellspacing="0">
+ <tbody>
+ <tr>
+ <td class="listing_lines" align="right"><pre>1</pre></td>
+ <td class="listing_code"><pre class="programlisting">gst<span class="gtkdoc opt">-</span>launch<span class="gtkdoc opt">-</span><span class="number">1.0</span> videotestsrc <span class="gtkdoc opt">!</span> decodebin <span class="gtkdoc opt">!</span> videoconvert <span class="gtkdoc opt">!</span> templatematch <span class="gtkdoc kwc">template</span><span class="gtkdoc opt">=/</span>path<span class="gtkdoc opt">/</span>to<span class="gtkdoc opt">/</span>file<span class="gtkdoc opt">.</span>jpg <span class="gtkdoc opt">!</span> videoconvert <span class="gtkdoc opt">!</span> xvimagesink</pre></td>
+ </tr>
+ </tbody>
+ </table>
+</div>
+
+</div>
<div class="refsynopsisdiv">
<h2>Synopsis</h2>
<div class="refsect2">
-<a name="id-1.2.74.6.2.1"></a><h3>Element Information</h3>
+<a name="id-1.2.73.7.4.1"></a><h3>Element Information</h3>
<div class="variablelist"><table border="0" class="variablelist">
<colgroup>
<col align="left" valign="top">
@@ -104,7 +132,7 @@
</div>
<hr>
<div class="refsect2">
-<a name="id-1.2.74.6.2.2"></a><h3>Element Pads</h3>
+<a name="id-1.2.73.7.4.2"></a><h3>Element Pads</h3>
<div class="variablelist"><table border="0" class="variablelist">
<colgroup>
<col align="left" valign="top">
@@ -163,18 +191,8 @@
<div class="refsect1">
<a name="gst-plugins-bad-plugins-templatematch.other_details"></a><h2>Types and Values</h2>
<div class="refsect2">
-<a name="GstTemplateMatch"></a><h3>struct GstTemplateMatch</h3>
-<pre class="programlisting">struct GstTemplateMatch {
- GstOpencvVideoFilter element;
-
- gint method;
- gboolean display;
-
- gchar *templ;
-
- IplImage *cvGray, *cvTemplateImage, *cvDistImage;
-};
-</pre>
+<a name="GstTemplateMatch-struct"></a><h3>struct GstTemplateMatch</h3>
+<pre class="programlisting">struct GstTemplateMatch;</pre>
</div>
</div>
<div class="refsect1">
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-tunnel.html b/docs/plugins/html/gst-plugins-bad-plugins-tunnel.html
index 891d87b..53a75bf 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-tunnel.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-tunnel.html
@@ -63,7 +63,7 @@
<p>Tunnel is a geometric image transform element. It applies a light tunnel
effect.</p>
<div class="refsect2">
-<a name="id-1.2.76.6.3"></a><h3>Example launch line</h3>
+<a name="id-1.2.75.6.3"></a><h3>Example launch line</h3>
<div class="informalexample">
<table class="listing_frame" border="0" cellpadding="0" cellspacing="0">
<tbody>
@@ -79,7 +79,7 @@
<div class="refsynopsisdiv">
<h2>Synopsis</h2>
<div class="refsect2">
-<a name="id-1.2.76.6.4.1"></a><h3>Element Information</h3>
+<a name="id-1.2.75.6.4.1"></a><h3>Element Information</h3>
<div class="variablelist"><table border="0" class="variablelist">
<colgroup>
<col align="left" valign="top">
@@ -105,7 +105,7 @@
</div>
<hr>
<div class="refsect2">
-<a name="id-1.2.76.6.4.2"></a><h3>Element Pads</h3>
+<a name="id-1.2.75.6.4.2"></a><h3>Element Pads</h3>
<div class="variablelist"><table border="0" class="variablelist">
<colgroup>
<col align="left" valign="top">
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-twirl.html b/docs/plugins/html/gst-plugins-bad-plugins-twirl.html
index ec9e38b..6eb025a 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-twirl.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-twirl.html
@@ -78,7 +78,7 @@
<a name="gst-plugins-bad-plugins-twirl.description"></a><h2>Description</h2>
<p>The twirl element twists the image from the center out.</p>
<div class="refsect2">
-<a name="id-1.2.77.7.3"></a><h3>Example launch line</h3>
+<a name="id-1.2.76.7.3"></a><h3>Example launch line</h3>
<div class="informalexample">
<table class="listing_frame" border="0" cellpadding="0" cellspacing="0">
<tbody>
@@ -94,7 +94,7 @@
<div class="refsynopsisdiv">
<h2>Synopsis</h2>
<div class="refsect2">
-<a name="id-1.2.77.7.4.1"></a><h3>Element Information</h3>
+<a name="id-1.2.76.7.4.1"></a><h3>Element Information</h3>
<div class="variablelist"><table border="0" class="variablelist">
<colgroup>
<col align="left" valign="top">
@@ -120,7 +120,7 @@
</div>
<hr>
<div class="refsect2">
-<a name="id-1.2.77.7.4.2"></a><h3>Element Pads</h3>
+<a name="id-1.2.76.7.4.2"></a><h3>Element Pads</h3>
<div class="variablelist"><table border="0" class="variablelist">
<colgroup>
<col align="left" valign="top">
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-videoparse.html b/docs/plugins/html/gst-plugins-bad-plugins-videoparse.html
index 8ef7792..c7114ff 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-videoparse.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-videoparse.html
@@ -161,7 +161,7 @@
<div class="refsynopsisdiv">
<h2>Synopsis</h2>
<div class="refsect2">
-<a name="id-1.2.78.7.3.1"></a><h3>Element Information</h3>
+<a name="id-1.2.77.7.3.1"></a><h3>Element Information</h3>
<div class="variablelist"><table border="0" class="variablelist">
<colgroup>
<col align="left" valign="top">
@@ -187,7 +187,7 @@
</div>
<hr>
<div class="refsect2">
-<a name="id-1.2.78.7.3.2"></a><h3>Element Pads</h3>
+<a name="id-1.2.77.7.3.2"></a><h3>Element Pads</h3>
<div class="variablelist"><table border="0" class="variablelist">
<colgroup>
<col align="left" valign="top">
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-voaacenc.html b/docs/plugins/html/gst-plugins-bad-plugins-voaacenc.html
index 6d37c53..81a9dcb 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-voaacenc.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-voaacenc.html
@@ -80,10 +80,26 @@
</div>
<div class="refsect1">
<a name="gst-plugins-bad-plugins-voaacenc.description"></a><h2>Description</h2>
+<p>AAC audio encoder based on vo-aacenc library </p>
+<a class="ulink" href="http://sourceforge.net/projects/opencore-amr/files/vo-aacenc/" target="_top">vo-aacenc library source file</a>.
+<div class="refsect2">
+<a name="id-1.2.80.8.4"></a><h3>Example launch line</h3>
+<div class="informalexample">
+ <table class="listing_frame" border="0" cellpadding="0" cellspacing="0">
+ <tbody>
+ <tr>
+ <td class="listing_lines" align="right"><pre>1</pre></td>
+ <td class="listing_code"><pre class="programlisting">gst<span class="gtkdoc opt">-</span>launch<span class="gtkdoc opt">-</span><span class="number">1.0</span> filesrc location<span class="gtkdoc opt">=</span>abc<span class="gtkdoc opt">.</span>wav <span class="gtkdoc opt">!</span> wavparse <span class="gtkdoc opt">!</span> audioresample <span class="gtkdoc opt">!</span> audioconvert <span class="gtkdoc opt">!</span> voaacenc <span class="gtkdoc opt">!</span> filesink location<span class="gtkdoc opt">=</span>abc<span class="gtkdoc opt">.</span>aac</pre></td>
+ </tr>
+ </tbody>
+ </table>
+</div>
+
+</div>
<div class="refsynopsisdiv">
<h2>Synopsis</h2>
<div class="refsect2">
-<a name="id-1.2.81.8.2.1"></a><h3>Element Information</h3>
+<a name="id-1.2.80.8.5.1"></a><h3>Element Information</h3>
<div class="variablelist"><table border="0" class="variablelist">
<colgroup>
<col align="left" valign="top">
@@ -109,7 +125,7 @@
</div>
<hr>
<div class="refsect2">
-<a name="id-1.2.81.8.2.2"></a><h3>Element Pads</h3>
+<a name="id-1.2.80.8.5.2"></a><h3>Element Pads</h3>
<div class="variablelist"><table border="0" class="variablelist">
<colgroup>
<col align="left" valign="top">
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-voamrwbenc.html b/docs/plugins/html/gst-plugins-bad-plugins-voamrwbenc.html
index 4458aeb..ea54875 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-voamrwbenc.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-voamrwbenc.html
@@ -15,7 +15,10 @@
<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="5"><tr valign="middle">
<td width="100%" align="left" class="shortcuts">
<a href="#" class="shortcut">Top</a><span id="nav_description"> <span class="dim">|</span>
- <a href="#gst-plugins-bad-plugins-voamrwbenc.description" class="shortcut">Description</a></span>
+ <a href="#gst-plugins-bad-plugins-voamrwbenc.description" class="shortcut">Description</a></span><span id="nav_hierarchy"> <span class="dim">|</span>
+ <a href="#gst-plugins-bad-plugins-voamrwbenc.object-hierarchy" class="shortcut">Object Hierarchy</a></span><span id="nav_interfaces"> <span class="dim">|</span>
+ <a href="#gst-plugins-bad-plugins-voamrwbenc.implemented-interfaces" class="shortcut">Implemented Interfaces</a></span><span id="nav_properties"> <span class="dim">|</span>
+ <a href="#gst-plugins-bad-plugins-voamrwbenc.properties" class="shortcut">Properties</a></span>
</td>
<td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
<td><a accesskey="u" href="ch01.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
@@ -32,11 +35,73 @@
<td class="gallery_image" valign="top" align="right"></td>
</tr></table></div>
<div class="refsect1">
+<a name="gst-plugins-bad-plugins-voamrwbenc.properties"></a><h2>Properties</h2>
+<div class="informaltable"><table class="informaltable" border="0">
+<colgroup>
+<col width="150px" class="properties_type">
+<col width="300px" class="properties_name">
+<col width="200px" class="properties_flags">
+</colgroup>
+<tbody><tr>
+<td class="property_type"><span class="type">GstVoAmrWbEncBandMode</span></td>
+<td class="property_name"><a class="link" href="gst-plugins-bad-plugins-voamrwbenc.html#GstVoAmrWbEnc--band-mode" title="The “band-mode” property">band-mode</a></td>
+<td class="property_flags">Read / Write / Construct</td>
+</tr></tbody>
+</table></div>
+</div>
+<a name="GstVoAmrWbEnc"></a><div class="refsect1">
+<a name="gst-plugins-bad-plugins-voamrwbenc.other"></a><h2>Types and Values</h2>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
+<col width="150px" class="name">
+<col class="description">
+</colgroup>
+<tbody><tr>
+<td class="datatype_keyword">struct</td>
+<td class="function_name"><a class="link" href="gst-plugins-bad-plugins-voamrwbenc.html#GstVoAmrWbEnc-struct" title="struct GstVoAmrWbEnc">GstVoAmrWbEnc</a></td>
+</tr></tbody>
+</table></div>
+</div>
+<div class="refsect1">
+<a name="gst-plugins-bad-plugins-voamrwbenc.object-hierarchy"></a><h2>Object Hierarchy</h2>
+<pre class="screen"> <a href="/usr/share/gtk-doc/html/gobjectgobject-The-Base-Object-Type.html#GObject-struct">GObject</a>
+ <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gobjectgobject-The-Base-Object-Type.html#GInitiallyUnowned">GInitiallyUnowned</a>
+ <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gstreamer-1.0GstObject.html#GstObject-struct">GstObject</a>
+ <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gstreamer-1.0GstElement.html#GstElement-struct">GstElement</a>
+ <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gst-plugins-base-libs-1.0gst-plugins-base-libs-gstaudioencoder.html#GstAudioEncoder-struct">GstAudioEncoder</a>
+ <span class="lineart">╰──</span> GstVoAmrWbEnc
+</pre>
+</div>
+<div class="refsect1">
+<a name="gst-plugins-bad-plugins-voamrwbenc.implemented-interfaces"></a><h2>Implemented Interfaces</h2>
+<p>
+GstVoAmrWbEnc implements
+ <a href="/usr/share/gtk-doc/html/gstreamer-1.0GstPreset.html#GstPreset-struct">GstPreset</a>.</p>
+</div>
+<div class="refsect1">
<a name="gst-plugins-bad-plugins-voamrwbenc.description"></a><h2>Description</h2>
+<p>AMR wideband encoder based on the </p>
+<a class="ulink" href="http://www.penguin.cz/~utx/amr" target="_top">reference codec implementation</a>.
+<div class="refsect2">
+<a name="id-1.2.81.8.4"></a><h3>Example launch line</h3>
+<div class="informalexample">
+ <table class="listing_frame" border="0" cellpadding="0" cellspacing="0">
+ <tbody>
+ <tr>
+ <td class="listing_lines" align="right"><pre>1</pre></td>
+ <td class="listing_code"><pre class="programlisting">gst<span class="gtkdoc opt">-</span>launch filesrc location<span class="gtkdoc opt">=</span>abc<span class="gtkdoc opt">.</span>wav <span class="gtkdoc opt">!</span> wavparse <span class="gtkdoc opt">!</span> audioresample <span class="gtkdoc opt">!</span> audioconvert <span class="gtkdoc opt">!</span> voamrwbenc <span class="gtkdoc opt">!</span> filesink location<span class="gtkdoc opt">=</span>abc<span class="gtkdoc opt">.</span>amr</pre></td>
+ </tr>
+ </tbody>
+ </table>
+</div>
+
+Please note that the above stream misses the header, that is needed to play
+the stream.
+</div>
<div class="refsynopsisdiv">
<h2>Synopsis</h2>
<div class="refsect2">
-<a name="id-1.2.82.3.2.1"></a><h3>Element Information</h3>
+<a name="id-1.2.81.8.5.1"></a><h3>Element Information</h3>
<div class="variablelist"><table border="0" class="variablelist">
<colgroup>
<col align="left" valign="top">
@@ -62,7 +127,7 @@
</div>
<hr>
<div class="refsect2">
-<a name="id-1.2.82.3.2.2"></a><h3>Element Pads</h3>
+<a name="id-1.2.81.8.5.2"></a><h3>Element Pads</h3>
<div class="variablelist"><table border="0" class="variablelist">
<colgroup>
<col align="left" valign="top">
@@ -120,6 +185,24 @@
</div>
<div class="refsect1">
<a name="gst-plugins-bad-plugins-voamrwbenc.other_details"></a><h2>Types and Values</h2>
+<div class="refsect2">
+<a name="GstVoAmrWbEnc-struct"></a><h3>struct GstVoAmrWbEnc</h3>
+<pre class="programlisting">struct GstVoAmrWbEnc;</pre>
+</div>
+</div>
+<div class="refsect1">
+<a name="gst-plugins-bad-plugins-voamrwbenc.property-details"></a><h2>Property Details</h2>
+<div class="refsect2">
+<a name="GstVoAmrWbEnc--band-mode"></a><h3>The <code class="literal">“band-mode”</code> property</h3>
+<pre class="programlisting"> “band-mode” <span class="type">GstVoAmrWbEncBandMode</span></pre>
+<p>Encoding Band Mode (Kbps).</p>
+<p>Flags: Read / Write / Construct</p>
+<p>Default value: MR660</p>
+</div>
+</div>
+<div class="refsect1">
+<a name="gst-plugins-bad-plugins-voamrwbenc.see-also"></a><h2>See Also</h2>
+<p><span class="type">GstAmrWbDec</span>, <span class="type">GstAmrWbParse</span></p>
</div>
</div>
<div class="footer">
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-waterripple.html b/docs/plugins/html/gst-plugins-bad-plugins-waterripple.html
index 9df7ce9..1f52f73 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-waterripple.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-waterripple.html
@@ -90,7 +90,7 @@
<a name="gst-plugins-bad-plugins-waterripple.description"></a><h2>Description</h2>
<p>The waterripple element creates a water ripple effect on the image.</p>
<div class="refsect2">
-<a name="id-1.2.79.7.3"></a><h3>Example launch line</h3>
+<a name="id-1.2.78.7.3"></a><h3>Example launch line</h3>
<div class="informalexample">
<table class="listing_frame" border="0" cellpadding="0" cellspacing="0">
<tbody>
@@ -106,7 +106,7 @@
<div class="refsynopsisdiv">
<h2>Synopsis</h2>
<div class="refsect2">
-<a name="id-1.2.79.7.4.1"></a><h3>Element Information</h3>
+<a name="id-1.2.78.7.4.1"></a><h3>Element Information</h3>
<div class="variablelist"><table border="0" class="variablelist">
<colgroup>
<col align="left" valign="top">
@@ -132,7 +132,7 @@
</div>
<hr>
<div class="refsect2">
-<a name="id-1.2.79.7.4.2"></a><h3>Element Pads</h3>
+<a name="id-1.2.78.7.4.2"></a><h3>Element Pads</h3>
<div class="variablelist"><table border="0" class="variablelist">
<colgroup>
<col align="left" valign="top">
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-wavescope.html b/docs/plugins/html/gst-plugins-bad-plugins-wavescope.html
index dcbbce4..fcbded3 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-wavescope.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-wavescope.html
@@ -7,7 +7,7 @@
<link rel="home" href="index.html" title="GStreamer Bad Plugins 1.0 Plugins Reference Manual">
<link rel="up" href="ch01.html" title="gst-plugins-bad Elements">
<link rel="prev" href="gst-plugins-bad-plugins-voamrwbenc.html" title="voamrwbenc">
-<link rel="next" href="ch02.html" title="gst-plugins-bad Plugins">
+<link rel="next" href="gst-plugins-bad-plugins-webrtcdsp.html" title="webrtcdsp">
<meta name="generator" content="GTK-Doc V1.25 (XML mode)">
<link rel="stylesheet" href="style.css" type="text/css">
</head>
@@ -22,7 +22,7 @@
<td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
<td><a accesskey="u" href="ch01.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
<td><a accesskey="p" href="gst-plugins-bad-plugins-voamrwbenc.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
-<td><a accesskey="n" href="ch02.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
+<td><a accesskey="n" href="gst-plugins-bad-plugins-webrtcdsp.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
</tr></table>
<div class="refentry">
<a name="gst-plugins-bad-plugins-wavescope"></a><div class="titlepage"></div>
@@ -76,7 +76,7 @@
<p>Wavescope is a simple audio visualisation element. It renders the waveforms
like on an oscilloscope.</p>
<div class="refsect2">
-<a name="id-1.2.83.7.3"></a><h3>Example launch line</h3>
+<a name="id-1.2.82.7.3"></a><h3>Example launch line</h3>
<div class="informalexample">
<table class="listing_frame" border="0" cellpadding="0" cellspacing="0">
<tbody>
@@ -92,7 +92,7 @@
<div class="refsynopsisdiv">
<h2>Synopsis</h2>
<div class="refsect2">
-<a name="id-1.2.83.7.4.1"></a><h3>Element Information</h3>
+<a name="id-1.2.82.7.4.1"></a><h3>Element Information</h3>
<div class="variablelist"><table border="0" class="variablelist">
<colgroup>
<col align="left" valign="top">
@@ -118,7 +118,7 @@
</div>
<hr>
<div class="refsect2">
-<a name="id-1.2.83.7.4.2"></a><h3>Element Pads</h3>
+<a name="id-1.2.82.7.4.2"></a><h3>Element Pads</h3>
<div class="variablelist"><table border="0" class="variablelist">
<colgroup>
<col align="left" valign="top">
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-webrtcdsp.html b/docs/plugins/html/gst-plugins-bad-plugins-webrtcdsp.html
new file mode 100644
index 0000000..3640c08
--- /dev/null
+++ b/docs/plugins/html/gst-plugins-bad-plugins-webrtcdsp.html
@@ -0,0 +1,330 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>webrtcdsp: GStreamer Bad Plugins 1.0 Plugins Reference Manual</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
+<link rel="home" href="index.html" title="GStreamer Bad Plugins 1.0 Plugins Reference Manual">
+<link rel="up" href="ch01.html" title="gst-plugins-bad Elements">
+<link rel="prev" href="gst-plugins-bad-plugins-wavescope.html" title="wavescope">
+<link rel="next" href="gst-plugins-bad-plugins-webrtcechoprobe.html" title="webrtcechoprobe">
+<meta name="generator" content="GTK-Doc V1.25 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="5"><tr valign="middle">
+<td width="100%" align="left" class="shortcuts">
+<a href="#" class="shortcut">Top</a><span id="nav_description"> <span class="dim">|</span>
+ <a href="#gst-plugins-bad-plugins-webrtcdsp.description" class="shortcut">Description</a></span><span id="nav_properties"> <span class="dim">|</span>
+ <a href="#gst-plugins-bad-plugins-webrtcdsp.properties" class="shortcut">Properties</a></span>
+</td>
+<td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
+<td><a accesskey="u" href="ch01.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
+<td><a accesskey="p" href="gst-plugins-bad-plugins-wavescope.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
+<td><a accesskey="n" href="gst-plugins-bad-plugins-webrtcechoprobe.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
+</tr></table>
+<div class="refentry">
+<a name="gst-plugins-bad-plugins-webrtcdsp"></a><div class="titlepage"></div>
+<div class="refnamediv"><table width="100%"><tr>
+<td valign="top">
+<h2><span class="refentrytitle"><a name="gst-plugins-bad-plugins-webrtcdsp.top_of_page"></a>webrtcdsp</span></h2>
+<p>webrtcdsp — Audio Filter using WebRTC Audio Processing library</p>
+</td>
+<td class="gallery_image" valign="top" align="right"></td>
+</tr></table></div>
+<div class="refsect1">
+<a name="gst-plugins-bad-plugins-webrtcdsp.properties"></a><h2>Properties</h2>
+<div class="informaltable"><table class="informaltable" border="0">
+<colgroup>
+<col width="150px" class="properties_type">
+<col width="300px" class="properties_name">
+<col width="200px" class="properties_flags">
+</colgroup>
+<tbody>
+<tr>
+<td class="property_type"><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a></td>
+<td class="property_name"><a class="link" href="gst-plugins-bad-plugins-webrtcdsp.html#GstWebrtcDsp--echo-cancel" title="The “echo-cancel” property">echo-cancel</a></td>
+<td class="property_flags">Read / Write / Construct</td>
+</tr>
+<tr>
+<td class="property_type"><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a></td>
+<td class="property_name"><a class="link" href="gst-plugins-bad-plugins-webrtcdsp.html#GstWebrtcDsp--experimental-agc" title="The “experimental-agc” property">experimental-agc</a></td>
+<td class="property_flags">Read / Write / Construct</td>
+</tr>
+<tr>
+<td class="property_type"><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a></td>
+<td class="property_name"><a class="link" href="gst-plugins-bad-plugins-webrtcdsp.html#GstWebrtcDsp--extended-filter" title="The “extended-filter” property">extended-filter</a></td>
+<td class="property_flags">Read / Write / Construct</td>
+</tr>
+<tr>
+<td class="property_type"><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a></td>
+<td class="property_name"><a class="link" href="gst-plugins-bad-plugins-webrtcdsp.html#GstWebrtcDsp--gain-control" title="The “gain-control” property">gain-control</a></td>
+<td class="property_flags">Read / Write / Construct</td>
+</tr>
+<tr>
+<td class="property_type"><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a></td>
+<td class="property_name"><a class="link" href="gst-plugins-bad-plugins-webrtcdsp.html#GstWebrtcDsp--high-pass-filter" title="The “high-pass-filter” property">high-pass-filter</a></td>
+<td class="property_flags">Read / Write / Construct</td>
+</tr>
+<tr>
+<td class="property_type"><a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a></td>
+<td class="property_name"><a class="link" href="gst-plugins-bad-plugins-webrtcdsp.html#GstWebrtcDsp--noise-suppression" title="The “noise-suppression” property">noise-suppression</a></td>
+<td class="property_flags">Read / Write / Construct</td>
+</tr>
+<tr>
+<td class="property_type">
+<a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *</td>
+<td class="property_name"><a class="link" href="gst-plugins-bad-plugins-webrtcdsp.html#GstWebrtcDsp--probe" title="The “probe” property">probe</a></td>
+<td class="property_flags">Read / Write / Construct</td>
+</tr>
+<tr>
+<td class="property_type"><span class="type">GstWebrtcEchoSuppressionLevel</span></td>
+<td class="property_name"><a class="link" href="gst-plugins-bad-plugins-webrtcdsp.html#GstWebrtcDsp--echo-suppression-level" title="The “echo-suppression-level” property">echo-suppression-level</a></td>
+<td class="property_flags">Read / Write / Construct</td>
+</tr>
+<tr>
+<td class="property_type"><span class="type">GstWebrtcNoiseSuppressionLevel</span></td>
+<td class="property_name"><a class="link" href="gst-plugins-bad-plugins-webrtcdsp.html#GstWebrtcDsp--noise-suppression-level" title="The “noise-suppression-level” property">noise-suppression-level</a></td>
+<td class="property_flags">Read / Write / Construct</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<div class="refsect1">
+<a name="gst-plugins-bad-plugins-webrtcdsp.other"></a><h2>Types and Values</h2>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
+<col width="150px" class="name">
+<col class="description">
+</colgroup>
+<tbody><tr>
+<td class="datatype_keyword"> </td>
+<td class="function_name"><a class="link" href="gst-plugins-bad-plugins-webrtcdsp.html#GstWebrtcDsp" title="GstWebrtcDsp">GstWebrtcDsp</a></td>
+</tr></tbody>
+</table></div>
+</div>
+<div class="refsect1">
+<a name="gst-plugins-bad-plugins-webrtcdsp.description"></a><h2>Description</h2>
+<p>A voice enhancement filter based on WebRTC Audio Processing library. This
+library provides a whide variety of enhancement algorithms. This element
+tries to enable as much as possible. The currently enabled enhancements are
+High Pass Filter, Echo Canceller, Noise Suppression, Automatic Gain Control,
+and some extended filters.</p>
+<p>While webrtcdsp element can be used alone, there is an exception for the
+echo canceller. The audio canceller need to be aware of the far end streams
+that are played to loud speakers. For this, you must place a webrtcechoprobe
+element at that far end. Note that the sample rate must match between
+webrtcdsp and the webrtechoprobe. Though, the number of channels can differ.
+The probe is found by the DSP element using it's object name. By default,
+webrtcdsp looks for webrtcechoprobe0, which means it just work if you have
+a single probe and DSP.</p>
+<p>The probe can only be used within the same top level GstPipeline.
+Additonally, to simplify the code, the probe element must be created
+before the DSP sink pad is activated. It does not need to be in any
+particular state and does not even need to be added to the pipeline yet.</p>
+<div class="refsect2">
+<a name="id-1.2.83.5.5"></a><h3>Example launch line</h3>
+<p>As a conveniance, the echo canceller can be tested using an echo loop. In
+this configuration, one would expect a single echo to be heard.</p>
+<div class="informalexample">
+ <table class="listing_frame" border="0" cellpadding="0" cellspacing="0">
+ <tbody>
+ <tr>
+ <td class="listing_lines" align="right"><pre>1</pre></td>
+ <td class="listing_code"><pre class="programlisting">gst<span class="gtkdoc opt">-</span>launch<span class="gtkdoc opt">-</span><span class="number">1.0</span> pulsesrc <span class="gtkdoc opt">!</span> webrtcdsp <span class="gtkdoc opt">!</span> webrtcechoprobe <span class="gtkdoc opt">!</span> pulsesink</pre></td>
+ </tr>
+ </tbody>
+ </table>
+</div>
+
+<p></p>
+<p>In real environment, you'll place the probe before the playback, but only
+process the far end streams. The DSP should be placed as close as possible
+to the audio capture. The following pipeline is astracted and does not
+represent a real pipeline.</p>
+<div class="informalexample">
+ <table class="listing_frame" border="0" cellpadding="0" cellspacing="0">
+ <tbody>
+ <tr>
+ <td class="listing_lines" align="right"><pre>1
+2</pre></td>
+ <td class="listing_code"><pre class="programlisting">gst<span class="gtkdoc opt">-</span>launch<span class="gtkdoc opt">-</span><span class="number">1.0</span> far<span class="gtkdoc opt">-</span>end<span class="gtkdoc opt">-</span>src <span class="gtkdoc opt">!</span> audio<span class="gtkdoc opt">/</span>x<span class="gtkdoc opt">-</span>raw<span class="gtkdoc opt">,</span>rate<span class="gtkdoc opt">=</span><span class="number">48000</span> <span class="gtkdoc opt">!</span> webrtcechoprobe <span class="gtkdoc opt">!</span> pulsesink \
+ pulsesrc <span class="gtkdoc opt">!</span> audio<span class="gtkdoc opt">/</span>x<span class="gtkdoc opt">-</span>raw<span class="gtkdoc opt">,</span>rate<span class="gtkdoc opt">=</span><span class="number">48000</span> <span class="gtkdoc opt">!</span> webrtcdsp <span class="gtkdoc opt">!</span> far<span class="gtkdoc opt">-</span>end<span class="gtkdoc opt">-</span>sink</pre></td>
+ </tr>
+ </tbody>
+ </table>
+</div>
+
+<p></p>
+</div>
+<div class="refsynopsisdiv">
+<h2>Synopsis</h2>
+<div class="refsect2">
+<a name="id-1.2.83.5.6.1"></a><h3>Element Information</h3>
+<div class="variablelist"><table border="0" class="variablelist">
+<colgroup>
+<col align="left" valign="top">
+<col>
+</colgroup>
+<tbody>
+<tr>
+<td><p><span class="term">plugin</span></p></td>
+<td>
+ <a class="link" href="gst-plugins-bad-plugins-plugin-webrtcdsp.html#plugin-webrtcdsp">webrtcdsp</a>
+ </td>
+</tr>
+<tr>
+<td><p><span class="term">author</span></p></td>
+<td>Nicolas Dufresne <nicolas.dufresne@collabora.com></td>
+</tr>
+<tr>
+<td><p><span class="term">class</span></p></td>
+<td>Generic/Audio</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="id-1.2.83.5.6.2"></a><h3>Element Pads</h3>
+<div class="variablelist"><table border="0" class="variablelist">
+<colgroup>
+<col align="left" valign="top">
+<col>
+</colgroup>
+<tbody>
+<tr>
+<td><p><span class="term">name</span></p></td>
+<td>sink</td>
+</tr>
+<tr>
+<td><p><span class="term">direction</span></p></td>
+<td>sink</td>
+</tr>
+<tr>
+<td><p><span class="term">presence</span></p></td>
+<td>always</td>
+</tr>
+<tr>
+<td><p><span class="term">details</span></p></td>
+<td>audio/x-raw, format=(string)S16LE, layout=(string)interleaved, rate=(int){ 48000, 32000, 16000, 8000 }, channels=(int)[ 1, 2147483647 ]</td>
+</tr>
+</tbody>
+</table></div>
+<div class="variablelist"><table border="0" class="variablelist">
+<colgroup>
+<col align="left" valign="top">
+<col>
+</colgroup>
+<tbody>
+<tr>
+<td><p><span class="term">name</span></p></td>
+<td>src</td>
+</tr>
+<tr>
+<td><p><span class="term">direction</span></p></td>
+<td>source</td>
+</tr>
+<tr>
+<td><p><span class="term">presence</span></p></td>
+<td>always</td>
+</tr>
+<tr>
+<td><p><span class="term">details</span></p></td>
+<td>audio/x-raw, format=(string)S16LE, layout=(string)interleaved, rate=(int){ 48000, 32000, 16000, 8000 }, channels=(int)[ 1, 2147483647 ]</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+</div>
+</div>
+<div class="refsect1">
+<a name="gst-plugins-bad-plugins-webrtcdsp.functions_details"></a><h2>Functions</h2>
+<p></p>
+</div>
+<div class="refsect1">
+<a name="gst-plugins-bad-plugins-webrtcdsp.other_details"></a><h2>Types and Values</h2>
+<div class="refsect2">
+<a name="GstWebrtcDsp"></a><h3>GstWebrtcDsp</h3>
+<pre class="programlisting">typedef struct _GstWebrtcDsp GstWebrtcDsp;</pre>
+</div>
+</div>
+<div class="refsect1">
+<a name="gst-plugins-bad-plugins-webrtcdsp.property-details"></a><h2>Property Details</h2>
+<div class="refsect2">
+<a name="GstWebrtcDsp--echo-cancel"></a><h3>The <code class="literal">“echo-cancel”</code> property</h3>
+<pre class="programlisting"> “echo-cancel” <a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a></pre>
+<p>Enable or disable echo canceller, note that it will be disabled if no webrtcechoprobe has been found.</p>
+<p>Flags: Read / Write / Construct</p>
+<p>Default value: TRUE</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstWebrtcDsp--experimental-agc"></a><h3>The <code class="literal">“experimental-agc”</code> property</h3>
+<pre class="programlisting"> “experimental-agc” <a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a></pre>
+<p>Enable or disable experimental automatic gain control.</p>
+<p>Flags: Read / Write / Construct</p>
+<p>Default value: FALSE</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstWebrtcDsp--extended-filter"></a><h3>The <code class="literal">“extended-filter”</code> property</h3>
+<pre class="programlisting"> “extended-filter” <a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a></pre>
+<p>Enable or disable the extended filter.</p>
+<p>Flags: Read / Write / Construct</p>
+<p>Default value: TRUE</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstWebrtcDsp--gain-control"></a><h3>The <code class="literal">“gain-control”</code> property</h3>
+<pre class="programlisting"> “gain-control” <a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a></pre>
+<p>Enable or disable automatic digital gain control.</p>
+<p>Flags: Read / Write / Construct</p>
+<p>Default value: TRUE</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstWebrtcDsp--high-pass-filter"></a><h3>The <code class="literal">“high-pass-filter”</code> property</h3>
+<pre class="programlisting"> “high-pass-filter” <a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a></pre>
+<p>Enable or disable high pass filtering.</p>
+<p>Flags: Read / Write / Construct</p>
+<p>Default value: TRUE</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstWebrtcDsp--noise-suppression"></a><h3>The <code class="literal">“noise-suppression”</code> property</h3>
+<pre class="programlisting"> “noise-suppression” <a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gboolean"><span class="type">gboolean</span></a></pre>
+<p>Enable or disable noise suppression.</p>
+<p>Flags: Read / Write / Construct</p>
+<p>Default value: TRUE</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstWebrtcDsp--probe"></a><h3>The <code class="literal">“probe”</code> property</h3>
+<pre class="programlisting"> “probe” <a href="/usr/share/gtk-doc/html/glibglib-Basic-Types.html#gchar"><span class="type">gchar</span></a> *</pre>
+<p>The name of the webrtcechoprobe element that record the audio being played through loud speakers. Must be set before PAUSED state.</p>
+<p>Flags: Read / Write / Construct</p>
+<p>Default value: "webrtcechoprobe0"</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstWebrtcDsp--echo-suppression-level"></a><h3>The <code class="literal">“echo-suppression-level”</code> property</h3>
+<pre class="programlisting"> “echo-suppression-level” <span class="type">GstWebrtcEchoSuppressionLevel</span></pre>
+<p>Controls the aggressiveness of the suppressor. A higher level trades off double-talk performance for increased echo suppression.</p>
+<p>Flags: Read / Write / Construct</p>
+<p>Default value: Moderate Suppression</p>
+</div>
+<hr>
+<div class="refsect2">
+<a name="GstWebrtcDsp--noise-suppression-level"></a><h3>The <code class="literal">“noise-suppression-level”</code> property</h3>
+<pre class="programlisting"> “noise-suppression-level” <span class="type">GstWebrtcNoiseSuppressionLevel</span></pre>
+<p>Controls the aggressiveness of the suppression. Increasing the level will reduce the noise level at the expense of a higher speech distortion.</p>
+<p>Flags: Read / Write / Construct</p>
+<p>Default value: Moderate Suppression</p>
+</div>
+</div>
+</div>
+<div class="footer">
+<hr>Generated by GTK-Doc V1.25</div>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-webrtcechoprobe.html b/docs/plugins/html/gst-plugins-bad-plugins-webrtcechoprobe.html
new file mode 100644
index 0000000..2b8d2f3
--- /dev/null
+++ b/docs/plugins/html/gst-plugins-bad-plugins-webrtcechoprobe.html
@@ -0,0 +1,170 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>webrtcechoprobe: GStreamer Bad Plugins 1.0 Plugins Reference Manual</title>
+<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
+<link rel="home" href="index.html" title="GStreamer Bad Plugins 1.0 Plugins Reference Manual">
+<link rel="up" href="ch01.html" title="gst-plugins-bad Elements">
+<link rel="prev" href="gst-plugins-bad-plugins-webrtcdsp.html" title="webrtcdsp">
+<link rel="next" href="ch02.html" title="gst-plugins-bad Plugins">
+<meta name="generator" content="GTK-Doc V1.25 (XML mode)">
+<link rel="stylesheet" href="style.css" type="text/css">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="5"><tr valign="middle">
+<td width="100%" align="left" class="shortcuts">
+<a href="#" class="shortcut">Top</a><span id="nav_description"> <span class="dim">|</span>
+ <a href="#gst-plugins-bad-plugins-webrtcechoprobe.description" class="shortcut">Description</a></span>
+</td>
+<td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
+<td><a accesskey="u" href="ch01.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
+<td><a accesskey="p" href="gst-plugins-bad-plugins-webrtcdsp.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
+<td><a accesskey="n" href="ch02.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
+</tr></table>
+<div class="refentry">
+<a name="gst-plugins-bad-plugins-webrtcechoprobe"></a><div class="titlepage"></div>
+<div class="refnamediv"><table width="100%"><tr>
+<td valign="top">
+<h2><span class="refentrytitle"><a name="gst-plugins-bad-plugins-webrtcechoprobe.top_of_page"></a>webrtcechoprobe</span></h2>
+<p>webrtcechoprobe</p>
+</td>
+<td class="gallery_image" valign="top" align="right"></td>
+</tr></table></div>
+<div class="refsect1">
+<a name="gst-plugins-bad-plugins-webrtcechoprobe.other"></a><h2>Types and Values</h2>
+<div class="informaltable"><table class="informaltable" width="100%" border="0">
+<colgroup>
+<col width="150px" class="name">
+<col class="description">
+</colgroup>
+<tbody><tr>
+<td class="datatype_keyword">struct</td>
+<td class="function_name"><a class="link" href="gst-plugins-bad-plugins-webrtcechoprobe.html#GstWebrtcEchoProbe" title="struct GstWebrtcEchoProbe">GstWebrtcEchoProbe</a></td>
+</tr></tbody>
+</table></div>
+</div>
+<div class="refsect1">
+<a name="gst-plugins-bad-plugins-webrtcechoprobe.description"></a><h2>Description</h2>
+<p>This echo probe is to be used with the webrtcdsp element. See <a class="link" href="gst-plugins-bad-plugins-webrtcdsp.html" title="webrtcdsp"><span class="type">gst-plugins-bad-plugins-webrtcdsp</span></a>
+documentation for more details.</p>
+<div class="refsynopsisdiv">
+<h2>Synopsis</h2>
+<div class="refsect2">
+<a name="id-1.2.84.4.3.1"></a><h3>Element Information</h3>
+<div class="variablelist"><table border="0" class="variablelist">
+<colgroup>
+<col align="left" valign="top">
+<col>
+</colgroup>
+<tbody>
+<tr>
+<td><p><span class="term">plugin</span></p></td>
+<td>
+ <a class="link" href="gst-plugins-bad-plugins-plugin-webrtcdsp.html#plugin-webrtcdsp">webrtcdsp</a>
+ </td>
+</tr>
+<tr>
+<td><p><span class="term">author</span></p></td>
+<td>Nicolas Dufresne <nicolas.dufrsesne@collabora.com></td>
+</tr>
+<tr>
+<td><p><span class="term">class</span></p></td>
+<td>Generic/Audio</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<hr>
+<div class="refsect2">
+<a name="id-1.2.84.4.3.2"></a><h3>Element Pads</h3>
+<div class="variablelist"><table border="0" class="variablelist">
+<colgroup>
+<col align="left" valign="top">
+<col>
+</colgroup>
+<tbody>
+<tr>
+<td><p><span class="term">name</span></p></td>
+<td>sink</td>
+</tr>
+<tr>
+<td><p><span class="term">direction</span></p></td>
+<td>sink</td>
+</tr>
+<tr>
+<td><p><span class="term">presence</span></p></td>
+<td>always</td>
+</tr>
+<tr>
+<td><p><span class="term">details</span></p></td>
+<td>audio/x-raw, format=(string)S16LE, layout=(string)interleaved, rate=(int){ 48000, 32000, 16000, 8000 }, channels=(int)[ 1, 2147483647 ]</td>
+</tr>
+</tbody>
+</table></div>
+<div class="variablelist"><table border="0" class="variablelist">
+<colgroup>
+<col align="left" valign="top">
+<col>
+</colgroup>
+<tbody>
+<tr>
+<td><p><span class="term">name</span></p></td>
+<td>src</td>
+</tr>
+<tr>
+<td><p><span class="term">direction</span></p></td>
+<td>source</td>
+</tr>
+<tr>
+<td><p><span class="term">presence</span></p></td>
+<td>always</td>
+</tr>
+<tr>
+<td><p><span class="term">details</span></p></td>
+<td>audio/x-raw, format=(string)S16LE, layout=(string)interleaved, rate=(int){ 48000, 32000, 16000, 8000 }, channels=(int)[ 1, 2147483647 ]</td>
+</tr>
+</tbody>
+</table></div>
+</div>
+</div>
+</div>
+<div class="refsect1">
+<a name="gst-plugins-bad-plugins-webrtcechoprobe.functions_details"></a><h2>Functions</h2>
+<p></p>
+</div>
+<div class="refsect1">
+<a name="gst-plugins-bad-plugins-webrtcechoprobe.other_details"></a><h2>Types and Values</h2>
+<div class="refsect2">
+<a name="GstWebrtcEchoProbe"></a><h3>struct GstWebrtcEchoProbe</h3>
+<pre class="programlisting">struct GstWebrtcEchoProbe {
+ GstAudioFilter parent;
+
+ /* This lock is required as the DSP may need to lock itself using it's
+ * object lock and also lock the probe. The natural order for the DSP is
+ * to lock the DSP and then the echo probe. If we where using the probe
+ * object lock, we'd be racing with GstBin which will lock sink to src,
+ * and may accidently reverse the order. */
+ GMutex lock;
+
+ /* Protected by the lock */
+ GstAudioInfo info;
+ guint period_size;
+ GstClockTime latency;
+ gint delay;
+
+ GstSegment segment;
+ GstAdapter *adapter;
+
+ /* Private */
+ gboolean acquired;
+};
+</pre>
+<p>The adder object structure.</p>
+</div>
+</div>
+</div>
+<div class="footer">
+<hr>Generated by GTK-Doc V1.25</div>
+</body>
+</html>
\ No newline at end of file
diff --git a/docs/plugins/html/gst-plugins-bad-plugins-zbar.html b/docs/plugins/html/gst-plugins-bad-plugins-zbar.html
index 1a7b0a1..b9b70e8 100644
--- a/docs/plugins/html/gst-plugins-bad-plugins-zbar.html
+++ b/docs/plugins/html/gst-plugins-bad-plugins-zbar.html
@@ -86,10 +86,71 @@
</div>
<div class="refsect1">
<a name="gst-plugins-bad-plugins-zbar.description"></a><h2>Description</h2>
+<p>Detect bar codes in the video streams and send them as element messages to
+the <a href="/usr/share/gtk-doc/html/gstreamer-1.0GstBus.html#GstBus-struct"><span class="type">GstBus</span></a> if .<a class="link" href="gst-plugins-bad-plugins-zbar.html#GstZBar--message" title="The “message” property"><span class="type">“message”</span></a> property is <a href="/usr/share/gtk-doc/html/glibglib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a>.
+If the .<a class="link" href="gst-plugins-bad-plugins-zbar.html#GstZBar--attach-frame" title="The “attach-frame” property"><span class="type">“attach-frame”</span></a> property is <a href="/usr/share/gtk-doc/html/glibglib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a>, the posted barcode message
+includes a sample of the frame where the barcode was detected (Since 1.6).</p>
+<p>The element generate messages named</p>
+<code class="classname">"barcode"</code>. The structure containes these
+<p>fields:</p>
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
+<li class="listitem"><p>
+ <a href="/usr/share/gtk-doc/html/gstreamer-1.0GstClock.html#GstClockTime"><span class="type">GstClockTime</span></a>
+ <code class="classname">"timestamp"</code>:
+ the timestamp of the buffer that triggered the message.
+ </p></li>
+<li class="listitem"><p>
+ gchar*
+ <code class="classname">"type"</code>:
+ the symbol type.
+ </p></li>
+<li class="listitem"><p>
+ gchar*
+ <code class="classname">"symbol"</code>:
+ the deteted bar code data.
+ </p></li>
+<li class="listitem"><p>
+ gint
+ <code class="classname">"quality"</code>:
+ an unscaled, relative quantity: larger values are better than smaller
+ values.
+ </p></li>
+<li class="listitem"><p>
+ GstSample
+ <code class="classname">"frame"</code>:
+ the frame in which the barcode message was detected, if
+ the .<a class="link" href="gst-plugins-bad-plugins-zbar.html#GstZBar--attach-frame" title="The “attach-frame” property"><span class="type">“attach-frame”</span></a> property was set to <a href="/usr/share/gtk-doc/html/glibglib-Standard-Macros.html#TRUE:CAPS"><code class="literal">TRUE</code></a> (Since 1.6)
+ </p></li>
+</ul></div>
+<div class="refsect2">
+<a name="id-1.2.79.7.7"></a><h3>Example launch lines</h3>
+<div class="informalexample">
+ <table class="listing_frame" border="0" cellpadding="0" cellspacing="0">
+ <tbody>
+ <tr>
+ <td class="listing_lines" align="right"><pre>1</pre></td>
+ <td class="listing_code"><pre class="programlisting">gst<span class="gtkdoc opt">-</span>launch<span class="gtkdoc opt">-</span><span class="number">1.0</span> <span class="gtkdoc opt">-</span>m v4l2src <span class="gtkdoc opt">!</span> videoconvert <span class="gtkdoc opt">!</span> zbar <span class="gtkdoc opt">!</span> videoconvert <span class="gtkdoc opt">!</span> xvimagesink</pre></td>
+ </tr>
+ </tbody>
+ </table>
+</div>
+ This pipeline will detect barcodes and send them as messages.
+<div class="informalexample">
+ <table class="listing_frame" border="0" cellpadding="0" cellspacing="0">
+ <tbody>
+ <tr>
+ <td class="listing_lines" align="right"><pre>1</pre></td>
+ <td class="listing_code"><pre class="programlisting">gst<span class="gtkdoc opt">-</span>launch<span class="gtkdoc opt">-</span><span class="number">1.0</span> <span class="gtkdoc opt">-</span>m v4l2src <span class="gtkdoc opt">!</span> tee name<span class="gtkdoc opt">=</span>t <span class="gtkdoc opt">!</span> queue <span class="gtkdoc opt">!</span> videoconvert <span class="gtkdoc opt">!</span> zbar <span class="gtkdoc opt">!</span> fakesink t<span class="gtkdoc opt">. !</span> queue <span class="gtkdoc opt">!</span> xvimagesink</pre></td>
+ </tr>
+ </tbody>
+ </table>
+</div>
+ Same as above, but running the filter on a branch to keep the display in color
+</div>
<div class="refsynopsisdiv">
<h2>Synopsis</h2>
<div class="refsect2">
-<a name="id-1.2.80.7.2.1"></a><h3>Element Information</h3>
+<a name="id-1.2.79.7.8.1"></a><h3>Element Information</h3>
<div class="variablelist"><table border="0" class="variablelist">
<colgroup>
<col align="left" valign="top">
@@ -115,7 +176,7 @@
</div>
<hr>
<div class="refsect2">
-<a name="id-1.2.80.7.2.2"></a><h3>Element Pads</h3>
+<a name="id-1.2.79.7.8.2"></a><h3>Element Pads</h3>
<div class="variablelist"><table border="0" class="variablelist">
<colgroup>
<col align="left" valign="top">
@@ -176,6 +237,7 @@
<div class="refsect2">
<a name="GstZBar-struct"></a><h3>struct GstZBar</h3>
<pre class="programlisting">struct GstZBar;</pre>
+<p>Opaque data structure.</p>
</div>
</div>
<div class="refsect1">
diff --git a/docs/plugins/html/index.html b/docs/plugins/html/index.html
index 6b8ac0c..5e5d60a 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.8.2)
+ for GStreamer Bad Plugins 1.0 (1.9.1)
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>
@@ -101,7 +101,7 @@
<span class="refentrytitle"><a href="gst-plugins-bad-plugins-dodge.html">dodge</a></span><span class="refpurpose"></span>
</dt>
<dt>
-<span class="refentrytitle"><a href="gst-plugins-bad-plugins-dtmfdetect.html">dtmfdetect</a></span><span class="refpurpose"></span>
+<span class="refentrytitle"><a href="gst-plugins-bad-plugins-dtmfdetect.html">dtmfdetect</a></span><span class="refpurpose"> — Detects DTMF tones</span>
</dt>
<dt>
<span class="refentrytitle"><a href="gst-plugins-bad-plugins-dtsdec.html">dtsdec</a></span><span class="refpurpose"></span>
@@ -185,10 +185,10 @@
<span class="refentrytitle"><a href="gst-plugins-bad-plugins-ofa.html">ofa</a></span><span class="refpurpose"></span>
</dt>
<dt>
-<span class="refentrytitle"><a href="gst-plugins-bad-plugins-openalsrc.html">openalsrc</a></span><span class="refpurpose"></span>
+<span class="refentrytitle"><a href="gst-plugins-bad-plugins-openalsrc.html">openalsrc</a></span><span class="refpurpose"> — capture raw audio samples through OpenAL</span>
</dt>
<dt>
-<span class="refentrytitle"><a href="gst-plugins-bad-plugins-openalsink.html">openalsink</a></span><span class="refpurpose"></span>
+<span class="refentrytitle"><a href="gst-plugins-bad-plugins-openalsink.html">openalsink</a></span><span class="refpurpose"> — capture raw audio samples through OpenAL</span>
</dt>
<dt>
<span class="refentrytitle"><a href="gst-plugins-bad-plugins-pcapparse.html">pcapparse</a></span><span class="refpurpose"></span>
@@ -197,9 +197,6 @@
<span class="refentrytitle"><a href="gst-plugins-bad-plugins-pinch.html">pinch</a></span><span class="refpurpose"></span>
</dt>
<dt>
-<span class="refentrytitle"><a href="gst-plugins-bad-plugins-pyramidsegment.html">pyramidsegment</a></span><span class="refpurpose"></span>
-</dt>
-<dt>
<span class="refentrytitle"><a href="gst-plugins-bad-plugins-rfbsrc.html">rfbsrc</a></span><span class="refpurpose"></span>
</dt>
<dt>
@@ -271,6 +268,12 @@
<dt>
<span class="refentrytitle"><a href="gst-plugins-bad-plugins-wavescope.html">wavescope</a></span><span class="refpurpose"></span>
</dt>
+<dt>
+<span class="refentrytitle"><a href="gst-plugins-bad-plugins-webrtcdsp.html">webrtcdsp</a></span><span class="refpurpose"> — Audio Filter using WebRTC Audio Processing library</span>
+</dt>
+<dt>
+<span class="refentrytitle"><a href="gst-plugins-bad-plugins-webrtcechoprobe.html">webrtcechoprobe</a></span><span class="refpurpose"></span>
+</dt>
</dl></dd>
<dt><span class="chapter"><a href="ch02.html">gst-plugins-bad Plugins</a></span></dt>
<dd><dl>
@@ -407,6 +410,9 @@
<span class="refentrytitle"><a href="gst-plugins-bad-plugins-plugin-voamrwbenc.html">voamrwbenc</a></span><span class="refpurpose"> — Adaptive Multi-Rate Wide-Band Encoder</span>
</dt>
<dt>
+<span class="refentrytitle"><a href="gst-plugins-bad-plugins-plugin-webrtcdsp.html">webrtcdsp</a></span><span class="refpurpose"> — Voice pre-processing using WebRTC Audio Processing Library</span>
+</dt>
+<dt>
<span class="refentrytitle"><a href="gst-plugins-bad-plugins-plugin-zbar.html">zbar</a></span><span class="refpurpose"> — zbar barcode scanner</span>
</dt>
</dl></dd>
diff --git a/docs/plugins/inspect/plugin-accurip.xml b/docs/plugins/inspect/plugin-accurip.xml
index 8fc2e94..56f50b1 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.8.2</version>
+ <version>1.9.1</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 0129788..4ceacf3 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.8.2</version>
+ <version>1.9.1</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 4a7c796..ded555d 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.8.2</version>
+ <version>1.9.1</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 c8056d9..7e23d08 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.8.2</version>
+ <version>1.9.1</version>
<license>LGPL</license>
<source>gst-plugins-bad</source>
<package>GStreamer Bad Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-androidcamera.xml b/docs/plugins/inspect/plugin-androidcamera.xml
deleted file mode 100644
index c9417ca..0000000
--- a/docs/plugins/inspect/plugin-androidcamera.xml
+++ /dev/null
@@ -1,28 +0,0 @@
-<plugin>
- <name>androidcamera</name>
- <description>Capture from Android cameras</description>
- <filename>../../sys/androidcamera/.libs/libgstandroidcamera.so</filename>
- <basename>libgstandroidcamera.so</basename>
- <version>0.10.22.1</version>
- <license>LGPL</license>
- <source>gst-plugins-bad</source>
- <package>GStreamer Bad Plug-ins git</package>
- <origin>Unknown package origin</origin>
- <elements>
- <element>
- <name>ahcsrc</name>
- <longname>Android Camera Source</longname>
- <class>Source/Video</class>
- <description>Reads frames from android.hardware.Camera class into buffers</description>
- <author>Youness Alaoui <youness.alaoui@collabora.co.uk></author>
- <pads>
- <caps>
- <name>src</name>
- <direction>source</direction>
- <presence>always</presence>
- <details>video/x-raw-yuv, format=(fourcc) { YV12 , YUY2 , NV21 , NV16 }, width=(int) [ 1, 2147483647 ], height=(int) [ 1, 2147483647 ], framerate=(fraction) [ 0/1, 2147483647/1 ]; video/x-raw-rgb, bpp=(int)16, depth=(int)16, red_mask=(int)63488, green_mask=(int)2016, blue_mask=(int)31, width=(int) [ 1, 2147483647 ], height=(int) [ 1, 2147483647 ], framerate=(fraction) [ 0/1, 2147483647/1 ] </details>
- </caps>
- </pads>
- </element>
- </elements>
-</plugin>
diff --git a/docs/plugins/inspect/plugin-asfmux.xml b/docs/plugins/inspect/plugin-asfmux.xml
index 5dbfd8f..5a4225e 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.8.2</version>
+ <version>1.9.1</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 fb09c91..a5bac02 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.8.2</version>
+ <version>1.9.1</version>
<license>LGPL</license>
<source>gst-plugins-bad</source>
<package>GStreamer Bad Plug-ins source release</package>
@@ -26,13 +26,13 @@
<name>video_sink</name>
<direction>sink</direction>
<presence>always</presence>
- <details>video/x-raw, format=(string){ BGRx, RGBx, xRGB, xBGR, RGBA, BGRA, ARGB, ABGR, RGB, BGR, I420, YV12, AYUV, YUY2, UYVY, v308, Y41B, Y42B, Y444, NV12, NV21, A420, YUV9, YVU9, IYU1, GRAY8 }, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]; video/x-raw(ANY), format=(string){ I420, YV12, YUY2, UYVY, AYUV, RGBx, BGRx, xRGB, xBGR, RGBA, BGRA, ARGB, ABGR, RGB, BGR, Y41B, Y42B, YVYU, Y444, v210, v216, NV12, NV21, NV16, NV61, NV24, GRAY8, GRAY16_BE, GRAY16_LE, v308, RGB16, BGR16, RGB15, BGR15, UYVP, A420, RGB8P, YUV9, YVU9, IYU1, ARGB64, AYUV64, r210, I420_10LE, I420_10BE, I422_10LE, I422_10BE, Y444_10LE, Y444_10BE, GBR, GBR_10LE, GBR_10BE, NV12_64Z32, A420_10LE, A420_10BE, A422_10LE, A422_10BE, A444_10LE, A444_10BE }, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]</details>
+ <details>video/x-raw, format=(string){ BGRx, RGBx, xRGB, xBGR, RGBA, BGRA, ARGB, ABGR, RGB, BGR, I420, YV12, AYUV, YUY2, UYVY, v308, Y41B, Y42B, Y444, NV12, NV21, A420, YUV9, YVU9, IYU1, GRAY8 }, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]; video/x-raw(ANY), format=(string){ I420, YV12, YUY2, UYVY, AYUV, RGBx, BGRx, xRGB, xBGR, RGBA, BGRA, ARGB, ABGR, RGB, BGR, Y41B, Y42B, YVYU, Y444, v210, v216, NV12, NV21, NV16, NV61, NV24, GRAY8, GRAY16_BE, GRAY16_LE, v308, IYU2, RGB16, BGR16, RGB15, BGR15, UYVP, A420, RGB8P, YUV9, YVU9, IYU1, ARGB64, AYUV64, r210, I420_10LE, I420_10BE, I422_10LE, I422_10BE, Y444_10LE, Y444_10BE, GBR, GBR_10LE, GBR_10BE, NV12_64Z32, A420_10LE, A420_10BE, A422_10LE, A422_10BE, A444_10LE, A444_10BE, P010_10LE, P010_10BE }, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]</details>
</caps>
<caps>
<name>src</name>
<direction>source</direction>
<presence>always</presence>
- <details>video/x-raw, format=(string){ BGRx, RGBx, xRGB, xBGR, RGBA, BGRA, ARGB, ABGR, RGB, BGR, I420, YV12, AYUV, YUY2, UYVY, v308, Y41B, Y42B, Y444, NV12, NV21, A420, YUV9, YVU9, IYU1, GRAY8 }, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]; video/x-raw(ANY), format=(string){ I420, YV12, YUY2, UYVY, AYUV, RGBx, BGRx, xRGB, xBGR, RGBA, BGRA, ARGB, ABGR, RGB, BGR, Y41B, Y42B, YVYU, Y444, v210, v216, NV12, NV21, NV16, NV61, NV24, GRAY8, GRAY16_BE, GRAY16_LE, v308, RGB16, BGR16, RGB15, BGR15, UYVP, A420, RGB8P, YUV9, YVU9, IYU1, ARGB64, AYUV64, r210, I420_10LE, I420_10BE, I422_10LE, I422_10BE, Y444_10LE, Y444_10BE, GBR, GBR_10LE, GBR_10BE, NV12_64Z32, A420_10LE, A420_10BE, A422_10LE, A422_10BE, A444_10LE, A444_10BE }, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]</details>
+ <details>video/x-raw, format=(string){ BGRx, RGBx, xRGB, xBGR, RGBA, BGRA, ARGB, ABGR, RGB, BGR, I420, YV12, AYUV, YUY2, UYVY, v308, Y41B, Y42B, Y444, NV12, NV21, A420, YUV9, YVU9, IYU1, GRAY8 }, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]; video/x-raw(ANY), format=(string){ I420, YV12, YUY2, UYVY, AYUV, RGBx, BGRx, xRGB, xBGR, RGBA, BGRA, ARGB, ABGR, RGB, BGR, Y41B, Y42B, YVYU, Y444, v210, v216, NV12, NV21, NV16, NV61, NV24, GRAY8, GRAY16_BE, GRAY16_LE, v308, IYU2, RGB16, BGR16, RGB15, BGR15, UYVP, A420, RGB8P, YUV9, YVU9, IYU1, ARGB64, AYUV64, r210, I420_10LE, I420_10BE, I422_10LE, I422_10BE, Y444_10LE, Y444_10BE, GBR, GBR_10LE, GBR_10BE, NV12_64Z32, A420_10LE, A420_10BE, A422_10LE, A422_10BE, A444_10LE, A444_10BE, P010_10LE, P010_10BE }, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]</details>
</caps>
</pads>
</element>
diff --git a/docs/plugins/inspect/plugin-audiofxbad.xml b/docs/plugins/inspect/plugin-audiofxbad.xml
index c414d0e..1752981 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.8.2</version>
+ <version>1.9.1</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 a7e80f8..1c6bdf8 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.8.2</version>
+ <version>1.9.1</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 aa1fa68..16915a4 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.8.2</version>
+ <version>1.9.1</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 6afa18d..0ee28c9 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.8.2</version>
+ <version>1.9.1</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 2be3e4b..10b40fb 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.8.2</version>
+ <version>1.9.1</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 a4352f2..b469113 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.8.2</version>
+ <version>1.9.1</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 c646cbe..79783b2 100644
--- a/docs/plugins/inspect/plugin-bs2b.xml
+++ b/docs/plugins/inspect/plugin-bs2b.xml
@@ -3,16 +3,16 @@
<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.5.0.1</version>
+ <version>1.9.1</version>
<license>LGPL</license>
<source>gst-plugins-bad</source>
- <package>GStreamer Bad Plug-ins git</package>
+ <package>GStreamer Bad Plug-ins source release</package>
<origin>Unknown package origin</origin>
<elements>
<element>
<name>bs2b</name>
<longname>Crossfeed effect</longname>
- <class>Effect/Audio</class>
+ <class>Filter/Effect/Audio</class>
<description>Improve headphone listening of stereo audio records using the bs2b library.</description>
<author>Christoph Reiter <reiter.christoph@gmail.com></author>
<pads>
diff --git a/docs/plugins/inspect/plugin-bz2.xml b/docs/plugins/inspect/plugin-bz2.xml
index ce410e0..5c74efe 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.8.2</version>
+ <version>1.9.1</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 8685c14..69afef5 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.8.2</version>
+ <version>1.9.1</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 3a84ad5..7c0e151 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.8.2</version>
+ <version>1.9.1</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 7e093c5..ea66574 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.8.2</version>
+ <version>1.9.1</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 7370c18..cc022ad 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.8.2</version>
+ <version>1.9.1</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 a71d5e9..2c0156f 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.8.2</version>
+ <version>1.9.1</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 2d95487..7ef13c1 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.8.2</version>
+ <version>1.9.1</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 bc31934..6de40ea 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.8.2</version>
+ <version>1.9.1</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
new file mode 100644
index 0000000..32e586b
--- /dev/null
+++ b/docs/plugins/inspect/plugin-dc1394.xml
@@ -0,0 +1,28 @@
+<plugin>
+ <name>dc1394</name>
+ <description>1394 IIDC video source</description>
+ <filename>../../ext/dc1394/.libs/libgstdc1394.so</filename>
+ <basename>libgstdc1394.so</basename>
+ <version>1.9.1</version>
+ <license>LGPL</license>
+ <source>gst-plugins-bad</source>
+ <package>GStreamer Bad Plug-ins source release</package>
+ <origin>Unknown package origin</origin>
+ <elements>
+ <element>
+ <name>dc1394src</name>
+ <longname>1394 IIDC Video Source</longname>
+ <class>Source/Video</class>
+ <description>libdc1394 based source for IIDC cameras</description>
+ <author>Antoine Tremblay <hexa00@gmail.com></author>
+ <pads>
+ <caps>
+ <name>src</name>
+ <direction>source</direction>
+ <presence>always</presence>
+ <details>video/x-raw, format=(string)IYU2, width=(int)160, height=(int)120, framerate=(fraction){ 15/8, 15/4, 15/2, 15/1, 30/1, 60/1, 120/1, 240/1 }; video/x-raw, format=(string)UYVY, width=(int)320, height=(int)240, framerate=(fraction){ 15/8, 15/4, 15/2, 15/1, 30/1, 60/1, 120/1, 240/1 }; video/x-raw, format=(string)IYU1, width=(int)640, height=(int)480, framerate=(fraction){ 15/8, 15/4, 15/2, 15/1, 30/1, 60/1, 120/1, 240/1 }; video/x-raw, format=(string)UYVY, width=(int)640, height=(int)480, framerate=(fraction){ 15/8, 15/4, 15/2, 15/1, 30/1, 60/1, 120/1, 240/1 }; video/x-raw, format=(string)RGB, width=(int)640, height=(int)480, framerate=(fraction){ 15/8, 15/4, 15/2, 15/1, 30/1, 60/1, 120/1, 240/1 }; video/x-raw, format=(string)GRAY8, width=(int)640, height=(int)480, framerate=(fraction){ 15/8, 15/4, 15/2, 15/1, 30/1, 60/1, 120/1, 240/1 }; video/x-bayer, format=(string){ bggr, rggb, grbg, gbrg }, width=(int)640, height=(int)480, framerate=(fraction){ 15/8, 15/4, 15/2, 15/1, 30/1, 60/1, 120/1, 240/1 }; video/x-raw, format=(string)GRAY16_BE, width=(int)640, height=(int)480, framerate=(fraction){ 15/8, 15/4, 15/2, 15/1, 30/1, 60/1, 120/1, 240/1 }; video/x-raw, format=(string)UYVY, width=(int)800, height=(int)600, framerate=(fraction){ 15/8, 15/4, 15/2, 15/1, 30/1, 60/1, 120/1, 240/1 }; video/x-raw, format=(string)RGB, width=(int)800, height=(int)600, framerate=(fraction){ 15/8, 15/4, 15/2, 15/1, 30/1, 60/1, 120/1, 240/1 }; video/x-raw, format=(string)GRAY8, width=(int)800, height=(int)600, framerate=(fraction){ 15/8, 15/4, 15/2, 15/1, 30/1, 60/1, 120/1, 240/1 }; video/x-bayer, format=(string){ bggr, rggb, grbg, gbrg }, width=(int)800, height=(int)600, framerate=(fraction){ 15/8, 15/4, 15/2, 15/1, 30/1, 60/1, 120/1, 240/1 }; video/x-raw, format=(string)UYVY, width=(int)1024, height=(int)768, framerate=(fraction){ 15/8, 15/4, 15/2, 15/1, 30/1, 60/1, 120/1, 240/1 }; video/x-raw, format=(string)RGB, width=(int)1024, height=(int)768, framerate=(fraction){ 15/8, 15/4, 15/2, 15/1, 30/1, 60/1, 120/1, 240/1 }; video/x-raw, format=(string)GRAY8, width=(int)1024, height=(int)768, framerate=(fraction){ 15/8, 15/4, 15/2, 15/1, 30/1, 60/1, 120/1, 240/1 }; video/x-bayer, format=(string){ bggr, rggb, grbg, gbrg }, width=(int)1024, height=(int)768, framerate=(fraction){ 15/8, 15/4, 15/2, 15/1, 30/1, 60/1, 120/1, 240/1 }; video/x-raw, format=(string)GRAY16_BE, width=(int)800, height=(int)600, framerate=(fraction){ 15/8, 15/4, 15/2, 15/1, 30/1, 60/1, 120/1, 240/1 }; video/x-raw, format=(string)GRAY16_BE, width=(int)1024, height=(int)768, framerate=(fraction){ 15/8, 15/4, 15/2, 15/1, 30/1, 60/1, 120/1, 240/1 }; video/x-raw, format=(string)UYVY, width=(int)1280, height=(int)960, framerate=(fraction){ 15/8, 15/4, 15/2, 15/1, 30/1, 60/1, 120/1, 240/1 }; video/x-raw, format=(string)RGB, width=(int)1280, height=(int)960, framerate=(fraction){ 15/8, 15/4, 15/2, 15/1, 30/1, 60/1, 120/1, 240/1 }; video/x-raw, format=(string)GRAY8, width=(int)1280, height=(int)960, framerate=(fraction){ 15/8, 15/4, 15/2, 15/1, 30/1, 60/1, 120/1, 240/1 }; video/x-bayer, format=(string){ bggr, rggb, grbg, gbrg }, width=(int)1280, height=(int)960, framerate=(fraction){ 15/8, 15/4, 15/2, 15/1, 30/1, 60/1, 120/1, 240/1 }; video/x-raw, format=(string)UYVY, width=(int)1600, height=(int)1200, framerate=(fraction){ 15/8, 15/4, 15/2, 15/1, 30/1, 60/1, 120/1, 240/1 }; video/x-raw, format=(string)RGB, width=(int)1600, height=(int)1200, framerate=(fraction){ 15/8, 15/4, 15/2, 15/1, 30/1, 60/1, 120/1, 240/1 }; video/x-raw, format=(string)GRAY8, width=(int)1600, height=(int)1200, framerate=(fraction){ 15/8, 15/4, 15/2, 15/1, 30/1, 60/1, 120/1, 240/1 }; video/x-bayer, format=(string){ bggr, rggb, grbg, gbrg }, width=(int)1600, height=(int)1200, framerate=(fraction){ 15/8, 15/4, 15/2, 15/1, 30/1, 60/1, 120/1, 240/1 }; video/x-raw, format=(string)GRAY16_BE, width=(int)1280, height=(int)960, framerate=(fraction){ 15/8, 15/4, 15/2, 15/1, 30/1, 60/1, 120/1, 240/1 }; video/x-raw, format=(string)GRAY16_BE, width=(int)1600, height=(int)1200, framerate=(fraction){ 15/8, 15/4, 15/2, 15/1, 30/1, 60/1, 120/1, 240/1 }; video/x-raw, format=(string)RGB, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 1/2147483647, 2147483647/1 ]; video/x-raw, format=(string)IYU2, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 1/2147483647, 2147483647/1 ]; video/x-raw, format=(string)UYVY, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 1/2147483647, 2147483647/1 ]; video/x-raw, format=(string)IYU1, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 1/2147483647, 2147483647/1 ]; video/x-raw, format=(string)GRAY16_BE, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 1/2147483647, 2147483647/1 ]; video/x-bayer, format=(string){ bggr, rggb, grbg, gbrg }, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 1/2147483647, 2147483647/1 ]; video/x-raw, format=(string)GRAY8, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 1/2147483647, 2147483647/1 ]; video/x-bayer, format=(string){ bggr, rggb, grbg, gbrg }, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 1/2147483647, 2147483647/1 ]</details>
+ </caps>
+ </pads>
+ </element>
+ </elements>
+</plugin>
\ No newline at end of file
diff --git a/docs/plugins/inspect/plugin-debugutilsbad.xml b/docs/plugins/inspect/plugin-debugutilsbad.xml
index 7490c86..f34e4d2 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.8.2</version>
+ <version>1.9.1</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 2425ed4..142bfab 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.8.2</version>
+ <version>1.9.1</version>
<license>LGPL</license>
<source>gst-plugins-bad</source>
<package>GStreamer Bad Plug-ins</package>
@@ -50,7 +50,7 @@
<name>sink</name>
<direction>sink</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)[ 0/1, 2147483647/1 ], 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)[ 0/1, 2147483647/1 ], format=(string)ARGB; video/x-raw, width=(int)720, height=(int)486, pixel-aspect-ratio=(fraction)10/11, interlace-mode=(string)interleaved, framerate=(fraction)[ 0/1, 2147483647/1 ], 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)[ 0/1, 2147483647/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)[ 0/1, 2147483647/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)[ 0/1, 2147483647/1 ], format=(string)ARGB; video/x-raw, width=(int)720, height=(int)486, pixel-aspect-ratio=(fraction)10/11, interlace-mode=(string)progressive, framerate=(fraction)[ 0/1, 2147483647/1 ], 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)[ 0/1, 2147483647/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)[ 0/1, 2147483647/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)[ 0/1, 2147483647/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)[ 0/1, 2147483647/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)[ 0/1, 2147483647/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)[ 0/1, 2147483647/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)[ 0/1, 2147483647/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)[ 0/1, 2147483647/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)[ 0/1, 2147483647/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)[ 0/1, 2147483647/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)[ 0/1, 2147483647/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)[ 0/1, 2147483647/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)[ 0/1, 2147483647/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)[ 0/1, 2147483647/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)[ 0/1, 2147483647/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)[ 0/1, 2147483647/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)[ 0/1, 2147483647/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)[ 0/1, 2147483647/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)[ 0/1, 2147483647/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)[ 0/1, 2147483647/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)[ 0/1, 2147483647/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)[ 0/1, 2147483647/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)[ 0/1, 2147483647/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)[ 0/1, 2147483647/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)[ 0/1, 2147483647/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)[ 0/1, 2147483647/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)[ 0/1, 2147483647/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)[ 0/1, 2147483647/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)[ 0/1, 2147483647/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)[ 0/1, 2147483647/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)[ 0/1, 2147483647/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)[ 0/1, 2147483647/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)[ 0/1, 2147483647/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)[ 0/1, 2147483647/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)[ 0/1, 2147483647/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)[ 0/1, 2147483647/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)[ 0/1, 2147483647/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)[ 0/1, 2147483647/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)[ 0/1, 2147483647/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)[ 0/1, 2147483647/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)[ 0/1, 2147483647/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)[ 0/1, 2147483647/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)[ 0/1, 2147483647/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)[ 0/1, 2147483647/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)[ 0/1, 2147483647/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)[ 0/1, 2147483647/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)[ 0/1, 2147483647/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)[ 0/1, 2147483647/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)[ 0/1, 2147483647/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)[ 0/1, 2147483647/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)[ 0/1, 2147483647/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)[ 0/1, 2147483647/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)[ 0/1, 2147483647/1 ], format=(string)ARGB</details>
+ <details>video/x-raw, width=(int)720, height=(int)486, pixel-aspect-ratio=(fraction)10/11, interlace-mode=(string)interleaved, framerate=(fraction)[ 0/1, 2147483647/1 ], 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)[ 0/1, 2147483647/1 ], format=(string)v210; video/x-raw, width=(int)720, height=(int)486, pixel-aspect-ratio=(fraction)10/11, interlace-mode=(string)interleaved, framerate=(fraction)[ 0/1, 2147483647/1 ], format=(string)ARGB; video/x-raw, width=(int)720, height=(int)486, pixel-aspect-ratio=(fraction)10/11, interlace-mode=(string)interleaved, framerate=(fraction)[ 0/1, 2147483647/1 ], format=(string)BGRA; video/x-raw, width=(int)720, height=(int)486, pixel-aspect-ratio=(fraction)10/11, interlace-mode=(string)interleaved, framerate=(fraction)[ 0/1, 2147483647/1 ], 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)[ 0/1, 2147483647/1 ], format=(string)v210; video/x-raw, width=(int)720, height=(int)486, pixel-aspect-ratio=(fraction)10/11, interlace-mode=(string)interleaved, framerate=(fraction)[ 0/1, 2147483647/1 ], format=(string)ARGB; video/x-raw, width=(int)720, height=(int)486, pixel-aspect-ratio=(fraction)10/11, interlace-mode=(string)interleaved, framerate=(fraction)[ 0/1, 2147483647/1 ], format=(string)BGRA; video/x-raw, width=(int)720, height=(int)576, pixel-aspect-ratio=(fraction)12/11, interlace-mode=(string)interleaved, framerate=(fraction)[ 0/1, 2147483647/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)[ 0/1, 2147483647/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)[ 0/1, 2147483647/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)[ 0/1, 2147483647/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)[ 0/1, 2147483647/1 ], 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)[ 0/1, 2147483647/1 ], format=(string)v210; video/x-raw, width=(int)720, height=(int)486, pixel-aspect-ratio=(fraction)10/11, interlace-mode=(string)progressive, framerate=(fraction)[ 0/1, 2147483647/1 ], format=(string)ARGB; video/x-raw, width=(int)720, height=(int)486, pixel-aspect-ratio=(fraction)10/11, interlace-mode=(string)progressive, framerate=(fraction)[ 0/1, 2147483647/1 ], format=(string)BGRA; video/x-raw, width=(int)720, height=(int)576, pixel-aspect-ratio=(fraction)12/11, interlace-mode=(string)progressive, framerate=(fraction)[ 0/1, 2147483647/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)[ 0/1, 2147483647/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)[ 0/1, 2147483647/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)[ 0/1, 2147483647/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)[ 0/1, 2147483647/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)[ 0/1, 2147483647/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)[ 0/1, 2147483647/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)[ 0/1, 2147483647/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)[ 0/1, 2147483647/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)[ 0/1, 2147483647/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)[ 0/1, 2147483647/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)[ 0/1, 2147483647/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)[ 0/1, 2147483647/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)[ 0/1, 2147483647/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)[ 0/1, 2147483647/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)[ 0/1, 2147483647/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)[ 0/1, 2147483647/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)[ 0/1, 2147483647/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)[ 0/1, 2147483647/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)[ 0/1, 2147483647/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)[ 0/1, 2147483647/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)[ 0/1, 2147483647/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)[ 0/1, 2147483647/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)[ 0/1, 2147483647/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)[ 0/1, 2147483647/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)[ 0/1, 2147483647/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)[ 0/1, 2147483647/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)[ 0/1, 2147483647/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)[ 0/1, 2147483647/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)[ 0/1, 2147483647/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)[ 0/1, 2147483647/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)[ 0/1, 2147483647/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)[ 0/1, 2147483647/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)[ 0/1, 2147483647/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)[ 0/1, 2147483647/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)[ 0/1, 2147483647/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)[ 0/1, 2147483647/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)[ 0/1, 2147483647/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)[ 0/1, 2147483647/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)[ 0/1, 2147483647/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)[ 0/1, 2147483647/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)[ 0/1, 2147483647/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)[ 0/1, 2147483647/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)[ 0/1, 2147483647/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)[ 0/1, 2147483647/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)[ 0/1, 2147483647/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)[ 0/1, 2147483647/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)[ 0/1, 2147483647/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)[ 0/1, 2147483647/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)[ 0/1, 2147483647/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)[ 0/1, 2147483647/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)[ 0/1, 2147483647/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)[ 0/1, 2147483647/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)[ 0/1, 2147483647/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)[ 0/1, 2147483647/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)[ 0/1, 2147483647/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)[ 0/1, 2147483647/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)[ 0/1, 2147483647/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)[ 0/1, 2147483647/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)[ 0/1, 2147483647/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)[ 0/1, 2147483647/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)[ 0/1, 2147483647/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)[ 0/1, 2147483647/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)[ 0/1, 2147483647/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)[ 0/1, 2147483647/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)[ 0/1, 2147483647/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)[ 0/1, 2147483647/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)[ 0/1, 2147483647/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)[ 0/1, 2147483647/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)[ 0/1, 2147483647/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)[ 0/1, 2147483647/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)[ 0/1, 2147483647/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)[ 0/1, 2147483647/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)[ 0/1, 2147483647/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)[ 0/1, 2147483647/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)[ 0/1, 2147483647/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)[ 0/1, 2147483647/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)[ 0/1, 2147483647/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)[ 0/1, 2147483647/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)[ 0/1, 2147483647/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)[ 0/1, 2147483647/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)[ 0/1, 2147483647/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)[ 0/1, 2147483647/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)[ 0/1, 2147483647/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)[ 0/1, 2147483647/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)[ 0/1, 2147483647/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)[ 0/1, 2147483647/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)[ 0/1, 2147483647/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)[ 0/1, 2147483647/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)[ 0/1, 2147483647/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)[ 0/1, 2147483647/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)[ 0/1, 2147483647/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)[ 0/1, 2147483647/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)[ 0/1, 2147483647/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)[ 0/1, 2147483647/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)[ 0/1, 2147483647/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)[ 0/1, 2147483647/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)[ 0/1, 2147483647/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)[ 0/1, 2147483647/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)[ 0/1, 2147483647/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)[ 0/1, 2147483647/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)[ 0/1, 2147483647/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)[ 0/1, 2147483647/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)[ 0/1, 2147483647/1 ], format=(string)BGRA</details>
</caps>
</pads>
</element>
@@ -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)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)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)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)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)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)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)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)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)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)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)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)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)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)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)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)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)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)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)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)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)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)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)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)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)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)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)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)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)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)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)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)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)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)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)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)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)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)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)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)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)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)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)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)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)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)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)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)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)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)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)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)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)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)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)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)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)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)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)ARGB</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, 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>
</caps>
</pads>
</element>
diff --git a/docs/plugins/inspect/plugin-dfbvideosink.xml b/docs/plugins/inspect/plugin-dfbvideosink.xml
index 87950eb..cc5f7bd 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.8.2</version>
+ <version>1.9.1</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 51f6f54..f5842d9 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.8.2</version>
+ <version>1.9.1</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 4e162de..b39558a 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.8.2</version>
+ <version>1.9.1</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 60cfe01..3a6781f 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.8.2</version>
+ <version>1.9.1</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 287d987..95e88f8 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.8.2</version>
+ <version>1.9.1</version>
<license>LGPL</license>
<source>gst-plugins-bad</source>
<package>GStreamer Bad Plug-ins source release</package>
@@ -26,13 +26,13 @@
<name>video_sink</name>
<direction>sink</direction>
<presence>always</presence>
- <details>video/x-raw, format=(string){ BGRx, RGBx, xRGB, xBGR, RGBA, BGRA, ARGB, ABGR, RGB, BGR, I420, YV12, AYUV, YUY2, UYVY, v308, Y41B, Y42B, Y444, NV12, NV21, A420, YUV9, YVU9, IYU1, GRAY8 }, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]; video/x-raw(ANY), format=(string){ I420, YV12, YUY2, UYVY, AYUV, RGBx, BGRx, xRGB, xBGR, RGBA, BGRA, ARGB, ABGR, RGB, BGR, Y41B, Y42B, YVYU, Y444, v210, v216, NV12, NV21, NV16, NV61, NV24, GRAY8, GRAY16_BE, GRAY16_LE, v308, RGB16, BGR16, RGB15, BGR15, UYVP, A420, RGB8P, YUV9, YVU9, IYU1, ARGB64, AYUV64, r210, I420_10LE, I420_10BE, I422_10LE, I422_10BE, Y444_10LE, Y444_10BE, GBR, GBR_10LE, GBR_10BE, NV12_64Z32, A420_10LE, A420_10BE, A422_10LE, A422_10BE, A444_10LE, A444_10BE }, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]</details>
+ <details>video/x-raw, format=(string){ BGRx, RGBx, xRGB, xBGR, RGBA, BGRA, ARGB, ABGR, RGB, BGR, I420, YV12, AYUV, YUY2, UYVY, v308, Y41B, Y42B, Y444, NV12, NV21, A420, YUV9, YVU9, IYU1, GRAY8 }, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]; video/x-raw(ANY), format=(string){ I420, YV12, YUY2, UYVY, AYUV, RGBx, BGRx, xRGB, xBGR, RGBA, BGRA, ARGB, ABGR, RGB, BGR, Y41B, Y42B, YVYU, Y444, v210, v216, NV12, NV21, NV16, NV61, NV24, GRAY8, GRAY16_BE, GRAY16_LE, v308, IYU2, RGB16, BGR16, RGB15, BGR15, UYVP, A420, RGB8P, YUV9, YVU9, IYU1, ARGB64, AYUV64, r210, I420_10LE, I420_10BE, I422_10LE, I422_10BE, Y444_10LE, Y444_10BE, GBR, GBR_10LE, GBR_10BE, NV12_64Z32, A420_10LE, A420_10BE, A422_10LE, A422_10BE, A444_10LE, A444_10BE, P010_10LE, P010_10BE }, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]</details>
</caps>
<caps>
<name>src</name>
<direction>source</direction>
<presence>always</presence>
- <details>video/x-raw, format=(string){ BGRx, RGBx, xRGB, xBGR, RGBA, BGRA, ARGB, ABGR, RGB, BGR, I420, YV12, AYUV, YUY2, UYVY, v308, Y41B, Y42B, Y444, NV12, NV21, A420, YUV9, YVU9, IYU1, GRAY8 }, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]; video/x-raw(ANY), format=(string){ I420, YV12, YUY2, UYVY, AYUV, RGBx, BGRx, xRGB, xBGR, RGBA, BGRA, ARGB, ABGR, RGB, BGR, Y41B, Y42B, YVYU, Y444, v210, v216, NV12, NV21, NV16, NV61, NV24, GRAY8, GRAY16_BE, GRAY16_LE, v308, RGB16, BGR16, RGB15, BGR15, UYVP, A420, RGB8P, YUV9, YVU9, IYU1, ARGB64, AYUV64, r210, I420_10LE, I420_10BE, I422_10LE, I422_10BE, Y444_10LE, Y444_10BE, GBR, GBR_10LE, GBR_10BE, NV12_64Z32, A420_10LE, A420_10BE, A422_10LE, A422_10BE, A444_10LE, A444_10BE }, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]</details>
+ <details>video/x-raw, format=(string){ BGRx, RGBx, xRGB, xBGR, RGBA, BGRA, ARGB, ABGR, RGB, BGR, I420, YV12, AYUV, YUY2, UYVY, v308, Y41B, Y42B, Y444, NV12, NV21, A420, YUV9, YVU9, IYU1, GRAY8 }, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]; video/x-raw(ANY), format=(string){ I420, YV12, YUY2, UYVY, AYUV, RGBx, BGRx, xRGB, xBGR, RGBA, BGRA, ARGB, ABGR, RGB, BGR, Y41B, Y42B, YVYU, Y444, v210, v216, NV12, NV21, NV16, NV61, NV24, GRAY8, GRAY16_BE, GRAY16_LE, v308, IYU2, RGB16, BGR16, RGB15, BGR15, UYVP, A420, RGB8P, YUV9, YVU9, IYU1, ARGB64, AYUV64, r210, I420_10LE, I420_10BE, I422_10LE, I422_10BE, Y444_10LE, Y444_10BE, GBR, GBR_10LE, GBR_10BE, NV12_64Z32, A420_10LE, A420_10BE, A422_10LE, A422_10BE, A444_10LE, A444_10BE, P010_10LE, P010_10BE }, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]</details>
</caps>
</pads>
</element>
diff --git a/docs/plugins/inspect/plugin-dvdspu.xml b/docs/plugins/inspect/plugin-dvdspu.xml
index 7259c8a..b283882 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.8.2</version>
+ <version>1.9.1</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 6c688ce..0ab3a8f 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.8.2</version>
+ <version>1.9.1</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 fcc0d6e..c0d8e7f 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.8.2</version>
+ <version>1.9.1</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 d070dac..f72f555 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.8.2</version>
+ <version>1.9.1</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 c10124e..bdeb837 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.8.2</version>
+ <version>1.9.1</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 4c8694c..188a6c7 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.8.2</version>
+ <version>1.9.1</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 cb0a5e7..9a70857 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.8.2</version>
+ <version>1.9.1</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 f500fc5..d4e84ab 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.8.2</version>
+ <version>1.9.1</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 b72dbe7..27409e7 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.8.2</version>
+ <version>1.9.1</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 bcae8d2..13235da 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.8.2</version>
+ <version>1.9.1</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 8b4bb3e..af26824 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.8.2</version>
+ <version>1.9.1</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 62119b7..98886f9 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.8.2</version>
+ <version>1.9.1</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 4cc2673..147ffd9 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.8.2</version>
+ <version>1.9.1</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 7cf0bb7..87dd5b7 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.8.2</version>
+ <version>1.9.1</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 0e78ad4..683facf 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.8.2</version>
+ <version>1.9.1</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 618528f..350f850 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.8.2</version>
+ <version>1.9.1</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 f703d97..5aed1dc 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.8.2</version>
+ <version>1.9.1</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 5761780..2329e56 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.8.2</version>
+ <version>1.9.1</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 66225fa..6ab761e 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.8.2</version>
+ <version>1.9.1</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 a56ad3b..dc5266e 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.8.2</version>
+ <version>1.9.1</version>
<license>LGPL</license>
<source>gst-plugins-bad</source>
<package>GStreamer Bad Plug-ins</package>
@@ -80,7 +80,7 @@
<name>sink</name>
<direction>sink</direction>
<presence>always</presence>
- <details>video/x-raw, format=(string){ I420, YV12, YUY2, UYVY, AYUV, RGBx, BGRx, xRGB, xBGR, RGBA, BGRA, ARGB, ABGR, RGB, BGR, Y41B, Y42B, YVYU, Y444, v210, v216, NV12, NV21, NV16, NV61, NV24, GRAY8, GRAY16_BE, GRAY16_LE, v308, RGB16, BGR16, RGB15, BGR15, UYVP, A420, RGB8P, YUV9, YVU9, IYU1, ARGB64, AYUV64, r210, I420_10LE, I420_10BE, I422_10LE, I422_10BE, Y444_10LE, Y444_10BE, GBR, GBR_10LE, GBR_10BE, NV12_64Z32, A420_10LE, A420_10BE, A422_10LE, A422_10BE, A444_10LE, A444_10BE }, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]</details>
+ <details>video/x-raw, format=(string){ I420, YV12, YUY2, UYVY, AYUV, RGBx, BGRx, xRGB, xBGR, RGBA, BGRA, ARGB, ABGR, RGB, BGR, Y41B, Y42B, YVYU, Y444, v210, v216, NV12, NV21, NV16, NV61, NV24, GRAY8, GRAY16_BE, GRAY16_LE, v308, IYU2, RGB16, BGR16, RGB15, BGR15, UYVP, A420, RGB8P, YUV9, YVU9, IYU1, ARGB64, AYUV64, r210, I420_10LE, I420_10BE, I422_10LE, I422_10BE, Y444_10LE, Y444_10BE, GBR, GBR_10LE, GBR_10BE, NV12_64Z32, A420_10LE, A420_10BE, A422_10LE, A422_10BE, A444_10LE, A444_10BE, P010_10LE, P010_10BE }, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]</details>
</caps>
</pads>
</element>
@@ -95,7 +95,7 @@
<name>src</name>
<direction>source</direction>
<presence>always</presence>
- <details>video/x-raw, format=(string){ I420, YV12, YUY2, UYVY, AYUV, RGBx, BGRx, xRGB, xBGR, RGBA, BGRA, ARGB, ABGR, RGB, BGR, Y41B, Y42B, YVYU, Y444, v210, v216, NV12, NV21, NV16, NV61, NV24, GRAY8, GRAY16_BE, GRAY16_LE, v308, RGB16, BGR16, RGB15, BGR15, UYVP, A420, RGB8P, YUV9, YVU9, IYU1, ARGB64, AYUV64, r210, I420_10LE, I420_10BE, I422_10LE, I422_10BE, Y444_10LE, Y444_10BE, GBR, GBR_10LE, GBR_10BE, NV12_64Z32, A420_10LE, A420_10BE, A422_10LE, A422_10BE, A444_10LE, A444_10BE }, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]</details>
+ <details>video/x-raw, format=(string){ I420, YV12, YUY2, UYVY, AYUV, RGBx, BGRx, xRGB, xBGR, RGBA, BGRA, ARGB, ABGR, RGB, BGR, Y41B, Y42B, YVYU, Y444, v210, v216, NV12, NV21, NV16, NV61, NV24, GRAY8, GRAY16_BE, GRAY16_LE, v308, IYU2, RGB16, BGR16, RGB15, BGR15, UYVP, A420, RGB8P, YUV9, YVU9, IYU1, ARGB64, AYUV64, r210, I420_10LE, I420_10BE, I422_10LE, I422_10BE, Y444_10LE, Y444_10BE, GBR, GBR_10LE, GBR_10BE, NV12_64Z32, A420_10LE, A420_10BE, A422_10LE, A422_10BE, A444_10LE, A444_10BE, P010_10LE, P010_10BE }, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]</details>
</caps>
</pads>
</element>
diff --git a/docs/plugins/inspect/plugin-interlace.xml b/docs/plugins/inspect/plugin-interlace.xml
index 55aef70..e2f2010 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.8.2</version>
+ <version>1.9.1</version>
<license>LGPL</license>
<source>gst-plugins-bad</source>
<package>GStreamer Bad Plug-ins source release</package>
@@ -20,7 +20,7 @@
<name>sink</name>
<direction>sink</direction>
<presence>always</presence>
- <details>video/x-raw, format=(string){ AYUV, YUY2, UYVY, I420, YV12, Y42B, Y444, NV12, NV21 }, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ], interlace-mode=(string)progressive</details>
+ <details>video/x-raw, format=(string){ AYUV, YUY2, UYVY, I420, YV12, Y42B, Y444, NV12, NV21 }, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]</details>
</caps>
<caps>
<name>src</name>
diff --git a/docs/plugins/inspect/plugin-ivfparse.xml b/docs/plugins/inspect/plugin-ivfparse.xml
index c0be9aa..628a0b6 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.8.2</version>
+ <version>1.9.1</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 7d2ff9a..bfe8950 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.8.2</version>
+ <version>1.9.1</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 c962078..2c019bf 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.8.2</version>
+ <version>1.9.1</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 3cabcb9..0f772e3 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.8.2</version>
+ <version>1.9.1</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 0181009..6f6f693 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.8.2</version>
+ <version>1.9.1</version>
<license>LGPL</license>
<source>gst-plugins-bad</source>
<package>GStreamer Bad Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-kms.xml b/docs/plugins/inspect/plugin-kms.xml
new file mode 100644
index 0000000..dd8cac0
--- /dev/null
+++ b/docs/plugins/inspect/plugin-kms.xml
@@ -0,0 +1,28 @@
+<plugin>
+ <name>kms</name>
+ <description>Video sink using the Linux kernel mode setting API</description>
+ <filename>../../sys/kms/.libs/libgstkmssink.so</filename>
+ <basename>libgstkmssink.so</basename>
+ <version>1.9.0.1</version>
+ <license>LGPL</license>
+ <source>gst-plugins-bad</source>
+ <package>GStreamer Bad Plug-ins git</package>
+ <origin>Unknown package origin</origin>
+ <elements>
+ <element>
+ <name>kmssink</name>
+ <longname>KMS video sink</longname>
+ <class>Sink/Video</class>
+ <description>Video sink using the Linux kernel mode setting API</description>
+ <author>Víctor Jáquez <vjaquez@igalia.com></author>
+ <pads>
+ <caps>
+ <name>sink</name>
+ <direction>sink</direction>
+ <presence>always</presence>
+ <details>video/x-raw, format=(string){ BGRA, BGRx, RGBA, RGBx, UYVY, YUY2, YVYU, I420, YV12, Y42B, NV12, NV21, NV16 }, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]</details>
+ </caps>
+ </pads>
+ </element>
+ </elements>
+</plugin>
\ No newline at end of file
diff --git a/docs/plugins/inspect/plugin-ladspa.xml b/docs/plugins/inspect/plugin-ladspa.xml
index 77c23f9..8bd5c50 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.8.2</version>
+ <version>1.9.1</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 3815188..7d3455e 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.8.2</version>
+ <version>1.9.1</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 b8d182e..3a0e8f1 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.8.2</version>
+ <version>1.9.1</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 f3fc746..972e4f1 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.8.2</version>
+ <version>1.9.1</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 08d8be6..4b43286 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.8.2</version>
+ <version>1.9.1</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 94728a9..e4a3d55 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.8.2</version>
+ <version>1.9.1</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 f84367e..cbfda70 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.8.2</version>
+ <version>1.9.1</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 ea92198..79b997a 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.8.2</version>
+ <version>1.9.1</version>
<license>unknown</license>
<source>gst-plugins-bad</source>
<package>GStreamer Bad Plug-ins source release</package>
@@ -11,7 +11,7 @@
<elements>
<element>
<name>mpegpsdemux</name>
- <longname>The Fluendo MPEG Program Stream Demuxer</longname>
+ <longname>MPEG Program Stream Demuxer</longname>
<class>Codec/Demuxer</class>
<description>Demultiplexes MPEG Program Streams</description>
<author>Wim Taymans <wim@fluendo.com></author>
diff --git a/docs/plugins/inspect/plugin-mpegpsmux.xml b/docs/plugins/inspect/plugin-mpegpsmux.xml
index 80b59dd..0e61377 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.8.2</version>
+ <version>1.9.1</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 189e204..2441c08 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.8.2</version>
+ <version>1.9.1</version>
<license>LGPL</license>
<source>gst-plugins-bad</source>
<package>GStreamer Bad Plug-ins source release</package>
@@ -24,25 +24,25 @@
<details>video/mpegts, systemstream=(boolean)true</details>
</caps>
<caps>
- <name>audio_%04x</name>
+ <name>audio_%01x_%05x</name>
<direction>source</direction>
<presence>sometimes</presence>
<details>audio/mpeg, mpegversion=(int)1; audio/mpeg, mpegversion=(int)2, stream-format=(string)adts; audio/mpeg, mpegversion=(int)4, stream-format=(string)loas; audio/x-lpcm, width=(int){ 16, 20, 24 }, rate=(int){ 48000, 96000 }, channels=(int)[ 1, 8 ], dynamic_range=(int)[ 0, 255 ], emphasis=(boolean){ false, true }, mute=(boolean){ false, true }; audio/x-ac3; audio/x-eac3; audio/x-dts; audio/x-opus; audio/x-private-ts-lpcm</details>
</caps>
<caps>
- <name>private_%04x</name>
+ <name>private_%01x_%05x</name>
<direction>source</direction>
<presence>sometimes</presence>
<details>ANY</details>
</caps>
<caps>
- <name>subpicture_%04x</name>
+ <name>subpicture_%01x_%05x</name>
<direction>source</direction>
<presence>sometimes</presence>
<details>subpicture/x-pgs; subpicture/x-dvd; subpicture/x-dvb</details>
</caps>
<caps>
- <name>video_%04x</name>
+ <name>video_%01x_%05x</name>
<direction>source</direction>
<presence>sometimes</presence>
<details>video/mpeg, mpegversion=(int){ 1, 2, 4 }, systemstream=(boolean)false; video/x-h264, stream-format=(string)byte-stream, alignment=(string)nal; video/x-h265, stream-format=(string)byte-stream, alignment=(string)nal; video/x-dirac; video/x-cavs; video/x-wmv, wmvversion=(int)3, format=(string)WVC1</details>
diff --git a/docs/plugins/inspect/plugin-mpegtsmux.xml b/docs/plugins/inspect/plugin-mpegtsmux.xml
index 3ffc493..00444a6 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.8.2</version>
+ <version>1.9.1</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 23b36a7..243410f 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.8.2</version>
+ <version>1.9.1</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
new file mode 100644
index 0000000..fc9b47e
--- /dev/null
+++ b/docs/plugins/inspect/plugin-musepack.xml
@@ -0,0 +1,34 @@
+<plugin>
+ <name>musepack</name>
+ <description>Musepack decoder</description>
+ <filename>../../ext/musepack/.libs/libgstmusepack.so</filename>
+ <basename>libgstmusepack.so</basename>
+ <version>1.9.1</version>
+ <license>LGPL</license>
+ <source>gst-plugins-bad</source>
+ <package>GStreamer Bad Plug-ins source release</package>
+ <origin>Unknown package origin</origin>
+ <elements>
+ <element>
+ <name>musepackdec</name>
+ <longname>Musepack decoder</longname>
+ <class>Codec/Decoder/Audio</class>
+ <description>Musepack decoder</description>
+ <author>Ronald Bultje <rbultje@ronald.bitfreak.net></author>
+ <pads>
+ <caps>
+ <name>sink</name>
+ <direction>sink</direction>
+ <presence>always</presence>
+ <details>audio/x-musepack, streamversion=(int){ 7, 8 }</details>
+ </caps>
+ <caps>
+ <name>src</name>
+ <direction>source</direction>
+ <presence>always</presence>
+ <details>audio/x-raw, format=(string)F32LE, layout=(string)interleaved, rate=(int)[ 8000, 96000 ], channels=(int)[ 1, 2 ]</details>
+ </caps>
+ </pads>
+ </element>
+ </elements>
+</plugin>
\ No newline at end of file
diff --git a/docs/plugins/inspect/plugin-mxf.xml b/docs/plugins/inspect/plugin-mxf.xml
index 325f5c5..9fa350a 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.8.2</version>
+ <version>1.9.1</version>
<license>LGPL</license>
<source>gst-plugins-bad</source>
<package>GStreamer Bad Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-neon.xml b/docs/plugins/inspect/plugin-neon.xml
index c53fcd4..896d1aa 100644
--- a/docs/plugins/inspect/plugin-neon.xml
+++ b/docs/plugins/inspect/plugin-neon.xml
@@ -3,10 +3,10 @@
<description>lib neon http client src</description>
<filename>../../ext/neon/.libs/libgstneonhttpsrc.so</filename>
<basename>libgstneonhttpsrc.so</basename>
- <version>1.7.1</version>
+ <version>1.9.0.1</version>
<license>LGPL</license>
<source>gst-plugins-bad</source>
- <package>GStreamer Bad Plug-ins source release</package>
+ <package>GStreamer Bad Plug-ins git</package>
<origin>Unknown package origin</origin>
<elements>
<element>
diff --git a/docs/plugins/inspect/plugin-netsim.xml b/docs/plugins/inspect/plugin-netsim.xml
index d1d7b05..6dcc1f7 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.8.2</version>
+ <version>1.9.1</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 d2765df..137ea2f 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.8.2</version>
+ <version>1.9.1</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 1c2ad91..20589ce 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.8.2</version>
+ <version>1.9.1</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 9bf44e4..ba8d908 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.7.2</version>
+ <version>1.9.1</version>
<license>LGPL</license>
<source>gst-plugins-bad</source>
<package>GStreamer Bad Plug-ins source release</package>
@@ -306,27 +306,6 @@
</pads>
</element>
<element>
- <name>pyramidsegment</name>
- <longname>pyramidsegment</longname>
- <class>Filter/Effect/Video</class>
- <description>Applies pyramid segmentation to a video or image.</description>
- <author>Michael Sheldon <mike@mikeasoft.com></author>
- <pads>
- <caps>
- <name>sink</name>
- <direction>sink</direction>
- <presence>always</presence>
- <details>video/x-raw, format=(string)RGB, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]</details>
- </caps>
- <caps>
- <name>src</name>
- <direction>source</direction>
- <presence>always</presence>
- <details>video/x-raw, format=(string)RGB, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]</details>
- </caps>
- </pads>
- </element>
- <element>
<name>retinex</name>
<longname>Retinex image colour enhacement</longname>
<class>Filter/Effect/Video</class>
diff --git a/docs/plugins/inspect/plugin-openexr.xml b/docs/plugins/inspect/plugin-openexr.xml
index f17e047..e9535d0 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.8.2</version>
+ <version>1.9.1</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 834971e..954b386 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.8.2</version>
+ <version>1.9.1</version>
<license>LGPL</license>
<source>gst-plugins-bad</source>
<package>GStreamer Bad Plug-ins source release</package>
@@ -588,7 +588,7 @@
<name>sink</name>
<direction>sink</direction>
<presence>always</presence>
- <details>video/x-raw(memory:GLMemory, meta:GstVideoOverlayComposition), format=(string){ RGBA, BGRA, RGBx, BGRx, ARGB, ABGR, xRGB, xBGR, RGB, BGR, RGB16, BGR16, AYUV, I420, YV12, NV12, NV21, YUY2, UYVY, Y41B, Y42B, Y444, GRAY8, GRAY16_LE, GRAY16_BE }, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]; video/x-raw(memory:EGLImage, meta:GstVideoOverlayComposition), format=(string)RGBA, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]; video/x-raw(memory:SystemMemory, meta:GstVideoOverlayComposition), format=(string){ RGBA, BGRA, RGBx, BGRx, ARGB, ABGR, xRGB, xBGR, RGB, BGR, RGB16, BGR16, AYUV, I420, YV12, NV12, NV21, YUY2, UYVY, Y41B, Y42B, Y444, GRAY8, GRAY16_LE, GRAY16_BE }, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]; video/x-raw(meta:GstVideoGLTextureUploadMeta, meta:GstVideoOverlayComposition), format=(string)RGBA, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]; video/x-raw(memory:GLMemory), format=(string){ RGBA, BGRA, RGBx, BGRx, ARGB, ABGR, xRGB, xBGR, RGB, BGR, RGB16, BGR16, AYUV, I420, YV12, NV12, NV21, YUY2, UYVY, Y41B, Y42B, Y444, GRAY8, GRAY16_LE, GRAY16_BE }, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]; video/x-raw(memory:EGLImage), format=(string)RGBA, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]; video/x-raw, format=(string){ RGBA, BGRA, RGBx, BGRx, ARGB, ABGR, xRGB, xBGR, RGB, BGR, RGB16, BGR16, AYUV, I420, YV12, NV12, NV21, YUY2, UYVY, Y41B, Y42B, Y444, GRAY8, GRAY16_LE, GRAY16_BE }, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]; video/x-raw(meta:GstVideoGLTextureUploadMeta), format=(string)RGBA, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]</details>
+ <details>video/x-raw(memory:GLMemory, meta:GstVideoOverlayComposition), format=(string){ RGBA, BGRA, RGBx, BGRx, ARGB, ABGR, xRGB, xBGR, RGB, BGR, RGB16, BGR16, AYUV, I420, YV12, NV12, NV21, YUY2, UYVY, Y41B, Y42B, Y444, GRAY8, GRAY16_LE, GRAY16_BE }, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]; video/x-raw(memory:SystemMemory, meta:GstVideoOverlayComposition), format=(string){ RGBA, BGRA, RGBx, BGRx, ARGB, ABGR, xRGB, xBGR, RGB, BGR, RGB16, BGR16, AYUV, I420, YV12, NV12, NV21, YUY2, UYVY, Y41B, Y42B, Y444, GRAY8, GRAY16_LE, GRAY16_BE }, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]; video/x-raw(meta:GstVideoGLTextureUploadMeta, meta:GstVideoOverlayComposition), format=(string)RGBA, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]; video/x-raw(memory:GLMemory), format=(string){ RGBA, BGRA, RGBx, BGRx, ARGB, ABGR, xRGB, xBGR, RGB, BGR, RGB16, BGR16, AYUV, I420, YV12, NV12, NV21, YUY2, UYVY, Y41B, Y42B, Y444, GRAY8, GRAY16_LE, GRAY16_BE }, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]; video/x-raw, format=(string){ RGBA, BGRA, RGBx, BGRx, ARGB, ABGR, xRGB, xBGR, RGB, BGR, RGB16, BGR16, AYUV, I420, YV12, NV12, NV21, YUY2, UYVY, Y41B, Y42B, Y444, GRAY8, GRAY16_LE, GRAY16_BE }, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]; video/x-raw(meta:GstVideoGLTextureUploadMeta), format=(string)RGBA, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]</details>
</caps>
<caps>
<name>src</name>
@@ -651,7 +651,7 @@
<name>sink</name>
<direction>sink</direction>
<presence>always</presence>
- <details>video/x-raw(memory:GLMemory, meta:GstVideoOverlayComposition), format=(string){ RGBA, BGRA, RGBx, BGRx, ARGB, ABGR, xRGB, xBGR, RGB, BGR, RGB16, BGR16, AYUV, I420, YV12, NV12, NV21, YUY2, UYVY, Y41B, Y42B, Y444, GRAY8, GRAY16_LE, GRAY16_BE }, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]; video/x-raw(memory:EGLImage, meta:GstVideoOverlayComposition), format=(string)RGBA, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]; video/x-raw(memory:SystemMemory, meta:GstVideoOverlayComposition), format=(string){ RGBA, BGRA, RGBx, BGRx, ARGB, ABGR, xRGB, xBGR, RGB, BGR, RGB16, BGR16, AYUV, I420, YV12, NV12, NV21, YUY2, UYVY, Y41B, Y42B, Y444, GRAY8, GRAY16_LE, GRAY16_BE }, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]; video/x-raw(meta:GstVideoGLTextureUploadMeta, meta:GstVideoOverlayComposition), format=(string)RGBA, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]; video/x-raw(memory:GLMemory), format=(string){ RGBA, BGRA, RGBx, BGRx, ARGB, ABGR, xRGB, xBGR, RGB, BGR, RGB16, BGR16, AYUV, I420, YV12, NV12, NV21, YUY2, UYVY, Y41B, Y42B, Y444, GRAY8, GRAY16_LE, GRAY16_BE }, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]; video/x-raw(memory:EGLImage), format=(string)RGBA, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]; video/x-raw, format=(string){ RGBA, BGRA, RGBx, BGRx, ARGB, ABGR, xRGB, xBGR, RGB, BGR, RGB16, BGR16, AYUV, I420, YV12, NV12, NV21, YUY2, UYVY, Y41B, Y42B, Y444, GRAY8, GRAY16_LE, GRAY16_BE }, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]; video/x-raw(meta:GstVideoGLTextureUploadMeta), format=(string)RGBA, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]</details>
+ <details>video/x-raw(memory:GLMemory, meta:GstVideoOverlayComposition), format=(string){ RGBA, BGRA, RGBx, BGRx, ARGB, ABGR, xRGB, xBGR, RGB, BGR, RGB16, BGR16, AYUV, I420, YV12, NV12, NV21, YUY2, UYVY, Y41B, Y42B, Y444, GRAY8, GRAY16_LE, GRAY16_BE }, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]; video/x-raw(memory:SystemMemory, meta:GstVideoOverlayComposition), format=(string){ RGBA, BGRA, RGBx, BGRx, ARGB, ABGR, xRGB, xBGR, RGB, BGR, RGB16, BGR16, AYUV, I420, YV12, NV12, NV21, YUY2, UYVY, Y41B, Y42B, Y444, GRAY8, GRAY16_LE, GRAY16_BE }, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]; video/x-raw(meta:GstVideoGLTextureUploadMeta, meta:GstVideoOverlayComposition), format=(string)RGBA, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]; video/x-raw(memory:GLMemory), format=(string){ RGBA, BGRA, RGBx, BGRx, ARGB, ABGR, xRGB, xBGR, RGB, BGR, RGB16, BGR16, AYUV, I420, YV12, NV12, NV21, YUY2, UYVY, Y41B, Y42B, Y444, GRAY8, GRAY16_LE, GRAY16_BE }, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]; video/x-raw, format=(string){ RGBA, BGRA, RGBx, BGRx, ARGB, ABGR, xRGB, xBGR, RGB, BGR, RGB16, BGR16, AYUV, I420, YV12, NV12, NV21, YUY2, UYVY, Y41B, Y42B, Y444, GRAY8, GRAY16_LE, GRAY16_BE }, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]; video/x-raw(meta:GstVideoGLTextureUploadMeta), format=(string)RGBA, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]</details>
</caps>
</pads>
</element>
@@ -681,7 +681,7 @@
<name>sink_%u</name>
<direction>sink</direction>
<presence>request</presence>
- <details>video/x-raw(memory:GLMemory, meta:GstVideoOverlayComposition), format=(string){ RGBA, BGRA, RGBx, BGRx, ARGB, ABGR, xRGB, xBGR, RGB, BGR, RGB16, BGR16, AYUV, I420, YV12, NV12, NV21, YUY2, UYVY, Y41B, Y42B, Y444, GRAY8, GRAY16_LE, GRAY16_BE }, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]; video/x-raw(memory:EGLImage, meta:GstVideoOverlayComposition), format=(string)RGBA, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]; video/x-raw(memory:SystemMemory, meta:GstVideoOverlayComposition), format=(string){ RGBA, BGRA, RGBx, BGRx, ARGB, ABGR, xRGB, xBGR, RGB, BGR, RGB16, BGR16, AYUV, I420, YV12, NV12, NV21, YUY2, UYVY, Y41B, Y42B, Y444, GRAY8, GRAY16_LE, GRAY16_BE }, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]; video/x-raw(meta:GstVideoGLTextureUploadMeta, meta:GstVideoOverlayComposition), format=(string)RGBA, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]; video/x-raw(memory:GLMemory), format=(string){ RGBA, BGRA, RGBx, BGRx, ARGB, ABGR, xRGB, xBGR, RGB, BGR, RGB16, BGR16, AYUV, I420, YV12, NV12, NV21, YUY2, UYVY, Y41B, Y42B, Y444, GRAY8, GRAY16_LE, GRAY16_BE }, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]; video/x-raw(memory:EGLImage), format=(string)RGBA, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]; video/x-raw, format=(string){ RGBA, BGRA, RGBx, BGRx, ARGB, ABGR, xRGB, xBGR, RGB, BGR, RGB16, BGR16, AYUV, I420, YV12, NV12, NV21, YUY2, UYVY, Y41B, Y42B, Y444, GRAY8, GRAY16_LE, GRAY16_BE }, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]; video/x-raw(meta:GstVideoGLTextureUploadMeta), format=(string)RGBA, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]</details>
+ <details>video/x-raw(memory:GLMemory, meta:GstVideoOverlayComposition), format=(string){ RGBA, BGRA, RGBx, BGRx, ARGB, ABGR, xRGB, xBGR, RGB, BGR, RGB16, BGR16, AYUV, I420, YV12, NV12, NV21, YUY2, UYVY, Y41B, Y42B, Y444, GRAY8, GRAY16_LE, GRAY16_BE }, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]; video/x-raw(memory:SystemMemory, meta:GstVideoOverlayComposition), format=(string){ RGBA, BGRA, RGBx, BGRx, ARGB, ABGR, xRGB, xBGR, RGB, BGR, RGB16, BGR16, AYUV, I420, YV12, NV12, NV21, YUY2, UYVY, Y41B, Y42B, Y444, GRAY8, GRAY16_LE, GRAY16_BE }, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]; video/x-raw(meta:GstVideoGLTextureUploadMeta, meta:GstVideoOverlayComposition), format=(string)RGBA, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]; video/x-raw(memory:GLMemory), format=(string){ RGBA, BGRA, RGBx, BGRx, ARGB, ABGR, xRGB, xBGR, RGB, BGR, RGB16, BGR16, AYUV, I420, YV12, NV12, NV21, YUY2, UYVY, Y41B, Y42B, Y444, GRAY8, GRAY16_LE, GRAY16_BE }, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]; video/x-raw, format=(string){ RGBA, BGRA, RGBx, BGRx, ARGB, ABGR, xRGB, xBGR, RGB, BGR, RGB16, BGR16, AYUV, I420, YV12, NV12, NV21, YUY2, UYVY, Y41B, Y42B, Y444, GRAY8, GRAY16_LE, GRAY16_BE }, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]; video/x-raw(meta:GstVideoGLTextureUploadMeta), format=(string)RGBA, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]</details>
</caps>
<caps>
<name>src</name>
@@ -765,7 +765,7 @@
<name>sink</name>
<direction>sink</direction>
<presence>always</presence>
- <details>video/x-raw(memory:GLMemory, meta:GstVideoOverlayComposition), format=(string){ RGBA, BGRA, RGBx, BGRx, ARGB, ABGR, xRGB, xBGR, RGB, BGR, RGB16, BGR16, AYUV, I420, YV12, NV12, NV21, YUY2, UYVY, Y41B, Y42B, Y444, GRAY8, GRAY16_LE, GRAY16_BE }, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]; video/x-raw(memory:EGLImage, meta:GstVideoOverlayComposition), format=(string)RGBA, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]; video/x-raw(memory:SystemMemory, meta:GstVideoOverlayComposition), format=(string){ RGBA, BGRA, RGBx, BGRx, ARGB, ABGR, xRGB, xBGR, RGB, BGR, RGB16, BGR16, AYUV, I420, YV12, NV12, NV21, YUY2, UYVY, Y41B, Y42B, Y444, GRAY8, GRAY16_LE, GRAY16_BE }, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]; video/x-raw(meta:GstVideoGLTextureUploadMeta, meta:GstVideoOverlayComposition), format=(string)RGBA, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]; video/x-raw(memory:GLMemory), format=(string){ RGBA, BGRA, RGBx, BGRx, ARGB, ABGR, xRGB, xBGR, RGB, BGR, RGB16, BGR16, AYUV, I420, YV12, NV12, NV21, YUY2, UYVY, Y41B, Y42B, Y444, GRAY8, GRAY16_LE, GRAY16_BE }, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]; video/x-raw(memory:EGLImage), format=(string)RGBA, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]; video/x-raw, format=(string){ RGBA, BGRA, RGBx, BGRx, ARGB, ABGR, xRGB, xBGR, RGB, BGR, RGB16, BGR16, AYUV, I420, YV12, NV12, NV21, YUY2, UYVY, Y41B, Y42B, Y444, GRAY8, GRAY16_LE, GRAY16_BE }, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]; video/x-raw(meta:GstVideoGLTextureUploadMeta), format=(string)RGBA, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]</details>
+ <details>video/x-raw(memory:GLMemory, meta:GstVideoOverlayComposition), format=(string){ RGBA, BGRA, RGBx, BGRx, ARGB, ABGR, xRGB, xBGR, RGB, BGR, RGB16, BGR16, AYUV, I420, YV12, NV12, NV21, YUY2, UYVY, Y41B, Y42B, Y444, GRAY8, GRAY16_LE, GRAY16_BE }, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]; video/x-raw(memory:SystemMemory, meta:GstVideoOverlayComposition), format=(string){ RGBA, BGRA, RGBx, BGRx, ARGB, ABGR, xRGB, xBGR, RGB, BGR, RGB16, BGR16, AYUV, I420, YV12, NV12, NV21, YUY2, UYVY, Y41B, Y42B, Y444, GRAY8, GRAY16_LE, GRAY16_BE }, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]; video/x-raw(meta:GstVideoGLTextureUploadMeta, meta:GstVideoOverlayComposition), format=(string)RGBA, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]; video/x-raw(memory:GLMemory), format=(string){ RGBA, BGRA, RGBx, BGRx, ARGB, ABGR, xRGB, xBGR, RGB, BGR, RGB16, BGR16, AYUV, I420, YV12, NV12, NV21, YUY2, UYVY, Y41B, Y42B, Y444, GRAY8, GRAY16_LE, GRAY16_BE }, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]; video/x-raw, format=(string){ RGBA, BGRA, RGBx, BGRx, ARGB, ABGR, xRGB, xBGR, RGB, BGR, RGB16, BGR16, AYUV, I420, YV12, NV12, NV21, YUY2, UYVY, Y41B, Y42B, Y444, GRAY8, GRAY16_LE, GRAY16_BE }, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]; video/x-raw(meta:GstVideoGLTextureUploadMeta), format=(string)RGBA, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]</details>
</caps>
</pads>
</element>
@@ -817,7 +817,7 @@
<name>sink</name>
<direction>sink</direction>
<presence>always</presence>
- <details>video/x-raw(memory:GLMemory), format=(string)RGBA, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]; video/x-raw(memory:EGLImage), format=(string)RGBA, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]; video/x-raw(meta:GstVideoGLTextureUploadMeta), format=(string)RGBA, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]; video/x-raw, format=(string){ RGBA, RGB, RGBx, BGR, BGRx, BGRA, xRGB, xBGR, ARGB, ABGR, Y444, I420, YV12, Y42B, Y41B, NV12, NV21, YUY2, UYVY, AYUV, GRAY8, GRAY16_LE, GRAY16_BE, RGB16, BGR16 }, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]</details>
+ <details>video/x-raw(memory:GLMemory), format=(string)RGBA, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]</details>
</caps>
<caps>
<name>left</name>
@@ -859,7 +859,7 @@
<name>sink</name>
<direction>sink</direction>
<presence>always</presence>
- <details>video/x-raw(memory:GLMemory, meta:GstVideoOverlayComposition), format=(string){ RGBA, BGRA, RGBx, BGRx, ARGB, ABGR, xRGB, xBGR, RGB, BGR, RGB16, BGR16, AYUV, I420, YV12, NV12, NV21, YUY2, UYVY, Y41B, Y42B, Y444, GRAY8, GRAY16_LE, GRAY16_BE }, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]; video/x-raw(memory:EGLImage, meta:GstVideoOverlayComposition), format=(string)RGBA, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]; video/x-raw(memory:SystemMemory, meta:GstVideoOverlayComposition), format=(string){ RGBA, BGRA, RGBx, BGRx, ARGB, ABGR, xRGB, xBGR, RGB, BGR, RGB16, BGR16, AYUV, I420, YV12, NV12, NV21, YUY2, UYVY, Y41B, Y42B, Y444, GRAY8, GRAY16_LE, GRAY16_BE }, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]; video/x-raw(meta:GstVideoGLTextureUploadMeta, meta:GstVideoOverlayComposition), format=(string)RGBA, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]; video/x-raw(memory:GLMemory), format=(string){ RGBA, BGRA, RGBx, BGRx, ARGB, ABGR, xRGB, xBGR, RGB, BGR, RGB16, BGR16, AYUV, I420, YV12, NV12, NV21, YUY2, UYVY, Y41B, Y42B, Y444, GRAY8, GRAY16_LE, GRAY16_BE }, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]; video/x-raw(memory:EGLImage), format=(string)RGBA, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]; video/x-raw, format=(string){ RGBA, BGRA, RGBx, BGRx, ARGB, ABGR, xRGB, xBGR, RGB, BGR, RGB16, BGR16, AYUV, I420, YV12, NV12, NV21, YUY2, UYVY, Y41B, Y42B, Y444, GRAY8, GRAY16_LE, GRAY16_BE }, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]; video/x-raw(meta:GstVideoGLTextureUploadMeta), format=(string)RGBA, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]</details>
+ <details>video/x-raw(memory:GLMemory, meta:GstVideoOverlayComposition), format=(string){ RGBA, BGRA, RGBx, BGRx, ARGB, ABGR, xRGB, xBGR, RGB, BGR, RGB16, BGR16, AYUV, I420, YV12, NV12, NV21, YUY2, UYVY, Y41B, Y42B, Y444, GRAY8, GRAY16_LE, GRAY16_BE }, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]; video/x-raw(memory:SystemMemory, meta:GstVideoOverlayComposition), format=(string){ RGBA, BGRA, RGBx, BGRx, ARGB, ABGR, xRGB, xBGR, RGB, BGR, RGB16, BGR16, AYUV, I420, YV12, NV12, NV21, YUY2, UYVY, Y41B, Y42B, Y444, GRAY8, GRAY16_LE, GRAY16_BE }, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]; video/x-raw(meta:GstVideoGLTextureUploadMeta, meta:GstVideoOverlayComposition), format=(string)RGBA, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]; video/x-raw(memory:GLMemory), format=(string){ RGBA, BGRA, RGBx, BGRx, ARGB, ABGR, xRGB, xBGR, RGB, BGR, RGB16, BGR16, AYUV, I420, YV12, NV12, NV21, YUY2, UYVY, Y41B, Y42B, Y444, GRAY8, GRAY16_LE, GRAY16_BE }, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]; video/x-raw, format=(string){ RGBA, BGRA, RGBx, BGRx, ARGB, ABGR, xRGB, xBGR, RGB, BGR, RGB16, BGR16, AYUV, I420, YV12, NV12, NV21, YUY2, UYVY, Y41B, Y42B, Y444, GRAY8, GRAY16_LE, GRAY16_BE }, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]; video/x-raw(meta:GstVideoGLTextureUploadMeta), format=(string)RGBA, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]</details>
</caps>
<caps>
<name>src</name>
@@ -880,7 +880,7 @@
<name>sink_%u</name>
<direction>sink</direction>
<presence>request</presence>
- <details>video/x-raw(memory:GLMemory, meta:GstVideoOverlayComposition), format=(string){ RGBA, BGRA, RGBx, BGRx, ARGB, ABGR, xRGB, xBGR, RGB, BGR, RGB16, BGR16, AYUV, I420, YV12, NV12, NV21, YUY2, UYVY, Y41B, Y42B, Y444, GRAY8, GRAY16_LE, GRAY16_BE }, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]; video/x-raw(memory:EGLImage, meta:GstVideoOverlayComposition), format=(string)RGBA, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]; video/x-raw(memory:SystemMemory, meta:GstVideoOverlayComposition), format=(string){ RGBA, BGRA, RGBx, BGRx, ARGB, ABGR, xRGB, xBGR, RGB, BGR, RGB16, BGR16, AYUV, I420, YV12, NV12, NV21, YUY2, UYVY, Y41B, Y42B, Y444, GRAY8, GRAY16_LE, GRAY16_BE }, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]; video/x-raw(meta:GstVideoGLTextureUploadMeta, meta:GstVideoOverlayComposition), format=(string)RGBA, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]; video/x-raw(memory:GLMemory), format=(string){ RGBA, BGRA, RGBx, BGRx, ARGB, ABGR, xRGB, xBGR, RGB, BGR, RGB16, BGR16, AYUV, I420, YV12, NV12, NV21, YUY2, UYVY, Y41B, Y42B, Y444, GRAY8, GRAY16_LE, GRAY16_BE }, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]; video/x-raw(memory:EGLImage), format=(string)RGBA, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]; video/x-raw, format=(string){ RGBA, BGRA, RGBx, BGRx, ARGB, ABGR, xRGB, xBGR, RGB, BGR, RGB16, BGR16, AYUV, I420, YV12, NV12, NV21, YUY2, UYVY, Y41B, Y42B, Y444, GRAY8, GRAY16_LE, GRAY16_BE }, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]; video/x-raw(meta:GstVideoGLTextureUploadMeta), format=(string)RGBA, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]</details>
+ <details>video/x-raw(memory:GLMemory, meta:GstVideoOverlayComposition), format=(string){ RGBA, BGRA, RGBx, BGRx, ARGB, ABGR, xRGB, xBGR, RGB, BGR, RGB16, BGR16, AYUV, I420, YV12, NV12, NV21, YUY2, UYVY, Y41B, Y42B, Y444, GRAY8, GRAY16_LE, GRAY16_BE }, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]; video/x-raw(memory:SystemMemory, meta:GstVideoOverlayComposition), format=(string){ RGBA, BGRA, RGBx, BGRx, ARGB, ABGR, xRGB, xBGR, RGB, BGR, RGB16, BGR16, AYUV, I420, YV12, NV12, NV21, YUY2, UYVY, Y41B, Y42B, Y444, GRAY8, GRAY16_LE, GRAY16_BE }, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]; video/x-raw(meta:GstVideoGLTextureUploadMeta, meta:GstVideoOverlayComposition), format=(string)RGBA, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]; video/x-raw(memory:GLMemory), format=(string){ RGBA, BGRA, RGBx, BGRx, ARGB, ABGR, xRGB, xBGR, RGB, BGR, RGB16, BGR16, AYUV, I420, YV12, NV12, NV21, YUY2, UYVY, Y41B, Y42B, Y444, GRAY8, GRAY16_LE, GRAY16_BE }, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]; video/x-raw, format=(string){ RGBA, BGRA, RGBx, BGRx, ARGB, ABGR, xRGB, xBGR, RGB, BGR, RGB16, BGR16, AYUV, I420, YV12, NV12, NV21, YUY2, UYVY, Y41B, Y42B, Y444, GRAY8, GRAY16_LE, GRAY16_BE }, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]; video/x-raw(meta:GstVideoGLTextureUploadMeta), format=(string)RGBA, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]</details>
</caps>
<caps>
<name>src</name>
diff --git a/docs/plugins/inspect/plugin-openh264.xml b/docs/plugins/inspect/plugin-openh264.xml
new file mode 100644
index 0000000..f5b13b5
--- /dev/null
+++ b/docs/plugins/inspect/plugin-openh264.xml
@@ -0,0 +1,55 @@
+<plugin>
+ <name>openh264</name>
+ <description>OpenH264 encoder/decoder plugin</description>
+ <filename>../../ext/openh264/.libs/libgstopenh264.so</filename>
+ <basename>libgstopenh264.so</basename>
+ <version>1.9.1</version>
+ <license>BSD</license>
+ <source>gst-plugins-bad</source>
+ <package>OpenWebRTC GStreamer plugins</package>
+ <origin>http://www.ericsson.com</origin>
+ <elements>
+ <element>
+ <name>openh264dec</name>
+ <longname>OpenH264 video decoder</longname>
+ <class>Decoder/Video</class>
+ <description>OpenH264 video decoder</description>
+ <author>Ericsson AB, http://www.ericsson.com</author>
+ <pads>
+ <caps>
+ <name>sink</name>
+ <direction>sink</direction>
+ <presence>always</presence>
+ <details>video/x-h264, stream-format=(string)byte-stream, alignment=(string)au, profile=(string){ constrained-baseline, baseline }</details>
+ </caps>
+ <caps>
+ <name>src</name>
+ <direction>source</direction>
+ <presence>always</presence>
+ <details>video/x-raw, format=(string)I420, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]</details>
+ </caps>
+ </pads>
+ </element>
+ <element>
+ <name>openh264enc</name>
+ <longname>OpenH264 video encoder</longname>
+ <class>Encoder/Video</class>
+ <description>OpenH264 video encoder</description>
+ <author>Ericsson AB, http://www.ericsson.com</author>
+ <pads>
+ <caps>
+ <name>sink</name>
+ <direction>sink</direction>
+ <presence>always</presence>
+ <details>video/x-raw, format=(string)I420, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]</details>
+ </caps>
+ <caps>
+ <name>src</name>
+ <direction>source</direction>
+ <presence>always</presence>
+ <details>video/x-h264, stream-format=(string)byte-stream, alignment=(string)au, profile=(string)baseline</details>
+ </caps>
+ </pads>
+ </element>
+ </elements>
+</plugin>
\ No newline at end of file
diff --git a/docs/plugins/inspect/plugin-openjpeg.xml b/docs/plugins/inspect/plugin-openjpeg.xml
index d8f49e1..64411f8 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.8.2</version>
+ <version>1.9.1</version>
<license>LGPL</license>
<source>gst-plugins-bad</source>
<package>GStreamer Bad Plug-ins source release</package>
@@ -20,7 +20,7 @@
<name>sink</name>
<direction>sink</direction>
<presence>always</presence>
- <details>image/x-j2c, colorspace=(string){ sRGB, sYUV, GRAY }; image/x-jpc, colorspace=(string){ sRGB, sYUV, GRAY }; image/jp2</details>
+ <details>image/x-j2c, sampling=(string){ RGB, BGR, RGBA, BGRA, YCbCr-4:4:4, YCbCr-4:2:2, YCbCr-4:2:0, YCbCr-4:1:1, GRAYSCALE, YCbCrA-4:4:4:4 }; image/x-jpc, sampling=(string){ RGB, BGR, RGBA, BGRA, YCbCr-4:4:4, YCbCr-4:2:2, YCbCr-4:2:0, YCbCr-4:1:1, GRAYSCALE, YCbCrA-4:4:4:4 }; image/jp2</details>
</caps>
<caps>
<name>src</name>
@@ -47,7 +47,7 @@
<name>src</name>
<direction>source</direction>
<presence>always</presence>
- <details>image/x-j2c, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], num-components=(int)[ 1, 4 ], colorspace=(string){ sRGB, sYUV, GRAY }; image/x-jpc, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], num-components=(int)[ 1, 4 ], colorspace=(string){ sRGB, sYUV, GRAY }; image/jp2, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ]</details>
+ <details>image/x-j2c, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], num-components=(int)[ 1, 4 ], sampling=(string){ RGB, BGR, RGBA, BGRA, YCbCr-4:4:4, YCbCr-4:2:2, YCbCr-4:2:0, YCbCr-4:1:1, GRAYSCALE, YCbCrA-4:4:4:4 }, colorspace=(string){ sRGB, sYUV, GRAY }; image/x-jpc, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], num-components=(int)[ 1, 4 ], sampling=(string){ RGB, BGR, RGBA, BGRA, YCbCr-4:4:4, YCbCr-4:2:2, YCbCr-4:2:0, YCbCr-4:1:1, GRAYSCALE, YCbCrA-4:4:4:4 }, colorspace=(string){ sRGB, sYUV, GRAY }; image/jp2, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ]</details>
</caps>
</pads>
</element>
diff --git a/docs/plugins/inspect/plugin-opusparse.xml b/docs/plugins/inspect/plugin-opusparse.xml
index d81ac5a..e6ac24d 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.8.2</version>
+ <version>1.9.1</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 c18292d..e4c85ff 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.8.2</version>
+ <version>1.9.1</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 3026ada..ba0e18a 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.8.2</version>
+ <version>1.9.1</version>
<license>LGPL</license>
<source>gst-plugins-bad</source>
<package>GStreamer Bad Plug-ins source release</package>
@@ -26,7 +26,7 @@
<name>src</name>
<direction>source</direction>
<presence>always</presence>
- <details>video/x-raw, format=(string)RGB, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]; video/x-raw, format=(string)GRAY8, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]</details>
+ <details>video/x-raw, format=(string){ RGB, GRAY8, GRAY16_BE, GRAY16_LE }, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]</details>
</caps>
</pads>
</element>
@@ -41,7 +41,7 @@
<name>sink</name>
<direction>sink</direction>
<presence>always</presence>
- <details>video/x-raw, format=(string)RGB, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]; video/x-raw, format=(string)GRAY8, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]</details>
+ <details>video/x-raw, format=(string){ RGB, GRAY8, GRAY16_BE, GRAY16_LE }, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]</details>
</caps>
<caps>
<name>src</name>
diff --git a/docs/plugins/inspect/plugin-qt.xml b/docs/plugins/inspect/plugin-qt.xml
index 803747c..14a5b7b 100644
--- a/docs/plugins/inspect/plugin-qt.xml
+++ b/docs/plugins/inspect/plugin-qt.xml
@@ -3,7 +3,7 @@
<description>Qt sink</description>
<filename>../../ext/qt/.libs/libgstqtsink.so</filename>
<basename>libgstqtsink.so</basename>
- <version>1.8.2</version>
+ <version>1.9.1</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 f3c9b51..c16cc6e 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.8.2</version>
+ <version>1.9.1</version>
<license>LGPL</license>
<source>gst-plugins-bad</source>
<package>GStreamer Bad Plug-ins source release</package>
@@ -26,7 +26,28 @@
<name>src</name>
<direction>source</direction>
<presence>always</presence>
- <details>audio/x-raw, format=(string){ S8, U8, S16LE, S16BE, U16LE, U16BE, S24_32LE, S24_32BE, U24_32LE, U24_32BE, S32LE, S32BE, U32LE, U32BE, S24LE, S24BE, U24LE, U24BE, S20LE, S20BE, U20LE, U20BE, S18LE, S18BE, U18LE, U18BE, F32LE, F32BE, F64LE, F64BE }, rate=(int)[ 1, 2147483647 ], channels=(int)[ 1, 2147483647 ], layout=(string){ interleaved, non-interleaved }; audio/x-alaw, rate=(int)[ 1, 2147483647 ], channels=(int)[ 1, 2147483647 ]; audio/x-mulaw, rate=(int)[ 1, 2147483647 ], channels=(int)[ 1, 2147483647 ]</details>
+ <details>audio/x-raw, format=(string){ S8, U8, S16LE, S16BE, U16LE, U16BE, S24_32LE, S24_32BE, U24_32LE, U24_32BE, S32LE, S32BE, U32LE, U32BE, S24LE, S24BE, U24LE, U24BE, S20LE, S20BE, U20LE, U20BE, S18LE, S18BE, U18LE, U18BE, F32LE, F32BE, F64LE, F64BE }, rate=(int)[ 1, 2147483647 ], channels=(int)[ 1, 2147483647 ], layout=(string){ interleaved, non-interleaved }; audio/x-unaligned-raw, format=(string){ S8, U8, S16LE, S16BE, U16LE, U16BE, S24_32LE, S24_32BE, U24_32LE, U24_32BE, S32LE, S32BE, U32LE, U32BE, S24LE, S24BE, U24LE, U24BE, S20LE, S20BE, U20LE, U20BE, S18LE, S18BE, U18LE, U18BE, F32LE, F32BE, F64LE, F64BE }, rate=(int)[ 1, 2147483647 ], channels=(int)[ 1, 2147483647 ], layout=(string){ interleaved, non-interleaved }; audio/x-alaw, rate=(int)[ 1, 2147483647 ], channels=(int)[ 1, 2147483647 ]; audio/x-mulaw, rate=(int)[ 1, 2147483647 ], channels=(int)[ 1, 2147483647 ]</details>
+ </caps>
+ </pads>
+ </element>
+ <element>
+ <name>unalignedaudioparse</name>
+ <longname>unalignedaudioparse</longname>
+ <class>Codec/Parser/Bin/Audio</class>
+ <description>Parse unaligned raw audio data</description>
+ <author>Carlos Rafael Giani <dv@pseudoterminal.org></author>
+ <pads>
+ <caps>
+ <name>sink</name>
+ <direction>sink</direction>
+ <presence>always</presence>
+ <details>audio/x-unaligned-raw, format=(string){ S8, U8, S16LE, S16BE, U16LE, U16BE, S24_32LE, S24_32BE, U24_32LE, U24_32BE, S32LE, S32BE, U32LE, U32BE, S24LE, S24BE, U24LE, U24BE, S20LE, S20BE, U20LE, U20BE, S18LE, S18BE, U18LE, U18BE, F32LE, F32BE, F64LE, F64BE }, rate=(int)[ 1, 2147483647 ], channels=(int)[ 1, 2147483647 ], layout=(string){ interleaved, non-interleaved }</details>
+ </caps>
+ <caps>
+ <name>src</name>
+ <direction>source</direction>
+ <presence>always</presence>
+ <details>audio/x-raw, format=(string){ S8, U8, S16LE, S16BE, U16LE, U16BE, S24_32LE, S24_32BE, U24_32LE, U24_32BE, S32LE, S32BE, U32LE, U32BE, S24LE, S24BE, U24LE, U24BE, S20LE, S20BE, U20LE, U20BE, S18LE, S18BE, U18LE, U18BE, F32LE, F32BE, F64LE, F64BE }, rate=(int)[ 1, 2147483647 ], channels=(int)[ 1, 2147483647 ], layout=(string){ interleaved, non-interleaved }</details>
</caps>
</pads>
</element>
diff --git a/docs/plugins/inspect/plugin-removesilence.xml b/docs/plugins/inspect/plugin-removesilence.xml
index 9023de1..c551b8b 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.8.2</version>
+ <version>1.9.1</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 e8773e8..1e23d9e 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.8.2</version>
+ <version>1.9.1</version>
<license>GPL</license>
<source>gst-plugins-bad</source>
<package>GStreamer</package>
@@ -32,7 +32,7 @@
<name>video</name>
<direction>source</direction>
<presence>sometimes</presence>
- <details>video/x-raw, format=(string){ I420, YV12, YUY2, UYVY, AYUV, RGBx, BGRx, xRGB, xBGR, RGBA, BGRA, ARGB, ABGR, RGB, BGR, Y41B, Y42B, YVYU, Y444, v210, v216, NV12, NV21, NV16, NV61, NV24, GRAY8, GRAY16_BE, GRAY16_LE, v308, RGB16, BGR16, RGB15, BGR15, UYVP, A420, RGB8P, YUV9, YVU9, IYU1, ARGB64, AYUV64, r210, I420_10LE, I420_10BE, I422_10LE, I422_10BE, Y444_10LE, Y444_10BE, GBR, GBR_10LE, GBR_10BE, NV12_64Z32, A420_10LE, A420_10BE, A422_10LE, A422_10BE, A444_10LE, A444_10BE }, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]</details>
+ <details>video/x-raw, format=(string){ I420, YV12, YUY2, UYVY, AYUV, RGBx, BGRx, xRGB, xBGR, RGBA, BGRA, ARGB, ABGR, RGB, BGR, Y41B, Y42B, YVYU, Y444, v210, v216, NV12, NV21, NV16, NV61, NV24, GRAY8, GRAY16_BE, GRAY16_LE, v308, IYU2, RGB16, BGR16, RGB15, BGR15, UYVP, A420, RGB8P, YUV9, YVU9, IYU1, ARGB64, AYUV64, r210, I420_10LE, I420_10BE, I422_10LE, I422_10BE, Y444_10LE, Y444_10BE, GBR, GBR_10LE, GBR_10BE, NV12_64Z32, A420_10LE, A420_10BE, A422_10LE, A422_10BE, A444_10LE, A444_10BE, P010_10LE, P010_10BE }, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]</details>
</caps>
</pads>
</element>
diff --git a/docs/plugins/inspect/plugin-rfbsrc.xml b/docs/plugins/inspect/plugin-rfbsrc.xml
index a37cea4..ebd2f3a 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.8.2</version>
+ <version>1.9.1</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 6bd9a8e..8251261 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.8.2</version>
+ <version>1.9.1</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 8847275..ea8fa22 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.8.2</version>
+ <version>1.9.1</version>
<license>LGPL</license>
<source>gst-plugins-bad</source>
<package>GStreamer Bad Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-rtpbad.xml b/docs/plugins/inspect/plugin-rtpbad.xml
new file mode 100644
index 0000000..b4a1b7f
--- /dev/null
+++ b/docs/plugins/inspect/plugin-rtpbad.xml
@@ -0,0 +1,55 @@
+<plugin>
+ <name>rtpbad</name>
+ <description>Real-time protocol plugins</description>
+ <filename>../../gst/rtp/.libs/libgstrtpbad.so</filename>
+ <basename>libgstrtpbad.so</basename>
+ <version>1.6.0</version>
+ <license>LGPL</license>
+ <source>gst-plugins-bad</source>
+ <package>GStreamer Bad Plug-ins source release</package>
+ <origin>Unknown package origin</origin>
+ <elements>
+ <element>
+ <name>rtph265depay</name>
+ <longname>RTP H265 depayloader</longname>
+ <class>Codec/Depayloader/Network/RTP</class>
+ <description>Extracts H265 video from RTP packets (draft-ietf-payload-rtp-h265-03.txt)</description>
+ <author>Jurgen Slowack <jurgenslowack@gmail.com></author>
+ <pads>
+ <caps>
+ <name>sink</name>
+ <direction>sink</direction>
+ <presence>always</presence>
+ <details>application/x-rtp, media=(string)video, clock-rate=(int)90000, encoding-name=(string)H265</details>
+ </caps>
+ <caps>
+ <name>src</name>
+ <direction>source</direction>
+ <presence>always</presence>
+ <details>video/x-h265, stream-format=(string)byte-stream, alignment=(string){ nal, au }</details>
+ </caps>
+ </pads>
+ </element>
+ <element>
+ <name>rtph265pay</name>
+ <longname>RTP H265 payloader</longname>
+ <class>Codec/Payloader/Network/RTP</class>
+ <description>Payload-encode H265 video into RTP packets (based on draft-ietf-payload-rtp-h265-03.txt)</description>
+ <author>Jurgen Slowack <jurgenslowack@gmail.com></author>
+ <pads>
+ <caps>
+ <name>sink</name>
+ <direction>sink</direction>
+ <presence>always</presence>
+ <details>video/x-h265, stream-format=(string)byte-stream, alignment=(string){ nal, au }</details>
+ </caps>
+ <caps>
+ <name>src</name>
+ <direction>source</direction>
+ <presence>always</presence>
+ <details>application/x-rtp, media=(string)video, payload=(int)[ 96, 127 ], clock-rate=(int)90000, encoding-name=(string)H265</details>
+ </caps>
+ </pads>
+ </element>
+ </elements>
+</plugin>
\ No newline at end of file
diff --git a/docs/plugins/inspect/plugin-rtponvif.xml b/docs/plugins/inspect/plugin-rtponvif.xml
index f81b14d..f608e62 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.8.2</version>
+ <version>1.9.1</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 72749b9..558ac77 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.8.2</version>
+ <version>1.9.1</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 7a1e082..e3c75d4 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.8.2</version>
+ <version>1.9.1</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 03d526e..8edb192 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.8.2</version>
+ <version>1.9.1</version>
<license>LGPL</license>
<source>gst-plugins-bad</source>
<package>GStreamer Bad Plug-ins source release</package>
@@ -30,5 +30,20 @@
</caps>
</pads>
</element>
+ <element>
+ <name>sdpsrc</name>
+ <longname>SDP Source</longname>
+ <class>Source/Network/RTP</class>
+ <description>Stream RTP based on an SDP</description>
+ <author>Sebastian Dröge <sebastian@centricular.com></author>
+ <pads>
+ <caps>
+ <name>stream_%u</name>
+ <direction>source</direction>
+ <presence>sometimes</presence>
+ <details>application/x-rtp</details>
+ </caps>
+ </pads>
+ </element>
</elements>
</plugin>
\ No newline at end of file
diff --git a/docs/plugins/inspect/plugin-segmentclip.xml b/docs/plugins/inspect/plugin-segmentclip.xml
index 40b3994..60add5e 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.8.2</version>
+ <version>1.9.1</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 5434a91..2d2d7d5 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.8.2</version>
+ <version>1.9.1</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 6b7f2bd..a9c015a 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.8.2</version>
+ <version>1.9.1</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 db5337c..39663b2 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.8.2</version>
+ <version>1.9.1</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 fd89cb7..d7e5021 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.8.2</version>
+ <version>1.9.1</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 5b05137..099111a 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.8.2</version>
+ <version>1.9.1</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 2f8d914..acbeb31 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.8.2</version>
+ <version>1.9.1</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 22b1a8d..1437d86 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.8.2</version>
+ <version>1.9.1</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 23fd183..b15d787 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.8.2</version>
+ <version>1.9.1</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 a843bc1..4282046 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.8.2</version>
+ <version>1.9.1</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 bcd6719..82a3bc9 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.8.2</version>
+ <version>1.9.1</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 7d13a3b..61b0181 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.8.2</version>
+ <version>1.9.1</version>
<license>LGPL</license>
<source>gst-plugins-bad</source>
<package>GStreamer</package>
diff --git a/docs/plugins/inspect/plugin-uvch264.xml b/docs/plugins/inspect/plugin-uvch264.xml
index 76afd72..04aeeda 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.8.2</version>
+ <version>1.9.1</version>
<license>LGPL</license>
<source>gst-plugins-bad</source>
<package>GStreamer Bad Plug-ins source release</package>
@@ -65,13 +65,13 @@
<name>vfsrc</name>
<direction>source</direction>
<presence>always</presence>
- <details>video/x-raw, format=(string){ I420, YV12, YUY2, UYVY, AYUV, RGBx, BGRx, xRGB, xBGR, RGBA, BGRA, ARGB, ABGR, RGB, BGR, Y41B, Y42B, YVYU, Y444, v210, v216, NV12, NV21, NV16, NV61, NV24, GRAY8, GRAY16_BE, GRAY16_LE, v308, RGB16, BGR16, RGB15, BGR15, UYVP, A420, RGB8P, YUV9, YVU9, IYU1, ARGB64, AYUV64, r210, I420_10LE, I420_10BE, I422_10LE, I422_10BE, Y444_10LE, Y444_10BE, GBR, GBR_10LE, GBR_10BE, NV12_64Z32, A420_10LE, A420_10BE, A422_10LE, A422_10BE, A444_10LE, A444_10BE }, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]; image/jpeg, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]</details>
+ <details>video/x-raw, format=(string){ I420, YV12, YUY2, UYVY, AYUV, RGBx, BGRx, xRGB, xBGR, RGBA, BGRA, ARGB, ABGR, RGB, BGR, Y41B, Y42B, YVYU, Y444, v210, v216, NV12, NV21, NV16, NV61, NV24, GRAY8, GRAY16_BE, GRAY16_LE, v308, IYU2, RGB16, BGR16, RGB15, BGR15, UYVP, A420, RGB8P, YUV9, YVU9, IYU1, ARGB64, AYUV64, r210, I420_10LE, I420_10BE, I422_10LE, I422_10BE, Y444_10LE, Y444_10BE, GBR, GBR_10LE, GBR_10BE, NV12_64Z32, A420_10LE, A420_10BE, A422_10LE, A422_10BE, A444_10LE, A444_10BE, P010_10LE, P010_10BE }, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]; image/jpeg, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]</details>
</caps>
<caps>
<name>vidsrc</name>
<direction>source</direction>
<presence>always</presence>
- <details>video/x-raw, format=(string){ I420, YV12, YUY2, UYVY, AYUV, RGBx, BGRx, xRGB, xBGR, RGBA, BGRA, ARGB, ABGR, RGB, BGR, Y41B, Y42B, YVYU, Y444, v210, v216, NV12, NV21, NV16, NV61, NV24, GRAY8, GRAY16_BE, GRAY16_LE, v308, RGB16, BGR16, RGB15, BGR15, UYVP, A420, RGB8P, YUV9, YVU9, IYU1, ARGB64, AYUV64, r210, I420_10LE, I420_10BE, I422_10LE, I422_10BE, Y444_10LE, Y444_10BE, GBR, GBR_10LE, GBR_10BE, NV12_64Z32, A420_10LE, A420_10BE, A422_10LE, A422_10BE, A444_10LE, A444_10BE }, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]; image/jpeg, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]; video/x-h264, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ], stream-format=(string){ byte-stream, avc }, alignment=(string)au, profile=(string){ high, main, baseline, constrained-baseline }</details>
+ <details>video/x-raw, format=(string){ I420, YV12, YUY2, UYVY, AYUV, RGBx, BGRx, xRGB, xBGR, RGBA, BGRA, ARGB, ABGR, RGB, BGR, Y41B, Y42B, YVYU, Y444, v210, v216, NV12, NV21, NV16, NV61, NV24, GRAY8, GRAY16_BE, GRAY16_LE, v308, IYU2, RGB16, BGR16, RGB15, BGR15, UYVP, A420, RGB8P, YUV9, YVU9, IYU1, ARGB64, AYUV64, r210, I420_10LE, I420_10BE, I422_10LE, I422_10BE, Y444_10LE, Y444_10BE, GBR, GBR_10LE, GBR_10BE, NV12_64Z32, A420_10LE, A420_10BE, A422_10LE, A422_10BE, A444_10LE, A444_10BE, P010_10LE, P010_10BE }, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]; image/jpeg, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]; video/x-h264, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ], stream-format=(string){ byte-stream, avc }, alignment=(string)au, profile=(string){ high, main, baseline, constrained-baseline }</details>
</caps>
</pads>
</element>
diff --git a/docs/plugins/inspect/plugin-vcdsrc.xml b/docs/plugins/inspect/plugin-vcdsrc.xml
index 83cb8f8..c187ce7 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.8.2</version>
+ <version>1.9.1</version>
<license>LGPL</license>
<source>gst-plugins-bad</source>
<package>GStreamer Bad Plug-ins source release</package>
diff --git a/docs/plugins/inspect/plugin-vdpau.xml b/docs/plugins/inspect/plugin-vdpau.xml
new file mode 100644
index 0000000..964c1a9
--- /dev/null
+++ b/docs/plugins/inspect/plugin-vdpau.xml
@@ -0,0 +1,34 @@
+<plugin>
+ <name>vdpau</name>
+ <description>Various elements utilizing VDPAU</description>
+ <filename>../../sys/vdpau/.libs/libgstvdpau.so</filename>
+ <basename>libgstvdpau.so</basename>
+ <version>1.9.0.1</version>
+ <license>LGPL</license>
+ <source>gst-plugins-bad</source>
+ <package>GStreamer</package>
+ <origin>http://gstreamer.net/</origin>
+ <elements>
+ <element>
+ <name>vdpaumpegdec</name>
+ <longname>VDPAU Mpeg Decoder</longname>
+ <class>Decoder</class>
+ <description>Decode mpeg stream with vdpau</description>
+ <author>Carl-Anton Ingmarsson <ca.ingmarsson@gmail.com></author>
+ <pads>
+ <caps>
+ <name>sink</name>
+ <direction>sink</direction>
+ <presence>always</presence>
+ <details>video/mpeg, mpegversion=(int)[ 1, 2 ], systemstream=(boolean)false</details>
+ </caps>
+ <caps>
+ <name>src</name>
+ <direction>source</direction>
+ <presence>always</presence>
+ <details>video/x-raw(memory:VdpVideoSurface), format=(string){ YV12 }, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]; video/x-raw, format=(string){ YV12 }, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]</details>
+ </caps>
+ </pads>
+ </element>
+ </elements>
+</plugin>
\ No newline at end of file
diff --git a/docs/plugins/inspect/plugin-videofiltersbad.xml b/docs/plugins/inspect/plugin-videofiltersbad.xml
index 1acab93..2904dee 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.8.2</version>
+ <version>1.9.1</version>
<license>LGPL</license>
<source>gst-plugins-bad</source>
<package>GStreamer Bad Plug-ins</package>
@@ -32,22 +32,22 @@
</element>
<element>
<name>videodiff</name>
- <longname>FIXME Long name</longname>
- <class>Generic</class>
- <description>FIXME Description</description>
- <author>FIXME <fixme@example.com></author>
+ <longname>Video Diff</longname>
+ <class>Video/Filter</class>
+ <description>Visualize differences between adjacent video frames</description>
+ <author>David Schleef <ds@schleef.org></author>
<pads>
<caps>
<name>sink</name>
<direction>sink</direction>
<presence>always</presence>
- <details>video/x-raw, format=(string){ I420, Y444, Y42B, UYVY, RGBA }, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]</details>
+ <details>video/x-raw, format=(string){ I420, Y444, Y42B, Y41B }, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]</details>
</caps>
<caps>
<name>src</name>
<direction>source</direction>
<presence>always</presence>
- <details>video/x-raw, format=(string){ I420, Y444, Y42B, UYVY, RGBA }, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]</details>
+ <details>video/x-raw, format=(string){ I420, Y444, Y42B, Y41B }, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], framerate=(fraction)[ 0/1, 2147483647/1 ]</details>
</caps>
</pads>
</element>
diff --git a/docs/plugins/inspect/plugin-videoframe_audiolevel.xml b/docs/plugins/inspect/plugin-videoframe_audiolevel.xml
index b9f9962..8ad67a5 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.8.2</version>
+ <version>1.9.1</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 103b608..1f2e63d 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.8.2</version>
+ <version>1.9.1</version>
<license>LGPL</license>
<source>gst-plugins-bad</source>
<package>GStreamer Bad Plug-ins source release</package>
@@ -94,6 +94,27 @@
</pads>
</element>
<element>
+ <name>jpeg2000parse</name>
+ <longname>JPEG 2000 parser</longname>
+ <class>Codec/Parser/Video/Image</class>
+ <description>Parses JPEG 2000 files</description>
+ <author>Aaron Boxer <boxerab@gmail.com></author>
+ <pads>
+ <caps>
+ <name>sink</name>
+ <direction>sink</direction>
+ <presence>always</presence>
+ <details>image/x-jpc, sampling=(string){ RGB, BGR, RGBA, BGRA, YCbCr-4:4:4, YCbCr-4:2:2, YCbCr-4:2:0, YCbCr-4:1:1, GRAYSCALE, YCbCrA-4:4:4:4 }; image/x-jpc, colorspace=(string){ sRGB, sYUV, GRAY }; image/x-j2c, sampling=(string){ RGB, BGR, RGBA, BGRA, YCbCr-4:4:4, YCbCr-4:2:2, YCbCr-4:2:0, YCbCr-4:1:1, GRAYSCALE, YCbCrA-4:4:4:4 }; image/x-j2c, colorspace=(string){ sRGB, sYUV, GRAY }</details>
+ </caps>
+ <caps>
+ <name>src</name>
+ <direction>source</direction>
+ <presence>always</presence>
+ <details>image/x-jpc, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], sampling=(string){ RGB, BGR, RGBA, BGRA, YCbCr-4:4:4, YCbCr-4:2:2, YCbCr-4:2:0, YCbCr-4:1:1, GRAYSCALE, YCbCrA-4:4:4:4 }, colorspace=(string){ sRGB, sYUV, GRAY }, parsed=(boolean)true; image/x-j2c, width=(int)[ 1, 2147483647 ], height=(int)[ 1, 2147483647 ], sampling=(string){ RGB, BGR, RGBA, BGRA, YCbCr-4:4:4, YCbCr-4:2:2, YCbCr-4:2:0, YCbCr-4:1:1, GRAYSCALE, YCbCrA-4:4:4:4 }, colorspace=(string){ sRGB, sYUV, GRAY }, parsed=(boolean)true</details>
+ </caps>
+ </pads>
+ </element>
+ <element>
<name>mpeg4videoparse</name>
<longname>MPEG 4 video elementary stream parser</longname>
<class>Codec/Parser/Video</class>
diff --git a/docs/plugins/inspect/plugin-videosignal.xml b/docs/plugins/inspect/plugin-videosignal.xml
index d68d771..8181995 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.8.2</version>
+ <version>1.9.1</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 f159eaa..7e4e374 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.8.2</version>
+ <version>1.9.1</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 bba0608..e955be9 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.8.2</version>
+ <version>1.9.1</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 cad0e0e..313f0a7 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.8.2</version>
+ <version>1.9.1</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 fad9726..c87189b 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.8.2</version>
+ <version>1.9.1</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 f7948b0..a6564ac 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.8.2</version>
+ <version>1.9.1</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
new file mode 100644
index 0000000..6136964
--- /dev/null
+++ b/docs/plugins/inspect/plugin-webrtcdsp.xml
@@ -0,0 +1,55 @@
+<plugin>
+ <name>webrtcdsp</name>
+ <description>Voice pre-processing using WebRTC Audio Processing Library</description>
+ <filename>../../ext/webrtcdsp/.libs/libgstwebrtcdsp.so</filename>
+ <basename>libgstwebrtcdsp.so</basename>
+ <version>1.9.0.1</version>
+ <license>LGPL</license>
+ <source>gst-plugins-bad</source>
+ <package>WebRTCDsp</package>
+ <origin>http://git.collabora.com</origin>
+ <elements>
+ <element>
+ <name>webrtcdsp</name>
+ <longname>Voice Processor (AGC, AEC, filters, etc.)</longname>
+ <class>Generic/Audio</class>
+ <description>Pre-processes voice with WebRTC Audio Processing Library</description>
+ <author>Nicolas Dufresne <nicolas.dufresne@collabora.com></author>
+ <pads>
+ <caps>
+ <name>sink</name>
+ <direction>sink</direction>
+ <presence>always</presence>
+ <details>audio/x-raw, format=(string)S16LE, layout=(string)interleaved, rate=(int){ 48000, 32000, 16000, 8000 }, channels=(int)[ 1, 2147483647 ]</details>
+ </caps>
+ <caps>
+ <name>src</name>
+ <direction>source</direction>
+ <presence>always</presence>
+ <details>audio/x-raw, format=(string)S16LE, layout=(string)interleaved, rate=(int){ 48000, 32000, 16000, 8000 }, channels=(int)[ 1, 2147483647 ]</details>
+ </caps>
+ </pads>
+ </element>
+ <element>
+ <name>webrtcechoprobe</name>
+ <longname>Accoustic Echo Canceller probe</longname>
+ <class>Generic/Audio</class>
+ <description>Gathers playback buffers for webrtcdsp</description>
+ <author>Nicolas Dufresne <nicolas.dufrsesne@collabora.com></author>
+ <pads>
+ <caps>
+ <name>sink</name>
+ <direction>sink</direction>
+ <presence>always</presence>
+ <details>audio/x-raw, format=(string)S16LE, layout=(string)interleaved, rate=(int){ 48000, 32000, 16000, 8000 }, channels=(int)[ 1, 2147483647 ]</details>
+ </caps>
+ <caps>
+ <name>src</name>
+ <direction>source</direction>
+ <presence>always</presence>
+ <details>audio/x-raw, format=(string)S16LE, layout=(string)interleaved, rate=(int){ 48000, 32000, 16000, 8000 }, channels=(int)[ 1, 2147483647 ]</details>
+ </caps>
+ </pads>
+ </element>
+ </elements>
+</plugin>
\ No newline at end of file
diff --git a/docs/plugins/inspect/plugin-wildmidi.xml b/docs/plugins/inspect/plugin-wildmidi.xml
index 8f6ecb0..25ef128 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.8.2</version>
+ <version>1.9.1</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 f7b6458..a1a55f4 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.8.2</version>
+ <version>1.9.1</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 2713ea7..71c4296 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.8.2</version>
+ <version>1.9.1</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 31da56a..cb9fb36 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.8.2</version>
+ <version>1.9.1</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 29219fd..2c8b1be 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.8.2</version>
+ <version>1.9.1</version>
<license>LGPL</license>
<source>gst-plugins-bad</source>
<package>GStreamer Bad Plug-ins source release</package>
diff --git a/ext/Makefile.am b/ext/Makefile.am
index f97ef44..d0bf515 100644
--- a/ext/Makefile.am
+++ b/ext/Makefile.am
@@ -412,6 +412,12 @@
VULKAN_DIR=
endif
+if USE_WEBRTCDSP
+WEBRTCDSP_DIR=webrtcdsp
+else
+WEBRTCDSP_DIR=
+endif
+
SUBDIRS=\
$(VOAACENC_DIR) \
$(ASSRENDER_DIR) \
@@ -481,7 +487,8 @@
$(WEBP_DIR) \
$(X265_DIR) \
$(DTLS_DIR) \
- $(VULKAN_DIR)
+ $(VULKAN_DIR) \
+ $(WEBRTCDSP_DIR)
DIST_SUBDIRS = \
assrender \
@@ -549,6 +556,7 @@
webp \
x265 \
dtls \
- vulkan
+ vulkan \
+ webrtcdsp
include $(top_srcdir)/common/parallel-subdirs.mak
diff --git a/ext/Makefile.in b/ext/Makefile.in
index 698e244..94ecc06 100644
--- a/ext/Makefile.in
+++ b/ext/Makefile.in
@@ -281,6 +281,8 @@
DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
DSYMUTIL = @DSYMUTIL@
DTLS_CFLAGS = @DTLS_CFLAGS@
DTLS_LIBS = @DTLS_LIBS@
@@ -496,6 +498,8 @@
LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
LIPO = @LIPO@
LN_S = @LN_S@
LOCALEDIR = @LOCALEDIR@
@@ -622,8 +626,6 @@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
SNDIO_LIBS = @SNDIO_LIBS@
@@ -668,6 +670,8 @@
WAYLAND_LIBS = @WAYLAND_LIBS@
WEBP_CFLAGS = @WEBP_CFLAGS@
WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
WGET = @WGET@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
@@ -900,6 +904,8 @@
@USE_DTLS_TRUE@DTLS_DIR = dtls
@USE_VULKAN_FALSE@VULKAN_DIR =
@USE_VULKAN_TRUE@VULKAN_DIR = vulkan
+@USE_WEBRTCDSP_FALSE@WEBRTCDSP_DIR =
+@USE_WEBRTCDSP_TRUE@WEBRTCDSP_DIR = webrtcdsp
SUBDIRS = \
$(VOAACENC_DIR) \
$(ASSRENDER_DIR) \
@@ -969,7 +975,8 @@
$(WEBP_DIR) \
$(X265_DIR) \
$(DTLS_DIR) \
- $(VULKAN_DIR)
+ $(VULKAN_DIR) \
+ $(WEBRTCDSP_DIR)
DIST_SUBDIRS = \
assrender \
@@ -1037,7 +1044,8 @@
webp \
x265 \
dtls \
- vulkan
+ vulkan \
+ webrtcdsp
all: all-recursive
diff --git a/ext/apexsink/Makefile.in b/ext/apexsink/Makefile.in
index ca42489..22b7474 100644
--- a/ext/apexsink/Makefile.in
+++ b/ext/apexsink/Makefile.in
@@ -305,6 +305,8 @@
DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
DSYMUTIL = @DSYMUTIL@
DTLS_CFLAGS = @DTLS_CFLAGS@
DTLS_LIBS = @DTLS_LIBS@
@@ -520,6 +522,8 @@
LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
LIPO = @LIPO@
LN_S = @LN_S@
LOCALEDIR = @LOCALEDIR@
@@ -646,8 +650,6 @@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
SNDIO_LIBS = @SNDIO_LIBS@
@@ -692,6 +694,8 @@
WAYLAND_LIBS = @WAYLAND_LIBS@
WEBP_CFLAGS = @WEBP_CFLAGS@
WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
WGET = @WGET@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
diff --git a/ext/apexsink/gstapexsink.c b/ext/apexsink/gstapexsink.c
index c008e18..df5c5f2 100644
--- a/ext/apexsink/gstapexsink.c
+++ b/ext/apexsink/gstapexsink.c
@@ -265,8 +265,8 @@
"Apple AirPort Express Audio Sink", "Sink/Audio/Wireless",
"Output stream to an AirPort Express",
"Jérémie Bernard [GRemi] <gremimail@gmail.com>");
- gst_element_class_add_pad_template (element_class,
- gst_static_pad_template_get (&gst_apexsink_sink_factory));
+ gst_element_class_add_static_pad_template (element_class,
+ &gst_apexsink_sink_factory);
}
/* sink class init */
diff --git a/ext/assrender/Makefile.in b/ext/assrender/Makefile.in
index 62c6bff..e7fdf9a 100644
--- a/ext/assrender/Makefile.in
+++ b/ext/assrender/Makefile.in
@@ -302,6 +302,8 @@
DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
DSYMUTIL = @DSYMUTIL@
DTLS_CFLAGS = @DTLS_CFLAGS@
DTLS_LIBS = @DTLS_LIBS@
@@ -517,6 +519,8 @@
LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
LIPO = @LIPO@
LN_S = @LN_S@
LOCALEDIR = @LOCALEDIR@
@@ -643,8 +647,6 @@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
SNDIO_LIBS = @SNDIO_LIBS@
@@ -689,6 +691,8 @@
WAYLAND_LIBS = @WAYLAND_LIBS@
WEBP_CFLAGS = @WEBP_CFLAGS@
WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
WGET = @WGET@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
diff --git a/ext/assrender/gstassrender.c b/ext/assrender/gstassrender.c
index 913beb5..b4e385b 100644
--- a/ext/assrender/gstassrender.c
+++ b/ext/assrender/gstassrender.c
@@ -170,12 +170,11 @@
gstelement_class->change_state =
GST_DEBUG_FUNCPTR (gst_ass_render_change_state);
- gst_element_class_add_pad_template (gstelement_class,
- gst_static_pad_template_get (&src_factory));
- gst_element_class_add_pad_template (gstelement_class,
- gst_static_pad_template_get (&video_sink_factory));
- gst_element_class_add_pad_template (gstelement_class,
- gst_static_pad_template_get (&text_sink_factory));
+ gst_element_class_add_static_pad_template (gstelement_class, &src_factory);
+ gst_element_class_add_static_pad_template (gstelement_class,
+ &video_sink_factory);
+ gst_element_class_add_static_pad_template (gstelement_class,
+ &text_sink_factory);
gst_element_class_set_static_metadata (gstelement_class, "ASS/SSA Render",
"Mixer/Video/Overlay/Subtitle",
diff --git a/ext/bs2b/Makefile.in b/ext/bs2b/Makefile.in
index fbb3abb..8d6bd86 100644
--- a/ext/bs2b/Makefile.in
+++ b/ext/bs2b/Makefile.in
@@ -303,6 +303,8 @@
DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
DSYMUTIL = @DSYMUTIL@
DTLS_CFLAGS = @DTLS_CFLAGS@
DTLS_LIBS = @DTLS_LIBS@
@@ -518,6 +520,8 @@
LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
LIPO = @LIPO@
LN_S = @LN_S@
LOCALEDIR = @LOCALEDIR@
@@ -644,8 +648,6 @@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
SNDIO_LIBS = @SNDIO_LIBS@
@@ -690,6 +692,8 @@
WAYLAND_LIBS = @WAYLAND_LIBS@
WEBP_CFLAGS = @WEBP_CFLAGS@
WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
WGET = @WGET@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
diff --git a/ext/bz2/Makefile.in b/ext/bz2/Makefile.in
index d912d8f..cac55b7 100644
--- a/ext/bz2/Makefile.in
+++ b/ext/bz2/Makefile.in
@@ -303,6 +303,8 @@
DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
DSYMUTIL = @DSYMUTIL@
DTLS_CFLAGS = @DTLS_CFLAGS@
DTLS_LIBS = @DTLS_LIBS@
@@ -518,6 +520,8 @@
LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
LIPO = @LIPO@
LN_S = @LN_S@
LOCALEDIR = @LOCALEDIR@
@@ -644,8 +648,6 @@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
SNDIO_LIBS = @SNDIO_LIBS@
@@ -690,6 +692,8 @@
WAYLAND_LIBS = @WAYLAND_LIBS@
WEBP_CFLAGS = @WEBP_CFLAGS@
WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
WGET = @WGET@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
diff --git a/ext/bz2/gstbz2dec.c b/ext/bz2/gstbz2dec.c
index 5a06b19..ad3eef0 100644
--- a/ext/bz2/gstbz2dec.c
+++ b/ext/bz2/gstbz2dec.c
@@ -296,10 +296,8 @@
1, G_MAXUINT, DEFAULT_BUFFER_SIZE,
G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
- gst_element_class_add_pad_template (gstelement_class,
- gst_static_pad_template_get (&sink_template));
- gst_element_class_add_pad_template (gstelement_class,
- gst_static_pad_template_get (&src_template));
+ gst_element_class_add_static_pad_template (gstelement_class, &sink_template);
+ gst_element_class_add_static_pad_template (gstelement_class, &src_template);
gst_element_class_set_static_metadata (gstelement_class, "BZ2 decoder",
"Codec/Decoder", "Decodes compressed streams",
"Lutz Mueller <lutz@users.sourceforge.net>");
diff --git a/ext/bz2/gstbz2enc.c b/ext/bz2/gstbz2enc.c
index c1c1ee1..05ec767 100644
--- a/ext/bz2/gstbz2enc.c
+++ b/ext/bz2/gstbz2enc.c
@@ -320,10 +320,8 @@
1, G_MAXUINT, DEFAULT_BUFFER_SIZE,
G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
- gst_element_class_add_pad_template (gstelement_class,
- gst_static_pad_template_get (&sink_template));
- gst_element_class_add_pad_template (gstelement_class,
- gst_static_pad_template_get (&src_template));
+ gst_element_class_add_static_pad_template (gstelement_class, &sink_template);
+ gst_element_class_add_static_pad_template (gstelement_class, &src_template);
gst_element_class_set_static_metadata (gstelement_class, "BZ2 encoder",
"Codec/Encoder", "Compresses streams",
"Lutz Mueller <lutz@users.sourceforge.net>");
diff --git a/ext/chromaprint/Makefile.in b/ext/chromaprint/Makefile.in
index e562df9..f66e98a 100644
--- a/ext/chromaprint/Makefile.in
+++ b/ext/chromaprint/Makefile.in
@@ -304,6 +304,8 @@
DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
DSYMUTIL = @DSYMUTIL@
DTLS_CFLAGS = @DTLS_CFLAGS@
DTLS_LIBS = @DTLS_LIBS@
@@ -519,6 +521,8 @@
LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
LIPO = @LIPO@
LN_S = @LN_S@
LOCALEDIR = @LOCALEDIR@
@@ -645,8 +649,6 @@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
SNDIO_LIBS = @SNDIO_LIBS@
@@ -691,6 +693,8 @@
WAYLAND_LIBS = @WAYLAND_LIBS@
WEBP_CFLAGS = @WEBP_CFLAGS@
WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
WGET = @WGET@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
diff --git a/ext/chromaprint/gstchromaprint.c b/ext/chromaprint/gstchromaprint.c
index b7217a6..95600d6 100644
--- a/ext/chromaprint/gstchromaprint.c
+++ b/ext/chromaprint/gstchromaprint.c
@@ -87,7 +87,6 @@
gobject_class->set_property = gst_chromaprint_set_property;
gobject_class->get_property = gst_chromaprint_get_property;
- /* FIXME: do we need this in addition to the tag message ? */
g_object_class_install_property (gobject_class, PROP_FINGERPRINT,
g_param_spec_string ("fingerprint", "Resulting fingerprint",
"Resulting fingerprint", NULL, G_PARAM_READABLE));
@@ -147,6 +146,8 @@
chromaprint_get_fingerprint (chromaprint->context, &chromaprint->fingerprint);
chromaprint->record = FALSE;
+ g_object_notify ((GObject *) chromaprint, "fingerprint");
+
tags = gst_tag_list_new (GST_TAG_CHROMAPRINT_FINGERPRINT,
chromaprint->fingerprint, NULL);
diff --git a/ext/curl/Makefile.in b/ext/curl/Makefile.in
index 31d09a9..6bc7a49 100644
--- a/ext/curl/Makefile.in
+++ b/ext/curl/Makefile.in
@@ -316,6 +316,8 @@
DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
DSYMUTIL = @DSYMUTIL@
DTLS_CFLAGS = @DTLS_CFLAGS@
DTLS_LIBS = @DTLS_LIBS@
@@ -531,6 +533,8 @@
LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
LIPO = @LIPO@
LN_S = @LN_S@
LOCALEDIR = @LOCALEDIR@
@@ -657,8 +661,6 @@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
SNDIO_LIBS = @SNDIO_LIBS@
@@ -703,6 +705,8 @@
WAYLAND_LIBS = @WAYLAND_LIBS@
WEBP_CFLAGS = @WEBP_CFLAGS@
WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
WGET = @WGET@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
diff --git a/ext/curl/gstcurlbasesink.c b/ext/curl/gstcurlbasesink.c
index 013839d..5728ab2 100644
--- a/ext/curl/gstcurlbasesink.c
+++ b/ext/curl/gstcurlbasesink.c
@@ -235,8 +235,7 @@
DSCP_MIN, DSCP_MAX, DEFAULT_QOS_DSCP,
G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
- gst_element_class_add_pad_template (element_class,
- gst_static_pad_template_get (&sinktemplate));
+ gst_element_class_add_static_pad_template (element_class, &sinktemplate);
}
static void
diff --git a/ext/curl/gstcurlsmtpsink.c b/ext/curl/gstcurlsmtpsink.c
index 40ab016..07a1474 100644
--- a/ext/curl/gstcurlsmtpsink.c
+++ b/ext/curl/gstcurlsmtpsink.c
@@ -202,21 +202,16 @@
GST_OBJECT_LOCK (sink);
sink->eos = TRUE;
- GST_OBJECT_UNLOCK (sink);
-
- if (sink->base64_chunk != NULL && !sink->final_boundary_added) {
+ if (bcsink->flow_ret == GST_FLOW_OK && sink->base64_chunk != NULL
+ && !sink->final_boundary_added) {
add_final_boundary_unlocked (sink);
-
gst_curl_base_sink_transfer_thread_notify_unlocked (bcsink);
-
- GST_OBJECT_LOCK (sink);
- if (sink->base64_chunk != NULL && bcsink->flow_ret == GST_FLOW_OK) {
- gst_curl_smtp_sink_wait_for_transfer_end_unlocked (sink);
- }
- GST_OBJECT_UNLOCK (sink);
+ GST_FIXME_OBJECT (sink, "if gstpoll errors in transfer thread, then "
+ "this wait will never timeout because the transfer thread does "
+ "not signal it upon errors");
+ gst_curl_smtp_sink_wait_for_transfer_end_unlocked (sink);
}
- gst_curl_base_sink_transfer_thread_close (bcsink);
-
+ GST_OBJECT_UNLOCK (sink);
break;
default:
diff --git a/ext/daala/Makefile.in b/ext/daala/Makefile.in
index 34aadd0..38b201f 100644
--- a/ext/daala/Makefile.in
+++ b/ext/daala/Makefile.in
@@ -304,6 +304,8 @@
DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
DSYMUTIL = @DSYMUTIL@
DTLS_CFLAGS = @DTLS_CFLAGS@
DTLS_LIBS = @DTLS_LIBS@
@@ -519,6 +521,8 @@
LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
LIPO = @LIPO@
LN_S = @LN_S@
LOCALEDIR = @LOCALEDIR@
@@ -645,8 +649,6 @@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
SNDIO_LIBS = @SNDIO_LIBS@
@@ -691,6 +693,8 @@
WAYLAND_LIBS = @WAYLAND_LIBS@
WEBP_CFLAGS = @WEBP_CFLAGS@
WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
WGET = @WGET@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
diff --git a/ext/daala/gstdaaladec.c b/ext/daala/gstdaaladec.c
index d40537d..f401ff3 100644
--- a/ext/daala/gstdaaladec.c
+++ b/ext/daala/gstdaaladec.c
@@ -103,13 +103,12 @@
GstElementClass *element_class = GST_ELEMENT_CLASS (klass);
GstVideoDecoderClass *video_decoder_class = GST_VIDEO_DECODER_CLASS (klass);
- gst_element_class_add_pad_template (element_class,
- gst_static_pad_template_get (&daala_dec_src_factory));
- gst_element_class_add_pad_template (element_class,
- gst_static_pad_template_get (&daala_dec_sink_factory));
- gst_element_class_set_static_metadata (element_class,
- "Daala video decoder", "Codec/Decoder/Video",
- "Decode raw Daala streams to raw YUV video",
+ gst_element_class_add_static_pad_template (element_class,
+ &daala_dec_src_factory);
+ gst_element_class_add_static_pad_template (element_class,
+ &daala_dec_sink_factory);
+ gst_element_class_set_static_metadata (element_class, "Daala video decoder",
+ "Codec/Decoder/Video", "Decode raw Daala streams to raw YUV video",
"Sebastian Dröge <slomo@circular-chaos.org>");
video_decoder_class->start = GST_DEBUG_FUNCPTR (daala_dec_start);
diff --git a/ext/daala/gstdaalaenc.c b/ext/daala/gstdaalaenc.c
index 705c7e6..7209ddf 100644
--- a/ext/daala/gstdaalaenc.c
+++ b/ext/daala/gstdaalaenc.c
@@ -212,13 +212,12 @@
1, G_MAXINT, DEFAULT_KEYFRAME_RATE,
(GParamFlags) G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
- gst_element_class_add_pad_template (element_class,
- gst_static_pad_template_get (&daala_enc_src_factory));
- gst_element_class_add_pad_template (element_class,
- gst_static_pad_template_get (&daala_enc_sink_factory));
- gst_element_class_set_static_metadata (element_class,
- "Daala video encoder", "Codec/Encoder/Video",
- "Encode raw YUV video to a Daala stream",
+ gst_element_class_add_static_pad_template (element_class,
+ &daala_enc_src_factory);
+ gst_element_class_add_static_pad_template (element_class,
+ &daala_enc_sink_factory);
+ gst_element_class_set_static_metadata (element_class, "Daala video encoder",
+ "Codec/Encoder/Video", "Encode raw YUV video to a Daala stream",
"Sebastian Dröge <slomo@circular-chaos.org>");
gstvideo_encoder_class->start = GST_DEBUG_FUNCPTR (daala_enc_start);
diff --git a/ext/dash/Makefile.in b/ext/dash/Makefile.in
index 3fbad07..5d75597 100644
--- a/ext/dash/Makefile.in
+++ b/ext/dash/Makefile.in
@@ -307,6 +307,8 @@
DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
DSYMUTIL = @DSYMUTIL@
DTLS_CFLAGS = @DTLS_CFLAGS@
DTLS_LIBS = @DTLS_LIBS@
@@ -522,6 +524,8 @@
LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
LIPO = @LIPO@
LN_S = @LN_S@
LOCALEDIR = @LOCALEDIR@
@@ -648,8 +652,6 @@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
SNDIO_LIBS = @SNDIO_LIBS@
@@ -694,6 +696,8 @@
WAYLAND_LIBS = @WAYLAND_LIBS@
WEBP_CFLAGS = @WEBP_CFLAGS@
WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
WGET = @WGET@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
diff --git a/ext/dash/gstdashdemux.c b/ext/dash/gstdashdemux.c
index 4c1f999..c67c635 100644
--- a/ext/dash/gstdashdemux.c
+++ b/ext/dash/gstdashdemux.c
@@ -253,6 +253,9 @@
static void gst_dash_demux_advance_period (GstAdaptiveDemux * demux);
static gboolean gst_dash_demux_has_next_period (GstAdaptiveDemux * demux);
static GstFlowReturn gst_dash_demux_data_received (GstAdaptiveDemux * demux,
+ GstAdaptiveDemuxStream * stream, GstBuffer * buffer);
+static gboolean
+gst_dash_demux_stream_fragment_start (GstAdaptiveDemux * demux,
GstAdaptiveDemuxStream * stream);
static GstFlowReturn
gst_dash_demux_stream_fragment_finished (GstAdaptiveDemux * demux,
@@ -266,7 +269,8 @@
GstActiveStream * stream);
static GstPad *gst_dash_demux_create_pad (GstDashDemux * demux,
GstActiveStream * stream);
-static GstDashDemuxClockDrift *gst_dash_demux_clock_drift_new (void);
+static GstDashDemuxClockDrift *gst_dash_demux_clock_drift_new (GstDashDemux *
+ demux);
static void gst_dash_demux_clock_drift_free (GstDashDemuxClockDrift *);
static gboolean gst_dash_demux_poll_clock_drift (GstDashDemux * demux);
static GTimeSpan gst_dash_demux_get_clock_compensation (GstDashDemux * demux);
@@ -403,15 +407,14 @@
DEFAULT_PRESENTATION_DELAY,
G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
- gst_element_class_add_pad_template (gstelement_class,
- gst_static_pad_template_get (&gst_dash_demux_audiosrc_template));
- gst_element_class_add_pad_template (gstelement_class,
- gst_static_pad_template_get (&gst_dash_demux_videosrc_template));
- gst_element_class_add_pad_template (gstelement_class,
- gst_static_pad_template_get (&gst_dash_demux_subtitlesrc_template));
+ gst_element_class_add_static_pad_template (gstelement_class,
+ &gst_dash_demux_audiosrc_template);
+ gst_element_class_add_static_pad_template (gstelement_class,
+ &gst_dash_demux_videosrc_template);
+ gst_element_class_add_static_pad_template (gstelement_class,
+ &gst_dash_demux_subtitlesrc_template);
- gst_element_class_add_pad_template (gstelement_class,
- gst_static_pad_template_get (&sinktemplate));
+ gst_element_class_add_static_pad_template (gstelement_class, &sinktemplate);
gst_element_class_set_static_metadata (gstelement_class,
"DASH Demuxer",
@@ -454,6 +457,7 @@
gstadaptivedemux_class->get_period_start_time =
gst_dash_demux_get_period_start_time;
+ gstadaptivedemux_class->start_fragment = gst_dash_demux_stream_fragment_start;
gstadaptivedemux_class->finish_fragment =
gst_dash_demux_stream_fragment_finished;
gstadaptivedemux_class->data_received = gst_dash_demux_data_received;
@@ -631,6 +635,8 @@
}
gst_isoff_sidx_parser_init (&stream->sidx_parser);
+ if (gst_mpd_client_has_isoff_ondemand_profile (demux->client))
+ stream->sidx_adapter = gst_adapter_new ();
}
return TRUE;
@@ -712,7 +718,7 @@
SUPPORTED_CLOCK_FORMATS, NULL);
if (urls) {
GST_DEBUG_OBJECT (dashdemux, "Found a supported UTCTiming element");
- dashdemux->clock_drift = gst_dash_demux_clock_drift_new ();
+ dashdemux->clock_drift = gst_dash_demux_clock_drift_new (dashdemux);
gst_dash_demux_poll_clock_drift (dashdemux);
}
}
@@ -1090,9 +1096,7 @@
gint idx = sidx->entries_count;
/* check whether ts is already past the last element or not */
- if (sidx->entries[idx - 1].pts + sidx->entries[idx - 1].duration < ts) {
- dashstream->sidx_current_remaining = 0;
- } else {
+ if (sidx->entries[idx - 1].pts + sidx->entries[idx - 1].duration >= ts) {
GstSearchMode mode = GST_SEARCH_MODE_BEFORE;
if ((flags & GST_SEEK_FLAG_SNAP_NEAREST) == GST_SEEK_FLAG_SNAP_NEAREST) {
@@ -1120,8 +1124,6 @@
ABS (sidx->entries[idx].pts - ts))
idx += 1;
}
-
- dashstream->sidx_current_remaining = sidx->entries[idx].size;
}
sidx->entry_index = idx;
@@ -1202,9 +1204,6 @@
"Finished fragment: %d", sidx->entry_index, sidx->entries_count,
fragment_finished);
- if (!fragment_finished) {
- dashstream->sidx_current_remaining = sidx->entries[sidx->entry_index].size;
- }
return !fragment_finished;
}
@@ -1223,6 +1222,16 @@
dashstream->active_stream, stream->demux->segment.rate > 0.0);
}
+static void
+gst_dash_demux_clear_pending_stream_data (GstDashDemux * dashdemux,
+ GstDashDemuxStream * dashstream)
+{
+ gst_isoff_sidx_parser_clear (&dashstream->sidx_parser);
+ gst_isoff_sidx_parser_init (&dashstream->sidx_parser);
+ if (dashstream->sidx_adapter)
+ gst_adapter_clear (dashstream->sidx_adapter);
+}
+
static GstFlowReturn
gst_dash_demux_stream_advance_fragment (GstAdaptiveDemuxStream * stream)
{
@@ -1236,6 +1245,8 @@
return GST_FLOW_OK;
}
+ gst_dash_demux_clear_pending_stream_data (dashdemux, dashstream);
+
return gst_mpd_client_advance_segment (dashdemux->client,
dashstream->active_stream, stream->demux->segment.rate > 0.0);
}
@@ -1291,16 +1302,13 @@
}
}
- if (gst_mpd_client_has_isoff_ondemand_profile (demux->client)) {
+ if (ret) {
+ gst_dash_demux_clear_pending_stream_data (demux, dashstream);
- /* store our current position to change to the same one in a different
- * representation if needed */
- dashstream->sidx_index = SIDX (dashstream)->entry_index;
- if (ret) {
- /* TODO cache indexes to avoid re-downloading and parsing */
- /* if we switched, we need a new index */
- gst_isoff_sidx_parser_clear (&dashstream->sidx_parser);
- gst_isoff_sidx_parser_init (&dashstream->sidx_parser);
+ if (gst_mpd_client_has_isoff_ondemand_profile (demux->client)) {
+ /* store our current position to change to the same one in a different
+ * representation if needed */
+ dashstream->sidx_index = SIDX (dashstream)->entry_index;
}
}
@@ -1386,8 +1394,7 @@
GstDashDemuxStream *dashstream = iter->data;
if (flags & GST_SEEK_FLAG_FLUSH) {
- gst_isoff_sidx_parser_clear (&dashstream->sidx_parser);
- gst_isoff_sidx_parser_init (&dashstream->sidx_parser);
+ gst_dash_demux_clear_pending_stream_data (dashdemux, dashstream);
}
gst_dash_demux_stream_seek (iter->data, rate >= 0, 0, target_pos, NULL);
}
@@ -1541,8 +1548,12 @@
gint64 diff;
GstDateTime *cur_time;
- cur_time = gst_date_time_new_now_utc ();
- diff = gst_mpd_client_calculate_time_difference (cur_time,
+ cur_time =
+ gst_date_time_new_from_g_date_time
+ (gst_adaptive_demux_get_client_now_utc (GST_ADAPTIVE_DEMUX_CAST
+ (dashdemux)));
+ diff =
+ gst_mpd_client_calculate_time_difference (cur_time,
segmentAvailability);
gst_date_time_unref (segmentAvailability);
gst_date_time_unref (cur_time);
@@ -1603,6 +1614,18 @@
return newbuf;
}
+static gboolean
+gst_dash_demux_stream_fragment_start (GstAdaptiveDemux * demux,
+ GstAdaptiveDemuxStream * stream)
+{
+ GstDashDemuxStream *dashstream = (GstDashDemuxStream *) stream;
+
+ dashstream->sidx_index_header_or_data = 0;
+ dashstream->sidx_current_offset = -1;
+
+ return TRUE;
+}
+
static GstFlowReturn
gst_dash_demux_stream_fragment_finished (GstAdaptiveDemux * demux,
GstAdaptiveDemuxStream * stream)
@@ -1627,24 +1650,47 @@
static GstFlowReturn
gst_dash_demux_data_received (GstAdaptiveDemux * demux,
- GstAdaptiveDemuxStream * stream)
+ GstAdaptiveDemuxStream * stream, GstBuffer * buffer)
{
GstDashDemuxStream *dash_stream = (GstDashDemuxStream *) stream;
GstDashDemux *dashdemux = GST_DASH_DEMUX_CAST (demux);
GstFlowReturn ret = GST_FLOW_OK;
- GstBuffer *buffer;
- gsize available;
+ guint index_header_or_data;
if (!gst_mpd_client_has_isoff_ondemand_profile (dashdemux->client))
- return GST_ADAPTIVE_DEMUX_CLASS (parent_class)->data_received (demux,
- stream);
+ return gst_adaptive_demux_stream_push_buffer (stream, buffer);
+
+ if (stream->downloading_index)
+ index_header_or_data = 1;
+ else if (stream->downloading_header)
+ index_header_or_data = 2;
+ else
+ index_header_or_data = 3;
+
+ if (dash_stream->sidx_index_header_or_data != index_header_or_data) {
+ /* Clear pending data */
+ if (gst_adapter_available (dash_stream->sidx_adapter) != 0)
+ GST_ERROR_OBJECT (stream->pad,
+ "Had pending SIDX data after switch between index/header/data");
+ gst_adapter_clear (dash_stream->sidx_adapter);
+ dash_stream->sidx_index_header_or_data = index_header_or_data;
+ dash_stream->sidx_current_offset = -1;
+ }
+
+ if (dash_stream->sidx_current_offset == -1)
+ dash_stream->sidx_current_offset =
+ GST_BUFFER_OFFSET_IS_VALID (buffer) ? GST_BUFFER_OFFSET (buffer) : 0;
+
+ gst_adapter_push (dash_stream->sidx_adapter, buffer);
+ buffer = NULL;
if (stream->downloading_index) {
GstIsoffParserResult res;
guint consumed;
+ gsize available;
- available = gst_adapter_available (stream->adapter);
- buffer = gst_adapter_take_buffer (stream->adapter, available);
+ available = gst_adapter_available (dash_stream->sidx_adapter);
+ buffer = gst_adapter_take_buffer (dash_stream->sidx_adapter, available);
if (dash_stream->sidx_parser.status != GST_ISOFF_SIDX_PARSER_FINISHED) {
res =
@@ -1666,34 +1712,44 @@
} else {
SIDX (dash_stream)->entry_index = dash_stream->sidx_index;
}
- dash_stream->sidx_current_remaining =
- SIDX_CURRENT_ENTRY (dash_stream)->size;
} else if (consumed < available) {
GstBuffer *pending;
/* we still need to keep some data around for the next parsing round
* so just push what was already processed by the parser */
pending = _gst_buffer_split (buffer, consumed, -1);
- gst_adapter_push (stream->adapter, pending);
+ gst_adapter_push (dash_stream->sidx_adapter, pending);
}
}
}
+ GST_BUFFER_OFFSET (buffer) = dash_stream->sidx_current_offset;
+ GST_BUFFER_OFFSET_END (buffer) =
+ GST_BUFFER_OFFSET (buffer) + gst_buffer_get_size (buffer);
+ dash_stream->sidx_current_offset = GST_BUFFER_OFFSET_END (buffer);
ret = gst_adaptive_demux_stream_push_buffer (stream, buffer);
} else if (dash_stream->sidx_parser.status == GST_ISOFF_SIDX_PARSER_FINISHED) {
+ gsize available;
while (ret == GST_FLOW_OK
- && ((available = gst_adapter_available (stream->adapter)) > 0)) {
+ && ((available =
+ gst_adapter_available (dash_stream->sidx_adapter)) > 0)) {
gboolean advance = FALSE;
+ guint64 sidx_end_offset =
+ dash_stream->sidx_base_offset +
+ SIDX_CURRENT_ENTRY (dash_stream)->offset +
+ SIDX_CURRENT_ENTRY (dash_stream)->size;
- if (available < dash_stream->sidx_current_remaining) {
- buffer = gst_adapter_take_buffer (stream->adapter, available);
- dash_stream->sidx_current_remaining -= available;
+ if (dash_stream->sidx_current_offset + available < sidx_end_offset) {
+ buffer = gst_adapter_take_buffer (dash_stream->sidx_adapter, available);
} else {
buffer =
- gst_adapter_take_buffer (stream->adapter,
- dash_stream->sidx_current_remaining);
- dash_stream->sidx_current_remaining = 0;
+ gst_adapter_take_buffer (dash_stream->sidx_adapter,
+ sidx_end_offset - dash_stream->sidx_current_offset);
advance = TRUE;
}
+ GST_BUFFER_OFFSET (buffer) = dash_stream->sidx_current_offset;
+ GST_BUFFER_OFFSET_END (buffer) =
+ GST_BUFFER_OFFSET (buffer) + gst_buffer_get_size (buffer);
+ dash_stream->sidx_current_offset = GST_BUFFER_OFFSET_END (buffer);
ret = gst_adaptive_demux_stream_push_buffer (stream, buffer);
if (advance) {
GstFlowReturn new_ret;
@@ -1708,10 +1764,15 @@
}
} else {
/* this should be the main header, just push it all */
- ret =
- gst_adaptive_demux_stream_push_buffer (stream,
- gst_adapter_take_buffer (stream->adapter,
- gst_adapter_available (stream->adapter)));
+ buffer = gst_adapter_take_buffer (dash_stream->sidx_adapter,
+ gst_adapter_available (dash_stream->sidx_adapter));
+
+ GST_BUFFER_OFFSET (buffer) = dash_stream->sidx_current_offset;
+ GST_BUFFER_OFFSET_END (buffer) =
+ GST_BUFFER_OFFSET (buffer) + gst_buffer_get_size (buffer);
+ dash_stream->sidx_current_offset = GST_BUFFER_OFFSET_END (buffer);
+
+ ret = gst_adaptive_demux_stream_push_buffer (stream, buffer);
}
return ret;
@@ -1723,16 +1784,20 @@
GstDashDemuxStream *dash_stream = (GstDashDemuxStream *) stream;
gst_isoff_sidx_parser_clear (&dash_stream->sidx_parser);
+ if (dash_stream->sidx_adapter)
+ g_object_unref (dash_stream->sidx_adapter);
}
static GstDashDemuxClockDrift *
-gst_dash_demux_clock_drift_new (void)
+gst_dash_demux_clock_drift_new (GstDashDemux * demux)
{
GstDashDemuxClockDrift *clock_drift;
clock_drift = g_slice_new0 (GstDashDemuxClockDrift);
g_mutex_init (&clock_drift->clock_lock);
- clock_drift->next_update = g_get_monotonic_time ();
+ clock_drift->next_update =
+ GST_TIME_AS_USECONDS (gst_adaptive_demux_get_monotonic_time
+ (GST_ADAPTIVE_DEMUX_CAST (demux)));
return clock_drift;
}
@@ -2021,7 +2086,9 @@
g_return_val_if_fail (demux != NULL, FALSE);
g_return_val_if_fail (demux->clock_drift != NULL, FALSE);
clock_drift = demux->clock_drift;
- now = g_get_monotonic_time ();
+ now =
+ GST_TIME_AS_USECONDS (gst_adaptive_demux_get_monotonic_time
+ (GST_ADAPTIVE_DEMUX_CAST (demux)));
if (now < clock_drift->next_update) {
/*TODO: If a fragment fails to download in adaptivedemux, it waits
for a manifest reload before another attempt to fetch a fragment.
@@ -2051,7 +2118,8 @@
goto quit;
}
}
- start = g_date_time_new_now_utc ();
+ start =
+ gst_adaptive_demux_get_client_now_utc (GST_ADAPTIVE_DEMUX_CAST (demux));
if (!value) {
GstFragment *download;
gint64 range_start = 0, range_end = -1;
@@ -2079,7 +2147,7 @@
urls[clock_drift->selected_url]);
goto quit;
}
- end = g_date_time_new_now_utc ();
+ end = gst_adaptive_demux_get_client_now_utc (GST_ADAPTIVE_DEMUX_CAST (demux));
if (!value && method == GST_MPD_UTCTIMING_TYPE_HTTP_NTP) {
value = gst_dash_demux_parse_http_ntp (clock_drift, buffer);
} else if (!value) {
@@ -2156,8 +2224,13 @@
static GDateTime *
gst_dash_demux_get_server_now_utc (GstDashDemux * demux)
{
- GDateTime *client_now = g_date_time_new_now_utc ();
- GDateTime *server_now = g_date_time_add (client_now,
+ GDateTime *client_now;
+ GDateTime *server_now;
+
+ client_now =
+ gst_adaptive_demux_get_client_now_utc (GST_ADAPTIVE_DEMUX_CAST (demux));
+ server_now =
+ g_date_time_add (client_now,
gst_dash_demux_get_clock_compensation (demux));
g_date_time_unref (client_now);
return server_now;
diff --git a/ext/dash/gstdashdemux.h b/ext/dash/gstdashdemux.h
index 5ed9620..5f0094b 100644
--- a/ext/dash/gstdashdemux.h
+++ b/ext/dash/gstdashdemux.h
@@ -67,11 +67,15 @@
GstMediaFragmentInfo current_fragment;
/* index parsing */
+ GstAdapter *sidx_adapter;
GstSidxParser sidx_parser;
- gsize sidx_current_remaining;
gint sidx_index;
gint64 sidx_base_offset;
GstClockTime pending_seek_ts;
+ /* sidx offset tracking */
+ guint64 sidx_current_offset;
+ /* index = 1, header = 2, data = 3 */
+ guint sidx_index_header_or_data;
};
/**
diff --git a/ext/dash/gstmpdparser.c b/ext/dash/gstmpdparser.c
index 778ab2e..dd83165 100644
--- a/ext/dash/gstmpdparser.c
+++ b/ext/dash/gstmpdparser.c
@@ -38,6 +38,8 @@
gboolean (*validator) (const char *));
static gboolean gst_mpdparser_get_xml_prop_string (xmlNode * a_node,
const gchar * property_name, gchar ** property_value);
+static gboolean gst_mpdparser_get_xml_prop_string_stripped (xmlNode * a_node,
+ const gchar * property_name, gchar ** property_value);
static gboolean gst_mpdparser_get_xml_ns_prop_string (xmlNode * a_node,
const gchar * ns_name, const gchar * property_name,
gchar ** property_value);
@@ -311,6 +313,18 @@
}
static gboolean
+gst_mpdparser_get_xml_prop_string_stripped (xmlNode * a_node,
+ const gchar * property_name, gchar ** property_value)
+{
+ gboolean ret;
+ ret =
+ gst_mpdparser_get_xml_prop_string (a_node, property_name, property_value);
+ if (ret)
+ *property_value = g_strstrip (*property_value);
+ return ret;
+}
+
+static gboolean
gst_mpdparser_validate_no_whitespace (const char *s)
{
return !strpbrk (s, "\r\n\t ");
@@ -1291,7 +1305,7 @@
*list = g_list_append (*list, new_descriptor);
GST_LOG ("attributes of %s node:", a_node->name);
- gst_mpdparser_get_xml_prop_string (a_node, "schemeIdUri",
+ gst_mpdparser_get_xml_prop_string_stripped (a_node, "schemeIdUri",
&new_descriptor->schemeIdUri);
if (!gst_mpdparser_get_xml_prop_string (a_node, "value",
&new_descriptor->value)) {
@@ -4054,18 +4068,47 @@
}
}
- /* check duration of last segment */
- last_media_segment = (stream->segments && stream->segments->len) ?
- g_ptr_array_index (stream->segments, stream->segments->len - 1) : NULL;
+ /* clip duration of segments to stop at period end */
+ if (stream->segments && stream->segments->len) {
+ if (GST_CLOCK_TIME_IS_VALID (PeriodEnd)) {
+ for (guint n = 0; n < stream->segments->len; ++n) {
+ GstMediaSegment *media_segment =
+ g_ptr_array_index (stream->segments, n);
+ if (media_segment) {
+ if (media_segment->start + media_segment->duration >
+ PeriodEnd - PeriodStart) {
+ GstClockTime stop = PeriodEnd - PeriodStart;
+ if (n < stream->segments->len - 1) {
+ GstMediaSegment *next_segment =
+ g_ptr_array_index (stream->segments, n + 1);
+ if (next_segment && next_segment->start < PeriodEnd - PeriodStart)
+ stop = next_segment->start;
+ }
+ media_segment->duration =
+ media_segment->start > stop ? 0 : stop - media_segment->start;
+ GST_LOG ("Fixed duration of segment %u: %" GST_TIME_FORMAT, n,
+ GST_TIME_ARGS (media_segment->duration));
- if (last_media_segment && GST_CLOCK_TIME_IS_VALID (PeriodEnd)) {
- if (last_media_segment->start + last_media_segment->duration > PeriodEnd) {
- last_media_segment->duration =
- PeriodEnd - PeriodStart - last_media_segment->start;
- GST_LOG ("Fixed duration of last segment: %" GST_TIME_FORMAT,
- GST_TIME_ARGS (last_media_segment->duration));
+ /* If the segment was clipped entirely, we discard it and all
+ * subsequent ones */
+ if (media_segment->duration == 0) {
+ GST_WARNING ("Discarding %u segments outside period",
+ stream->segments->len - n);
+ /* _set_size should properly unref elements */
+ g_ptr_array_set_size (stream->segments, n);
+ break;
+ }
+ }
+ }
+ }
}
- GST_LOG ("Built a list of %d segments", last_media_segment->number);
+ if (stream->segments->len > 0) {
+ last_media_segment =
+ g_ptr_array_index (stream->segments, stream->segments->len - 1);
+ GST_LOG ("Built a list of %d segments", last_media_segment->number);
+ } else {
+ GST_LOG ("All media segments were clipped");
+ }
}
g_free (stream->baseURL);
diff --git a/ext/dc1394/Makefile.am b/ext/dc1394/Makefile.am
index eb1a4f7..985f63d 100644
--- a/ext/dc1394/Makefile.am
+++ b/ext/dc1394/Makefile.am
@@ -1,16 +1,22 @@
+plugin_LTLIBRARIES = \
+ libgstdc1394.la
-plugin_LTLIBRARIES = libgstdc1394.la
+libgstdc1394_la_SOURCES = \
+ gstdc1394src.c
+libgstdc1394_la_CFLAGS = \
+ $(LIBDC1394_CFLAGS) \
+ $(GST_PLUGINS_BASE_CFLAGS) \
+ $(GST_BASE_CFLAGS) \
+ $(GST_CFLAGS)
+libgstdc1394_la_LIBADD = \
+ $(LIBDC1394_LIBS) \
+ $(GST_PLUGINS_BASE_LIBS) -lgstvideo-$(GST_API_VERSION) \
+ $(GST_BASE_LIBS) \
+ $(GST_LIBS)
+libgstdc1394_la_LDFLAGS = \
+ $(GST_PLUGIN_LDFLAGS)
+libgstdc1394_la_LIBTOOLFLAGS = \
+ $(GST_PLUGIN_LIBTOOLFLAGS)
-libgstdc1394_la_SOURCES = gstdc1394.c
-
-
-libgstdc1394_la_CFLAGS = $(GST_CFLAGS) \
- $(LIBDC1394_CFLAGS)
-
-libgstdc1394_la_LDFLAGS = $(GST_PLUGIN_LDFLAGS)
-libgstdc1394_la_LIBTOOLFLAGS = $(GST_PLUGIN_LIBTOOLFLAGS)
-
-libgstdc1394_la_LIBADD = $(GST_BASE_LIBS) \
- $(LIBDC1394_LIBS)
-
-noinst_HEADERS = gstdc1394.h
+noinst_HEADERS = \
+ gstdc1394src.h
diff --git a/ext/dc1394/Makefile.in b/ext/dc1394/Makefile.in
index 7f1c184..24096f9 100644
--- a/ext/dc1394/Makefile.in
+++ b/ext/dc1394/Makefile.in
@@ -164,8 +164,9 @@
LTLIBRARIES = $(plugin_LTLIBRARIES)
am__DEPENDENCIES_1 =
libgstdc1394_la_DEPENDENCIES = $(am__DEPENDENCIES_1) \
+ $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \
$(am__DEPENDENCIES_1)
-am_libgstdc1394_la_OBJECTS = libgstdc1394_la-gstdc1394.lo
+am_libgstdc1394_la_OBJECTS = libgstdc1394_la-gstdc1394src.lo
libgstdc1394_la_OBJECTS = $(am_libgstdc1394_la_OBJECTS)
AM_V_lt = $(am__v_lt_@AM_V@)
am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@)
@@ -302,6 +303,8 @@
DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
DSYMUTIL = @DSYMUTIL@
DTLS_CFLAGS = @DTLS_CFLAGS@
DTLS_LIBS = @DTLS_LIBS@
@@ -517,6 +520,8 @@
LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
LIPO = @LIPO@
LN_S = @LN_S@
LOCALEDIR = @LOCALEDIR@
@@ -643,8 +648,6 @@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
SNDIO_LIBS = @SNDIO_LIBS@
@@ -689,6 +692,8 @@
WAYLAND_LIBS = @WAYLAND_LIBS@
WEBP_CFLAGS = @WEBP_CFLAGS@
WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
WGET = @WGET@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
@@ -777,17 +782,33 @@
top_builddir = @top_builddir@
top_srcdir = @top_srcdir@
wayland_scanner = @wayland_scanner@
-plugin_LTLIBRARIES = libgstdc1394.la
-libgstdc1394_la_SOURCES = gstdc1394.c
-libgstdc1394_la_CFLAGS = $(GST_CFLAGS) \
- $(LIBDC1394_CFLAGS)
+plugin_LTLIBRARIES = \
+ libgstdc1394.la
-libgstdc1394_la_LDFLAGS = $(GST_PLUGIN_LDFLAGS)
-libgstdc1394_la_LIBTOOLFLAGS = $(GST_PLUGIN_LIBTOOLFLAGS)
-libgstdc1394_la_LIBADD = $(GST_BASE_LIBS) \
- $(LIBDC1394_LIBS)
+libgstdc1394_la_SOURCES = \
+ gstdc1394src.c
-noinst_HEADERS = gstdc1394.h
+libgstdc1394_la_CFLAGS = \
+ $(LIBDC1394_CFLAGS) \
+ $(GST_PLUGINS_BASE_CFLAGS) \
+ $(GST_BASE_CFLAGS) \
+ $(GST_CFLAGS)
+
+libgstdc1394_la_LIBADD = \
+ $(LIBDC1394_LIBS) \
+ $(GST_PLUGINS_BASE_LIBS) -lgstvideo-$(GST_API_VERSION) \
+ $(GST_BASE_LIBS) \
+ $(GST_LIBS)
+
+libgstdc1394_la_LDFLAGS = \
+ $(GST_PLUGIN_LDFLAGS)
+
+libgstdc1394_la_LIBTOOLFLAGS = \
+ $(GST_PLUGIN_LIBTOOLFLAGS)
+
+noinst_HEADERS = \
+ gstdc1394src.h
+
all: all-am
.SUFFIXES:
@@ -866,7 +887,7 @@
distclean-compile:
-rm -f *.tab.c
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstdc1394_la-gstdc1394.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstdc1394_la-gstdc1394src.Plo@am__quote@
.c.o:
@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\
@@ -892,12 +913,12 @@
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $<
-libgstdc1394_la-gstdc1394.lo: gstdc1394.c
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstdc1394_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstdc1394_la_CFLAGS) $(CFLAGS) -MT libgstdc1394_la-gstdc1394.lo -MD -MP -MF $(DEPDIR)/libgstdc1394_la-gstdc1394.Tpo -c -o libgstdc1394_la-gstdc1394.lo `test -f 'gstdc1394.c' || echo '$(srcdir)/'`gstdc1394.c
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgstdc1394_la-gstdc1394.Tpo $(DEPDIR)/libgstdc1394_la-gstdc1394.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gstdc1394.c' object='libgstdc1394_la-gstdc1394.lo' libtool=yes @AMDEPBACKSLASH@
+libgstdc1394_la-gstdc1394src.lo: gstdc1394src.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstdc1394_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstdc1394_la_CFLAGS) $(CFLAGS) -MT libgstdc1394_la-gstdc1394src.lo -MD -MP -MF $(DEPDIR)/libgstdc1394_la-gstdc1394src.Tpo -c -o libgstdc1394_la-gstdc1394src.lo `test -f 'gstdc1394src.c' || echo '$(srcdir)/'`gstdc1394src.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgstdc1394_la-gstdc1394src.Tpo $(DEPDIR)/libgstdc1394_la-gstdc1394src.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gstdc1394src.c' object='libgstdc1394_la-gstdc1394src.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 $(libgstdc1394_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstdc1394_la_CFLAGS) $(CFLAGS) -c -o libgstdc1394_la-gstdc1394.lo `test -f 'gstdc1394.c' || echo '$(srcdir)/'`gstdc1394.c
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstdc1394_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstdc1394_la_CFLAGS) $(CFLAGS) -c -o libgstdc1394_la-gstdc1394src.lo `test -f 'gstdc1394src.c' || echo '$(srcdir)/'`gstdc1394src.c
mostlyclean-libtool:
-rm -f *.lo
diff --git a/ext/dc1394/gstdc1394.c b/ext/dc1394/gstdc1394.c
deleted file mode 100644
index 4a403b4..0000000
--- a/ext/dc1394/gstdc1394.c
+++ /dev/null
@@ -1,1335 +0,0 @@
-/* GStreamer
- * Copyright (C) <2006> Eric Jonas <jonas@mit.edu>
- * Copyright (C) <2006> Antoine Tremblay <hexa00@gmail.com>
- *
- * 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.
- */
-
-/**
- * SECTION:element-dc1394
- *
- * Source for IIDC (Instrumentation & Industrial Digital Camera) firewire
- * cameras.
- *
- * <refsect2>
- * <title>Example launch line</title>
- * |[
- * gst-launch -v dc1394 camera-number=0 ! xvimagesink
- * ]|
- * </refsect2>
- */
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-#include "gstdc1394.h"
-#include <sys/time.h>
-#include <time.h>
-#include <string.h>
-
-GST_DEBUG_CATEGORY (dc1394_debug);
-#define GST_CAT_DEFAULT dc1394_debug
-
-enum
-{
- PROP_0,
- PROP_TIMESTAMP_OFFSET,
- PROP_CAMNUM,
- PROP_BUFSIZE,
- PROP_ISO_SPEED
- /* FILL ME */
-};
-
-
-GST_BOILERPLATE (GstDc1394, gst_dc1394, GstPushSrc, GST_TYPE_PUSH_SRC);
-
-static void gst_dc1394_set_property (GObject * object, guint prop_id,
- const GValue * value, GParamSpec * pspec);
-static void gst_dc1394_get_property (GObject * object, guint prop_id,
- GValue * value, GParamSpec * pspec);
-
-static GstCaps *gst_dc1394_getcaps (GstBaseSrc * bsrc);
-static gboolean gst_dc1394_setcaps (GstBaseSrc * bsrc, GstCaps * caps);
-static void gst_dc1394_src_fixate (GstPad * pad, GstCaps * caps);
-
-static void gst_dc1394_get_times (GstBaseSrc * basesrc,
- GstBuffer * buffer, GstClockTime * start, GstClockTime * end);
-
-static GstFlowReturn gst_dc1394_create (GstPushSrc * psrc, GstBuffer ** buffer);
-
-static GstStateChangeReturn
-gst_dc1394_change_state (GstElement * element, GstStateChange transition);
-
-static gboolean gst_dc1394_parse_caps (const GstCaps * caps,
- gint * width,
- gint * height,
- gint * rate_numerator, gint * rate_denominator, gint * vmode, gint * bpp);
-
-static gint gst_dc1394_caps_set_format_vmode_caps (GstStructure * st,
- gint mode);
-static gboolean gst_dc1394_set_caps_color (GstStructure * gs, gint mc);
-static void gst_dc1394_set_caps_framesize (GstStructure * gs, gint width,
- gint height);
-static void gst_dc1394_set_caps_framesize_range (GstStructure * gs,
- gint minwidth, gint maxwidth, gint incwidth,
- gint minheight, gint maxheight, gint incheight);
-
-static gint gst_dc1394_caps_set_framerate_list (GstStructure * gs,
- dc1394framerates_t * framerates);
-
-static GstCaps *gst_dc1394_get_all_dc1394_caps (void);
-static GstCaps *gst_dc1394_get_cam_caps (GstDc1394 * src);
-static gboolean gst_dc1394_open_cam_with_best_caps (GstDc1394 * src);
-static gint gst_dc1394_framerate_frac_to_const (gint num, gint denom);
-static void gst_dc1394_framerate_const_to_frac (gint framerateconst,
- GValue * framefrac);
-static gboolean
-gst_dc1394_change_camera_transmission (GstDc1394 * src, gboolean on);
-static gboolean gst_dc1394_query (GstBaseSrc * bsrc, GstQuery * query);
-
-static void
-gst_dc1394_base_init (gpointer g_class)
-{
- GstElementClass *element_class = GST_ELEMENT_CLASS (g_class);
-
- gst_element_class_set_static_metadata (element_class,
- "1394 IIDC Video Source", "Source/Video",
- "libdc1394 based source, supports 1394 IIDC cameras",
- "Antoine Tremblay <hexa00@gmail.com>");
-
- gst_element_class_add_pad_template (element_class,
- gst_pad_template_new ("src", GST_PAD_SRC, GST_PAD_ALWAYS,
- gst_dc1394_get_all_dc1394_caps ()));
-
-}
-
-static void
-gst_dc1394_class_init (GstDc1394Class * klass)
-{
- GObjectClass *gobject_class;
- GstBaseSrcClass *gstbasesrc_class;
- GstPushSrcClass *gstpushsrc_class;
- GstElementClass *gstelement_class;
-
- gobject_class = (GObjectClass *) klass;
- gstbasesrc_class = (GstBaseSrcClass *) klass;
- gstpushsrc_class = (GstPushSrcClass *) klass;
- gstelement_class = (GstElementClass *) klass;
-
- gobject_class->set_property = gst_dc1394_set_property;
- gobject_class->get_property = gst_dc1394_get_property;
-
- g_object_class_install_property (G_OBJECT_CLASS (klass),
- PROP_TIMESTAMP_OFFSET, g_param_spec_int64 ("timestamp-offset",
- "Timestamp offset",
- "An offset added to timestamps set on buffers (in ns)", G_MININT64,
- G_MAXINT64, 0, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
-
- g_object_class_install_property (G_OBJECT_CLASS (klass),
- PROP_CAMNUM, g_param_spec_int ("camera-number",
- "The number of the camera on the firewire bus",
- "The number of the camera on the firewire bus", 0,
- G_MAXINT, 0, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
-
- g_object_class_install_property (G_OBJECT_CLASS (klass),
- PROP_BUFSIZE, g_param_spec_int ("buffer-size",
- "The number of frames in the dma ringbuffer",
- "The number of frames in the dma ringbuffer", 1,
- G_MAXINT, 10, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
-
- g_object_class_install_property (G_OBJECT_CLASS (klass),
- PROP_ISO_SPEED, g_param_spec_int ("iso-speed",
- "The iso bandwidth in Mbps (100, 200, 400, 800, 1600, 3200)",
- "The iso bandwidth in Mbps (100, 200, 400, 800, 1600, 3200)", 100,
- 3200, 400, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
-
- gstbasesrc_class->get_caps = gst_dc1394_getcaps;
- gstbasesrc_class->set_caps = gst_dc1394_setcaps;
- gstbasesrc_class->query = gst_dc1394_query;
-
- gstbasesrc_class->get_times = gst_dc1394_get_times;
- gstpushsrc_class->create = gst_dc1394_create;
-
- gstelement_class->change_state = GST_DEBUG_FUNCPTR (gst_dc1394_change_state);
-}
-
-static void
-gst_dc1394_init (GstDc1394 * src, GstDc1394Class * g_class)
-{
-
- src->segment_start_frame = -1;
- src->segment_end_frame = -1;
- src->timestamp_offset = 0;
- src->caps = gst_dc1394_get_all_dc1394_caps ();
- src->bufsize = 10;
- src->iso_speed = 400;
- src->camnum = 0;
- src->n_frames = 0;
-
- gst_pad_set_fixatecaps_function (GST_BASE_SRC_PAD (src),
- gst_dc1394_src_fixate);
-
- gst_base_src_set_live (GST_BASE_SRC (src), TRUE);
-}
-
-static void
-gst_dc1394_src_fixate (GstPad * pad, GstCaps * caps)
-{
-
- GstDc1394 *src = GST_DC1394 (gst_pad_get_parent (pad));
- GstStructure *structure;
- int i;
-
- GST_LOG_OBJECT (src, " fixating caps to closest to 320x240 , 30 fps");
-
- for (i = 0; i < gst_caps_get_size (caps); ++i) {
- structure = gst_caps_get_structure (caps, i);
-
- gst_structure_fixate_field_nearest_int (structure, "width", 320);
- gst_structure_fixate_field_nearest_int (structure, "height", 240);
- gst_structure_fixate_field_nearest_fraction (structure, "framerate", 30, 1);
- }
- gst_object_unref (GST_OBJECT (src));
-}
-
-static gboolean
-gst_dc1394_query (GstBaseSrc * bsrc, GstQuery * query)
-{
- gboolean res = TRUE;
- GstDc1394 *src = GST_DC1394 (bsrc);
-
- switch (GST_QUERY_TYPE (query)) {
- case GST_QUERY_LATENCY:
- {
- GstClockTime min_latency, max_latency;
-
- if (!src->camera) {
- GST_WARNING_OBJECT (src,
- "Can't give latency since device isn't open !");
- res = FALSE;
- goto done;
- }
-
- if (src->rate_denominator <= 0 || src->rate_numerator <= 0) {
- GST_WARNING_OBJECT (bsrc,
- "Can't give latency since framerate isn't fixated !");
- res = FALSE;
- goto done;
- }
-
- /* min latency is the time to capture one frame */
- min_latency = gst_util_uint64_scale (GST_SECOND,
- src->rate_denominator, src->rate_numerator);
-
- /* max latency is total duration of the frame buffer */
- max_latency = gst_util_uint64_scale (src->bufsize,
- GST_SECOND * src->rate_denominator, src->rate_numerator);
-
- GST_DEBUG_OBJECT (bsrc,
- "report latency min %" GST_TIME_FORMAT " max %" GST_TIME_FORMAT,
- GST_TIME_ARGS (min_latency), GST_TIME_ARGS (max_latency));
-
- /* we are always live, the min latency is 1 frame and the max latency is
- * the complete buffer of frames. */
- gst_query_set_latency (query, TRUE, min_latency, max_latency);
-
- res = TRUE;
- break;
- }
- default:
- res = GST_BASE_SRC_CLASS (parent_class)->query (bsrc, query);
- break;
- }
-
-done:
- return res;
-}
-
-static void
-gst_dc1394_set_property (GObject * object, guint prop_id,
- const GValue * value, GParamSpec * pspec)
-{
- GstDc1394 *src = GST_DC1394 (object);
-
- switch (prop_id) {
- case PROP_TIMESTAMP_OFFSET:
- src->timestamp_offset = g_value_get_int64 (value);
- break;
- case PROP_CAMNUM:
- src->camnum = g_value_get_int (value);
- break;
- case PROP_BUFSIZE:
- src->bufsize = g_value_get_int (value);
- break;
- case PROP_ISO_SPEED:
- switch (g_value_get_int (value)) {
- case 100:
- case 200:
- case 300:
- case 400:
- case 800:
- case 1600:
- case 3200:
- // fallthrough
- src->iso_speed = g_value_get_int (value);
- break;
- default:
- g_warning ("%s: Invalid iso speed %d, ignoring",
- GST_ELEMENT_NAME (src), g_value_get_int (value));
- break;
- }
- default:
- break;
- }
-}
-
-static void
-gst_dc1394_get_property (GObject * object, guint prop_id, GValue * value,
- GParamSpec * pspec)
-{
- GstDc1394 *src = GST_DC1394 (object);
-
- switch (prop_id) {
- case PROP_TIMESTAMP_OFFSET:
- g_value_set_int64 (value, src->timestamp_offset);
- break;
- case PROP_CAMNUM:
- g_value_set_int (value, src->camnum);
- break;
- case PROP_BUFSIZE:
- g_value_set_int (value, src->bufsize);
- break;
- case PROP_ISO_SPEED:
- g_value_set_int (value, src->iso_speed);
- break;
- default:
- G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
- break;
- }
-}
-
-static GstCaps *
-gst_dc1394_getcaps (GstBaseSrc * bsrc)
-{
- GstDc1394 *gsrc;
-
- gsrc = GST_DC1394 (bsrc);
-
- g_return_val_if_fail (gsrc->caps, NULL);
-
- return gst_caps_copy (gsrc->caps);
-}
-
-static gboolean
-gst_dc1394_setcaps (GstBaseSrc * bsrc, GstCaps * caps)
-{
- gboolean res = TRUE;
- GstDc1394 *dc1394;
- gint width, height, rate_denominator, rate_numerator;
- gint bpp, vmode;
-
- dc1394 = GST_DC1394 (bsrc);
-
- if (dc1394->caps) {
- gst_caps_unref (dc1394->caps);
- }
-
- dc1394->caps = gst_caps_copy (caps);
-
- res = gst_dc1394_parse_caps (caps, &width, &height,
- &rate_numerator, &rate_denominator, &vmode, &bpp);
-
- if (res) {
- /* looks ok here */
- dc1394->width = width;
- dc1394->height = height;
- dc1394->vmode = vmode;
- dc1394->rate_numerator = rate_numerator;
- dc1394->rate_denominator = rate_denominator;
- dc1394->bpp = bpp;
- }
-
- return res;
-}
-
-static void
-gst_dc1394_get_times (GstBaseSrc * basesrc, GstBuffer * buffer,
- GstClockTime * start, GstClockTime * end)
-{
- /* for live sources, sync on the timestamp of the buffer */
- if (gst_base_src_is_live (basesrc)) {
- GstClockTime timestamp = GST_BUFFER_TIMESTAMP (buffer);
-
- if (GST_CLOCK_TIME_IS_VALID (timestamp)) {
- /* get duration to calculate end time */
- GstClockTime duration = GST_BUFFER_DURATION (buffer);
-
- if (GST_CLOCK_TIME_IS_VALID (duration)) {
- *end = timestamp + duration;
- }
- *start = timestamp;
- }
- } else {
- *start = -1;
- *end = -1;
- }
-}
-
-static GstFlowReturn
-gst_dc1394_create (GstPushSrc * psrc, GstBuffer ** buffer)
-{
- GstDc1394 *src;
- GstBuffer *outbuf;
- GstCaps *caps;
- dc1394video_frame_t *frame[1];
- GstFlowReturn res = GST_FLOW_OK;
- dc1394error_t err;
-
- src = GST_DC1394 (psrc);
-
- err = dc1394_capture_dequeue (src->camera, DC1394_CAPTURE_POLICY_WAIT, frame);
-
- if (err != DC1394_SUCCESS) {
- GST_ELEMENT_ERROR (src, RESOURCE, FAILED,
- ("failed to dequeue frame"), ("failed to dequeue frame"));
- goto error;
- }
-
- outbuf = gst_buffer_new_and_alloc (frame[0]->image_bytes);
-
- memcpy (GST_BUFFER_MALLOCDATA (outbuf), (guchar *) frame[0]->image,
- frame[0]->image_bytes * sizeof (guchar));
-
- GST_BUFFER_DATA (outbuf) = GST_BUFFER_MALLOCDATA (outbuf);
-
- caps = gst_pad_get_caps (GST_BASE_SRC_PAD (psrc));
- gst_buffer_set_caps (outbuf, caps);
- gst_caps_unref (caps);
-
- GST_BUFFER_TIMESTAMP (outbuf) = src->timestamp_offset + src->running_time;
- if (src->rate_numerator != 0) {
- GST_BUFFER_DURATION (outbuf) = gst_util_uint64_scale_int (GST_SECOND,
- src->rate_denominator, src->rate_numerator);
- }
-
- src->n_frames++;
- if (src->rate_numerator != 0) {
- src->running_time = gst_util_uint64_scale_int (src->n_frames * GST_SECOND,
- src->rate_denominator, src->rate_numerator);
- }
-
- if (dc1394_capture_enqueue (src->camera, frame[0]) != DC1394_SUCCESS) {
- GST_ELEMENT_ERROR (src, RESOURCE, FAILED, ("failed to enqueue frame"),
- ("failed to enqueue frame"));
- goto error;
- }
-
- *buffer = outbuf;
-
- return res;
-
-error:
- {
- return GST_FLOW_ERROR;
- }
-}
-
-
-static gboolean
-gst_dc1394_parse_caps (const GstCaps * caps,
- gint * width,
- gint * height,
- gint * rate_numerator, gint * rate_denominator, gint * vmode, gint * bpp)
-{
- const GstStructure *structure;
- GstPadLinkReturn ret;
- const GValue *framerate;
-
- if (gst_caps_get_size (caps) < 1)
- return FALSE;
-
- structure = gst_caps_get_structure (caps, 0);
-
- ret = gst_structure_get_int (structure, "width", width);
- ret &= gst_structure_get_int (structure, "height", height);
-
- framerate = gst_structure_get_value (structure, "framerate");
-
- ret &= gst_structure_get_int (structure, "vmode", vmode);
-
- ret &= gst_structure_get_int (structure, "bpp", bpp);
-
-
- if (framerate) {
- *rate_numerator = gst_value_get_fraction_numerator (framerate);
- *rate_denominator = gst_value_get_fraction_denominator (framerate);
- } else {
- ret = FALSE;
- }
-
- return ret;
-}
-
-static GstStateChangeReturn
-gst_dc1394_change_state (GstElement * element, GstStateChange transition)
-{
- GstStateChangeReturn ret = GST_STATE_CHANGE_SUCCESS;
- GstDc1394 *src = GST_DC1394 (element);
-
- switch (transition) {
- case GST_STATE_CHANGE_NULL_TO_READY:
- GST_LOG_OBJECT (src, "State change null to ready");
- src->dc1394 = dc1394_new ();
- break;
- case GST_STATE_CHANGE_READY_TO_PAUSED:
- GST_LOG_OBJECT (src, "State ready to paused");
-
- if (src->caps) {
- gst_caps_unref (src->caps);
- src->caps = NULL;
- }
- src->caps = gst_dc1394_get_cam_caps (src);
- if (src->caps == NULL) {
- GST_LOG_OBJECT (src,
- "Error : Set property could not get cam caps ! , reverting to default");
- src->caps = gst_dc1394_get_all_dc1394_caps ();
- ret = GST_STATE_CHANGE_FAILURE;
- }
-
- break;
- case GST_STATE_CHANGE_PAUSED_TO_PLAYING:
- GST_LOG_OBJECT (src, "State change paused to playing");
-
- if (!gst_dc1394_open_cam_with_best_caps (src)) {
- ret = GST_STATE_CHANGE_FAILURE;
- }
-
- if (src->camera && !gst_dc1394_change_camera_transmission (src, TRUE)) {
- ret = GST_STATE_CHANGE_FAILURE;
- }
-
- break;
- default:
- break;
- }
- if (ret == GST_STATE_CHANGE_FAILURE)
- return ret;
-
- ret = GST_ELEMENT_CLASS (parent_class)->change_state (element, transition);
-
- switch (transition) {
- case GST_STATE_CHANGE_PLAYING_TO_PAUSED:
- GST_LOG_OBJECT (src, "State change playing to paused");
- break;
- case GST_STATE_CHANGE_PAUSED_TO_READY:
- GST_LOG_OBJECT (src, "State change paused to ready");
-
- if (src->camera && !gst_dc1394_change_camera_transmission (src, FALSE)) {
-
- if (src->camera) {
- dc1394_camera_free (src->camera);
- }
- src->camera = NULL;
-
- if (src->caps) {
- gst_caps_unref (src->caps);
- src->caps = NULL;
- }
-
- ret = GST_STATE_CHANGE_FAILURE;
- }
-
- break;
- case GST_STATE_CHANGE_READY_TO_NULL:
- GST_LOG_OBJECT (src, "State change ready to null");
- if (src->camera) {
- dc1394_camera_free (src->camera);
- }
- src->camera = NULL;
-
- if (src->dc1394) {
- dc1394_free (src->dc1394);
- }
- src->dc1394 = NULL;
-
- if (src->caps) {
- gst_caps_unref (src->caps);
- src->caps = NULL;
- }
- break;
- default:
- break;
- }
-
- return ret;
-}
-
-
-static gint
-gst_dc1394_caps_set_format_vmode_caps (GstStructure * gs, gint mode)
-{
- gint retval = 0;
-
- switch (mode) {
- case DC1394_VIDEO_MODE_160x120_YUV444:
- gst_dc1394_set_caps_color (gs, DC1394_COLOR_CODING_YUV444);
- gst_dc1394_set_caps_framesize (gs, 160, 120);
- break;
- case DC1394_VIDEO_MODE_320x240_YUV422:
- gst_dc1394_set_caps_color (gs, DC1394_COLOR_CODING_YUV422);
- gst_dc1394_set_caps_framesize (gs, 320, 240);
- break;
- case DC1394_VIDEO_MODE_640x480_YUV411:
- gst_dc1394_set_caps_color (gs, DC1394_COLOR_CODING_YUV411);
- gst_dc1394_set_caps_framesize (gs, 640, 480);
- break;
- case DC1394_VIDEO_MODE_640x480_YUV422:
- gst_dc1394_set_caps_color (gs, DC1394_COLOR_CODING_YUV422);
- gst_dc1394_set_caps_framesize (gs, 640, 480);
- break;
- case DC1394_VIDEO_MODE_640x480_RGB8:
- gst_dc1394_set_caps_color (gs, DC1394_COLOR_CODING_RGB8);
- gst_dc1394_set_caps_framesize (gs, 640, 480);
- break;
- case DC1394_VIDEO_MODE_640x480_MONO8:
- gst_dc1394_set_caps_color (gs, DC1394_COLOR_CODING_MONO8);
- gst_dc1394_set_caps_framesize (gs, 640, 480);
- break;
- case DC1394_VIDEO_MODE_640x480_MONO16:
- gst_dc1394_set_caps_color (gs, DC1394_COLOR_CODING_MONO16);
- gst_dc1394_set_caps_framesize (gs, 640, 480);
- break;
- case DC1394_VIDEO_MODE_800x600_YUV422:
- gst_dc1394_set_caps_color (gs, DC1394_COLOR_CODING_YUV422);
- gst_dc1394_set_caps_framesize (gs, 800, 600);
- break;
- case DC1394_VIDEO_MODE_800x600_RGB8:
- gst_dc1394_set_caps_color (gs, DC1394_COLOR_CODING_RGB8);
- gst_dc1394_set_caps_framesize (gs, 800, 600);
- break;
- case DC1394_VIDEO_MODE_800x600_MONO8:
- gst_dc1394_set_caps_color (gs, DC1394_COLOR_CODING_MONO8);
- gst_dc1394_set_caps_framesize (gs, 800, 600);
- break;
- case DC1394_VIDEO_MODE_1024x768_YUV422:
- gst_dc1394_set_caps_color (gs, DC1394_COLOR_CODING_YUV422);
- gst_dc1394_set_caps_framesize (gs, 1024, 768);
- break;
- case DC1394_VIDEO_MODE_1024x768_RGB8:
- gst_dc1394_set_caps_color (gs, DC1394_COLOR_CODING_RGB8);
- gst_dc1394_set_caps_framesize (gs, 1024, 768);
- break;
- case DC1394_VIDEO_MODE_1024x768_MONO8:
- gst_dc1394_set_caps_color (gs, DC1394_COLOR_CODING_MONO8);
- gst_dc1394_set_caps_framesize (gs, 1024, 768);
- break;
- case DC1394_VIDEO_MODE_800x600_MONO16:
- gst_dc1394_set_caps_color (gs, DC1394_COLOR_CODING_MONO16);
- gst_dc1394_set_caps_framesize (gs, 800, 600);
- break;
- case DC1394_VIDEO_MODE_1024x768_MONO16:
- gst_dc1394_set_caps_color (gs, DC1394_COLOR_CODING_MONO16);
- gst_dc1394_set_caps_framesize (gs, 1024, 768);
- break;
- case DC1394_VIDEO_MODE_1280x960_YUV422:
- gst_dc1394_set_caps_color (gs, DC1394_COLOR_CODING_YUV422);
- gst_dc1394_set_caps_framesize (gs, 1280, 960);
- break;
- case DC1394_VIDEO_MODE_1280x960_RGB8:
- gst_dc1394_set_caps_color (gs, DC1394_COLOR_CODING_RGB8);
- gst_dc1394_set_caps_framesize (gs, 1280, 960);
- break;
- case DC1394_VIDEO_MODE_1280x960_MONO8:
- gst_dc1394_set_caps_color (gs, DC1394_COLOR_CODING_MONO8);
- gst_dc1394_set_caps_framesize (gs, 1280, 960);
- break;
- case DC1394_VIDEO_MODE_1600x1200_YUV422:
- gst_dc1394_set_caps_color (gs, DC1394_COLOR_CODING_YUV422);
- gst_dc1394_set_caps_framesize (gs, 1600, 1200);
- break;
- case DC1394_VIDEO_MODE_1600x1200_RGB8:
- gst_dc1394_set_caps_color (gs, DC1394_COLOR_CODING_RGB8);
- gst_dc1394_set_caps_framesize (gs, 1600, 1200);
- break;
- case DC1394_VIDEO_MODE_1600x1200_MONO8:
- gst_dc1394_set_caps_color (gs, DC1394_COLOR_CODING_MONO8);
- gst_dc1394_set_caps_framesize (gs, 1600, 1200);
- break;
- case DC1394_VIDEO_MODE_1280x960_MONO16:
- gst_dc1394_set_caps_color (gs, DC1394_COLOR_CODING_MONO16);
- gst_dc1394_set_caps_framesize (gs, 1280, 960);
- break;
- case DC1394_VIDEO_MODE_1600x1200_MONO16:
- gst_dc1394_set_caps_color (gs, DC1394_COLOR_CODING_MONO8);
- gst_dc1394_set_caps_framesize (gs, 1600, 1200);
- break;
-
- default:
- retval = -1;
- }
-
- return retval;
-
-}
-
-
-static gboolean
-gst_dc1394_set_caps_color (GstStructure * gs, gint mc)
-{
- gboolean ret = TRUE;
- gint fourcc;
-
- switch (mc) {
- case DC1394_COLOR_CODING_YUV444:
- gst_structure_set_name (gs, "video/x-raw-yuv");
-
- fourcc = GST_MAKE_FOURCC ('I', 'Y', 'U', '2');
- gst_structure_set (gs,
- "format", GST_TYPE_FOURCC, fourcc, "bpp", G_TYPE_INT, 16, NULL);
- break;
-
- case DC1394_COLOR_CODING_YUV422:
- gst_structure_set_name (gs, "video/x-raw-yuv");
- fourcc = GST_MAKE_FOURCC ('U', 'Y', 'V', 'Y');
- gst_structure_set (gs,
- "format", GST_TYPE_FOURCC, fourcc, "bpp", G_TYPE_INT, 16, NULL);
- break;
-
- case DC1394_COLOR_CODING_YUV411:
- gst_structure_set_name (gs, "video/x-raw-yuv");
- fourcc = GST_MAKE_FOURCC ('I', 'Y', 'U', '1');
- gst_structure_set (gs,
- "format", GST_TYPE_FOURCC, fourcc, "bpp", G_TYPE_INT, 12, NULL);
- break;
- case DC1394_COLOR_CODING_RGB8:
- gst_structure_set_name (gs, "video/x-raw-rgb");
- gst_structure_set (gs,
- "bpp", G_TYPE_INT, 24,
- "depth", G_TYPE_INT, 24,
- "endianness", G_TYPE_INT, G_BIG_ENDIAN,
- "red_mask", G_TYPE_INT, 0xFF0000,
- "green_mask", G_TYPE_INT, 0x00FF00,
- "blue_mask", G_TYPE_INT, 0x0000FF, NULL);
- break;
- case DC1394_COLOR_CODING_MONO8:
- gst_structure_set_name (gs, "video/x-raw-gray");
- gst_structure_set (gs,
- "bpp", G_TYPE_INT, 8, "depth", G_TYPE_INT, 8, NULL);
-
- break;
- case DC1394_COLOR_CODING_MONO16:
- gst_structure_set_name (gs, "video/x-raw-gray");
- gst_structure_set (gs,
- "bpp", G_TYPE_INT, 16, "depth", G_TYPE_INT, 16, NULL);
- // there is no fourcc for this format
- break;
- default:
- GST_DEBUG ("Ignoring unsupported color format %d", mc);
- ret = FALSE;
- break;
- }
- return ret;
-}
-
-
-static void
-gst_dc1394_set_caps_framesize (GstStructure * gs, gint width, gint height)
-{
- gst_structure_set (gs,
- "width", G_TYPE_INT, width, "height", G_TYPE_INT, height, NULL);
-}
-
-static void
-gst_dc1394_set_caps_framesize_range (GstStructure * gs,
- gint minwidth,
- gint maxwidth,
- gint incwidth, gint minheight, gint maxheight, gint incheight)
-{
- /*
- Format 7 cameras allow you to change the camera width/height in multiples
- of incwidth/incheight up to some max. This sets the necessary
- list structure in the gst caps structure
- */
-
- GValue widthlist = { 0 };
- GValue widthval = { 0 };
- GValue heightlist = { 0 };
- GValue heightval = { 0 };
- gint x = 0;
-
- g_value_init (&widthlist, GST_TYPE_LIST);
- g_value_init (&widthval, G_TYPE_INT);
- for (x = minwidth; x <= maxwidth; x += incwidth) {
- g_value_set_int (&widthval, x);
- gst_value_list_append_value (&widthlist, &widthval);
- }
- gst_structure_set_value (gs, "width", &widthlist);
-
- g_value_unset (&widthlist);
- g_value_unset (&widthval);
-
- g_value_init (&heightlist, GST_TYPE_LIST);
- g_value_init (&heightval, G_TYPE_INT);
- for (x = minheight; x <= maxheight; x += incheight) {
- g_value_set_int (&heightval, x);
- gst_value_list_append_value (&heightlist, &heightval);
- }
-
- gst_structure_set_value (gs, "height", &heightlist);
-
- g_value_unset (&heightlist);
- g_value_unset (&heightval);
-}
-
-
-static gint
-gst_dc1394_caps_set_framerate_list (GstStructure * gs,
- dc1394framerates_t * framerates)
-{
- GValue framefrac = { 0 };
- GValue frameratelist = { 0 };
- gint f;
-
- g_value_init (&frameratelist, GST_TYPE_LIST);
- g_value_init (&framefrac, GST_TYPE_FRACTION);
-
- // figure out the frame rate
- for (f = framerates->num - 1; f >= 0; f--) {
- /* reverse order so we place the faster frame rates higher in
- the sequence */
- if (framerates->framerates[f]) {
- gst_dc1394_framerate_const_to_frac (framerates->framerates[f],
- &framefrac);
-
- gst_value_list_append_value (&frameratelist, &framefrac);
- }
- }
- gst_structure_set_value (gs, "framerate", &frameratelist);
-
- g_value_unset (&framefrac);
- g_value_unset (&frameratelist);
- return 0;
-}
-
-
-
-static void
-gst_dc1394_framerate_const_to_frac (gint framerateconst, GValue * framefrac)
-{
-
- // frac must have been already initialized
-
- switch (framerateconst) {
- case DC1394_FRAMERATE_1_875:
- gst_value_set_fraction (framefrac, 15, 8);
- break;
- case DC1394_FRAMERATE_3_75:
- gst_value_set_fraction (framefrac, 15, 4);
- break;
- case DC1394_FRAMERATE_7_5:
- gst_value_set_fraction (framefrac, 15, 2);
- break;
- case DC1394_FRAMERATE_15:
- gst_value_set_fraction (framefrac, 15, 1);
- break;
- case DC1394_FRAMERATE_30:
- gst_value_set_fraction (framefrac, 30, 1);
- break;
- case DC1394_FRAMERATE_60:
- gst_value_set_fraction (framefrac, 60, 1);
- break;
- case DC1394_FRAMERATE_120:
- gst_value_set_fraction (framefrac, 120, 1);
- break;
- case DC1394_FRAMERATE_240:
- gst_value_set_fraction (framefrac, 240, 1);
- break;
- }
-}
-
-static GstCaps *
-gst_dc1394_get_all_dc1394_caps (void)
-{
- /*
- generate all possible caps
-
- */
-
- GstCaps *gcaps;
- gint i = 0;
-
- gcaps = gst_caps_new_empty ();
- // first, the fixed mode caps
- for (i = DC1394_VIDEO_MODE_MIN; i < DC1394_VIDEO_MODE_EXIF; i++) {
- GstStructure *gs = gst_structure_empty_new ("video");
- gint ret = gst_dc1394_caps_set_format_vmode_caps (gs, i);
-
- gst_structure_set (gs,
- "framerate", GST_TYPE_FRACTION_RANGE, 0, 1, G_MAXINT, 1, NULL);
- gst_structure_set (gs, "vmode", G_TYPE_INT, i, NULL);
- if (ret >= 0) {
- gst_caps_append_structure (gcaps, gs);
- }
- }
-
- // then Format 7 options
-
- for (i = DC1394_COLOR_CODING_MIN; i <= DC1394_COLOR_CODING_MAX; i++) {
- GstStructure *gs = gst_structure_empty_new ("video");
-
- //int ret = gst_dc1394_caps_set_format_vmode_caps(gs, i);
-
- gst_structure_set (gs, "vmode", GST_TYPE_INT_RANGE, 1, G_MAXINT, NULL);
-
- gst_structure_set (gs,
- "framerate", GST_TYPE_FRACTION_RANGE, 0, 1, G_MAXINT, 1, NULL);
- gst_structure_set (gs,
- "width", GST_TYPE_INT_RANGE, 1, G_MAXINT,
- "height", GST_TYPE_INT_RANGE, 1, G_MAXINT, NULL);
-
- if (gst_dc1394_set_caps_color (gs, i)) {
- gst_caps_append_structure (gcaps, gs);
- }
- }
- return gcaps;
-
-}
-
-GstCaps *
-gst_dc1394_get_cam_caps (GstDc1394 * src)
-{
-
- dc1394camera_t *camera = NULL;
- dc1394camera_list_t *cameras = NULL;
- dc1394error_t camerr;
- gint i, j;
- dc1394video_modes_t modes;
- dc1394framerates_t framerates;
- GstCaps *gcaps = NULL;
-
- gcaps = gst_caps_new_empty ();
-
- camerr = dc1394_camera_enumerate (src->dc1394, &cameras);
-
- if (camerr != DC1394_SUCCESS || cameras == NULL) {
- GST_ELEMENT_ERROR (src, RESOURCE, NOT_FOUND,
- ("Can't find cameras error : %d", camerr),
- ("Can't find cameras error : %d", camerr));
- goto error;
- }
-
- if (cameras->num == 0) {
- GST_ELEMENT_ERROR (src, RESOURCE, NOT_FOUND, ("There were no cameras"),
- ("There were no cameras"));
- goto error;
- }
-
- if (src->camnum > (cameras->num - 1)) {
- GST_ELEMENT_ERROR (src, RESOURCE, FAILED, ("Invalid camera number"),
- ("Invalid camera number %d", src->camnum));
- goto error;
- }
-
- camera =
- dc1394_camera_new_unit (src->dc1394, cameras->ids[src->camnum].guid,
- cameras->ids[src->camnum].unit);
-
- dc1394_camera_free_list (cameras);
- cameras = NULL;
-
- camerr = dc1394_video_get_supported_modes (camera, &modes);
- if (camerr != DC1394_SUCCESS) {
- GST_ELEMENT_ERROR (src, RESOURCE, FAILED, ("Error getting supported modes"),
- ("Error getting supported modes"));
- goto error;
- }
-
- for (i = modes.num - 1; i >= 0; i--) {
- int m = modes.modes[i];
-
- if (m < DC1394_VIDEO_MODE_EXIF) {
-
- GstStructure *gs = gst_structure_empty_new ("video");
-
- gst_structure_set (gs, "vmode", G_TYPE_INT, m, NULL);
-
- if (gst_dc1394_caps_set_format_vmode_caps (gs, m) < 0) {
- GST_ELEMENT_ERROR (src, STREAM, FAILED,
- ("attempt to set mode to %d failed", m),
- ("attempt to set mode to %d failed", m));
- goto error;
- } else {
-
- camerr = dc1394_video_get_supported_framerates (camera, m, &framerates);
- gst_dc1394_caps_set_framerate_list (gs, &framerates);
- gst_caps_append_structure (gcaps, gs);
-
- }
- } else {
- // FORMAT 7
- guint maxx, maxy;
- GstStructure *gs = gst_structure_empty_new ("video");
- dc1394color_codings_t colormodes;
- guint xunit, yunit;
-
- gst_structure_set (gs, "vmode", G_TYPE_INT, m, NULL);
-
- // Get the maximum frame size
- camerr = dc1394_format7_get_max_image_size (camera, m, &maxx, &maxy);
- if (camerr != DC1394_SUCCESS) {
- GST_ELEMENT_ERROR (src, RESOURCE, FAILED,
- ("Error getting format 7 max image size"),
- ("Error getting format 7 max image size"));
- goto error;
- }
- GST_LOG_OBJECT (src, "Format 7 maxx=%d maxy=%d", maxx, maxy);
-
- camerr = dc1394_format7_get_unit_size (camera, m, &xunit, &yunit);
- if (camerr != DC1394_SUCCESS) {
- GST_ELEMENT_ERROR (src, RESOURCE, FAILED,
- ("Error getting format 7 image unit size"),
- ("Error getting format 7 image unit size"));
- goto error;
- }
- GST_LOG_OBJECT (src, "Format 7 unitx=%d unity=%d", xunit, yunit);
-
- gst_dc1394_set_caps_framesize_range (gs, xunit, maxx, xunit,
- yunit, maxy, yunit);
-
- // note that format 7 has no concept of a framerate, so we pass the
- // full range
- gst_structure_set (gs,
- "framerate", GST_TYPE_FRACTION_RANGE, 0, 1, G_MAXINT, 1, NULL);
-
- // get the available color codings
- camerr = dc1394_format7_get_color_codings (camera, m, &colormodes);
- if (camerr != DC1394_SUCCESS) {
- GST_ELEMENT_ERROR (src, RESOURCE, FAILED,
- ("Error getting format 7 color modes"),
- ("Error getting format 7 color modes"));
- goto error;
- }
-
- for (j = 0; j < colormodes.num; j++) {
- GstStructure *newgs = gst_structure_copy (gs);
-
- gst_dc1394_set_caps_color (newgs, colormodes.codings[j]);
- GST_LOG_OBJECT (src, "Format 7 colormode set : %d",
- colormodes.codings[j]);
- // note that since there are multiple color modes, we append
- // multiple structures.
- gst_caps_append_structure (gcaps, newgs);
- }
- }
- }
-
- if (camera) {
- dc1394_camera_free (camera);
- }
-
- return gcaps;
-
-error:
-
- if (gcaps) {
- gst_caps_unref (gcaps);
- }
-
- if (cameras) {
- dc1394_camera_free_list (cameras);
- cameras = NULL;
- }
-
- if (camera) {
- dc1394_camera_free (camera);
- camera = NULL;
- }
-
- return NULL;
-}
-
-static gint
-gst_dc1394_framerate_frac_to_const (gint num, gint denom)
-{
- // frac must have been already initialized
- int retvalue = -1;
-
- if (num == 15 && denom == 8)
- retvalue = DC1394_FRAMERATE_1_875;
-
- if (num == 15 && denom == 4)
- retvalue = DC1394_FRAMERATE_3_75;
-
- if (num == 15 && denom == 2)
- retvalue = DC1394_FRAMERATE_7_5;
-
- if (num == 15 && denom == 1)
- retvalue = DC1394_FRAMERATE_15;
-
-
- if (num == 30 && denom == 1)
- retvalue = DC1394_FRAMERATE_30;
-
- if (num == 60 && denom == 1)
- retvalue = DC1394_FRAMERATE_60;
-
- return retvalue;
-}
-
-
-static gboolean
-gst_dc1394_open_cam_with_best_caps (GstDc1394 * src)
-{
- dc1394camera_list_t *cameras = NULL;
- gint err = 0;
- int framerateconst;
-
- GST_LOG_OBJECT (src, "Opening the camera!!!");
-
-
- if (dc1394_camera_enumerate (src->dc1394, &cameras) != DC1394_SUCCESS) {
- GST_ELEMENT_ERROR (src, RESOURCE, FAILED, ("Can't find cameras"),
- ("Can't find cameras"));
- goto error;
- }
-
- GST_LOG_OBJECT (src, "Found %d cameras", cameras->num);
-
- if (src->camnum > (cameras->num - 1)) {
- GST_ELEMENT_ERROR (src, RESOURCE, FAILED, ("Invalid camera number"),
- ("Invalid camera number"));
- goto error;
- }
-
- GST_LOG_OBJECT (src, "Opening camera : %d", src->camnum);
-
- src->camera =
- dc1394_camera_new_unit (src->dc1394, cameras->ids[src->camnum].guid,
- cameras->ids[src->camnum].unit);
-
- dc1394_camera_free_list (cameras);
- cameras = NULL;
-
- // figure out mode
- framerateconst = gst_dc1394_framerate_frac_to_const (src->rate_numerator,
- src->rate_denominator);
-
- GST_LOG_OBJECT (src, "The dma buffer queue size is %d buffers",
- src->bufsize);
-
- switch (src->iso_speed) {
- case 100:
- err = dc1394_video_set_iso_speed (src->camera, DC1394_ISO_SPEED_100);
- break;
- case 200:
- err = dc1394_video_set_iso_speed (src->camera, DC1394_ISO_SPEED_200);
- break;
- case 400:
- err = dc1394_video_set_iso_speed (src->camera, DC1394_ISO_SPEED_400);
- break;
- case 800:
- if (src->camera->bmode_capable > 0) {
- dc1394_video_set_operation_mode (src->camera,
- DC1394_OPERATION_MODE_1394B);
- err = dc1394_video_set_iso_speed (src->camera, DC1394_ISO_SPEED_800);
- }
- break;
- case 1600:
- if (src->camera->bmode_capable > 0) {
- dc1394_video_set_operation_mode (src->camera,
- DC1394_OPERATION_MODE_1394B);
- err = dc1394_video_set_iso_speed (src->camera, DC1394_ISO_SPEED_1600);
- }
- break;
- case 3200:
- if (src->camera->bmode_capable > 0) {
- dc1394_video_set_operation_mode (src->camera,
- DC1394_OPERATION_MODE_1394B);
- err = dc1394_video_set_iso_speed (src->camera, DC1394_ISO_SPEED_3200);
- }
- break;
- default:
- GST_ELEMENT_ERROR (src, RESOURCE, FAILED, ("Invalid ISO speed"),
- ("Invalid ISO speed"));
- goto error;
- break;
- }
-
- if (err != DC1394_SUCCESS) {
- GST_ELEMENT_ERROR (src, RESOURCE, FAILED, ("Could not set ISO speed"),
- ("Could not set ISO speed"));
- goto error;
- }
-
- GST_LOG_OBJECT (src, "Setting mode : %d", src->vmode);
- err = dc1394_video_set_mode (src->camera, src->vmode);
-
- if (err != DC1394_SUCCESS) {
- GST_ELEMENT_ERROR (src, RESOURCE, FAILED, ("Could not set video mode %d",
- src->vmode), ("Could not set video mode %d", src->vmode));
- goto error;
- }
-
- GST_LOG_OBJECT (src, "Setting framerate : %d", framerateconst);
- dc1394_video_set_framerate (src->camera, framerateconst);
-
- if (err != DC1394_SUCCESS) {
- GST_ELEMENT_ERROR (src, RESOURCE, FAILED, ("Could not set framerate to %d",
- framerateconst), ("Could not set framerate to %d", framerateconst));
- goto error;
- }
- // set any format-7 parameters if this is a format-7 mode
- if (src->vmode >= DC1394_VIDEO_MODE_FORMAT7_MIN &&
- src->vmode <= DC1394_VIDEO_MODE_FORMAT7_MAX) {
- // the big thing we care about right now is frame size
- err = dc1394_format7_set_image_size (src->camera, src->vmode,
- src->width, src->height);
- if (err != DC1394_SUCCESS) {
- GST_ELEMENT_ERROR (src, RESOURCE, FAILED,
- ("Could not set format 7 image size to %d x %d", src->width,
- src->height), ("Could not set format 7 image size to %d x %d",
- src->width, src->height));
-
- goto error;
- }
-
- }
- err = dc1394_capture_setup (src->camera, src->bufsize,
- DC1394_CAPTURE_FLAGS_DEFAULT);
- if (err != DC1394_SUCCESS) {
- GST_ELEMENT_ERROR (src, RESOURCE, FAILED, ("Error setting capture mode"),
- ("Error setting capture mode"));
- }
- if (err != DC1394_SUCCESS) {
- if (err == DC1394_NO_BANDWIDTH) {
- GST_LOG_OBJECT (src, "Capture setup_dma failed."
- "Trying to cleanup the iso_channels_and_bandwidth and retrying");
-
- // try to cleanup the bandwidth and retry
- err = dc1394_iso_release_all (src->camera);
- if (err != DC1394_SUCCESS) {
- GST_ELEMENT_ERROR (src, RESOURCE, FAILED,
- ("Could not cleanup bandwidth"), ("Could not cleanup bandwidth"));
- goto error;
- } else {
- err =
- dc1394_capture_setup (src->camera, src->bufsize,
- DC1394_CAPTURE_FLAGS_DEFAULT);
- if (err != DC1394_SUCCESS) {
- GST_ELEMENT_ERROR (src, RESOURCE, FAILED,
- ("unable to setup camera error %d", err),
- ("unable to setup camera error %d", err));
- goto error;
- }
- }
- } else {
- GST_ELEMENT_ERROR (src, RESOURCE, FAILED,
- ("unable to setup camera error %d", err),
- ("unable to setup camera error %d", err));
- goto error;
-
- }
- }
-
-
- return TRUE;
-
-error:
-
- if (src->camera) {
- dc1394_camera_free (src->camera);
- src->camera = NULL;
- }
-
- return FALSE;
-
-}
-
-
-gboolean
-gst_dc1394_change_camera_transmission (GstDc1394 * src, gboolean on)
-{
- dc1394switch_t status = DC1394_OFF;
- dc1394error_t err = DC1394_FAILURE;
- gint i = 0;
-
- g_return_val_if_fail (src->camera, FALSE);
-
- if (on) {
-
- status = dc1394_video_set_transmission (src->camera, DC1394_ON);
-
- i = 0;
- while (status == DC1394_OFF && i++ < 5) {
- g_usleep (50000);
- if (dc1394_video_get_transmission (src->camera,
- &status) != DC1394_SUCCESS) {
- if (status == DC1394_OFF) {
- GST_LOG_OBJECT (src, "camera is still off , retrying");
- }
- }
- }
-
- if (i == 5) {
- GST_ELEMENT_ERROR (src, RESOURCE, FAILED,
- ("Camera doesn't seem to want to turn on!"),
- ("Camera doesn't seem to want to turn on!"));
- return FALSE;
- }
-
- GST_LOG_OBJECT (src, "got transmision status ON");
-
- } else {
-
- if (dc1394_video_set_transmission (src->camera,
- DC1394_OFF) != DC1394_SUCCESS) {
- GST_ELEMENT_ERROR (src, RESOURCE, FAILED, ("Unable to stop transmision"),
- ("Unable to stop transmision"));
- return FALSE;
- }
-
- GST_LOG_OBJECT (src, "Stopping capture");
-
- err = dc1394_capture_stop (src->camera);
- if (err > 0) {
- GST_ELEMENT_ERROR (src, RESOURCE, FAILED, ("Capture stop error : %d ",
- err), ("Capture stop error : %d ", err));
- return FALSE;
- } else {
- GST_LOG_OBJECT (src, "Capture stoped successfully");
- }
- }
-
- return TRUE;
-}
-
-
-static gboolean
-plugin_init (GstPlugin * plugin)
-{
- GST_DEBUG_CATEGORY_INIT (dc1394_debug, "dc1394", 0, "DC1394 interface");
-
- return gst_element_register (plugin, "dc1394src", GST_RANK_NONE,
- GST_TYPE_DC1394);
-
-}
-
-
-GST_PLUGIN_DEFINE (GST_VERSION_MAJOR,
- GST_VERSION_MINOR,
- dc1394,
- "1394 IIDC Video Source",
- plugin_init, VERSION, GST_LICENSE, GST_PACKAGE_NAME, GST_PACKAGE_ORIGIN)
diff --git a/ext/dc1394/gstdc1394.h b/ext/dc1394/gstdc1394.h
deleted file mode 100644
index a27b1f8..0000000
--- a/ext/dc1394/gstdc1394.h
+++ /dev/null
@@ -1,81 +0,0 @@
-/* GStreamer
- * Copyright (C) <2006> Eric Jonas <jonas@mit.edu>
- * Copyright (C) <2006> Antoine Tremblay <hexa00@gmail.com>
- *
- * 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.
- */
-
-#ifndef __GST_DC1394_H__
-#define __GST_DC1394_H__
-
-#include <gst/gst.h>
-#include <gst/base/gstpushsrc.h>
-#include <dc1394/control.h>
-
-G_BEGIN_DECLS
-
-#define GST_TYPE_DC1394 \
- (gst_dc1394_get_type())
-#define GST_DC1394(obj) \
- (G_TYPE_CHECK_INSTANCE_CAST((obj),GST_TYPE_DC1394,GstDc1394))
-#define GST_DC1394_CLASS(klass) \
- (G_TYPE_CHECK_CLASS_CAST((klass),GST_TYPE_DC1394,GstDc1394))
-#define GST_IS_DC1394(obj) \
- (G_TYPE_CHECK_INSTANCE_TYPE((obj),GST_TYPE_DC1394))
-#define GST_IS_DC1394_CLASS(obj) \
- (G_TYPE_CHECK_CLASS_TYPE((klass),GST_TYPE_DC1394))
-
-typedef struct _GstDc1394 GstDc1394;
-typedef struct _GstDc1394Class GstDc1394Class;
-
-struct _GstDc1394 {
- GstPushSrc element;
-
- /* video state */
- gint width;
- gint height;
- gint vmode;
-
- gint bpp;
- gint rate_numerator;
- gint rate_denominator;
-
- /* private */
- gint64 timestamp_offset; /* base offset */
- GstClockTime running_time; /* total running time */
- gint64 n_frames; /* total frames sent */
- gint64 segment_start_frame;
- gint64 segment_end_frame;
- gboolean segment;
- gint camnum;
- gint bufsize;
- gint iso_speed;
-
- dc1394_t * dc1394;
- dc1394camera_t * camera;
-
- GstCaps *caps;
-};
-
-struct _GstDc1394Class {
- GstPushSrcClass parent_class;
-};
-
-GType gst_dc1394_get_type (void);
-
-G_END_DECLS
-
-#endif /* __GST_DC1394_H__ */
diff --git a/ext/dc1394/gstdc1394src.c b/ext/dc1394/gstdc1394src.c
new file mode 100644
index 0000000..3ab3026
--- /dev/null
+++ b/ext/dc1394/gstdc1394src.c
@@ -0,0 +1,1247 @@
+/* GStreamer
+ * Copyright (C) <2006> Eric Jonas <jonas@mit.edu>
+ * Copyright (C) <2006> Antoine Tremblay <hexa00@gmail.com>
+ *
+ * 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.
+ */
+
+/**
+ * SECTION:element-dc1394src
+ *
+ * Source for IIDC (Instrumentation & Industrial Digital Camera) firewire
+ * cameras. If several cameras are connected to the system, the desired one
+ * can be selected by its GUID and an optional unit number (most cameras are
+ * single unit and do not require it). The frame size, rate and format are set
+ * from capabilities. Although the IIDC specification includes a raw video
+ * mode, many cameras use mono video modes to capture in Bayer format.
+ * Thus, for each mono video mode supported by a camera, both gray raw and Bayer
+ * corresponding video formats are exposed in the capabilities.
+ * The Bayer pattern is left unspecified.
+ *
+ * <refsect2>
+ * <title>Example launch lines</title>
+ * |[
+ * gst-launch-1.0 -v dc1394src ! videoconvert ! autovideosink
+ * ]| Capture and display frames from the first camera available in the system.
+ * |[
+ * gst-launch-1.0 dc1394src guid=00074813004DF937 \
+ * ! "video/x-bayer,format=gbrg,width=1280,height=960,framerate=15/2" \
+ * ! bayer2rgb ! videoconvert ! autovideosink
+ * ]| Capture and display frames from a specific camera in the desired format.
+ * </refsect2>
+ */
+
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+#include "gstdc1394src.h"
+#include <gst/video/video.h>
+
+GST_DEBUG_CATEGORY_STATIC (dc1394_debug);
+#define GST_CAT_DEFAULT dc1394_debug
+
+
+enum
+{
+ PROP_0,
+ PROP_CAMERA_GUID,
+ PROP_CAMERA_UNIT,
+ PROP_ISO_SPEED,
+ PROP_DMA_BUFFER_SIZE
+};
+
+
+#define GST_TYPE_DC1394_ISO_SPEED (gst_dc1394_iso_speed_get_type ())
+static GType
+gst_dc1394_iso_speed_get_type (void)
+{
+ static const GEnumValue iso_speeds[] = {
+ {100, "DC1394 ISO speed 100", "100"},
+ {200, "DC1394 ISO speed 200", "200"},
+ {400, "DC1394 ISO speed 400", "400"},
+ {800, "DC1394 ISO speed 800", "800"},
+ {1600, "DC1394 ISO speed 1600", "1600"},
+ {3200, "DC1394 ISO speed 3200", "3200"},
+ {0, NULL, NULL}
+ };
+ static GType type = 0;
+
+ if (!type) {
+ type = g_enum_register_static ("GstDC1394ISOSpeed", iso_speeds);
+ }
+ return type;
+}
+
+
+#define gst_dc1394_src_parent_class parent_class
+G_DEFINE_TYPE (GstDC1394Src, gst_dc1394_src, GST_TYPE_PUSH_SRC);
+
+static void gst_dc1394_src_set_property (GObject * object, guint prop_id,
+ const GValue * value, GParamSpec * pspec);
+static void gst_dc1394_src_get_property (GObject * object, guint prop_id,
+ GValue * value, GParamSpec * pspec);
+static gboolean gst_dc1394_src_start (GstBaseSrc * bsrc);
+static gboolean gst_dc1394_src_stop (GstBaseSrc * bsrc);
+static gboolean gst_dc1394_src_set_caps (GstBaseSrc * bsrc, GstCaps * caps);
+static GstCaps *gst_dc1394_src_get_caps (GstBaseSrc * bsrc, GstCaps * filter);
+static GstFlowReturn gst_dc1394_src_create (GstPushSrc * psrc,
+ GstBuffer ** buffer);
+
+static void gst_dc1394_src_set_prop_camera_guid (GstDC1394Src * src,
+ const gchar * guid);
+static gchar *gst_dc1394_src_get_prop_camera_guid (GstDC1394Src * src);
+static void gst_dc1394_src_set_prop_camera_unit (GstDC1394Src * src, gint unit);
+static gint gst_dc1394_src_get_prop_camera_unit (GstDC1394Src * src);
+static void gst_dc1394_src_set_prop_iso_speed (GstDC1394Src * src, guint speed);
+static guint gst_dc1394_src_get_prop_iso_speed (GstDC1394Src * src);
+static void gst_dc1394_src_set_prop_dma_buffer_size (GstDC1394Src * src,
+ guint size);
+static guint gst_dc1394_src_get_prop_dma_buffer_size (GstDC1394Src * src);
+static gboolean gst_dc1394_src_open_cam (GstDC1394Src * src);
+static void gst_dc1394_src_close_cam (GstDC1394Src * src);
+static gboolean gst_dc1394_src_start_cam (GstDC1394Src * src);
+static gboolean gst_dc1394_src_stop_cam (GstDC1394Src * src);
+static gboolean gst_dc1394_src_set_cam_caps (GstDC1394Src * src,
+ GstCaps * caps);
+static GstCaps *gst_dc1394_src_get_cam_caps (GstDC1394Src * src);
+static GstCaps *gst_dc1394_src_get_all_caps (void);
+
+static GstCaps *gst_dc1394_src_build_caps (const dc1394color_codings_t *
+ supported_codings, const dc1394framerates_t * supported_rates,
+ guint width_min, guint width_max, guint width_step, guint height_min,
+ guint height_max, guint height_step);
+static gboolean gst_dc1394_src_parse_caps (const GstCaps * caps,
+ dc1394color_codings_t * color_codings, dc1394framerate_t * rate,
+ gdouble * rate_decimal, guint * width, guint * height);
+
+static void
+gst_dc1394_src_class_init (GstDC1394SrcClass * klass)
+{
+ GObjectClass *gobject_class;
+ GstElementClass *element_class;
+ GstBaseSrcClass *basesrc_class;
+ GstPushSrcClass *pushsrc_class;
+
+ gobject_class = G_OBJECT_CLASS (klass);
+ element_class = GST_ELEMENT_CLASS (klass);
+ basesrc_class = GST_BASE_SRC_CLASS (klass);
+ pushsrc_class = GST_PUSH_SRC_CLASS (klass);
+
+ gobject_class->set_property = gst_dc1394_src_set_property;
+ gobject_class->get_property = gst_dc1394_src_get_property;
+ g_object_class_install_property (gobject_class, PROP_CAMERA_GUID,
+ g_param_spec_string ("guid", "Camera GUID",
+ "The hexadecimal representation of the GUID of the camera"
+ " (use first camera available if null)",
+ NULL,
+ G_PARAM_STATIC_STRINGS | G_PARAM_READWRITE |
+ GST_PARAM_MUTABLE_READY));
+ g_object_class_install_property (gobject_class, PROP_CAMERA_UNIT,
+ g_param_spec_int ("unit", "Camera unit",
+ "The unit number of the camera (-1 if no unit number is used)",
+ -1, G_MAXINT, -1,
+ G_PARAM_STATIC_STRINGS | G_PARAM_READWRITE |
+ GST_PARAM_MUTABLE_READY));
+ g_object_class_install_property (gobject_class, PROP_ISO_SPEED,
+ g_param_spec_enum ("iso", "ISO bandwidth",
+ "The ISO bandwidth in Mbps",
+ GST_TYPE_DC1394_ISO_SPEED, 400,
+ G_PARAM_STATIC_STRINGS | G_PARAM_READWRITE |
+ GST_PARAM_MUTABLE_READY));
+ g_object_class_install_property (gobject_class, PROP_DMA_BUFFER_SIZE,
+ g_param_spec_uint ("dma", "DMA ring buffer size",
+ "The number of frames in the Direct Memory Access ring buffer",
+ 1, G_MAXUINT, 10,
+ G_PARAM_STATIC_STRINGS | G_PARAM_READWRITE |
+ GST_PARAM_MUTABLE_READY));
+
+ gst_element_class_set_static_metadata (element_class,
+ "1394 IIDC Video Source", "Source/Video",
+ "libdc1394 based source for IIDC cameras",
+ "Antoine Tremblay <hexa00@gmail.com>");
+ gst_element_class_add_pad_template (element_class,
+ gst_pad_template_new ("src", GST_PAD_SRC, GST_PAD_ALWAYS,
+ gst_dc1394_src_get_all_caps ()));
+
+ basesrc_class->start = GST_DEBUG_FUNCPTR (gst_dc1394_src_start);
+ basesrc_class->stop = GST_DEBUG_FUNCPTR (gst_dc1394_src_stop);
+ basesrc_class->set_caps = GST_DEBUG_FUNCPTR (gst_dc1394_src_set_caps);
+ basesrc_class->get_caps = GST_DEBUG_FUNCPTR (gst_dc1394_src_get_caps);
+
+ pushsrc_class->create = GST_DEBUG_FUNCPTR (gst_dc1394_src_create);
+}
+
+
+static void
+gst_dc1394_src_init (GstDC1394Src * src)
+{
+ src->guid = -1;
+ src->unit = -1;
+ src->iso_speed = DC1394_ISO_SPEED_400;
+ src->dma_buffer_size = 10;
+ src->dc1394 = NULL;
+ src->camera = NULL;
+ src->caps = NULL;
+
+ gst_base_src_set_live (GST_BASE_SRC (src), TRUE);
+ gst_base_src_set_format (GST_BASE_SRC (src), GST_FORMAT_TIME);
+ gst_base_src_set_do_timestamp (GST_BASE_SRC (src), TRUE);
+}
+
+
+static void
+gst_dc1394_src_get_property (GObject * object, guint prop_id, GValue * value,
+ GParamSpec * pspec)
+{
+ GstDC1394Src *src;
+
+ src = GST_DC1394_SRC (object);
+ switch (prop_id) {
+ case PROP_CAMERA_GUID:
+ g_value_take_string (value, gst_dc1394_src_get_prop_camera_guid (src));
+ break;
+ case PROP_CAMERA_UNIT:
+ g_value_set_int (value, gst_dc1394_src_get_prop_camera_unit (src));
+ break;
+ case PROP_ISO_SPEED:
+ g_value_set_enum (value, gst_dc1394_src_get_prop_iso_speed (src));
+ break;
+ case PROP_DMA_BUFFER_SIZE:
+ g_value_set_uint (value, gst_dc1394_src_get_prop_dma_buffer_size (src));
+ break;
+ default:
+ G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+ break;
+ }
+}
+
+
+static void
+gst_dc1394_src_set_property (GObject * object,
+ guint prop_id, const GValue * value, GParamSpec * pspec)
+{
+ GstDC1394Src *src;
+
+ src = GST_DC1394_SRC (object);
+ switch (prop_id) {
+ case PROP_CAMERA_GUID:
+ gst_dc1394_src_set_prop_camera_guid (src, g_value_get_string (value));
+ break;
+ case PROP_CAMERA_UNIT:
+ gst_dc1394_src_set_prop_camera_unit (src, g_value_get_int (value));
+ break;
+ case PROP_ISO_SPEED:
+ gst_dc1394_src_set_prop_iso_speed (src, g_value_get_enum (value));
+ break;
+ case PROP_DMA_BUFFER_SIZE:
+ gst_dc1394_src_set_prop_dma_buffer_size (src, g_value_get_uint (value));
+ break;
+ default:
+ G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+ break;
+ }
+}
+
+
+static gboolean
+gst_dc1394_src_start (GstBaseSrc * bsrc)
+{
+ GstDC1394Src *src;
+
+ src = GST_DC1394_SRC (bsrc);
+ return gst_dc1394_src_open_cam (src);
+}
+
+
+static gboolean
+gst_dc1394_src_stop (GstBaseSrc * bsrc)
+{
+ GstDC1394Src *src;
+
+ src = GST_DC1394_SRC (bsrc);
+ if (!gst_dc1394_src_stop_cam (src))
+ return FALSE;
+ gst_dc1394_src_close_cam (src);
+ return TRUE;
+}
+
+
+static GstCaps *
+gst_dc1394_src_get_caps (GstBaseSrc * bsrc, GstCaps * filter)
+{
+ GstDC1394Src *src;
+ GstCaps *caps, *ret;
+
+ src = GST_DC1394_SRC (bsrc);
+ if (src->camera) {
+ caps = gst_dc1394_src_get_cam_caps (src);
+ } else {
+ caps = gst_dc1394_src_get_all_caps ();
+ }
+ if (caps && filter) {
+ ret = gst_caps_intersect_full (filter, caps, GST_CAPS_INTERSECT_FIRST);
+ gst_caps_unref (caps);
+ } else {
+ ret = caps;
+ }
+ return ret;
+}
+
+
+static gboolean
+gst_dc1394_src_set_caps (GstBaseSrc * bsrc, GstCaps * caps)
+{
+ GstDC1394Src *src;
+
+ src = GST_DC1394_SRC (bsrc);
+ return gst_dc1394_src_stop_cam (src)
+ && gst_dc1394_src_set_cam_caps (src, caps)
+ && gst_dc1394_src_start_cam (src);
+}
+
+
+static GstFlowReturn
+gst_dc1394_src_create (GstPushSrc * psrc, GstBuffer ** obuf)
+{
+ GstDC1394Src *src;
+ GstBuffer *buffer;
+ dc1394video_frame_t *frame;
+ dc1394error_t ret;
+
+ src = GST_DC1394_SRC (psrc);
+ buffer = NULL;
+ ret = dc1394_capture_dequeue (src->camera, DC1394_CAPTURE_POLICY_WAIT,
+ &frame);
+ if (ret != DC1394_SUCCESS) {
+ GST_ELEMENT_ERROR (src, RESOURCE, READ, (NULL),
+ ("Could not dequeue frame: %s.", dc1394_error_get_string (ret)));
+ goto error;
+ }
+ /*
+ * TODO: We could create the buffer by wrapping the image bytes in the frame
+ * (enqueing the frame in the notify function) to save the copy operation.
+ * It will only work if all the buffers are disposed before closing the camera
+ * when state changes from PAUSED to READY.
+ */
+ buffer = gst_buffer_new_allocate (NULL, frame->image_bytes, NULL);
+ gst_buffer_fill (buffer, 0, frame->image, frame->image_bytes);
+ /*
+ * TODO: There is a field timestamp in the frame structure,
+ * It is not sure if it could be used as PTS or DTS:
+ * we are not sure if it comes from a monotonic clock,
+ * and it seems to be left undefined under MS Windows.
+ */
+ ret = dc1394_capture_enqueue (src->camera, frame);
+ if (ret != DC1394_SUCCESS) {
+ GST_ELEMENT_WARNING (src, RESOURCE, READ, (NULL),
+ ("Could not enqueue frame: %s.", dc1394_error_get_string (ret)));
+ }
+ *obuf = buffer;
+ return GST_FLOW_OK;
+
+error:
+ if (buffer)
+ gst_buffer_unref (buffer);
+ return GST_FLOW_ERROR;
+}
+
+
+static void
+gst_dc1394_src_set_prop_camera_guid (GstDC1394Src * src, const gchar * guid)
+{
+ gchar *end;
+
+ if (!guid) {
+ GST_DEBUG_OBJECT (src, "Null camera GUID value: %s.",
+ "first camera available will be used");
+ src->guid = -1;
+ return;
+ }
+ errno = 0;
+ src->guid = g_ascii_strtoull (guid, &end, 16);
+ if (errno == ERANGE || end == guid || *end != '\0') {
+ GST_ERROR_OBJECT (src, "Invalid camera GUID value: %s.", guid);
+ return;
+ }
+}
+
+
+static gchar *
+gst_dc1394_src_get_prop_camera_guid (GstDC1394Src * src)
+{
+ if (src->guid == -1) {
+ return NULL;
+ }
+ return g_strdup_printf ("%016" G_GINT64_MODIFIER "X", src->guid);
+}
+
+
+static void
+gst_dc1394_src_set_prop_camera_unit (GstDC1394Src * src, gint unit)
+{
+ src->unit = unit;
+}
+
+
+static gint
+gst_dc1394_src_get_prop_camera_unit (GstDC1394Src * src)
+{
+ return src->unit;
+}
+
+
+static void
+gst_dc1394_src_set_prop_iso_speed (GstDC1394Src * src, guint speed)
+{
+ switch (speed) {
+ case 100:
+ src->iso_speed = DC1394_ISO_SPEED_100;
+ break;
+ case 200:
+ src->iso_speed = DC1394_ISO_SPEED_200;
+ break;
+ case 400:
+ src->iso_speed = DC1394_ISO_SPEED_400;
+ break;
+ case 800:
+ src->iso_speed = DC1394_ISO_SPEED_800;
+ break;
+ case 1600:
+ src->iso_speed = DC1394_ISO_SPEED_1600;
+ break;
+ case 3200:
+ src->iso_speed = DC1394_ISO_SPEED_3200;
+ break;
+ default:
+ GST_ERROR_OBJECT (src, "Invalid ISO speed value: %d.", speed);
+ }
+}
+
+
+static guint
+gst_dc1394_src_get_prop_iso_speed (GstDC1394Src * src)
+{
+ switch (src->iso_speed) {
+ case DC1394_ISO_SPEED_100:
+ return 100;
+ case DC1394_ISO_SPEED_200:
+ return 200;
+ case DC1394_ISO_SPEED_400:
+ return 400;
+ case DC1394_ISO_SPEED_800:
+ return 800;
+ case DC1394_ISO_SPEED_1600:
+ return 1600;
+ case DC1394_ISO_SPEED_3200:
+ return 3200;
+ default: /* never reached */
+ return DC1394_ISO_SPEED_MIN - 1;
+ }
+}
+
+
+static void
+gst_dc1394_src_set_prop_dma_buffer_size (GstDC1394Src * src, guint size)
+{
+ src->dma_buffer_size = size;
+}
+
+
+static guint
+gst_dc1394_src_get_prop_dma_buffer_size (GstDC1394Src * src)
+{
+ return src->dma_buffer_size;
+}
+
+
+static gboolean
+gst_dc1394_src_open_cam (GstDC1394Src * src)
+{
+ dc1394camera_list_t *cameras;
+ dc1394error_t ret;
+ int number;
+ uint64_t guid;
+ int unit, i;
+
+ src->dc1394 = dc1394_new ();
+ if (!src->dc1394) {
+ GST_ELEMENT_ERROR (src, LIBRARY, INIT, (NULL),
+ ("Could not initialize dc1394 library."));
+ goto error;
+ }
+
+ number = -1;
+ guid = -1;
+ unit = -1;
+ ret = dc1394_camera_enumerate (src->dc1394, &cameras);
+ if (ret != DC1394_SUCCESS) {
+ GST_ELEMENT_ERROR (src, LIBRARY, FAILED, (NULL),
+ ("Could not enumerate cameras: %s.", dc1394_error_get_string (ret)));
+ goto error;
+ }
+ for (i = 0; i < cameras->num; i++) {
+ GST_DEBUG_OBJECT (src, "Camera %2d is %016" G_GINT64_MODIFIER "X %d.",
+ i, cameras->ids[i].guid, cameras->ids[i].unit);
+ if ((src->guid == -1 || src->guid == cameras->ids[i].guid) &&
+ (src->unit == -1 || src->unit == cameras->ids[i].unit)) {
+ number = i;
+ guid = cameras->ids[i].guid;
+ unit = cameras->ids[i].unit;
+ }
+ }
+ dc1394_camera_free_list (cameras);
+ if (number < 0) {
+ if (src->guid == -1) {
+ GST_ELEMENT_ERROR (src, RESOURCE, NOT_FOUND, (NULL),
+ ("No cameras found."));
+ } else {
+ GST_ELEMENT_ERROR (src, RESOURCE, NOT_FOUND, (NULL),
+ ("Camera %016" G_GINT64_MODIFIER "X %d not found.",
+ src->guid, src->unit));
+ }
+ goto error;
+ }
+
+ GST_DEBUG_OBJECT (src, "Open camera %016" G_GINT64_MODIFIER "X %d.",
+ guid, unit);
+ src->camera = dc1394_camera_new_unit (src->dc1394, guid, unit);
+ if (!src->camera) {
+ GST_ELEMENT_ERROR (src, RESOURCE, OPEN_READ_WRITE, (NULL),
+ ("Could not open camera %016" G_GINT64_MODIFIER "X %d.", guid, unit));
+ goto error;
+ }
+ GST_DEBUG_OBJECT (src,
+ "Camera %016" G_GINT64_MODIFIER "X %d opened: \"%s %s\".",
+ src->camera->guid, src->camera->unit,
+ src->camera->vendor, src->camera->model);
+
+ if (src->iso_speed > DC1394_ISO_SPEED_400) {
+ ret = dc1394_video_set_operation_mode (src->camera,
+ DC1394_OPERATION_MODE_1394B);
+ if (ret != DC1394_SUCCESS) {
+ GST_ELEMENT_ERROR (src, RESOURCE, SETTINGS, (NULL),
+ ("Could not set 1394B operation mode: %s.",
+ dc1394_error_get_string (ret)));
+ goto error;
+ }
+ }
+ ret = dc1394_video_set_iso_speed (src->camera, src->iso_speed);
+ if (ret != DC1394_SUCCESS) {
+ GST_ELEMENT_ERROR (src, RESOURCE, SETTINGS, (NULL),
+ ("Could not set ISO speed %d: %s.", src->iso_speed,
+ dc1394_error_get_string (ret)));
+ goto error;
+ }
+
+ return TRUE;
+
+error:
+ if (src->camera) {
+ dc1394_camera_free (src->camera);
+ src->camera = NULL;
+ }
+ if (src->dc1394) {
+ dc1394_free (src->dc1394);
+ src->dc1394 = NULL;
+ }
+ return FALSE;
+}
+
+
+static void
+gst_dc1394_src_close_cam (GstDC1394Src * src)
+{
+ GST_DEBUG_OBJECT (src,
+ "Close camera %016" G_GINT64_MODIFIER "X %d: \"%s %s\".",
+ src->camera->guid, src->camera->unit,
+ src->camera->vendor, src->camera->model);
+ if (src->caps) {
+ gst_caps_unref (src->caps);
+ src->caps = NULL;
+ }
+ dc1394_camera_free (src->camera);
+ src->camera = NULL;
+ dc1394_free (src->dc1394);
+ src->dc1394 = NULL;
+ GST_DEBUG_OBJECT (src, "Camera closed.");
+}
+
+
+static gboolean
+gst_dc1394_src_start_cam (GstDC1394Src * src)
+{
+ dc1394error_t ret;
+ dc1394switch_t status;
+ guint trials;
+
+ GST_DEBUG_OBJECT (src, "Setup capture with a DMA buffer of %d frames",
+ src->dma_buffer_size);
+ ret = dc1394_capture_setup (src->camera, src->dma_buffer_size,
+ DC1394_CAPTURE_FLAGS_DEFAULT);
+ if (ret == DC1394_NO_BANDWIDTH) {
+ GST_DEBUG_OBJECT (src,
+ "Could not setup capture with available ISO bandwidth,"
+ "releasing channels and bandwidth and retrying...");
+ ret = dc1394_iso_release_all (src->camera);
+ if (ret != DC1394_SUCCESS) {
+ GST_ELEMENT_WARNING (src, RESOURCE, FAILED, (NULL),
+ ("Could not release ISO channels and bandwidth: %s",
+ dc1394_error_get_string (ret)));
+ }
+ ret = dc1394_capture_setup (src->camera, src->dma_buffer_size,
+ DC1394_CAPTURE_FLAGS_DEFAULT);
+ }
+ if (ret != DC1394_SUCCESS) {
+ GST_ELEMENT_ERROR (src, RESOURCE, FAILED, (NULL),
+ ("Could not setup capture: %s", dc1394_error_get_string (ret)));
+ goto error_capture;
+ }
+
+ /*
+ * TODO: dc1394_capture_setup/stop can start/stop the transmission
+ * when called with DC1394_CAPTURE_FLAGS_AUTO_ISO in the flags.
+ * The repeated trials check is a leftover of the original code,
+ * and might not be needed.
+ */
+ GST_DEBUG_OBJECT (src, "Enable camera transmission.");
+ ret = dc1394_video_set_transmission (src->camera, DC1394_ON);
+ if (ret != DC1394_SUCCESS) {
+ GST_ELEMENT_ERROR (src, RESOURCE, FAILED, (NULL),
+ ("Could not set transmission status: %s.",
+ dc1394_error_get_string (ret)));
+ goto error_transmission;
+ }
+ ret = dc1394_video_get_transmission (src->camera, &status);
+ for (trials = 10;
+ (trials > 0) && !(ret == DC1394_SUCCESS && status == DC1394_ON);
+ trials--) {
+ GST_DEBUG_OBJECT (src,
+ "Wait for camera to start transmission (%d trials left).", trials);
+ g_usleep (50000);
+ ret = dc1394_video_get_transmission (src->camera, &status);
+ }
+ if (!(ret == DC1394_SUCCESS && status == DC1394_ON)) {
+ GST_ELEMENT_ERROR (src, RESOURCE, FAILED, (NULL),
+ ("Could not get positive transmission status: %s.",
+ dc1394_error_get_string (ret)));
+ goto error_transmission;
+ }
+
+ GST_DEBUG_OBJECT (src, "Capture successfully started.");
+ return TRUE;
+
+error_transmission:
+ ret = dc1394_capture_stop (src->camera);
+ if (ret != DC1394_SUCCESS) {
+ GST_ELEMENT_WARNING (src, RESOURCE, FAILED, (NULL),
+ ("Could not stop capture: %s.", dc1394_error_get_string (ret)));
+ }
+error_capture:
+ return FALSE;
+}
+
+
+static gboolean
+gst_dc1394_src_stop_cam (GstDC1394Src * src)
+{
+ dc1394error_t ret;
+ dc1394switch_t status;
+ guint trials;
+
+ /*
+ * TODO: dc1394_capture_setup/stop can start/stop the transmission
+ * when called with DC1394_CAPTURE_FLAGS_AUTO_ISO in the flags.
+ * The repeated trials check is a leftover of the original code,
+ * and might not be needed.
+ */
+ GST_DEBUG_OBJECT (src, "Disable camera transmission.");
+ ret = dc1394_video_set_transmission (src->camera, DC1394_OFF);
+ if (ret != DC1394_SUCCESS) {
+ GST_ELEMENT_ERROR (src, RESOURCE, FAILED, (NULL),
+ ("Could not set transmission status: %s.",
+ dc1394_error_get_string (ret)));
+ return FALSE;
+ }
+ ret = dc1394_video_get_transmission (src->camera, &status);
+ for (trials = 10;
+ (trials > 0) && !(ret == DC1394_SUCCESS && status == DC1394_OFF);
+ trials--) {
+ GST_DEBUG_OBJECT (src,
+ "Wait for camera to stop transmission (%d trials left).", trials);
+ g_usleep (50000);
+ ret = dc1394_video_get_transmission (src->camera, &status);
+ }
+ if (!(ret == DC1394_SUCCESS && status == DC1394_OFF)) {
+ GST_WARNING_OBJECT (src,
+ "Could not get negative transmission status: %s.",
+ dc1394_error_get_string (ret));
+ }
+
+ GST_DEBUG_OBJECT (src, "Clear capture resources.");
+ ret = dc1394_capture_stop (src->camera);
+ if (ret != DC1394_SUCCESS && ret != DC1394_CAPTURE_IS_NOT_SET) {
+ GST_ELEMENT_ERROR (src, RESOURCE, FAILED, (NULL),
+ ("Could not clear capture: %s.", dc1394_error_get_string (ret)));
+ return FALSE;
+ }
+
+ switch (ret) {
+ case DC1394_CAPTURE_IS_NOT_SET:
+ GST_DEBUG_OBJECT (src, "Capture was not set up.");
+ break;
+ case DC1394_SUCCESS:
+ GST_DEBUG_OBJECT (src, "Capture successfully stopped.");
+ break;
+ default:
+ break;
+ }
+
+ return TRUE;
+}
+
+
+static gboolean
+gst_dc1394_src_set_cam_caps (GstDC1394Src * src, GstCaps * caps)
+{
+ GstCaps *mode_caps;
+ gboolean ok, supported;
+ dc1394video_modes_t supported_modes;
+ dc1394video_mode_t mode;
+ dc1394color_codings_t supported_codings;
+ dc1394color_coding_t coding;
+ dc1394framerates_t supported_rates;
+ dc1394framerate_t rate;
+ double rate_decimal;
+ uint64_t total_bytes;
+ uint32_t width, width_step, height, height_step;
+ guint m, c;
+
+ ok = dc1394_video_get_supported_modes (src->camera,
+ &supported_modes) == DC1394_SUCCESS;
+ if (!ok) {
+ GST_ELEMENT_ERROR (src, RESOURCE, SETTINGS, (NULL),
+ ("Could not get supported modes."));
+ goto error;
+ }
+ supported = FALSE;
+ for (m = 0; m < supported_modes.num && !supported; m++) {
+ mode = supported_modes.modes[m];
+ mode_caps = gst_caps_new_empty ();
+ if (dc1394_is_video_mode_scalable (mode)) {
+ ok &= dc1394_format7_get_color_codings (src->camera, mode,
+ &supported_codings) == DC1394_SUCCESS;
+ ok &= dc1394_format7_get_max_image_size (src->camera, mode,
+ &width, &height) == DC1394_SUCCESS;
+ ok &= dc1394_format7_get_unit_size (src->camera, mode,
+ &width_step, &height_step) == DC1394_SUCCESS;
+ } else {
+ ok &= dc1394_get_color_coding_from_video_mode (src->camera, mode,
+ &coding) == DC1394_SUCCESS;
+ ok &= dc1394_get_image_size_from_video_mode (src->camera, mode,
+ &width, &height) == DC1394_SUCCESS;
+ ok &= dc1394_video_get_supported_framerates (src->camera, mode,
+ &supported_rates) == DC1394_SUCCESS;
+ }
+ if (!ok) {
+ GST_ELEMENT_WARNING (src, RESOURCE, SETTINGS, (NULL),
+ ("Could not get video mode %d parameters.", mode));
+ } else if (dc1394_is_video_mode_scalable (mode)) {
+ gst_caps_append (mode_caps,
+ gst_dc1394_src_build_caps (&supported_codings, NULL,
+ width_step, width, width_step, height_step, height, height_step));
+ } else {
+ supported_codings.num = 1;
+ supported_codings.codings[0] = coding;
+ gst_caps_append (mode_caps,
+ gst_dc1394_src_build_caps (&supported_codings, &supported_rates,
+ width, width, 1, height, height, 1));
+ }
+ supported = gst_caps_can_intersect (caps, mode_caps);
+ gst_caps_unref (mode_caps);
+ }
+ ok = supported && gst_dc1394_src_parse_caps (caps, &supported_codings, &rate,
+ &rate_decimal, &width, &height);
+ if (!ok) {
+ GST_ELEMENT_ERROR (src, RESOURCE, SETTINGS, (NULL),
+ ("Unsupported caps %" GST_PTR_FORMAT, caps));
+ goto error;
+ }
+ GST_DEBUG_OBJECT (src, "Set video mode %d.", mode);
+ ok = dc1394_video_set_mode (src->camera, mode) == DC1394_SUCCESS;
+ if (!ok) {
+ GST_ELEMENT_ERROR (src, RESOURCE, SETTINGS, (NULL),
+ ("Could not set video mode %d.", mode));
+ goto error;
+ }
+ if (dc1394_is_video_mode_scalable (mode)) {
+ ok = FALSE;
+ for (c = 0; c < supported_codings.num && !ok; c++) {
+ coding = supported_codings.codings[c];
+ GST_DEBUG_OBJECT (src,
+ "Try format7 video mode %d with coding %d, size %d %d, and rate %.4f Hz.",
+ mode, coding, width, height, rate_decimal);
+ ok = (dc1394_format7_set_color_coding (src->camera, mode,
+ coding) == DC1394_SUCCESS)
+ && (dc1394_format7_set_image_size (src->camera, mode,
+ width, height) == DC1394_SUCCESS)
+ && (dc1394_format7_get_total_bytes (src->camera, mode,
+ &total_bytes) == DC1394_SUCCESS)
+ && (dc1394_format7_set_packet_size (src->camera, mode,
+ total_bytes * rate_decimal * 0.000125) == DC1394_SUCCESS);
+ }
+ } else {
+ GST_DEBUG_OBJECT (src, "Set fixed video mode %d rate %.4f Hz (%d).",
+ mode, rate_decimal, rate);
+ ok = dc1394_video_set_framerate (src->camera, rate) == DC1394_SUCCESS;
+ }
+ /* TODO: check feature framerate */
+ if (!ok) {
+ GST_ELEMENT_ERROR (src, RESOURCE, SETTINGS, (NULL),
+ ("Could not set video mode %d parameters.", mode));
+ goto error;
+ }
+ return TRUE;
+
+error:
+ return FALSE;
+}
+
+
+GstCaps *
+gst_dc1394_src_get_cam_caps (GstDC1394Src * src)
+{
+ gboolean ok;
+ dc1394video_modes_t supported_modes;
+ dc1394video_mode_t mode;
+ dc1394color_codings_t supported_codings;
+ dc1394color_coding_t coding;
+ dc1394framerates_t supported_rates;
+ uint32_t width, width_step, height, height_step;
+ guint m;
+
+ if (src->caps)
+ return gst_caps_ref (src->caps);
+
+ ok = dc1394_video_get_supported_modes (src->camera,
+ &supported_modes) == DC1394_SUCCESS;
+ if (!ok) {
+ GST_ELEMENT_ERROR (src, RESOURCE, SETTINGS, (NULL),
+ ("Could not get supported modes."));
+ return NULL;
+ }
+
+ src->caps = gst_caps_new_empty ();
+ for (m = 0; m < supported_modes.num; m++) {
+ mode = supported_modes.modes[m];
+ if (dc1394_is_video_mode_scalable (mode)) {
+ ok &= dc1394_format7_get_color_codings (src->camera, mode,
+ &supported_codings) == DC1394_SUCCESS;
+ ok &= dc1394_format7_get_max_image_size (src->camera, mode,
+ &width, &height) == DC1394_SUCCESS;
+ ok &= dc1394_format7_get_unit_size (src->camera, mode,
+ &width_step, &height_step) == DC1394_SUCCESS;
+ if (!ok) {
+ GST_ELEMENT_WARNING (src, RESOURCE, SETTINGS, (NULL),
+ ("Could not get format7 video mode %d parameters.", mode));
+ } else {
+ gst_caps_append (src->caps,
+ gst_dc1394_src_build_caps (&supported_codings, NULL,
+ width_step, width, width_step, height_step, height,
+ height_step));
+ }
+ } else {
+ ok &= dc1394_get_image_size_from_video_mode (src->camera, mode,
+ &width, &height) == DC1394_SUCCESS;
+ ok &= dc1394_video_get_supported_framerates (src->camera, mode,
+ &supported_rates) == DC1394_SUCCESS;
+ ok &= dc1394_get_color_coding_from_video_mode (src->camera, mode,
+ &coding) == DC1394_SUCCESS;
+ if (!ok) {
+ GST_ELEMENT_WARNING (src, RESOURCE, SETTINGS, (NULL),
+ ("Could not get fixed video mode %d parameters.", mode));
+ } else {
+ supported_codings.num = 1;
+ supported_codings.codings[0] = coding;
+ gst_caps_append (src->caps,
+ gst_dc1394_src_build_caps (&supported_codings, &supported_rates,
+ width, width, 1, height, height, 1));
+ }
+ }
+ }
+ GST_DEBUG_OBJECT (src, "Camera capabilities: \"%" GST_PTR_FORMAT "\".",
+ src->caps);
+ return gst_caps_ref (src->caps);
+}
+
+
+static GstCaps *
+gst_dc1394_src_get_all_caps (void)
+{
+ GstCaps *caps;
+ dc1394color_coding_t coding;
+ dc1394color_codings_t video_codings;
+ uint32_t width, height;
+
+ const dc1394color_codings_t supported_codings = { 7, {
+ /* DC1394_COLOR_CODING_RGB16S, DC1394_COLOR_CODING_RGB16, */
+ DC1394_COLOR_CODING_RGB8, DC1394_COLOR_CODING_YUV444,
+ DC1394_COLOR_CODING_YUV422, DC1394_COLOR_CODING_YUV411,
+ /* DC1394_COLOR_CODING_RAW16, DC1394_COLOR_CODING_MONO16S */
+ DC1394_COLOR_CODING_MONO16, DC1394_COLOR_CODING_RAW8,
+ DC1394_COLOR_CODING_MONO8}
+ };
+ const dc1394framerates_t all_rates = { 8, {
+ DC1394_FRAMERATE_1_875, DC1394_FRAMERATE_3_75, DC1394_FRAMERATE_7_5,
+ DC1394_FRAMERATE_15, DC1394_FRAMERATE_30, DC1394_FRAMERATE_60,
+ DC1394_FRAMERATE_120, DC1394_FRAMERATE_240}
+ };
+ dc1394video_mode_t mode;
+
+ caps = gst_caps_new_empty ();
+ /* First caps for fixed video modes */
+ for (mode = DC1394_VIDEO_MODE_MIN; mode < DC1394_VIDEO_MODE_EXIF; mode++) {
+ dc1394_get_image_size_from_video_mode (NULL, mode, &width, &height);
+ dc1394_get_color_coding_from_video_mode (NULL, mode, &coding);
+ video_codings.codings[0] = coding;
+ video_codings.num = 1;
+ gst_caps_append (caps,
+ gst_dc1394_src_build_caps (&video_codings, &all_rates,
+ width, width, 1, height, height, 1));
+ }
+ /* Then caps for Format 7 modes */
+ gst_caps_append (caps,
+ gst_dc1394_src_build_caps (&supported_codings, NULL,
+ 1, G_MAXINT, 1, 1, G_MAXINT, 1));
+ return caps;
+}
+
+
+static GstCaps *
+gst_dc1394_src_build_caps (const dc1394color_codings_t * supported_codings,
+ const dc1394framerates_t * supported_rates,
+ uint32_t width_min, uint32_t width_max, uint32_t width_step,
+ uint32_t height_min, uint32_t height_max, uint32_t height_step)
+{
+ GstCaps *caps;
+ GstStructure *structure;
+ GstVideoFormat video_format;
+ dc1394color_coding_t coding;
+ dc1394framerate_t rate;
+ GValue format = { 0 };
+ GValue formats = { 0 };
+ GValue width = { 0 };
+ GValue widths = { 0 };
+ GValue height = { 0 };
+ GValue heights = { 0 };
+ GValue framerate = { 0 };
+ GValue framerates = { 0 };
+ guint c, w, h, r;
+
+ caps = gst_caps_new_empty ();
+ for (c = 0; c < supported_codings->num; c++) {
+ coding = supported_codings->codings[c];
+ switch (coding) {
+ case DC1394_COLOR_CODING_MONO8:
+ video_format = GST_VIDEO_FORMAT_GRAY8;
+ break;
+ case DC1394_COLOR_CODING_YUV411:
+ video_format = GST_VIDEO_FORMAT_IYU1;
+ break;
+ case DC1394_COLOR_CODING_YUV422:
+ video_format = GST_VIDEO_FORMAT_UYVY;
+ break;
+ case DC1394_COLOR_CODING_YUV444:
+ video_format = GST_VIDEO_FORMAT_IYU2;
+ break;
+ case DC1394_COLOR_CODING_RGB8:
+ video_format = GST_VIDEO_FORMAT_RGB;
+ break;
+ case DC1394_COLOR_CODING_RAW8:
+ video_format = GST_VIDEO_FORMAT_UNKNOWN; /* GST_BAYER_FORMAT_XXXX8 */
+ break;
+ case DC1394_COLOR_CODING_MONO16:
+ video_format = GST_VIDEO_FORMAT_GRAY16_BE;
+ break;
+ /*
+ * The following formats do not exist in Gstreamer:
+ *case DC1394_COLOR_CODING_RGB16: // Unsigned RGB 16 bits per channel
+ * video_format = GST_VIDEO_FORMAT_RGB48;
+ * break;
+ *case DC1394_COLOR_CODING_MONO16S: // Signed grayscale 16 bits
+ * video_format = GST_VIDEO_FORMAT_GRAY16_BE_SIGNED;
+ * break;
+ *case DC1394_COLOR_CODING_RGB16S: // Signed RGB 16 bits per channel
+ * video_format = GST_VIDEO_FORMAT_RGB48_SIGNED;
+ * break;
+ *case DC1394_COLOR_CODING_RAW16: // Raw sensor output (bayer) 16 bits
+ * video_format = GST_VIDEO_FORMAT_UNKNOWN; // GST_BAYER_FORMAT_XXXX16_BE
+ * break;
+ */
+ default:
+ video_format = GST_VIDEO_FORMAT_UNKNOWN;
+ GST_DEBUG ("unsupported dc1394 video coding %d", coding);
+ }
+ if (video_format != GST_VIDEO_FORMAT_UNKNOWN) {
+ g_value_init (&formats, G_TYPE_STRING);
+ g_value_set_string (&formats, gst_video_format_to_string (video_format));
+ structure = gst_structure_new_empty ("video/x-raw");
+ gst_structure_set_value (structure, "format", &formats);
+ gst_caps_append_structure (caps, structure);
+ g_value_unset (&formats);
+ }
+ if (coding == DC1394_COLOR_CODING_MONO8 ||
+ coding == DC1394_COLOR_CODING_RAW8) {
+ g_value_init (&formats, GST_TYPE_LIST);
+ g_value_init (&format, G_TYPE_STRING);
+ g_value_set_static_string (&format, "bggr");
+ gst_value_list_append_value (&formats, &format);
+ g_value_set_static_string (&format, "rggb");
+ gst_value_list_append_value (&formats, &format);
+ g_value_set_static_string (&format, "grbg");
+ gst_value_list_append_value (&formats, &format);
+ g_value_set_static_string (&format, "gbrg");
+ gst_value_list_append_value (&formats, &format);
+ structure = gst_structure_new_empty ("video/x-bayer");
+ gst_structure_set_value (structure, "format", &formats);
+ gst_caps_append_structure (caps, structure);
+ g_value_unset (&format);
+ g_value_unset (&formats);
+ }
+ }
+
+ if (width_min == width_max) {
+ g_value_init (&widths, G_TYPE_INT);
+ g_value_set_int (&widths, width_min);
+ } else if (width_step == 1) {
+ g_value_init (&widths, GST_TYPE_INT_RANGE);
+ gst_value_set_int_range (&widths, width_min, width_max);
+ } else {
+ g_value_init (&widths, GST_TYPE_LIST);
+ g_value_init (&width, G_TYPE_INT);
+ for (w = width_min; w <= width_max; w += width_step) {
+ g_value_set_int (&width, w);
+ gst_value_list_append_value (&widths, &width);
+ }
+ g_value_unset (&width);
+ }
+ if (height_min == height_max) {
+ g_value_init (&heights, G_TYPE_INT);
+ g_value_set_int (&heights, height_min);
+ } else if (height_step == 1) {
+ g_value_init (&heights, GST_TYPE_INT_RANGE);
+ gst_value_set_int_range (&heights, height_min, height_max);
+ } else {
+ g_value_init (&heights, GST_TYPE_LIST);
+ g_value_init (&height, G_TYPE_INT);
+ for (h = height_min; h <= height_max; h += height_step) {
+ g_value_set_int (&height, h);
+ gst_value_list_append_value (&heights, &height);
+ }
+ g_value_unset (&height);
+ }
+ gst_caps_set_value (caps, "width", &widths);
+ gst_caps_set_value (caps, "height", &heights);
+ g_value_unset (&widths);
+ g_value_unset (&heights);
+
+ if (supported_rates) {
+ g_value_init (&framerates, GST_TYPE_LIST);
+ g_value_init (&framerate, GST_TYPE_FRACTION);
+ for (r = 0; r < supported_rates->num; r++) {
+ rate = supported_rates->framerates[r];
+ switch (rate) {
+ case DC1394_FRAMERATE_1_875:
+ gst_value_set_fraction (&framerate, 240, 128);
+ break;
+ case DC1394_FRAMERATE_3_75:
+ gst_value_set_fraction (&framerate, 240, 64);
+ break;
+ case DC1394_FRAMERATE_7_5:
+ gst_value_set_fraction (&framerate, 240, 32);
+ break;
+ case DC1394_FRAMERATE_15:
+ gst_value_set_fraction (&framerate, 240, 16);
+ break;
+ case DC1394_FRAMERATE_30:
+ gst_value_set_fraction (&framerate, 240, 8);
+ break;
+ case DC1394_FRAMERATE_60:
+ gst_value_set_fraction (&framerate, 240, 4);
+ break;
+ case DC1394_FRAMERATE_120:
+ gst_value_set_fraction (&framerate, 240, 2);
+ break;
+ case DC1394_FRAMERATE_240:
+ gst_value_set_fraction (&framerate, 240, 1);
+ break;
+ }
+ gst_value_list_append_value (&framerates, &framerate);
+ }
+ g_value_unset (&framerate);
+ } else {
+ g_value_init (&framerates, GST_TYPE_FRACTION_RANGE);
+ gst_value_set_fraction_range_full (&framerates, 1, G_MAXINT, G_MAXINT, 1);
+ }
+ gst_caps_set_value (caps, "framerate", &framerates);
+ g_value_unset (&framerates);
+ return caps;
+}
+
+
+static gboolean
+gst_dc1394_src_parse_caps (const GstCaps * caps,
+ dc1394color_codings_t * color_codings,
+ dc1394framerate_t * rate, double *rate_decimal,
+ uint32_t * width, uint32_t * height)
+{
+ const GstStructure *structure;
+ const gchar *format;
+ gint w, h, num, den;
+ gdouble dec;
+
+ structure = gst_caps_get_structure (caps, 0);
+ if (!structure)
+ goto error;
+
+ if (!gst_structure_get_int (structure, "width", &w)
+ || !gst_structure_get_int (structure, "height", &h))
+ goto error;
+
+ *width = w;
+ *height = h;
+
+ if (!gst_structure_get_fraction (structure, "framerate", &num, &den))
+ goto error;
+
+ if (gst_util_fraction_compare (num, den, 240, 128) <= 0) {
+ *rate = DC1394_FRAMERATE_1_875;
+ } else if (gst_util_fraction_compare (num, den, 240, 64) <= 0) {
+ *rate = DC1394_FRAMERATE_3_75;
+ } else if (gst_util_fraction_compare (num, den, 240, 32) <= 0) {
+ *rate = DC1394_FRAMERATE_7_5;
+ } else if (gst_util_fraction_compare (num, den, 240, 16) <= 0) {
+ *rate = DC1394_FRAMERATE_15;
+ } else if (gst_util_fraction_compare (num, den, 240, 8) <= 0) {
+ *rate = DC1394_FRAMERATE_30;
+ } else if (gst_util_fraction_compare (num, den, 240, 4) <= 0) {
+ *rate = DC1394_FRAMERATE_60;
+ } else if (gst_util_fraction_compare (num, den, 240, 2) <= 0) {
+ *rate = DC1394_FRAMERATE_120;
+ } else if (gst_util_fraction_compare (num, den, 240, 1) <= 0) {
+ *rate = DC1394_FRAMERATE_240;
+ } else {
+ *rate = DC1394_FRAMERATE_240;
+ }
+
+ gst_util_fraction_to_double (num, den, &dec);
+ *rate_decimal = dec;
+
+ if (gst_structure_has_name (structure, "video/x-raw")) {
+ format = gst_structure_get_string (structure, "format");
+ switch (gst_video_format_from_string (format)) {
+ case GST_VIDEO_FORMAT_GRAY8:
+ color_codings->num = 1;
+ color_codings->codings[0] = DC1394_COLOR_CODING_MONO8;
+ break;
+ case GST_VIDEO_FORMAT_IYU1:
+ color_codings->num = 1;
+ color_codings->codings[0] = DC1394_COLOR_CODING_YUV411;
+ break;
+ case GST_VIDEO_FORMAT_UYVY:
+ color_codings->num = 1;
+ color_codings->codings[0] = DC1394_COLOR_CODING_YUV422;
+ break;
+ case GST_VIDEO_FORMAT_IYU2:
+ color_codings->num = 1;
+ color_codings->codings[0] = DC1394_COLOR_CODING_YUV444;
+ break;
+ case GST_VIDEO_FORMAT_RGB:
+ color_codings->num = 1;
+ color_codings->codings[0] = DC1394_COLOR_CODING_RGB8;
+ break;
+ case GST_VIDEO_FORMAT_GRAY16_BE:
+ color_codings->num = 1;
+ color_codings->codings[0] = DC1394_COLOR_CODING_MONO16;
+ break;
+ /*
+ * The following formats do not exist in Gstreamer:
+ *case GST_VIDEO_FORMAT_RGB48: // Unsigned RGB format 16 bits per channel
+ * color_codings->num = 1
+ * color_codings->codings[0] = DC1394_COLOR_CODING_RGB16;
+ * break;
+ *case GST_VIDEO_FORMAT_GRAY16_BE_SIGNED: // Signed grayscale format 16 bits
+ * color_codings->num = 1
+ * color_codings->codings[0] = DC1394_COLOR_CODING_MONO16S;
+ * break;
+ *case GST_VIDEO_FORMAT_RGB48_SIGNED: // Signed RGB format 16 bits per channel
+ * color_codings->num = 1
+ * color_codings->codings[0] = DC1394_COLOR_CODING_RGB16S;
+ * break;
+ */
+ default:
+ GST_ERROR ("unsupported raw video format %s", format);
+ goto error;
+ }
+ } else if (gst_structure_has_name (structure, "video/x-bayer")) {
+ /*
+ * The following formats do not exist in Gstreamer:
+ *switch (gst_bayer_format_from_string(format)) {
+ * case GST_BAYER_FORMAT_BGGR8:
+ * case GST_BAYER_FORMAT_GBRG8:
+ * case GST_BAYER_FORMAT_GRBG8:
+ * case GST_BAYER_FORMAT_BGGR8:
+ * *coding = DC1394_COLOR_CODING_RAW8;
+ * break;
+ * case GST_BAYER_FORMAT_BGGR16_BE:
+ * case GST_BAYER_FORMAT_GBRG16_BE:
+ * case GST_BAYER_FORMAT_GRBG16_BE:
+ * case GST_BAYER_FORMAT_BGGR16_BE:
+ * *coding = DC1394_COLOR_CODING_RAW16;
+ * break;
+ * default:
+ * GST_ERROR("unsupported raw video format %s", format);
+ * goto error;
+ *}
+ */
+ color_codings->num = 2;
+ color_codings->codings[0] = DC1394_COLOR_CODING_RAW8;
+ color_codings->codings[1] = DC1394_COLOR_CODING_MONO8;
+ } else {
+ goto error;
+ }
+
+ return TRUE;
+
+error:
+ return FALSE;
+}
+
+
+static gboolean
+plugin_init (GstPlugin * plugin)
+{
+ GST_DEBUG_CATEGORY_INIT (dc1394_debug, "dc1394", 0, "DC1394 interface");
+
+ return gst_element_register (plugin, "dc1394src", GST_RANK_NONE,
+ GST_TYPE_DC1394_SRC);
+}
+
+
+GST_PLUGIN_DEFINE (GST_VERSION_MAJOR,
+ GST_VERSION_MINOR,
+ dc1394,
+ "1394 IIDC video source",
+ plugin_init, VERSION, GST_LICENSE, GST_PACKAGE_NAME, GST_PACKAGE_ORIGIN)
diff --git a/ext/dc1394/gstdc1394src.h b/ext/dc1394/gstdc1394src.h
new file mode 100644
index 0000000..8767826
--- /dev/null
+++ b/ext/dc1394/gstdc1394src.h
@@ -0,0 +1,60 @@
+/* GStreamer
+ * Copyright (C) <2006> Eric Jonas <jonas@mit.edu>
+ * Copyright (C) <2006> Antoine Tremblay <hexa00@gmail.com>
+ *
+ * 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.
+ */
+
+#ifndef __GST_DC1394_H__
+#define __GST_DC1394_H__
+
+#include <gst/gst.h>
+#include <gst/base/gstpushsrc.h>
+#include <dc1394/control.h>
+
+G_BEGIN_DECLS
+
+#define GST_TYPE_DC1394_SRC (gst_dc1394_src_get_type())
+#define GST_DC1394_SRC(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj),GST_TYPE_DC1394_SRC,GstDC1394Src))
+#define GST_DC1394_SRC_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass),GST_TYPE_DC1394_SRC,GstDC1394SrcClass))
+#define GST_IS_DC1394_SRC(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj),GST_TYPE_DC1394_SRC))
+#define GST_IS_DC1394_SRC_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE((klass),GST_TYPE_DC1394_SRC))
+
+typedef struct _GstDC1394Src GstDC1394Src;
+typedef struct _GstDC1394SrcClass GstDC1394SrcClass;
+
+struct _GstDC1394Src {
+ GstPushSrc pushsrc;
+
+ GstCaps * caps;
+
+ uint64_t guid;
+ int unit;
+ dc1394speed_t iso_speed;
+ uint32_t dma_buffer_size;
+ dc1394camera_t * camera;
+ dc1394_t * dc1394;
+};
+
+struct _GstDC1394SrcClass {
+ GstPushSrcClass parent_class;
+};
+
+GType gst_dc1394_src_get_type (void);
+
+G_END_DECLS
+
+#endif /* __GST_DC1394_H__ */
diff --git a/ext/directfb/Makefile.in b/ext/directfb/Makefile.in
index 0d4c313..3fabeca 100644
--- a/ext/directfb/Makefile.in
+++ b/ext/directfb/Makefile.in
@@ -312,6 +312,8 @@
DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
DSYMUTIL = @DSYMUTIL@
DTLS_CFLAGS = @DTLS_CFLAGS@
DTLS_LIBS = @DTLS_LIBS@
@@ -527,6 +529,8 @@
LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
LIPO = @LIPO@
LN_S = @LN_S@
LOCALEDIR = @LOCALEDIR@
@@ -653,8 +657,6 @@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
SNDIO_LIBS = @SNDIO_LIBS@
@@ -699,6 +701,8 @@
WAYLAND_LIBS = @WAYLAND_LIBS@
WEBP_CFLAGS = @WEBP_CFLAGS@
WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
WGET = @WGET@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
diff --git a/ext/directfb/dfbvideosink.c b/ext/directfb/dfbvideosink.c
index 7ef617f..a6f433b 100644
--- a/ext/directfb/dfbvideosink.c
+++ b/ext/directfb/dfbvideosink.c
@@ -168,6 +168,19 @@
return type;
}
+static gboolean
+gst_meta_dfbsurface_init (GstMetaDfbSurface * meta, gpointer params,
+ GstBuffer * buf)
+{
+ meta->surface = NULL;
+ meta->width = meta->height = 0;
+ meta->locked = FALSE;
+ meta->pixel_format = 0;
+ meta->dfbvideosink = NULL;
+
+ return TRUE;
+}
+
/* our metadata */
const GstMetaInfo *
gst_meta_dfbsurface_get_info (void)
@@ -178,7 +191,8 @@
const GstMetaInfo *meta =
gst_meta_register (gst_meta_dfbsurface_api_get_type (),
"GstMetaDfbSurface", sizeof (GstMetaDfbSurface),
- (GstMetaInitFunction) NULL, (GstMetaFreeFunction) NULL,
+ (GstMetaInitFunction) gst_meta_dfbsurface_init,
+ (GstMetaFreeFunction) NULL,
(GstMetaTransformFunction) NULL);
g_once_init_leave (&meta_info, meta);
}
@@ -2420,8 +2434,8 @@
"DirectFB video sink", "Sink/Video", "A DirectFB based videosink",
"Julien Moutte <julien@moutte.net>");
- gst_element_class_add_pad_template (gstelement_class,
- gst_static_pad_template_get (&gst_dfbvideosink_sink_template_factory));
+ gst_element_class_add_static_pad_template (gstelement_class,
+ &gst_dfbvideosink_sink_template_factory);
gstelement_class->change_state = gst_dfbvideosink_change_state;
diff --git a/ext/dtls/Makefile.in b/ext/dtls/Makefile.in
index c92a0a0..4b97fe8 100644
--- a/ext/dtls/Makefile.in
+++ b/ext/dtls/Makefile.in
@@ -243,7 +243,7 @@
done | $(am__uniquify_input)`
ETAGS = etags
CTAGS = ctags
-am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/depcomp
+am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/depcomp README
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
ACLOCAL = @ACLOCAL@
ACLOCAL_AMFLAGS = @ACLOCAL_AMFLAGS@
@@ -309,6 +309,8 @@
DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
DSYMUTIL = @DSYMUTIL@
DTLS_CFLAGS = @DTLS_CFLAGS@
DTLS_LIBS = @DTLS_LIBS@
@@ -524,6 +526,8 @@
LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
LIPO = @LIPO@
LN_S = @LN_S@
LOCALEDIR = @LOCALEDIR@
@@ -650,8 +654,6 @@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
SNDIO_LIBS = @SNDIO_LIBS@
@@ -696,6 +698,8 @@
WAYLAND_LIBS = @WAYLAND_LIBS@
WEBP_CFLAGS = @WEBP_CFLAGS@
WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
WGET = @WGET@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
diff --git a/ext/dtls/README b/ext/dtls/README
new file mode 100644
index 0000000..8d165ec
--- /dev/null
+++ b/ext/dtls/README
@@ -0,0 +1,153 @@
+INTRODUCTION
+============
+This document is an attempt to describe the basics of the DTLS element.
+It hasn't been written by the author(s) and so, besides being incomplete,
+*IT MIGHT ALSO BE INCORRECT*. So take it with a pinch of salt.
+
+As always, if in doubt ask the #gstreamer IRC channel.
+
+THE INTERNALS
+=============
+This plugin provides two main elements (dtlssrtpdec and dtlssrtpenc) and a few
+minor elements necessary to implement them. The two elements dtlssrtpdec and
+dtlssrtpenc are the only ones you are supposed to include in, respectively, the
+RX and TX pipelines of your DTLS-enabled application. This means you're not
+supposed to directly include those minor elements in your pipelines.
+
+dtlssrtpenc
+-----------
+This element is to be included in the TX pipeline and will initiate the DTLS
+handshake if configured to be the client. Its main configuration parameters are:
+
+ - connection-id: a string that must match the connection-id in dtlssrtpdec;
+ - is-client: a boolean that indicates whether this is going to be the client
+ or the server during the DTLS handshake.
+
+Internally this element comprises the standard srtpenc element, the dtlsenc
+element and a funnel to connect both these elements to one single output.
+The srtpenc can be used to encrypt SRTP/SRTCP packets while the dtlsenc can be
+used to encrypt generic data, e.g. for non-SRTP applications.
+
+NB With the current implementation the TX pipeline containing the dtlssrtpenc
+ must be created *AFTER* the RX pipeline.
+
+dtlssrtpdec
+-----------
+It is to be included in the RX pipeline. Its main configuration parameters are:
+
+ - connection-id: a string that must match the connection-id in dtlssrtpenc;
+ - pem: a string that can be used to provide your own certificate *AND* private
+ key in PEM format. The private key is required to carry out the
+ handshake so do not forget it or the DTLS negotiation will fail;
+ - peer_pem: a read only parameter that can be used to retrieve the
+ certificate sent from the other party in PEM format once the
+ handshake is completed.
+
+Internally this element comprises a dtlssrtpdemux, a standard srtpdec element
+and the dtlsdec element. The dtlssrtpdemux element switches SRT(C)P packets to
+the srtpdec element and DTLS packets to the dtlsdec element and discards any
+other unknown packet. So, similarly for the dtlssrtpenc case, DTLS-SRTP
+applications would exercise the srtpdec element and any other non-SRTP
+application would exercise the dtlsdec element.
+
+NB With the current implementation the RX pipeline containing the dtlssrtpdec
+ must be created *BEFORE* the TX pipeline.
+
+EXAMPLE PIPELINE
+================
+The following is an example usage of the DTLS plugin. It is a python script that
+creates two endpoints that exchange encrypted audio using DTLS to exchange the
+encryption keys.
+
+NB In theory we would show an example gst-launch command. However that would not
+ be enough because you need two pairs of TX/RX pipelines for a proper
+ handshake and you can't use gst-launch two start 4 different pipelines.
+ This why there is a python script in here.
+
+```
+#!/usr/bin/env python3
+
+# create two endpoints, each with tx and rx pipelines using the DTLS
+# elements and let audio flowing for a while to give time for a packet capture
+
+import time
+from gi.repository import Gst, GObject, GLib
+GObject.threads_init()
+Gst.init(None)
+
+
+def _start_pipeline(pipeline):
+ pipeline.set_state(Gst.State.PLAYING)
+ pipeline.get_state(Gst.CLOCK_TIME_NONE)
+
+
+def _sleep_while_iterating_gloop(secs):
+ """ block for secs seconds but iterate the gloop while you do """
+ for _ in range(10 * secs):
+ gloop = GLib.MainLoop()
+ gloop_context = gloop.get_context()
+ gloop_context.iteration(may_block=False)
+ time.sleep(0.1)
+
+def dtls_tx_pipeline_description(name, is_client, port):
+ return ' ! '.join([
+ 'audiotestsrc is-live=true',
+ 'audio/x-raw, rate=8000, format=S16LE, channels=1',
+ 'opusenc frame-size=10',
+ 'rtpopuspay pt=103',
+ '.rtp_sink_0 dtlssrtpenc connection-id={name} is-client={client} .src',
+ 'udpsink port={port}'
+ ]).format(name=name, client=is_client, port=port)
+
+
+def dtls_rx_pipeline_description(name, port):
+ return ' ! '.join([
+ 'udpsrc port={port}',
+ '.sink dtlssrtpdec connection-id={name} .rtp_src',
+ 'queue',
+ 'fakesink async=false'
+ ]).format(name=name, port=port)
+
+
+class Endpoint:
+ def __init__(self, name, is_client, tx_port, rx_port):
+ self.name = name
+ tx_pipeline_description = dtls_tx_pipeline_description(
+ name, is_client, tx_port
+ )
+ rx_pipeline_description = dtls_rx_pipeline_description(name, rx_port)
+ print(rx_pipeline_description)
+ print(tx_pipeline_description)
+
+ self.rx_pipeline = Gst.parse_launch(rx_pipeline_description)
+ self.tx_pipeline = Gst.parse_launch(tx_pipeline_description)
+
+ def start(self):
+ # Start RX first, otherwise it fails due to the current implementation
+ self.start_rx_pipeline()
+ self.start_tx_pipeline()
+
+ def start_rx_pipeline(self):
+ _start_pipeline(self.rx_pipeline)
+
+ def start_tx_pipeline(self):
+ _start_pipeline(self.tx_pipeline)
+
+ def stop(self):
+ def stop_pipeline(p):
+ p.set_state(Gst.State.NULL)
+ p.get_state(Gst.CLOCK_TIME_NONE)
+ stop_pipeline(self.tx_pipeline)
+ stop_pipeline(self.rx_pipeline)
+
+blue = Endpoint("blue", is_client=True, tx_port=23000, rx_port=23002)
+red = Endpoint("red", is_client=False, tx_port=23002, rx_port=23000)
+
+red.start()
+blue.start()
+
+_sleep_while_iterating_gloop(3)
+
+red.stop()
+blue.stop()
+```
diff --git a/ext/dtls/gstdtlsdec.c b/ext/dtls/gstdtlsdec.c
index f05b4f1..3770de0 100644
--- a/ext/dtls/gstdtlsdec.c
+++ b/ext/dtls/gstdtlsdec.c
@@ -173,10 +173,8 @@
g_object_class_install_properties (gobject_class, NUM_PROPERTIES, properties);
- gst_element_class_add_pad_template (element_class,
- gst_static_pad_template_get (&src_template));
- gst_element_class_add_pad_template (element_class,
- gst_static_pad_template_get (&sink_template));
+ gst_element_class_add_static_pad_template (element_class, &src_template);
+ gst_element_class_add_static_pad_template (element_class, &sink_template);
gst_element_class_set_static_metadata (element_class,
"DTLS Decoder",
diff --git a/ext/dtls/gstdtlsenc.c b/ext/dtls/gstdtlsenc.c
index 060f053..9c64935 100644
--- a/ext/dtls/gstdtlsenc.c
+++ b/ext/dtls/gstdtlsenc.c
@@ -162,10 +162,8 @@
g_object_class_install_properties (gobject_class, NUM_PROPERTIES, properties);
- gst_element_class_add_pad_template (element_class,
- gst_static_pad_template_get (&src_template));
- gst_element_class_add_pad_template (element_class,
- gst_static_pad_template_get (&sink_template));
+ gst_element_class_add_static_pad_template (element_class, &src_template);
+ gst_element_class_add_static_pad_template (element_class, &sink_template);
gst_element_class_set_static_metadata (element_class,
"DTLS Encoder",
diff --git a/ext/dtls/gstdtlssrtpdec.c b/ext/dtls/gstdtlssrtpdec.c
index 5e29a0f..300fb9c 100644
--- a/ext/dtls/gstdtlssrtpdec.c
+++ b/ext/dtls/gstdtlssrtpdec.c
@@ -133,14 +133,10 @@
g_object_class_install_properties (gobject_class, NUM_PROPERTIES, properties);
- gst_element_class_add_pad_template (element_class,
- gst_static_pad_template_get (&sink_template));
- gst_element_class_add_pad_template (element_class,
- gst_static_pad_template_get (&rtp_src_template));
- gst_element_class_add_pad_template (element_class,
- gst_static_pad_template_get (&rtcp_src_template));
- gst_element_class_add_pad_template (element_class,
- gst_static_pad_template_get (&data_src_template));
+ gst_element_class_add_static_pad_template (element_class, &sink_template);
+ gst_element_class_add_static_pad_template (element_class, &rtp_src_template);
+ gst_element_class_add_static_pad_template (element_class, &rtcp_src_template);
+ gst_element_class_add_static_pad_template (element_class, &data_src_template);
gst_element_class_set_static_metadata (element_class,
"DTLS-SRTP Decoder",
@@ -169,19 +165,19 @@
+-----------+
*/
- self->srtp_dec = gst_element_factory_make ("srtpdec", "srtp-decoder");
+ self->srtp_dec = gst_element_factory_make ("srtpdec", NULL);
if (!self->srtp_dec) {
GST_ERROR_OBJECT (self,
"failed to create srtp_dec, is the srtp plugin registered?");
return;
}
self->dtls_srtp_demux =
- gst_element_factory_make ("dtlssrtpdemux", "dtls-srtp-demux");
+ gst_element_factory_make ("dtlssrtpdemux", NULL);
if (!self->dtls_srtp_demux) {
GST_ERROR_OBJECT (self, "failed to create dtls_srtp_demux");
return;
}
- self->bin.dtls_element = gst_element_factory_make ("dtlsdec", "dtls-decoder");
+ self->bin.dtls_element = gst_element_factory_make ("dtlsdec", NULL);
if (!self->bin.dtls_element) {
GST_ERROR_OBJECT (self, "failed to create dtls_dec");
return;
diff --git a/ext/dtls/gstdtlssrtpdemux.c b/ext/dtls/gstdtlssrtpdemux.c
index f52d5fb..ab1ef70 100644
--- a/ext/dtls/gstdtlssrtpdemux.c
+++ b/ext/dtls/gstdtlssrtpdemux.c
@@ -69,12 +69,9 @@
element_class = (GstElementClass *) klass;
- gst_element_class_add_pad_template (element_class,
- gst_static_pad_template_get (&sink_template));
- gst_element_class_add_pad_template (element_class,
- gst_static_pad_template_get (&rtp_src_template));
- gst_element_class_add_pad_template (element_class,
- gst_static_pad_template_get (&dtls_src_template));
+ gst_element_class_add_static_pad_template (element_class, &sink_template);
+ gst_element_class_add_static_pad_template (element_class, &rtp_src_template);
+ gst_element_class_add_static_pad_template (element_class, &dtls_src_template);
gst_element_class_set_static_metadata (element_class,
"DTLS SRTP Demultiplexer",
diff --git a/ext/dtls/gstdtlssrtpenc.c b/ext/dtls/gstdtlssrtpenc.c
index 941afac..237aec5 100644
--- a/ext/dtls/gstdtlssrtpenc.c
+++ b/ext/dtls/gstdtlssrtpenc.c
@@ -139,14 +139,12 @@
g_object_class_install_properties (gobject_class, NUM_PROPERTIES, properties);
- gst_element_class_add_pad_template (element_class,
- gst_static_pad_template_get (&rtp_sink_template));
- gst_element_class_add_pad_template (element_class,
- gst_static_pad_template_get (&rtcp_sink_template));
- gst_element_class_add_pad_template (element_class,
- gst_static_pad_template_get (&data_sink_template));
- gst_element_class_add_pad_template (element_class,
- gst_static_pad_template_get (&src_template));
+ gst_element_class_add_static_pad_template (element_class, &rtp_sink_template);
+ gst_element_class_add_static_pad_template (element_class,
+ &rtcp_sink_template);
+ gst_element_class_add_static_pad_template (element_class,
+ &data_sink_template);
+ gst_element_class_add_static_pad_template (element_class, &src_template);
gst_element_class_set_static_metadata (element_class,
"DTLS-SRTP Encoder",
@@ -174,19 +172,19 @@
+--------------------+ +-----------------+
*/
- self->srtp_enc = gst_element_factory_make ("srtpenc", "srtp-encoder");
+ self->srtp_enc = gst_element_factory_make ("srtpenc", NULL);
if (!self->srtp_enc) {
GST_ERROR_OBJECT (self,
"failed to create srtp encoder, is the srtp plugin registered?");
return;
}
g_return_if_fail (self->srtp_enc);
- self->bin.dtls_element = gst_element_factory_make ("dtlsenc", "dtls-encoder");
+ self->bin.dtls_element = gst_element_factory_make ("dtlsenc", NULL);
if (!self->bin.dtls_element) {
GST_ERROR_OBJECT (self, "failed to create dtls encoder");
return;
}
- self->funnel = gst_element_factory_make ("funnel", "funnel");
+ self->funnel = gst_element_factory_make ("funnel", NULL);
if (!self->funnel) {
GST_ERROR_OBJECT (self, "failed to create funnel");
return;
diff --git a/ext/dts/Makefile.in b/ext/dts/Makefile.in
index e5f7fa7..03a6524 100644
--- a/ext/dts/Makefile.in
+++ b/ext/dts/Makefile.in
@@ -303,6 +303,8 @@
DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
DSYMUTIL = @DSYMUTIL@
DTLS_CFLAGS = @DTLS_CFLAGS@
DTLS_LIBS = @DTLS_LIBS@
@@ -518,6 +520,8 @@
LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
LIPO = @LIPO@
LN_S = @LN_S@
LOCALEDIR = @LOCALEDIR@
@@ -644,8 +648,6 @@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
SNDIO_LIBS = @SNDIO_LIBS@
@@ -690,6 +692,8 @@
WAYLAND_LIBS = @WAYLAND_LIBS@
WEBP_CFLAGS = @WEBP_CFLAGS@
WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
WGET = @WGET@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
diff --git a/ext/dts/gstdtsdec.c b/ext/dts/gstdtsdec.c
index 767b6bf..095238c 100644
--- a/ext/dts/gstdtsdec.c
+++ b/ext/dts/gstdtsdec.c
@@ -156,10 +156,8 @@
gobject_class->set_property = gst_dtsdec_set_property;
gobject_class->get_property = gst_dtsdec_get_property;
- gst_element_class_add_pad_template (gstelement_class,
- gst_static_pad_template_get (&sink_factory));
- gst_element_class_add_pad_template (gstelement_class,
- gst_static_pad_template_get (&src_factory));
+ gst_element_class_add_static_pad_template (gstelement_class, &sink_factory);
+ gst_element_class_add_static_pad_template (gstelement_class, &src_factory);
gst_element_class_set_static_metadata (gstelement_class, "DTS audio decoder",
"Codec/Decoder/Audio",
"Decodes DTS audio streams",
diff --git a/ext/faac/Makefile.in b/ext/faac/Makefile.in
index 09b85a3..9f1f8ce 100644
--- a/ext/faac/Makefile.in
+++ b/ext/faac/Makefile.in
@@ -302,6 +302,8 @@
DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
DSYMUTIL = @DSYMUTIL@
DTLS_CFLAGS = @DTLS_CFLAGS@
DTLS_LIBS = @DTLS_LIBS@
@@ -517,6 +519,8 @@
LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
LIPO = @LIPO@
LN_S = @LN_S@
LOCALEDIR = @LOCALEDIR@
@@ -643,8 +647,6 @@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
SNDIO_LIBS = @SNDIO_LIBS@
@@ -689,6 +691,8 @@
WAYLAND_LIBS = @WAYLAND_LIBS@
WEBP_CFLAGS = @WEBP_CFLAGS@
WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
WGET = @WGET@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
diff --git a/ext/faac/gstfaac.c b/ext/faac/gstfaac.c
index 6804cbf..7e3cf41 100644
--- a/ext/faac/gstfaac.c
+++ b/ext/faac/gstfaac.c
@@ -191,8 +191,7 @@
GST_DEBUG_CATEGORY_INIT (faac_debug, "faac", 0, "AAC encoding");
- gst_element_class_add_pad_template (gstelement_class,
- gst_static_pad_template_get (&src_template));
+ gst_element_class_add_static_pad_template (gstelement_class, &src_template);
sink_caps = gst_faac_enc_generate_sink_caps ();
sink_templ = gst_pad_template_new ("sink",
diff --git a/ext/faad/Makefile.in b/ext/faad/Makefile.in
index 86ddefa..7e39159 100644
--- a/ext/faad/Makefile.in
+++ b/ext/faad/Makefile.in
@@ -303,6 +303,8 @@
DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
DSYMUTIL = @DSYMUTIL@
DTLS_CFLAGS = @DTLS_CFLAGS@
DTLS_LIBS = @DTLS_LIBS@
@@ -518,6 +520,8 @@
LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
LIPO = @LIPO@
LN_S = @LN_S@
LOCALEDIR = @LOCALEDIR@
@@ -644,8 +648,6 @@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
SNDIO_LIBS = @SNDIO_LIBS@
@@ -690,6 +692,8 @@
WAYLAND_LIBS = @WAYLAND_LIBS@
WEBP_CFLAGS = @WEBP_CFLAGS@
WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
WGET = @WGET@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
diff --git a/ext/faad/gstfaad.c b/ext/faad/gstfaad.c
index b72b42d..07cca30 100644
--- a/ext/faad/gstfaad.c
+++ b/ext/faad/gstfaad.c
@@ -111,10 +111,8 @@
GstElementClass *element_class = GST_ELEMENT_CLASS (klass);
GstAudioDecoderClass *base_class = GST_AUDIO_DECODER_CLASS (klass);
- gst_element_class_add_pad_template (element_class,
- gst_static_pad_template_get (&src_template));
- gst_element_class_add_pad_template (element_class,
- gst_static_pad_template_get (&sink_template));
+ gst_element_class_add_static_pad_template (element_class, &src_template);
+ gst_element_class_add_static_pad_template (element_class, &sink_template);
gst_element_class_set_static_metadata (element_class, "AAC audio decoder",
"Codec/Decoder/Audio",
diff --git a/ext/flite/Makefile.in b/ext/flite/Makefile.in
index c53146e..99561a3 100644
--- a/ext/flite/Makefile.in
+++ b/ext/flite/Makefile.in
@@ -301,6 +301,8 @@
DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
DSYMUTIL = @DSYMUTIL@
DTLS_CFLAGS = @DTLS_CFLAGS@
DTLS_LIBS = @DTLS_LIBS@
@@ -516,6 +518,8 @@
LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
LIPO = @LIPO@
LN_S = @LN_S@
LOCALEDIR = @LOCALEDIR@
@@ -642,8 +646,6 @@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
SNDIO_LIBS = @SNDIO_LIBS@
@@ -688,6 +690,8 @@
WAYLAND_LIBS = @WAYLAND_LIBS@
WEBP_CFLAGS = @WEBP_CFLAGS@
WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
WGET = @WGET@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
diff --git a/ext/flite/gstflitetestsrc.c b/ext/flite/gstflitetestsrc.c
index b6c5667..63ed90d 100644
--- a/ext/flite/gstflitetestsrc.c
+++ b/ext/flite/gstflitetestsrc.c
@@ -126,8 +126,8 @@
1, G_MAXINT, DEFAULT_SAMPLES_PER_BUFFER,
G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
- gst_element_class_add_pad_template (gstelement_class,
- gst_static_pad_template_get (&gst_flite_test_src_src_template));
+ gst_element_class_add_static_pad_template (gstelement_class,
+ &gst_flite_test_src_src_template);
gst_element_class_set_static_metadata (gstelement_class,
"Flite speech test source", "Source/Audio",
diff --git a/ext/fluidsynth/Makefile.in b/ext/fluidsynth/Makefile.in
index 8fd5276..e340836 100644
--- a/ext/fluidsynth/Makefile.in
+++ b/ext/fluidsynth/Makefile.in
@@ -310,6 +310,8 @@
DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
DSYMUTIL = @DSYMUTIL@
DTLS_CFLAGS = @DTLS_CFLAGS@
DTLS_LIBS = @DTLS_LIBS@
@@ -525,6 +527,8 @@
LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
LIPO = @LIPO@
LN_S = @LN_S@
LOCALEDIR = @LOCALEDIR@
@@ -651,8 +655,6 @@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
SNDIO_LIBS = @SNDIO_LIBS@
@@ -697,6 +699,8 @@
WAYLAND_LIBS = @WAYLAND_LIBS@
WEBP_CFLAGS = @WEBP_CFLAGS@
WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
WGET = @WGET@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
diff --git a/ext/fluidsynth/gstfluiddec.c b/ext/fluidsynth/gstfluiddec.c
index 124825b..62262ec 100644
--- a/ext/fluidsynth/gstfluiddec.c
+++ b/ext/fluidsynth/gstfluiddec.c
@@ -177,10 +177,8 @@
"Synth Polyphony", "The number of simultaneous voices", 1, 65535,
DEFAULT_SYNTH_POLYPHONY, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
- gst_element_class_add_pad_template (gstelement_class,
- gst_static_pad_template_get (&src_factory));
- gst_element_class_add_pad_template (gstelement_class,
- gst_static_pad_template_get (&sink_factory));
+ gst_element_class_add_static_pad_template (gstelement_class, &src_factory);
+ gst_element_class_add_static_pad_template (gstelement_class, &sink_factory);
gst_element_class_set_static_metadata (gstelement_class, "Fluidsynth",
"Codec/Decoder/Audio",
diff --git a/ext/gl/Makefile.am b/ext/gl/Makefile.am
index 5d55f54..5a82853 100644
--- a/ext/gl/Makefile.am
+++ b/ext/gl/Makefile.am
@@ -40,7 +40,10 @@
gstglfilterapp.c \
gstglviewconvert.c \
gstglstereosplit.c \
- gstglstereomix.c
+ gstgldeinterlace.c \
+ gstglstereomix.c \
+ gltestsrc.c \
+ gstgltestsrc.c
noinst_HEADERS = \
gstglbasemixer.h \
@@ -63,22 +66,19 @@
gstglfilterapp.h \
gstglstereosplit.h \
gstglstereomix.h \
- gstglviewconvert.h
+ gstgldeinterlace.h \
+ gstglviewconvert.h \
+ gltestsrc.h \
+ gstgltestsrc.h
# full opengl required
if USE_OPENGL
libgstopengl_la_SOURCES += \
gstglfilterglass.c \
- gstgldeinterlace.c \
- gltestsrc.c \
- gstgltestsrc.c \
gstglmosaic.c
noinst_HEADERS += \
gstglfilterglass.h \
- gstgldeinterlace.h \
- gltestsrc.h \
- gstgltestsrc.h \
gstglmosaic.h \
effects/gstgleffectscurves.h \
effects/gstgleffectlumatocurve.h
diff --git a/ext/gl/Makefile.in b/ext/gl/Makefile.in
index 2b2ecdf..08449a8 100644
--- a/ext/gl/Makefile.in
+++ b/ext/gl/Makefile.in
@@ -94,16 +94,10 @@
# full opengl required
@USE_OPENGL_TRUE@am__append_1 = \
@USE_OPENGL_TRUE@ gstglfilterglass.c \
-@USE_OPENGL_TRUE@ gstgldeinterlace.c \
-@USE_OPENGL_TRUE@ gltestsrc.c \
-@USE_OPENGL_TRUE@ gstgltestsrc.c \
@USE_OPENGL_TRUE@ gstglmosaic.c
@USE_OPENGL_TRUE@am__append_2 = \
@USE_OPENGL_TRUE@ gstglfilterglass.h \
-@USE_OPENGL_TRUE@ gstgldeinterlace.h \
-@USE_OPENGL_TRUE@ gltestsrc.h \
-@USE_OPENGL_TRUE@ gstgltestsrc.h \
@USE_OPENGL_TRUE@ gstglmosaic.h \
@USE_OPENGL_TRUE@ effects/gstgleffectscurves.h \
@USE_OPENGL_TRUE@ effects/gstgleffectlumatocurve.h
@@ -231,15 +225,12 @@
effects/gstgleffectlaplacian.c gstglcolorscale.c \
gstglcolorbalance.c gstglmixer.c gstglvideomixer.c \
gstglfiltershader.c gstglfilterapp.c gstglviewconvert.c \
- gstglstereosplit.c gstglstereomix.c gstglfilterglass.c \
- gstgldeinterlace.c gltestsrc.c gstgltestsrc.c gstglmosaic.c \
+ gstglstereosplit.c gstgldeinterlace.c gstglstereomix.c \
+ gltestsrc.c gstgltestsrc.c gstglfilterglass.c gstglmosaic.c \
gstgldifferencematte.c gstgltransformation.c gstglvideoflip.c \
gstgloverlay.c caopengllayersink.m
am__dirstamp = $(am__leading_dot)dirstamp
@USE_OPENGL_TRUE@am__objects_1 = libgstopengl_la-gstglfilterglass.lo \
-@USE_OPENGL_TRUE@ libgstopengl_la-gstgldeinterlace.lo \
-@USE_OPENGL_TRUE@ libgstopengl_la-gltestsrc.lo \
-@USE_OPENGL_TRUE@ libgstopengl_la-gstgltestsrc.lo \
@USE_OPENGL_TRUE@ libgstopengl_la-gstglmosaic.lo
@HAVE_PNG_TRUE@@USE_OPENGL_TRUE@am__objects_2 = libgstopengl_la-gstgldifferencematte.lo
@HAVE_GRAPHENE_TRUE@am__objects_3 = \
@@ -286,7 +277,9 @@
libgstopengl_la-gstglfilterapp.lo \
libgstopengl_la-gstglviewconvert.lo \
libgstopengl_la-gstglstereosplit.lo \
- libgstopengl_la-gstglstereomix.lo $(am__objects_1) \
+ libgstopengl_la-gstgldeinterlace.lo \
+ libgstopengl_la-gstglstereomix.lo libgstopengl_la-gltestsrc.lo \
+ libgstopengl_la-gstgltestsrc.lo $(am__objects_1) \
$(am__objects_2) $(am__objects_3) $(am__objects_4) \
$(am__objects_5)
libgstopengl_la_OBJECTS = $(am_libgstopengl_la_OBJECTS)
@@ -364,8 +357,8 @@
effects/gstgleffectssources.h gstglcolorscale.h \
gstglcolorbalance.h gstglmixer.h gstglvideomixer.h \
gstglfiltershader.h gstglfilterapp.h gstglstereosplit.h \
- gstglstereomix.h gstglviewconvert.h gstglfilterglass.h \
- gstgldeinterlace.h gltestsrc.h gstgltestsrc.h gstglmosaic.h \
+ gstglstereomix.h gstgldeinterlace.h gstglviewconvert.h \
+ gltestsrc.h gstgltestsrc.h gstglfilterglass.h gstglmosaic.h \
effects/gstgleffectscurves.h effects/gstgleffectlumatocurve.h \
gstgldifferencematte.h gstgltransformation.h gstglvideoflip.h \
gstgloverlay.h caopengllayersink.h
@@ -455,6 +448,8 @@
DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
DSYMUTIL = @DSYMUTIL@
DTLS_CFLAGS = @DTLS_CFLAGS@
DTLS_LIBS = @DTLS_LIBS@
@@ -670,6 +665,8 @@
LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
LIPO = @LIPO@
LN_S = @LN_S@
LOCALEDIR = @LOCALEDIR@
@@ -796,8 +793,6 @@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
SNDIO_LIBS = @SNDIO_LIBS@
@@ -842,6 +837,8 @@
WAYLAND_LIBS = @WAYLAND_LIBS@
WEBP_CFLAGS = @WEBP_CFLAGS@
WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
WGET = @WGET@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
@@ -948,9 +945,9 @@
effects/gstgleffectlaplacian.c gstglcolorscale.c \
gstglcolorbalance.c gstglmixer.c gstglvideomixer.c \
gstglfiltershader.c gstglfilterapp.c gstglviewconvert.c \
- gstglstereosplit.c gstglstereomix.c $(am__append_1) \
- $(am__append_3) $(am__append_5) $(am__append_7) \
- $(am__append_9)
+ gstglstereosplit.c gstgldeinterlace.c gstglstereomix.c \
+ gltestsrc.c gstgltestsrc.c $(am__append_1) $(am__append_3) \
+ $(am__append_5) $(am__append_7) $(am__append_9)
noinst_HEADERS = gstglbasemixer.h gstgluploadelement.h \
gstgldownloadelement.h gstglcolorconvertelement.h \
gstglfilterbin.h gstglmixerbin.h gstglsinkbin.h gstglsrcbin.h \
@@ -958,9 +955,9 @@
effects/gstgleffectssources.h gstglcolorscale.h \
gstglcolorbalance.h gstglmixer.h gstglvideomixer.h \
gstglfiltershader.h gstglfilterapp.h gstglstereosplit.h \
- gstglstereomix.h gstglviewconvert.h $(am__append_2) \
- $(am__append_4) $(am__append_6) $(am__append_8) \
- $(am__append_10)
+ gstglstereomix.h gstgldeinterlace.h gstglviewconvert.h \
+ gltestsrc.h gstgltestsrc.h $(am__append_2) $(am__append_4) \
+ $(am__append_6) $(am__append_8) $(am__append_10)
libgstopengl_la_OBJCFLAGS = \
-I$(top_srcdir)/gst-libs \
-I$(top_builddir)/gst-libs \
@@ -1469,20 +1466,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 $(libgstopengl_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstopengl_la_CFLAGS) $(CFLAGS) -c -o libgstopengl_la-gstglstereosplit.lo `test -f 'gstglstereosplit.c' || echo '$(srcdir)/'`gstglstereosplit.c
-libgstopengl_la-gstglstereomix.lo: gstglstereomix.c
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstopengl_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstopengl_la_CFLAGS) $(CFLAGS) -MT libgstopengl_la-gstglstereomix.lo -MD -MP -MF $(DEPDIR)/libgstopengl_la-gstglstereomix.Tpo -c -o libgstopengl_la-gstglstereomix.lo `test -f 'gstglstereomix.c' || echo '$(srcdir)/'`gstglstereomix.c
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgstopengl_la-gstglstereomix.Tpo $(DEPDIR)/libgstopengl_la-gstglstereomix.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gstglstereomix.c' object='libgstopengl_la-gstglstereomix.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 $(libgstopengl_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstopengl_la_CFLAGS) $(CFLAGS) -c -o libgstopengl_la-gstglstereomix.lo `test -f 'gstglstereomix.c' || echo '$(srcdir)/'`gstglstereomix.c
-
-libgstopengl_la-gstglfilterglass.lo: gstglfilterglass.c
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstopengl_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstopengl_la_CFLAGS) $(CFLAGS) -MT libgstopengl_la-gstglfilterglass.lo -MD -MP -MF $(DEPDIR)/libgstopengl_la-gstglfilterglass.Tpo -c -o libgstopengl_la-gstglfilterglass.lo `test -f 'gstglfilterglass.c' || echo '$(srcdir)/'`gstglfilterglass.c
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgstopengl_la-gstglfilterglass.Tpo $(DEPDIR)/libgstopengl_la-gstglfilterglass.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gstglfilterglass.c' object='libgstopengl_la-gstglfilterglass.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 $(libgstopengl_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstopengl_la_CFLAGS) $(CFLAGS) -c -o libgstopengl_la-gstglfilterglass.lo `test -f 'gstglfilterglass.c' || echo '$(srcdir)/'`gstglfilterglass.c
-
libgstopengl_la-gstgldeinterlace.lo: gstgldeinterlace.c
@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstopengl_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstopengl_la_CFLAGS) $(CFLAGS) -MT libgstopengl_la-gstgldeinterlace.lo -MD -MP -MF $(DEPDIR)/libgstopengl_la-gstgldeinterlace.Tpo -c -o libgstopengl_la-gstgldeinterlace.lo `test -f 'gstgldeinterlace.c' || echo '$(srcdir)/'`gstgldeinterlace.c
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgstopengl_la-gstgldeinterlace.Tpo $(DEPDIR)/libgstopengl_la-gstgldeinterlace.Plo
@@ -1490,6 +1473,13 @@
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstopengl_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstopengl_la_CFLAGS) $(CFLAGS) -c -o libgstopengl_la-gstgldeinterlace.lo `test -f 'gstgldeinterlace.c' || echo '$(srcdir)/'`gstgldeinterlace.c
+libgstopengl_la-gstglstereomix.lo: gstglstereomix.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstopengl_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstopengl_la_CFLAGS) $(CFLAGS) -MT libgstopengl_la-gstglstereomix.lo -MD -MP -MF $(DEPDIR)/libgstopengl_la-gstglstereomix.Tpo -c -o libgstopengl_la-gstglstereomix.lo `test -f 'gstglstereomix.c' || echo '$(srcdir)/'`gstglstereomix.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgstopengl_la-gstglstereomix.Tpo $(DEPDIR)/libgstopengl_la-gstglstereomix.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gstglstereomix.c' object='libgstopengl_la-gstglstereomix.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 $(libgstopengl_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstopengl_la_CFLAGS) $(CFLAGS) -c -o libgstopengl_la-gstglstereomix.lo `test -f 'gstglstereomix.c' || echo '$(srcdir)/'`gstglstereomix.c
+
libgstopengl_la-gltestsrc.lo: gltestsrc.c
@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstopengl_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstopengl_la_CFLAGS) $(CFLAGS) -MT libgstopengl_la-gltestsrc.lo -MD -MP -MF $(DEPDIR)/libgstopengl_la-gltestsrc.Tpo -c -o libgstopengl_la-gltestsrc.lo `test -f 'gltestsrc.c' || echo '$(srcdir)/'`gltestsrc.c
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgstopengl_la-gltestsrc.Tpo $(DEPDIR)/libgstopengl_la-gltestsrc.Plo
@@ -1504,6 +1494,13 @@
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstopengl_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstopengl_la_CFLAGS) $(CFLAGS) -c -o libgstopengl_la-gstgltestsrc.lo `test -f 'gstgltestsrc.c' || echo '$(srcdir)/'`gstgltestsrc.c
+libgstopengl_la-gstglfilterglass.lo: gstglfilterglass.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstopengl_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstopengl_la_CFLAGS) $(CFLAGS) -MT libgstopengl_la-gstglfilterglass.lo -MD -MP -MF $(DEPDIR)/libgstopengl_la-gstglfilterglass.Tpo -c -o libgstopengl_la-gstglfilterglass.lo `test -f 'gstglfilterglass.c' || echo '$(srcdir)/'`gstglfilterglass.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgstopengl_la-gstglfilterglass.Tpo $(DEPDIR)/libgstopengl_la-gstglfilterglass.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gstglfilterglass.c' object='libgstopengl_la-gstglfilterglass.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 $(libgstopengl_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstopengl_la_CFLAGS) $(CFLAGS) -c -o libgstopengl_la-gstglfilterglass.lo `test -f 'gstglfilterglass.c' || echo '$(srcdir)/'`gstglfilterglass.c
+
libgstopengl_la-gstglmosaic.lo: gstglmosaic.c
@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstopengl_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstopengl_la_CFLAGS) $(CFLAGS) -MT libgstopengl_la-gstglmosaic.lo -MD -MP -MF $(DEPDIR)/libgstopengl_la-gstglmosaic.Tpo -c -o libgstopengl_la-gstglmosaic.lo `test -f 'gstglmosaic.c' || echo '$(srcdir)/'`gstglmosaic.c
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgstopengl_la-gstglmosaic.Tpo $(DEPDIR)/libgstopengl_la-gstglmosaic.Plo
diff --git a/ext/gl/caopengllayersink.m b/ext/gl/caopengllayersink.m
index 367b59a..83cb827 100644
--- a/ext/gl/caopengllayersink.m
+++ b/ext/gl/caopengllayersink.m
@@ -227,8 +227,7 @@
"Sink/Video", "A video sink based on CAOpenGLLayer",
"Matthew Waters <matthew@centricular.com>");
- gst_element_class_add_pad_template (element_class,
- gst_static_pad_template_get (&gst_ca_opengl_layer_sink_template));
+ gst_element_class_add_static_pad_template (element_class, &gst_ca_opengl_layer_sink_template);
gobject_class->finalize = gst_ca_opengl_layer_sink_finalize;
@@ -384,7 +383,6 @@
gst_ca_opengl_layer_sink_query (GstBaseSink * bsink, GstQuery * query)
{
GstCAOpenGLLayerSink *ca_sink = GST_CA_OPENGL_LAYER_SINK (bsink);
- gboolean res = FALSE;
switch (GST_QUERY_TYPE (query)) {
case GST_QUERY_CONTEXT:
diff --git a/ext/gl/effects/gstgleffectssources.c b/ext/gl/effects/gstgleffectssources.c
index 6bdc155..b83e1d7 100644
--- a/ext/gl/effects/gstgleffectssources.c
+++ b/ext/gl/effects/gstgleffectssources.c
@@ -100,7 +100,8 @@
"void main () {"
" vec2 texturecoord = v_texcoord.xy;"
" vec2 normcoord = texturecoord - 0.5;"
- " float r = length (normcoord);"
+ /* Add a very small value to length otherwise it could be 0 */
+ " float r = length (normcoord)+0.01;"
" r = pow(r, 0.40)*1.3;"
" normcoord = normcoord / r;"
" texturecoord = (normcoord + 0.5);"
@@ -136,7 +137,8 @@
* rect textures */
" normcoord = (texturecoord - 0.5);"
" float r = length(normcoord);"
- " normcoord *= clamp (r, 0.0, 0.275) / r;"
+ " if (r > 0.0)"
+ " normcoord *= clamp (r, 0.0, 0.275) / r;"
" texturecoord = normcoord + 0.5;"
" gl_FragColor = texture2D (tex, texturecoord);"
"}";
@@ -466,32 +468,44 @@
"}";
const gchar *interpolate_fragment_source =
+ "#ifdef GL_ES\n"
+ "precision mediump float;\n"
+ "#endif\n"
+ "varying vec2 v_texcoord;"
"uniform sampler2D base;"
"uniform sampler2D blend;"
"void main () {"
- "vec4 basecolor = texture2D (base, gl_TexCoord[0].st);"
- "vec4 blendcolor = texture2D (blend, gl_TexCoord[0].st);"
+ "vec4 basecolor = texture2D (base, v_texcoord);"
+ "vec4 blendcolor = texture2D (blend, v_texcoord);"
"vec4 white = vec4(1.0);"
"gl_FragColor = blendcolor + (1.0 - blendcolor.a) * basecolor;"
"}";
const gchar *texture_interp_fragment_source =
+ "#ifdef GL_ES\n"
+ "precision mediump float;\n"
+ "#endif\n"
+ "varying vec2 v_texcoord;"
"uniform sampler2D base;"
"uniform sampler2D blend;"
"uniform sampler2D alpha;"
"void main () {"
- " vec4 basecolor = texture2D (base, gl_TexCoord[0].st);"
- " vec4 blendcolor = texture2D (blend, gl_TexCoord[0].st);"
- " vec4 alphacolor = texture2D (alpha, gl_TexCoord[0].st);"
+ " vec4 basecolor = texture2D (base, v_texcoord);"
+ " vec4 blendcolor = texture2D (blend, v_texcoord);"
+ " vec4 alphacolor = texture2D (alpha, v_texcoord);"
" gl_FragColor = (alphacolor * blendcolor) + (1.0 - alphacolor) * basecolor;"
"}";
const gchar *difference_fragment_source =
+ "#ifdef GL_ES\n"
+ "precision mediump float;\n"
+ "#endif\n"
+ "varying vec2 v_texcoord;"
"uniform sampler2D saved;"
"uniform sampler2D current;"
"void main () {"
- "vec4 savedcolor = texture2D (saved, gl_TexCoord[0].st);"
- "vec4 currentcolor = texture2D (current, gl_TexCoord[0].st);"
+ "vec4 savedcolor = texture2D (saved, v_texcoord);"
+ "vec4 currentcolor = texture2D (current, v_texcoord);"
"gl_FragColor = vec4 (step (0.12, length (savedcolor - currentcolor)));"
"}";
diff --git a/ext/gl/gltestsrc.c b/ext/gl/gltestsrc.c
index c4a2765..80e3c55 100644
--- a/ext/gl/gltestsrc.c
+++ b/ext/gl/gltestsrc.c
@@ -1,5 +1,6 @@
/* GStreamer
* Copyright (C) <1999> Erik Walthinsen <omega@cse.ogi.edu>
+ * Copyright (C) <2016> Matthew Waters <matthew@centricular.com>
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Library General Public
@@ -21,17 +22,19 @@
#include "config.h"
#endif
-/* non-GST-specific stuff */
-
#include "gltestsrc.h"
-#include <string.h>
-#include <stdlib.h>
-#include <math.h>
+#define MAX_ATTRIBUTES 4
-#ifndef M_PI
-#define M_PI 3.14159265358979323846
-#endif
+struct vts_color_struct
+{
+ gfloat R, G, B;
+};
+
+struct XYZWRGB
+{
+ gfloat X, Y, Z, W, R, G, B;
+};
enum
{
@@ -51,408 +54,1115 @@
static const struct vts_color_struct vts_colors[] = {
/* 100% white */
- {255, 128, 128, 255, 255, 255, 255},
+ {1.0f, 1.0f, 1.0f},
/* yellow */
- {226, 0, 155, 255, 255, 0, 255},
+ {1.0f, 1.0f, 0.0f},
/* cyan */
- {179, 170, 0, 0, 255, 255, 255},
+ {0.0f, 1.0f, 1.0f},
/* green */
- {150, 46, 21, 0, 255, 0, 255},
+ {0.0f, 1.0f, 0.0f},
/* magenta */
- {105, 212, 235, 255, 0, 255, 255},
+ {1.0f, 0.0f, 1.0f},
/* red */
- {76, 85, 255, 255, 0, 0, 255},
+ {1.0f, 0.0f, 0.0f},
/* blue */
- {29, 255, 107, 0, 0, 255, 255},
+ {0.0f, 0.0f, 1.0f},
/* black */
- {16, 128, 128, 0, 0, 0, 255},
+ {0.0f, 0.0f, 0.0f},
/* -I */
- {16, 198, 21, 0, 0, 128, 255},
+ {0.0, 0.0f, 0.5f},
/* +Q */
- {16, 235, 198, 0, 128, 255, 255},
+ {0.0f, 0.5, 1.0f},
/* superblack */
- {0, 128, 128, 0, 0, 0, 255},
- /* 5% grey */
- {32, 128, 128, 32, 32, 32, 255},
+ {0.0f, 0.0f, 0.0f},
+ /* 7.421875% grey */
+ {19. / 256.0f, 19. / 256.0f, 19. / 256.0},
};
-static void
-gst_gl_test_src_unicolor (GstGLTestSrc * v, GstBuffer * buffer, int w,
- int h, const struct vts_color_struct *color);
-
-void
-gst_gl_test_src_smpte (GstGLTestSrc * v, GstBuffer * buffer, int w, int h)
-{
-#if GST_GL_HAVE_OPENGL
- int i;
-
- if (gst_gl_context_get_gl_api (v->context) & GST_GL_API_OPENGL) {
-
- glClearColor (0.0, 0.0, 0.0, 1.0);
- glClear (GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
-
- glDisable (GL_CULL_FACE);
-
- glMatrixMode (GL_PROJECTION);
- glLoadIdentity ();
-
- for (i = 0; i < 7; i++) {
- glColor4f (vts_colors[i].R * (1 / 255.0f), vts_colors[i].G * (1 / 255.0f),
- vts_colors[i].B * (1 / 255.0f), 1.0f);
- glBegin (GL_QUADS);
- glVertex3f (-1.0f + i * (2.0f / 7.0f), -1.0f + 2.0 * (2.0f / 3.0f), 0);
- glVertex3f (-1.0f + (i + 1.0f) * (2.0f / 7.0f),
- -1.0f + 2.0f * (2.0f / 3.0f), 0);
- glVertex3f (-1.0f + (i + 1.0f) * (2.0f / 7.0f), -1.0f, 0);
- glVertex3f (-1.0f + i * (2.0f / 7.0f), -1.0f, 0);
- glEnd ();
- }
-
- for (i = 0; i < 7; i++) {
- int k;
-
- if (i & 1) {
- k = 7;
- } else {
- k = 6 - i;
- }
-
- glColor4f (vts_colors[k].R * (1 / 255.0f), vts_colors[k].G * (1 / 255.0f),
- vts_colors[k].B * (1 / 255.0f), 1.0f);
- glBegin (GL_QUADS);
- glVertex3f (-1.0f + i * (2.0f / 7.0f), -1.0f + 2.0f * (3.0f / 4.0f), 0);
- glVertex3f (-1.0f + (i + 1) * (2.0f / 7.0f), -1.0f + 2.0f * (3.0f / 4.0f),
- 0);
- glVertex3f (-1.0f + (i + 1) * (2.0f / 7.0f), -1.0f + 2.0f * (2.0f / 3.0f),
- 0);
- glVertex3f (-1.0f + i * (2.0f / 7.0f), -1.0f + 2.0f * (2.0f / 3.0f), 0);
- glEnd ();
- }
-
- for (i = 0; i < 3; i++) {
- int k;
-
- if (i == 0) {
- k = 8;
- } else if (i == 1) {
- k = 0;
- } else {
- k = 9;
- }
-
- glColor4f (vts_colors[k].R * (1 / 255.0f), vts_colors[k].G * (1 / 255.0f),
- vts_colors[k].B * (1 / 255.0f), 1.0f);
- glBegin (GL_QUADS);
- glVertex3f (-1.0f + i * (2.0f / 6.0f), -1.0f + 2.0f * 1, 0);
- glVertex3f (-1.0f + (i + 1) * (2.0f / 6.0f), -1.0f + 2.0f * 1, 0);
- glVertex3f (-1.0f + (i + 1) * (2.0f / 6.0f), -1.0f + 2.0f * (3.0f / 4.0f),
- 0);
- glVertex3f (-1.0f + i * (2.0f / 6.0f), -1.0f + 2.0f * (3.0f / 4.0f), 0);
- glEnd ();
- }
-
- for (i = 0; i < 3; i++) {
- int k;
-
- if (i == 0) {
- k = COLOR_SUPER_BLACK;
- } else if (i == 1) {
- k = COLOR_BLACK;
- } else {
- k = COLOR_DARK_GREY;
- }
-
- glColor4f (vts_colors[k].R * (1 / 255.0f), vts_colors[k].G * (1 / 255.0f),
- vts_colors[k].B * (1 / 255.0f), 1.0f);
- glBegin (GL_QUADS);
- glVertex3f (-1.0f + 2.0f * (0.5f + i * (1.0f / 12.0f)), -1.0 + 2.0f * 1,
- 0);
- glVertex3f (-1.0f + 2.0f * (0.5f + (i + 1) * (1.0f / 12.0f)),
- -1.0f + 2.0f * 1, 0);
- glVertex3f (-1.0f + 2.0f * (0.5f + (i + 1) * (1.0f / 12.0f)),
- -1.0f + 2.0f * (3.0f / 4.0f), 0);
- glVertex3f (-1.0f + 2.0f * (0.5f + i * (1.0f / 12.0f)),
- -1.0f + 2.0f * (3.0f / 4.0f), 0);
- glEnd ();
- }
-
- glColor4f (1.0, 1.0, 1.0, 1.0);
- glBegin (GL_QUADS);
- glVertex3f (-1.0 + 2.0 * (0.75), -1.0 + 2.0 * 1, 0);
- glVertex3f (-1.0 + 2.0 * (1.0), -1.0 + 2.0 * 1, 0);
- glVertex3f (-1.0 + 2.0 * (1.0), -1.0 + 2.0 * (3.0 / 4.0), 0);
- glVertex3f (-1.0 + 2.0 * (0.75), -1.0 + 2.0 * (3.0 / 4.0), 0);
- glEnd ();
- }
-#endif
-}
-
/* *INDENT-OFF* */
-
static const GLfloat positions[] = {
-1.0, 1.0, 0.0, 1.0,
1.0, 1.0, 0.0, 1.0,
1.0, -1.0, 0.0, 1.0,
-1.0, -1.0, 0.0, 1.0,
- };
-static const GLfloat identitiy_matrix[] = {
- 1.0, 0.0, 0.0, 0.0,
- 0.0, 1.0, 0.0, 0.0,
- 0.0, 0.0, 1.0, 0.0,
- 0.0, 0.0, 0.0, 1.0,
- };
+};
+static const GLushort indices_quad[] = { 0, 1, 2, 0, 2, 3 };
/* *INDENT-ON* */
-void
-gst_gl_test_src_shader (GstGLTestSrc * v, GstBuffer * buffer, int w, int h)
+struct attribute
{
+ const gchar *name;
+ gint location;
+ guint n_elements;
+ GLenum element_type;
+ guint offset; /* in bytes */
+ guint stride; /* in bytes */
+};
- GstGLFuncs *gl = v->context->gl_vtable;
+struct SrcShader
+{
+ struct BaseSrcImpl base;
+
+ GstGLShader *shader;
+
+ guint vao;
+ guint vbo;
+ guint vbo_indices;
+
+ guint n_attributes;
+ struct attribute attributes[MAX_ATTRIBUTES];
+
+ gconstpointer vertices;
+ gsize vertices_size;
+ const gushort *indices;
+ guint index_offset;
+ guint n_indices;
+};
+
+static void
+_bind_buffer (struct SrcShader *src)
+{
+ GstGLContext *context = src->base.context;
+ const GstGLFuncs *gl = context->gl_vtable;
+ gint i;
+
+ gl->BindBuffer (GL_ELEMENT_ARRAY_BUFFER, src->vbo_indices);
+ gl->BindBuffer (GL_ARRAY_BUFFER, src->vbo);
+
+ /* Load the vertex position */
+ for (i = 0; i < src->n_attributes; i++) {
+ struct attribute *attr = &src->attributes[i];
+
+ if (attr->location == -1)
+ attr->location =
+ gst_gl_shader_get_attribute_location (src->shader, attr->name);
+
+ gl->VertexAttribPointer (attr->location, attr->n_elements,
+ attr->element_type, GL_FALSE, attr->stride,
+ (void *) (gintptr) attr->offset);
+
+ gl->EnableVertexAttribArray (attr->location);
+ }
+}
+
+static void
+_unbind_buffer (struct SrcShader *src)
+{
+ GstGLContext *context = src->base.context;
+ const GstGLFuncs *gl = context->gl_vtable;
+ gint i;
+
+ gl->BindBuffer (GL_ELEMENT_ARRAY_BUFFER, 0);
+ gl->BindBuffer (GL_ARRAY_BUFFER, 0);
+
+ for (i = 0; i < src->n_attributes; i++) {
+ struct attribute *attr = &src->attributes[i];
+
+ gl->DisableVertexAttribArray (attr->location);
+ }
+}
+
+static gboolean
+_src_shader_init (gpointer impl, GstGLContext * context, GstVideoInfo * v_info)
+{
+ struct SrcShader *src = impl;
+ const GstGLFuncs *gl = context->gl_vtable;
+
+ src->base.context = context;
+
+ if (!src->vbo) {
+ if (gl->GenVertexArrays) {
+ gl->GenVertexArrays (1, &src->vao);
+ gl->BindVertexArray (src->vao);
+ }
+
+ gl->GenBuffers (1, &src->vbo);
+ gl->BindBuffer (GL_ARRAY_BUFFER, src->vbo);
+ gl->BufferData (GL_ARRAY_BUFFER, src->vertices_size,
+ src->vertices, GL_STATIC_DRAW);
+
+ gl->GenBuffers (1, &src->vbo_indices);
+ gl->BindBuffer (GL_ELEMENT_ARRAY_BUFFER, src->vbo_indices);
+ gl->BufferData (GL_ELEMENT_ARRAY_BUFFER, src->n_indices * sizeof (gushort),
+ src->indices, GL_STATIC_DRAW);
+
+ if (gl->GenVertexArrays) {
+ _bind_buffer (src);
+ gl->BindVertexArray (0);
+ }
+
+ gl->BindBuffer (GL_ARRAY_BUFFER, 0);
+ gl->BindBuffer (GL_ELEMENT_ARRAY_BUFFER, 0);
+ }
+
+ return TRUE;
+}
+
+static gboolean
+_src_shader_fill_bound_fbo (gpointer impl)
+{
+ struct SrcShader *src = impl;
+ const GstGLFuncs *gl;
+
+ g_return_val_if_fail (src->base.context, FALSE);
+ g_return_val_if_fail (src->shader, FALSE);
+ gl = src->base.context->gl_vtable;
+
+ gst_gl_shader_use (src->shader);
+
+ if (gl->GenVertexArrays)
+ gl->BindVertexArray (src->vao);
+ else
+ _bind_buffer (src);
+
+ gl->DrawElements (GL_TRIANGLES, src->n_indices, GL_UNSIGNED_SHORT,
+ (gpointer) (gintptr) src->index_offset);
+
+ if (gl->GenVertexArrays)
+ gl->BindVertexArray (0);
+ else
+ _unbind_buffer (src);
+
+ gst_gl_context_clear_shader (src->base.context);
+
+ return TRUE;
+}
+
+static void
+_src_shader_deinit (gpointer impl)
+{
+ struct SrcShader *src = impl;
+ const GstGLFuncs *gl = src->base.context->gl_vtable;
+
+ if (src->shader)
+ gst_object_unref (src->shader);
+ src->shader = NULL;
+
+ if (src->vao)
+ gl->DeleteVertexArrays (1, &src->vao);
+ src->vao = 0;
+
+ if (src->vbo)
+ gl->DeleteBuffers (1, &src->vbo);
+ src->vbo = 0;
+
+ if (src->vbo_indices)
+ gl->DeleteBuffers (1, &src->vbo_indices);
+ src->vbo_indices = 0;
+}
/* *INDENT-OFF* */
- const GLfloat uvs[] = {
- 0.0, 1.0,
- 1.0, 1.0,
- 1.0, 0.0,
- 0.0, 0.0,
- };
+static const gchar *smpte_vertex_src =
+ "attribute vec4 position;\n"
+ "attribute vec4 a_color;\n"
+ "varying vec4 color;\n"
+ "void main()\n"
+ "{\n"
+ " gl_Position = position;\n"
+ " color = a_color;\n"
+ "}";
+
+static const gchar *smpte_fragment_src =
+ "#ifdef GL_ES\n"
+ "precision mediump float;\n"
+ "#endif\n"
+ "varying vec4 color;\n"
+ "void main()\n"
+ "{\n"
+ " gl_FragColor = color;\n"
+ "}";
+
+static const gchar *snow_vertex_src =
+ "attribute vec4 position;\n"
+ "varying vec2 out_uv;\n"
+ "void main()\n"
+ "{\n"
+ " gl_Position = position;\n"
+ " out_uv = position.xy;\n"
+ "}";
+
+static const gchar *snow_fragment_src =
+ "#ifdef GL_ES\n"
+ "precision mediump float;\n"
+ "#endif\n"
+ "uniform float time;\n"
+ "varying vec2 out_uv;\n"
+ "\n"
+ "float rand(vec2 co){\n"
+ " return fract(sin(dot(co.xy, vec2(12.9898,78.233))) * 43758.5453);\n"
+ "}\n"
+ "void main()\n"
+ "{\n"
+ " gl_FragColor = vec4(rand(time * out_uv));\n"
+ "}";
/* *INDENT-ON* */
- GLushort indices[] = { 0, 1, 2, 3, 0 };
+#define N_QUADS 21
+struct SrcSMPTE
+{
+ struct SrcShader base;
- GLint attr_position_loc = -1;
- GLint attr_uv_loc = -1;
+ GstGLShader *snow_shader;
+ GstGLShader *color_shader;
+ gint attr_snow_position;
+};
- if (gst_gl_context_get_gl_api (v->context)) {
+static gpointer
+_src_smpte_new (GstGLTestSrc * test)
+{
+ struct SrcSMPTE *src = g_new0 (struct SrcSMPTE, 1);
- gst_gl_context_clear_shader (v->context);
- gl->BindTexture (GL_TEXTURE_2D, 0);
+ src->base.base.src = test;
- gst_gl_shader_use (v->shader);
-
- attr_position_loc =
- gst_gl_shader_get_attribute_location (v->shader, "position");
-
- attr_uv_loc = gst_gl_shader_get_attribute_location (v->shader, "uv");
-
- /* Load the vertex position */
- gl->VertexAttribPointer (attr_position_loc, 4, GL_FLOAT,
- GL_FALSE, 0, positions);
- /* Load the texture coordinate */
- gl->VertexAttribPointer (attr_uv_loc, 2, GL_FLOAT, GL_FALSE, 0, uvs);
-
- gl->EnableVertexAttribArray (attr_position_loc);
- gl->EnableVertexAttribArray (attr_uv_loc);
-
- gst_gl_shader_set_uniform_matrix_4fv (v->shader, "mvp",
- 1, GL_FALSE, identitiy_matrix);
-
- gst_gl_shader_set_uniform_1f (v->shader, "time",
- (gfloat) v->running_time / GST_SECOND);
-
- gst_gl_shader_set_uniform_1f (v->shader, "aspect_ratio",
- (gfloat) w / (gfloat) h);
-
- gl->DrawElements (GL_TRIANGLE_STRIP, 5, GL_UNSIGNED_SHORT, indices);
-
- gl->DisableVertexAttribArray (attr_position_loc);
- gl->DisableVertexAttribArray (attr_uv_loc);
-
- gst_gl_context_clear_shader (v->context);
- }
+ return src;
}
-static void
-gst_gl_test_src_unicolor (GstGLTestSrc * v, GstBuffer * buffer, int w,
- int h, const struct vts_color_struct *color)
+static gboolean
+_src_smpte_init (gpointer impl, GstGLContext * context, GstVideoInfo * v_info)
{
-#if GST_GL_HAVE_OPENGL
- if (gst_gl_context_get_gl_api (v->context) & GST_GL_API_OPENGL) {
- glClearColor (color->R * (1 / 255.0f), color->G * (1 / 255.0f),
- color->B * (1 / 255.0f), 1.0f);
- glClear (GL_COLOR_BUFFER_BIT);
- }
-#endif
-}
-
-void
-gst_gl_test_src_black (GstGLTestSrc * v, GstBuffer * buffer, int w, int h)
-{
- gst_gl_test_src_unicolor (v, buffer, w, h, vts_colors + COLOR_BLACK);
-}
-
-void
-gst_gl_test_src_white (GstGLTestSrc * v, GstBuffer * buffer, int w, int h)
-{
- gst_gl_test_src_unicolor (v, buffer, w, h, vts_colors + COLOR_WHITE);
-}
-
-void
-gst_gl_test_src_red (GstGLTestSrc * v, GstBuffer * buffer, int w, int h)
-{
- gst_gl_test_src_unicolor (v, buffer, w, h, vts_colors + COLOR_RED);
-}
-
-void
-gst_gl_test_src_green (GstGLTestSrc * v, GstBuffer * buffer, int w, int h)
-{
- gst_gl_test_src_unicolor (v, buffer, w, h, vts_colors + COLOR_GREEN);
-}
-
-void
-gst_gl_test_src_blue (GstGLTestSrc * v, GstBuffer * buffer, int w, int h)
-{
- gst_gl_test_src_unicolor (v, buffer, w, h, vts_colors + COLOR_BLUE);
-}
-
-static void
-gst_gl_test_src_checkers (GstGLTestSrc * v, gint checker_width)
-{
-
- GstGLFuncs *gl = v->context->gl_vtable;
-
- GLushort indices[] = { 0, 1, 2, 3, 0 };
-
- GLint attr_position_loc = -1;
-
- if (gst_gl_context_get_gl_api (v->context)) {
-
- gst_gl_context_clear_shader (v->context);
- gl->BindTexture (GL_TEXTURE_2D, 0);
-
- gst_gl_shader_use (v->shader);
-
- attr_position_loc =
- gst_gl_shader_get_attribute_location (v->shader, "position");
-
- /* Load the vertex position */
- gl->VertexAttribPointer (attr_position_loc, 4, GL_FLOAT,
- GL_FALSE, 0, positions);
-
- gl->EnableVertexAttribArray (attr_position_loc);
-
- gst_gl_shader_set_uniform_matrix_4fv (v->shader, "mvp",
- 1, GL_FALSE, identitiy_matrix);
-
- gst_gl_shader_set_uniform_1f (v->shader, "checker_width", checker_width);
-
- gl->DrawElements (GL_TRIANGLE_STRIP, 5, GL_UNSIGNED_SHORT, indices);
-
- gl->DisableVertexAttribArray (attr_position_loc);
-
- gst_gl_context_clear_shader (v->context);
- }
-}
-
-
-void
-gst_gl_test_src_checkers1 (GstGLTestSrc * v, GstBuffer * buffer, int w, int h)
-{
- gst_gl_test_src_checkers (v, 1);
-}
-
-
-void
-gst_gl_test_src_checkers2 (GstGLTestSrc * v, GstBuffer * buffer, int w, int h)
-{
- gst_gl_test_src_checkers (v, 2);
-}
-
-void
-gst_gl_test_src_checkers4 (GstGLTestSrc * v, GstBuffer * buffer, int w, int h)
-{
- gst_gl_test_src_checkers (v, 4);
-
-}
-
-void
-gst_gl_test_src_checkers8 (GstGLTestSrc * v, GstBuffer * buffer, int w, int h)
-{
- gst_gl_test_src_checkers (v, 8);
-}
-
-void
-gst_gl_test_src_circular (GstGLTestSrc * v, GstBuffer * buffer, int w, int h)
-{
-#if 0
+ struct SrcSMPTE *src = impl;
+ struct XYZWRGB *coord;
+ gushort *plane_indices;
+ GError *error = NULL;
+ int color_idx = 0;
int i;
- int j;
- paintinfo pi = { NULL, };
- paintinfo *p = π
- struct fourcc_list_struct *fourcc;
- struct vts_color_struct color;
- static uint8_t sine_array[256];
- static int sine_array_inited = FALSE;
- double freq[8];
-#ifdef SCALE_AMPLITUDE
- double ampl[8];
-#endif
- int d;
+ src->base.base.context = context;
- if (!sine_array_inited) {
- for (i = 0; i < 256; i++) {
- sine_array[i] =
- floor (255 * (0.5 + 0.5 * sin (i * 2 * M_PI / 256)) + 0.5);
- }
- sine_array_inited = TRUE;
+ coord = g_new0 (struct XYZWRGB, N_QUADS * 4);
+ plane_indices = g_new0 (gushort, N_QUADS * 6);
+
+ /* top row */
+ for (int i = 0; i < 7; i++) {
+ coord[color_idx * 4 + 0].X = -1.0f + i * (2.0f / 7.0f);
+ coord[color_idx * 4 + 0].Y = 1.0f / 3.0f;
+ coord[color_idx * 4 + 1].X = -1.0f + (i + 1) * (2.0f / 7.0f);
+ coord[color_idx * 4 + 1].Y = 1.0f / 3.0f;
+ coord[color_idx * 4 + 2].X = -1.0f + (i + 1) * (2.0f / 7.0f);
+ coord[color_idx * 4 + 2].Y = -1.0f;
+ coord[color_idx * 4 + 3].X = -1.0f + i * (2.0f / 7.0f);
+ coord[color_idx * 4 + 3].Y = -1.0f;
+ color_idx++;
}
- p->width = w;
- p->height = h;
- fourcc = v->fourcc;
- if (fourcc == NULL)
+ /* middle row */
+ for (int i = 0; i < 7; i++) {
+ coord[color_idx * 4 + 0].X = -1.0f + i * (2.0f / 7.0f);
+ coord[color_idx * 4 + 0].Y = 0.5f;
+ coord[color_idx * 4 + 1].X = -1.0f + (i + 1) * (2.0f / 7.0f);
+ coord[color_idx * 4 + 1].Y = 0.5f;
+ coord[color_idx * 4 + 2].X = -1.0f + (i + 1) * (2.0f / 7.0f);
+ coord[color_idx * 4 + 2].Y = 1.0f / 3.0f;
+ coord[color_idx * 4 + 3].X = -1.0f + i * (2.0f / 7.0f);
+ coord[color_idx * 4 + 3].Y = 1.0f / 3.0f;
+ color_idx++;
+ }
+
+ /* bottom row, left three */
+ for (int i = 0; i < 3; i++) {
+ coord[color_idx * 4 + 0].X = -1.0f + i / 3.0f;
+ coord[color_idx * 4 + 0].Y = 1.0f;
+ coord[color_idx * 4 + 1].X = -1.0f + (i + 1) / 3.0f;
+ coord[color_idx * 4 + 1].Y = 1.0f;
+ coord[color_idx * 4 + 2].X = -1.0f + (i + 1) / 3.0f;
+ coord[color_idx * 4 + 2].Y = 0.5f;
+ coord[color_idx * 4 + 3].X = -1.0f + i / 3.0f;
+ coord[color_idx * 4 + 3].Y = 0.5f;
+ color_idx++;
+ }
+
+ /* bottom row, middle three (the blacks) */
+ for (int i = 0; i < 3; i++) {
+ coord[color_idx * 4 + 0].X = i / 6.0f;
+ coord[color_idx * 4 + 0].Y = 1.0f;
+ coord[color_idx * 4 + 1].X = (i + 1) / 6.0f;
+ coord[color_idx * 4 + 1].Y = 1.0f;
+ coord[color_idx * 4 + 2].X = (i + 1) / 6.0f;
+ coord[color_idx * 4 + 2].Y = 0.5f;
+ coord[color_idx * 4 + 3].X = i / 6.0f;
+ coord[color_idx * 4 + 3].Y = 0.5f;
+ color_idx++;
+ }
+
+ g_assert (color_idx < N_QUADS);
+
+ for (i = 0; i < N_QUADS - 1; i++) {
+ int j, k;
+ if (i < 7) {
+ k = i;
+ } else if ((i - 7) & 1) {
+ k = COLOR_BLACK;
+ } else {
+ k = 13 - i;
+ }
+
+ if (i == 14) {
+ k = COLOR_NEG_I;
+ } else if (i == 15) {
+ k = COLOR_WHITE;
+ } else if (i == 16) {
+ k = COLOR_POS_Q;
+ } else if (i == 17) {
+ k = COLOR_SUPER_BLACK;
+ } else if (i == 18) {
+ k = COLOR_BLACK;
+ } else if (i == 19) {
+ k = COLOR_DARK_GREY;
+ }
+
+ for (j = 0; j < 4; j++) {
+ coord[i * 4 + j].Z = 0.0f;
+ coord[i * 4 + j].W = 1.0f;
+ coord[i * 4 + j].R = vts_colors[k].R;
+ coord[i * 4 + j].G = vts_colors[k].G;
+ coord[i * 4 + j].B = vts_colors[k].B;
+ }
+
+ for (j = 0; j < 6; j++)
+ plane_indices[i * 6 + j] = i * 4 + indices_quad[j];
+ }
+
+ /* snow */
+ coord[color_idx * 4 + 0].X = 0.5f;
+ coord[color_idx * 4 + 0].Y = 1.0f;
+ coord[color_idx * 4 + 0].Z = 0.0f;
+ coord[color_idx * 4 + 0].W = 1.0f;
+ coord[color_idx * 4 + 1].X = 1.0f;
+ coord[color_idx * 4 + 1].Y = 1.0f;
+ coord[color_idx * 4 + 1].Z = 0.0f;
+ coord[color_idx * 4 + 1].W = 1.0f;
+ coord[color_idx * 4 + 2].X = 1.0f;
+ coord[color_idx * 4 + 2].Y = 0.5f;
+ coord[color_idx * 4 + 2].Z = 0.0f;
+ coord[color_idx * 4 + 2].W = 1.0f;
+ coord[color_idx * 4 + 3].X = 0.5f;
+ coord[color_idx * 4 + 3].Y = 0.5f;
+ coord[color_idx * 4 + 3].Z = 0.0f;
+ coord[color_idx * 4 + 3].W = 1.0f;
+ for (i = 0; i < 6; i++)
+ plane_indices[color_idx * 6 + i] = color_idx * 4 + indices_quad[i];
+ color_idx++;
+
+ if (src->color_shader)
+ gst_object_unref (src->color_shader);
+ src->color_shader = gst_gl_shader_new_link_with_stages (context, &error,
+ gst_glsl_stage_new_with_string (context, GL_VERTEX_SHADER,
+ GST_GLSL_VERSION_NONE,
+ GST_GLSL_PROFILE_ES | GST_GLSL_PROFILE_COMPATIBILITY,
+ smpte_vertex_src),
+ gst_glsl_stage_new_with_string (context, GL_FRAGMENT_SHADER,
+ GST_GLSL_VERSION_NONE,
+ GST_GLSL_PROFILE_ES | GST_GLSL_PROFILE_COMPATIBILITY,
+ smpte_fragment_src), NULL);
+ if (!src->color_shader) {
+ GST_ERROR_OBJECT (src->base.base.src, "%s", error->message);
+ return FALSE;
+ }
+
+ if (src->snow_shader)
+ gst_object_unref (src->snow_shader);
+ src->snow_shader = gst_gl_shader_new_link_with_stages (context, &error,
+ gst_glsl_stage_new_with_string (context, GL_VERTEX_SHADER,
+ GST_GLSL_VERSION_NONE,
+ GST_GLSL_PROFILE_ES | GST_GLSL_PROFILE_COMPATIBILITY,
+ snow_vertex_src),
+ gst_glsl_stage_new_with_string (context, GL_FRAGMENT_SHADER,
+ GST_GLSL_VERSION_NONE,
+ GST_GLSL_PROFILE_ES | GST_GLSL_PROFILE_COMPATIBILITY,
+ snow_fragment_src), NULL);
+ if (!src->snow_shader) {
+ GST_ERROR_OBJECT (src->base.base.src, "%s", error->message);
+ return FALSE;
+ }
+
+ src->attr_snow_position = -1;
+
+ src->base.n_attributes = 2;
+
+ src->base.attributes[0].name = "position";
+ src->base.attributes[0].location = -1;
+ src->base.attributes[0].n_elements = 4;
+ src->base.attributes[0].element_type = GL_FLOAT;
+ src->base.attributes[0].offset = 0;
+ src->base.attributes[0].stride = sizeof (struct XYZWRGB);
+
+ src->base.attributes[1].name = "a_color";
+ src->base.attributes[1].location = -1;
+ src->base.attributes[1].n_elements = 3;
+ src->base.attributes[1].element_type = GL_FLOAT;
+ src->base.attributes[1].offset = 4 * sizeof (gfloat);
+ src->base.attributes[1].stride = sizeof (struct XYZWRGB);
+
+ if (src->base.shader)
+ gst_object_unref (src->base.shader);
+ src->base.shader = gst_object_ref (src->color_shader);
+ src->base.vertices = (gfloat *) coord;
+ src->base.vertices_size = sizeof (struct XYZWRGB) * N_QUADS * 4;
+ src->base.indices = plane_indices;
+ src->base.n_indices = N_QUADS * 6;
+
+ return _src_shader_init (impl, context, v_info);
+}
+
+static gboolean
+_src_smpte_fill_bound_fbo (gpointer impl)
+{
+ struct SrcSMPTE *src = impl;
+ gint attr_color_position = -1;
+
+ src->base.n_attributes = 2;
+ if (src->base.shader)
+ gst_object_unref (src->base.shader);
+ src->base.shader = gst_object_ref (src->color_shader);
+ src->base.n_indices = (N_QUADS - 1) * 6;
+ src->base.index_offset = 0;
+ if (!_src_shader_fill_bound_fbo (impl))
+ return FALSE;
+ attr_color_position = src->base.attributes[0].location;
+
+ src->base.attributes[0].location = src->attr_snow_position;
+ src->base.n_attributes = 1;
+ if (src->base.shader)
+ gst_object_unref (src->base.shader);
+ src->base.shader = gst_object_ref (src->snow_shader);
+ src->base.n_indices = 6;
+ src->base.index_offset = (N_QUADS - 1) * 6 * sizeof (gushort);
+ gst_gl_shader_use (src->snow_shader);
+ gst_gl_shader_set_uniform_1f (src->snow_shader, "time",
+ (gfloat) src->base.base.src->running_time / GST_SECOND);
+ if (!_src_shader_fill_bound_fbo (impl))
+ return FALSE;
+ src->attr_snow_position = src->base.attributes[0].location;
+ src->base.attributes[0].location = attr_color_position;
+
+ return TRUE;
+}
+
+static void
+_src_smpte_free (gpointer impl)
+{
+ struct SrcSMPTE *src = impl;
+
+ if (!impl)
return;
- fourcc->paint_setup (p, dest);
- p->paint_hline = fourcc->paint_hline;
+ _src_shader_deinit (impl);
- color = vts_colors[COLOR_BLACK];
- p->color = &color;
+ g_free ((gpointer) src->base.vertices);
+ g_free ((gpointer) src->base.indices);
- for (i = 1; i < 8; i++) {
- freq[i] = 200 * pow (2.0, -(i - 1) / 4.0);
-#ifdef SCALE_AMPLITUDE
- {
- double x;
+ if (src->snow_shader)
+ gst_object_unref (src->snow_shader);
+ if (src->color_shader)
+ gst_object_unref (src->color_shader);
- x = 2 * M_PI * freq[i] / w;
- ampl[i] = sin (x) / x;
- }
-#endif
+ g_free (impl);
+}
+
+static const struct SrcFuncs src_smpte = {
+ GST_GL_TEST_SRC_SMPTE,
+ _src_smpte_new,
+ _src_smpte_init,
+ _src_smpte_fill_bound_fbo,
+ _src_smpte_free,
+};
+
+#undef N_QUADS
+
+struct SrcUniColor
+{
+ struct BaseSrcImpl base;
+
+ struct vts_color_struct color;
+};
+
+static gpointer
+_src_uni_color_new (GstGLTestSrc * test)
+{
+ struct SrcUniColor *src = g_new0 (struct SrcUniColor, 1);
+
+ src->base.src = test;
+
+ return src;
+}
+
+static gboolean
+_src_uni_color_init (gpointer impl, GstGLContext * context,
+ GstVideoInfo * v_info)
+{
+ struct SrcUniColor *src = impl;
+
+ src->base.context = context;
+ src->base.v_info = *v_info;
+
+ return TRUE;
+}
+
+static gboolean
+_src_uni_color_fill_bound_fbo (gpointer impl)
+{
+ struct SrcUniColor *src = impl;
+ const GstGLFuncs *gl = src->base.context->gl_vtable;
+
+ gl->ClearColor (src->color.R, src->color.G, src->color.B, 1.0f);
+ gl->Clear (GL_COLOR_BUFFER_BIT);
+
+ return TRUE;
+}
+
+static void
+_src_uni_color_free (gpointer impl)
+{
+ g_free (impl);
+}
+
+#define SRC_UNICOLOR(name, cap_name) \
+static gpointer \
+G_PASTE(G_PASTE(_src_unicolor_,name),_new) (GstGLTestSrc * test) \
+{ \
+ struct SrcUniColor *src = _src_uni_color_new (test); \
+ src->color = vts_colors[G_PASTE(COLOR_,cap_name)]; \
+ return src; \
+} \
+static const struct SrcFuncs G_PASTE (src_,name) = { \
+ G_PASTE(GST_GL_TEST_SRC_,cap_name), \
+ G_PASTE(G_PASTE(_src_unicolor_,name),_new), \
+ _src_uni_color_init, \
+ _src_uni_color_fill_bound_fbo, \
+ _src_uni_color_free, \
+}
+
+SRC_UNICOLOR (white, WHITE);
+SRC_UNICOLOR (black, BLACK);
+SRC_UNICOLOR (red, RED);
+SRC_UNICOLOR (green, GREEN);
+SRC_UNICOLOR (blue, BLUE);
+
+static gpointer
+_src_blink_new (GstGLTestSrc * test)
+{
+ struct SrcUniColor *src = _src_uni_color_new (test);
+
+ src->color = vts_colors[COLOR_WHITE];
+
+ return src;
+}
+
+static gboolean
+_src_blink_fill_bound_fbo (gpointer impl)
+{
+ struct SrcUniColor *src = impl;
+
+ if (src->color.R > 0.5) {
+ src->color = vts_colors[COLOR_BLACK];
+ } else {
+ src->color = vts_colors[COLOR_WHITE];
}
- for (i = 0; i < w; i++) {
- for (j = 0; j < h; j++) {
- double dist;
- int seg;
+ return _src_uni_color_fill_bound_fbo (impl);
+}
- dist =
- sqrt ((2 * i - w) * (2 * i - w) + (2 * j - h) * (2 * j -
- h)) / (2 * w);
- seg = floor (dist * 16);
- if (seg == 0 || seg >= 8) {
- color.Y = 255;
- } else {
-#ifdef SCALE_AMPLITUDE
- double a;
-#endif
- d = floor (256 * dist * freq[seg] + 0.5);
-#ifdef SCALE_AMPLITUDE
- a = ampl[seg];
- if (a < 0)
- a = 0;
- color.Y = 128 + a * (sine_array[d & 0xff] - 128);
-#else
- color.Y = sine_array[d & 0xff];
-#endif
- }
- color.R = color.Y;
- color.G = color.Y;
- color.B = color.Y;
- p->paint_hline (p, i, j, 1);
- }
+static const struct SrcFuncs src_blink = {
+ GST_GL_TEST_SRC_BLINK,
+ _src_blink_new,
+ _src_uni_color_init,
+ _src_blink_fill_bound_fbo,
+ _src_uni_color_free,
+};
+
+/* *INDENT-OFF* */
+static const gchar *checkers_vertex_src = "attribute vec4 position;\n"
+ "varying vec2 uv;\n"
+ "void main()\n"
+ "{\n"
+ " gl_Position = position;\n"
+ /* RPi gives incorrect results for positive uv (plus it makes us start on
+ * the right pixel color i.e. red) */
+ " uv = position.xy - 1.0;\n"
+ "}";
+
+static const gchar *checkers_fragment_src =
+ "#ifdef GL_ES\n"
+ "precision mediump float;\n"
+ "#endif\n"
+ "uniform float checker_width;\n"
+ "uniform float width;\n"
+ "uniform float height;\n"
+ "varying vec2 uv;\n"
+ "void main()\n"
+ "{\n"
+ " vec2 xy_mod = floor (0.5 * uv * vec2(width, height) / (checker_width));\n"
+ " float result = mod (xy_mod.x + xy_mod.y, 2.0);\n"
+ " gl_FragColor.r = step (result, 0.5);\n"
+ " gl_FragColor.g = 1.0 - gl_FragColor.r;\n"
+ " gl_FragColor.ba = vec2(0.0, 1.0);\n"
+ "}";
+/* *INDENT-ON* */
+
+struct SrcCheckers
+{
+ struct SrcShader base;
+
+ guint checker_width;
+};
+
+static gboolean
+_src_checkers_init (gpointer impl, GstGLContext * context,
+ GstVideoInfo * v_info)
+{
+ struct SrcCheckers *src = impl;
+ GError *error = NULL;
+
+ src->base.base.context = context;
+
+ if (src->base.shader)
+ gst_object_unref (src->base.shader);
+ src->base.shader = gst_gl_shader_new_link_with_stages (context, &error,
+ gst_glsl_stage_new_with_string (context, GL_VERTEX_SHADER,
+ GST_GLSL_VERSION_NONE,
+ GST_GLSL_PROFILE_ES | GST_GLSL_PROFILE_COMPATIBILITY,
+ checkers_vertex_src),
+ gst_glsl_stage_new_with_string (context, GL_FRAGMENT_SHADER,
+ GST_GLSL_VERSION_NONE,
+ GST_GLSL_PROFILE_ES | GST_GLSL_PROFILE_COMPATIBILITY,
+ checkers_fragment_src), NULL);
+ if (!src->base.shader) {
+ GST_ERROR_OBJECT (src->base.base.src, "%s", error->message);
+ return FALSE;
}
-#endif
+
+ src->base.n_attributes = 1;
+
+ src->base.attributes[0].name = "position";
+ src->base.attributes[0].location = -1;
+ src->base.attributes[0].n_elements = 4;
+ src->base.attributes[0].element_type = GL_FLOAT;
+ src->base.attributes[0].offset = 0;
+ src->base.attributes[0].stride = 4 * sizeof (gfloat);
+
+ src->base.vertices = positions;
+ src->base.vertices_size = sizeof (positions);
+ src->base.indices = indices_quad;
+ src->base.n_indices = 6;
+
+ gst_gl_shader_use (src->base.shader);
+ gst_gl_shader_set_uniform_1f (src->base.shader, "checker_width",
+ src->checker_width);
+ gst_gl_shader_set_uniform_1f (src->base.shader, "width",
+ (gfloat) GST_VIDEO_INFO_WIDTH (v_info));
+ gst_gl_shader_set_uniform_1f (src->base.shader, "height",
+ (gfloat) GST_VIDEO_INFO_HEIGHT (v_info));
+ gst_gl_context_clear_shader (src->base.base.context);
+
+ return _src_shader_init (impl, context, v_info);
+}
+
+static void
+_src_checkers_free (gpointer impl)
+{
+ struct SrcCheckers *src = impl;
+
+ if (!src)
+ return;
+
+ _src_shader_deinit (impl);
+
+ g_free (impl);
+}
+
+static gpointer
+_src_checkers_new (GstGLTestSrc * test)
+{
+ struct SrcCheckers *src = g_new0 (struct SrcCheckers, 1);
+
+ src->base.base.src = test;
+
+ return src;
+}
+
+#define SRC_CHECKERS(spacing) \
+static gpointer \
+G_PASTE(G_PASTE(_src_checkers,spacing),_new) (GstGLTestSrc * test) \
+{ \
+ struct SrcCheckers *src = _src_checkers_new (test); \
+ src->checker_width = spacing; \
+ return src; \
+} \
+static const struct SrcFuncs G_PASTE(src_checkers,spacing) = { \
+ G_PASTE(GST_GL_TEST_SRC_CHECKERS,spacing), \
+ G_PASTE(G_PASTE(_src_checkers,spacing),_new), \
+ _src_checkers_init, \
+ _src_shader_fill_bound_fbo, \
+ _src_checkers_free, \
+}
+
+SRC_CHECKERS (1);
+SRC_CHECKERS (2);
+SRC_CHECKERS (4);
+SRC_CHECKERS (8);
+
+static gboolean
+_src_snow_init (gpointer impl, GstGLContext * context, GstVideoInfo * v_info)
+{
+ struct SrcShader *src = impl;
+ GError *error = NULL;
+
+ src->base.context = context;
+
+ if (src->shader)
+ gst_object_unref (src->shader);
+ src->shader = gst_gl_shader_new_link_with_stages (context, &error,
+ gst_glsl_stage_new_with_string (context, GL_VERTEX_SHADER,
+ GST_GLSL_VERSION_NONE,
+ GST_GLSL_PROFILE_ES | GST_GLSL_PROFILE_COMPATIBILITY,
+ snow_vertex_src),
+ gst_glsl_stage_new_with_string (context, GL_FRAGMENT_SHADER,
+ GST_GLSL_VERSION_NONE,
+ GST_GLSL_PROFILE_ES | GST_GLSL_PROFILE_COMPATIBILITY,
+ snow_fragment_src), NULL);
+ if (!src->shader) {
+ GST_ERROR_OBJECT (src->base.src, "%s", error->message);
+ return FALSE;
+ }
+
+ src->n_attributes = 1;
+
+ src->attributes[0].name = "position";
+ src->attributes[0].location = -1;
+ src->attributes[0].n_elements = 4;
+ src->attributes[0].element_type = GL_FLOAT;
+ src->attributes[0].offset = 0;
+ src->attributes[0].stride = 4 * sizeof (gfloat);
+
+ src->vertices = positions;
+ src->vertices_size = sizeof (positions);
+ src->indices = indices_quad;
+ src->n_indices = 6;
+
+ return _src_shader_init (impl, context, v_info);
+}
+
+static gboolean
+_src_snow_fill_bound_fbo (gpointer impl)
+{
+ struct SrcShader *src = impl;
+
+ g_return_val_if_fail (src->base.context, FALSE);
+ g_return_val_if_fail (src->shader, FALSE);
+
+ gst_gl_shader_use (src->shader);
+ gst_gl_shader_set_uniform_1f (src->shader, "time",
+ (gfloat) src->base.src->running_time / GST_SECOND);
+
+ return _src_shader_fill_bound_fbo (impl);
+}
+
+static void
+_src_snow_free (gpointer impl)
+{
+ struct SrcShader *src = impl;
+
+ if (!src)
+ return;
+
+ _src_shader_deinit (impl);
+
+ g_free (impl);
+}
+
+static gpointer
+_src_snow_new (GstGLTestSrc * test)
+{
+ struct SrcShader *src = g_new0 (struct SrcShader, 1);
+
+ src->base.src = test;
+
+ return src;
+}
+
+static const struct SrcFuncs src_snow = {
+ GST_GL_TEST_SRC_SNOW,
+ _src_snow_new,
+ _src_snow_init,
+ _src_snow_fill_bound_fbo,
+ _src_snow_free,
+};
+
+/* *INDENT-OFF* */
+static const gchar *mandelbrot_vertex_src = "attribute vec4 position;\n"
+ "uniform float aspect_ratio;\n"
+ "varying vec2 fractal_position;\n"
+ "void main()\n"
+ "{\n"
+ " gl_Position = position;\n"
+ " fractal_position = vec2(position.y * 0.5 - 0.3, aspect_ratio * position.x * 0.5);\n"
+ " fractal_position *= 2.5;\n"
+ "}";
+
+static const gchar *mandelbrot_fragment_src =
+ "#ifdef GL_ES\n"
+ "precision mediump float;\n"
+ "#endif\n"
+ "uniform float time;\n"
+ "varying vec2 fractal_position;\n"
+ "const vec4 K = vec4(1.0, 0.66, 0.33, 3.0);\n"
+ "vec4 hsv_to_rgb(float hue, float saturation, float value) {\n"
+ " vec4 p = abs(fract(vec4(hue) + K) * 6.0 - K.wwww);\n"
+ " return value * mix(K.xxxx, clamp(p - K.xxxx, 0.0, 1.0), saturation);\n"
+ "}\n"
+ "vec4 i_to_rgb(int i) {\n"
+ " float hue = float(i) / 100.0 + sin(time);\n"
+ " return hsv_to_rgb(hue, 0.5, 0.8);\n"
+ "}\n"
+ "vec2 pow_2_complex(vec2 c) {\n"
+ " return vec2(c.x*c.x - c.y*c.y, 2.0 * c.x * c.y);\n"
+ "}\n"
+ "vec2 mandelbrot(vec2 c, vec2 c0) {\n"
+ " return pow_2_complex(c) + c0;\n"
+ "}\n"
+ "vec4 iterate_pixel(vec2 position) {\n"
+ " vec2 c = vec2(0);\n"
+ " for (int i=0; i < 20; i++) {\n"
+ " if (c.x*c.x + c.y*c.y > 2.0*2.0)\n"
+ " return i_to_rgb(i);\n"
+ " c = mandelbrot(c, position);\n"
+ " }\n"
+ " return vec4(0, 0, 0, 1);\n"
+ "}\n"
+ "void main() {\n"
+ " gl_FragColor = iterate_pixel(fractal_position);\n"
+ "}";
+/* *INDENT-ON* */
+
+static gboolean
+_src_mandelbrot_init (gpointer impl, GstGLContext * context,
+ GstVideoInfo * v_info)
+{
+ struct SrcShader *src = impl;
+ GError *error = NULL;
+
+ src->base.context = context;
+
+ if (src->shader)
+ gst_object_unref (src->shader);
+ src->shader = gst_gl_shader_new_link_with_stages (context, &error,
+ gst_glsl_stage_new_with_string (context, GL_VERTEX_SHADER,
+ GST_GLSL_VERSION_NONE,
+ GST_GLSL_PROFILE_ES | GST_GLSL_PROFILE_COMPATIBILITY,
+ mandelbrot_vertex_src),
+ gst_glsl_stage_new_with_string (context, GL_FRAGMENT_SHADER,
+ GST_GLSL_VERSION_NONE,
+ GST_GLSL_PROFILE_ES | GST_GLSL_PROFILE_COMPATIBILITY,
+ mandelbrot_fragment_src), NULL);
+ if (!src->shader) {
+ GST_ERROR_OBJECT (src->base.src, "%s", error->message);
+ return FALSE;
+ }
+
+ src->n_attributes = 1;
+
+ src->attributes[0].name = "position";
+ src->attributes[0].location = -1;
+ src->attributes[0].n_elements = 4;
+ src->attributes[0].element_type = GL_FLOAT;
+ src->attributes[0].offset = 0;
+ src->attributes[0].stride = 4 * sizeof (gfloat);
+
+ src->vertices = positions;
+ src->vertices_size = sizeof (positions);
+ src->indices = indices_quad;
+ src->n_indices = 6;
+
+ gst_gl_shader_use (src->shader);
+ gst_gl_shader_set_uniform_1f (src->shader, "aspect_ratio",
+ (gfloat) GST_VIDEO_INFO_WIDTH (v_info) /
+ (gfloat) GST_VIDEO_INFO_HEIGHT (v_info));
+ gst_gl_context_clear_shader (src->base.context);
+
+ return _src_shader_init (impl, context, v_info);
+}
+
+static gboolean
+_src_mandelbrot_fill_bound_fbo (gpointer impl)
+{
+ struct SrcShader *src = impl;
+
+ g_return_val_if_fail (src->base.context, FALSE);
+ g_return_val_if_fail (src->shader, FALSE);
+
+ gst_gl_shader_use (src->shader);
+ gst_gl_shader_set_uniform_1f (src->shader, "time",
+ (gfloat) src->base.src->running_time / GST_SECOND);
+
+ return _src_shader_fill_bound_fbo (impl);
+}
+
+static void
+_src_mandelbrot_free (gpointer impl)
+{
+ struct SrcShader *src = impl;
+
+ if (!src)
+ return;
+
+ _src_shader_deinit (impl);
+
+ g_free (impl);
+}
+
+static gpointer
+_src_mandelbrot_new (GstGLTestSrc * test)
+{
+ struct SrcShader *src = g_new0 (struct SrcShader, 1);
+
+ src->base.src = test;
+
+ return src;
+}
+
+static const struct SrcFuncs src_mandelbrot = {
+ GST_GL_TEST_SRC_MANDELBROT,
+ _src_mandelbrot_new,
+ _src_mandelbrot_init,
+ _src_mandelbrot_fill_bound_fbo,
+ _src_mandelbrot_free,
+};
+
+/* *INDENT-OFF* */
+static const gchar *circular_vertex_src =
+ "attribute vec4 position;\n"
+ "varying vec2 uv;\n"
+ "void main()\n"
+ "{\n"
+ " gl_Position = position;\n"
+ " uv = position.xy;\n"
+ "}";
+
+static const gchar *circular_fragment_src =
+ "#ifdef GL_ES\n"
+ "precision mediump float;\n"
+ "#endif\n"
+ "uniform float aspect_ratio;\n"
+ "varying vec2 uv;\n"
+ "#define PI 3.14159265\n"
+ "void main() {\n"
+ " float dist = 0.5 * sqrt(uv.x * uv.x + uv.y / aspect_ratio * uv.y / aspect_ratio);\n"
+ " float seg = floor(dist * 16.0);\n"
+ " if (seg <= 0.0 || seg >= 8.0) {\n"
+ " gl_FragColor = vec4(vec3(0.0), 1.0);\n"
+ " } else {\n"
+ " float d = floor (256.0 * dist * 200.0 * pow (2.0, - (seg - 1.0) / 4.0) + 0.5) / 128.0;\n"
+ " gl_FragColor = vec4 (vec3(sin (d * PI) * 0.5 + 0.5), 1.0);\n"
+ " }\n"
+ "}";
+/* *INDENT-ON* */
+
+static gboolean
+_src_circular_init (gpointer impl, GstGLContext * context,
+ GstVideoInfo * v_info)
+{
+ struct SrcShader *src = impl;
+ GError *error = NULL;
+
+ src->base.context = context;
+
+ if (src->shader)
+ gst_object_unref (src->shader);
+ src->shader = gst_gl_shader_new_link_with_stages (context, &error,
+ gst_glsl_stage_new_with_string (context, GL_VERTEX_SHADER,
+ GST_GLSL_VERSION_NONE,
+ GST_GLSL_PROFILE_ES | GST_GLSL_PROFILE_COMPATIBILITY,
+ circular_vertex_src),
+ gst_glsl_stage_new_with_string (context, GL_FRAGMENT_SHADER,
+ GST_GLSL_VERSION_NONE,
+ GST_GLSL_PROFILE_ES | GST_GLSL_PROFILE_COMPATIBILITY,
+ circular_fragment_src), NULL);
+ if (!src->shader) {
+ GST_ERROR_OBJECT (src->base.src, "%s", error->message);
+ return FALSE;
+ }
+
+ src->n_attributes = 1;
+
+ src->attributes[0].name = "position";
+ src->attributes[0].location = -1;
+ src->attributes[0].n_elements = 4;
+ src->attributes[0].element_type = GL_FLOAT;
+ src->attributes[0].offset = 0;
+ src->attributes[0].stride = 4 * sizeof (gfloat);
+
+ src->vertices = positions;
+ src->vertices_size = sizeof (positions);
+ src->indices = indices_quad;
+ src->n_indices = 6;
+
+ gst_gl_shader_use (src->shader);
+ gst_gl_shader_set_uniform_1f (src->shader, "aspect_ratio",
+ (gfloat) GST_VIDEO_INFO_WIDTH (v_info) /
+ (gfloat) GST_VIDEO_INFO_HEIGHT (v_info));
+ gst_gl_context_clear_shader (src->base.context);
+
+ return _src_shader_init (impl, context, v_info);
+}
+
+static void
+_src_circular_free (gpointer impl)
+{
+ struct SrcShader *src = impl;
+
+ if (!src)
+ return;
+
+ _src_shader_deinit (impl);
+
+ g_free (impl);
+}
+
+static gpointer
+_src_circular_new (GstGLTestSrc * test)
+{
+ struct SrcShader *src = g_new0 (struct SrcShader, 1);
+
+ src->base.src = test;
+
+ return src;
+}
+
+static const struct SrcFuncs src_circular = {
+ GST_GL_TEST_SRC_CIRCULAR,
+ _src_circular_new,
+ _src_circular_init,
+ _src_mandelbrot_fill_bound_fbo,
+ _src_circular_free,
+};
+
+static const struct SrcFuncs *src_impls[] = {
+ &src_smpte,
+ &src_snow,
+ &src_black,
+ &src_white,
+ &src_red,
+ &src_green,
+ &src_blue,
+ &src_checkers1,
+ &src_checkers2,
+ &src_checkers4,
+ &src_checkers8,
+ &src_circular,
+ &src_blink,
+ &src_mandelbrot,
+};
+
+const struct SrcFuncs *
+gst_gl_test_src_get_src_funcs_for_pattern (GstGLTestSrcPattern pattern)
+{
+ gint i;
+
+ for (i = 0; i < G_N_ELEMENTS (src_impls); i++) {
+ if (src_impls[i]->pattern == pattern)
+ return src_impls[i];
+ }
+
+ return NULL;
}
diff --git a/ext/gl/gltestsrc.h b/ext/gl/gltestsrc.h
index 102109e..dbcab0c 100644
--- a/ext/gl/gltestsrc.h
+++ b/ext/gl/gltestsrc.h
@@ -22,37 +22,60 @@
#include <glib.h>
+typedef struct _GstGLTestSrc GstGLTestSrc;
+
+/**
+ * GstGLTestSrcPattern:
+ * @GST_GL_TEST_SRC_SMPTE: A standard SMPTE test pattern
+ * @GST_GL_TEST_SRC_SNOW: Random noise
+ * @GST_GL_TEST_SRC_BLACK: A black image
+ * @GST_GL_TEST_SRC_WHITE: A white image
+ * @GST_GL_TEST_SRC_RED: A red image
+ * @GST_GL_TEST_SRC_GREEN: A green image
+ * @GST_GL_TEST_SRC_BLUE: A blue image
+ * @GST_GL_TEST_SRC_CHECKERS1: Checkers pattern (1px)
+ * @GST_GL_TEST_SRC_CHECKERS2: Checkers pattern (2px)
+ * @GST_GL_TEST_SRC_CHECKERS4: Checkers pattern (4px)
+ * @GST_GL_TEST_SRC_CHECKERS8: Checkers pattern (8px)
+ * @GST_GL_TEST_SRC_CIRCULAR: Circular pattern
+ * @GST_GL_TEST_SRC_BLINK: Alternate between black and white
+ *
+ * The test pattern to produce.
+ */
+typedef enum {
+ GST_GL_TEST_SRC_SMPTE,
+ GST_GL_TEST_SRC_SNOW,
+ GST_GL_TEST_SRC_BLACK,
+ GST_GL_TEST_SRC_WHITE,
+ GST_GL_TEST_SRC_RED,
+ GST_GL_TEST_SRC_GREEN,
+ GST_GL_TEST_SRC_BLUE,
+ GST_GL_TEST_SRC_CHECKERS1,
+ GST_GL_TEST_SRC_CHECKERS2,
+ GST_GL_TEST_SRC_CHECKERS4,
+ GST_GL_TEST_SRC_CHECKERS8,
+ GST_GL_TEST_SRC_CIRCULAR,
+ GST_GL_TEST_SRC_BLINK,
+ GST_GL_TEST_SRC_MANDELBROT
+} GstGLTestSrcPattern;
+
#include "gstgltestsrc.h"
-struct vts_color_struct {
- guint8 Y, U, V;
- guint8 R, G, B;
- guint8 A;
+struct BaseSrcImpl {
+ GstGLTestSrc *src;
+ GstGLContext *context;
+ GstVideoInfo v_info;
};
-void gst_gl_test_src_smpte (GstGLTestSrc * v,
- GstBuffer *buffer, int w, int h);
-void gst_gl_test_src_shader (GstGLTestSrc * v,
- GstBuffer *buffer, int w, int h);
-void gst_gl_test_src_black (GstGLTestSrc * v,
- GstBuffer *buffer, int w, int h);
-void gst_gl_test_src_white (GstGLTestSrc * v,
- GstBuffer *buffer, int w, int h);
-void gst_gl_test_src_red (GstGLTestSrc * v,
- GstBuffer *buffer, int w, int h);
-void gst_gl_test_src_green (GstGLTestSrc * v,
- GstBuffer *buffer, int w, int h);
-void gst_gl_test_src_blue (GstGLTestSrc * v,
- GstBuffer *buffer, int w, int h);
-void gst_gl_test_src_checkers1 (GstGLTestSrc * v,
- GstBuffer *buffer, int w, int h);
-void gst_gl_test_src_checkers2 (GstGLTestSrc * v,
- GstBuffer *buffer, int w, int h);
-void gst_gl_test_src_checkers4 (GstGLTestSrc * v,
- GstBuffer *buffer, int w, int h);
-void gst_gl_test_src_checkers8 (GstGLTestSrc * v,
- GstBuffer *buffer, int w, int h);
-void gst_gl_test_src_circular (GstGLTestSrc * v,
- GstBuffer *buffer, int w, int h);
+struct SrcFuncs
+{
+ GstGLTestSrcPattern pattern;
+ gpointer (*new) (GstGLTestSrc * src);
+ gboolean (*init) (gpointer impl, GstGLContext * context, GstVideoInfo * v_info);
+ gboolean (*fill_bound_fbo) (gpointer impl);
+ void (*free) (gpointer impl);
+};
+
+const struct SrcFuncs * gst_gl_test_src_get_src_funcs_for_pattern (GstGLTestSrcPattern pattern);
#endif
diff --git a/ext/gl/gstglbasemixer.c b/ext/gl/gstglbasemixer.c
index d207883..410a420 100644
--- a/ext/gl/gstglbasemixer.c
+++ b/ext/gl/gstglbasemixer.c
@@ -123,6 +123,131 @@
}
static gboolean
+gst_gl_base_mixer_sink_event (GstAggregator * agg, GstAggregatorPad * bpad,
+ GstEvent * event)
+{
+ GstGLBaseMixerPad *pad = GST_GL_BASE_MIXER_PAD (bpad);
+
+ switch (GST_EVENT_TYPE (event)) {
+ case GST_EVENT_CAPS:
+ if (!GST_AGGREGATOR_CLASS (parent_class)->sink_event (agg, bpad, event))
+ return FALSE;
+
+ pad->negotiated = TRUE;
+ return TRUE;
+ default:
+ break;
+ }
+
+ return GST_AGGREGATOR_CLASS (parent_class)->sink_event (agg, bpad, event);
+}
+
+static gboolean
+_find_local_gl_context (GstGLBaseMixer * mix)
+{
+ GstQuery *query;
+ GstContext *context;
+ const GstStructure *s;
+
+ if (mix->context)
+ return TRUE;
+
+ query = gst_query_new_context ("gst.gl.local_context");
+ if (!mix->context && gst_gl_run_query (GST_ELEMENT (mix), query, GST_PAD_SRC)) {
+ gst_query_parse_context (query, &context);
+ if (context) {
+ s = gst_context_get_structure (context);
+ gst_structure_get (s, "context", GST_GL_TYPE_CONTEXT, &mix->context,
+ NULL);
+ }
+ }
+ if (!mix->context
+ && gst_gl_run_query (GST_ELEMENT (mix), query, GST_PAD_SINK)) {
+ gst_query_parse_context (query, &context);
+ if (context) {
+ s = gst_context_get_structure (context);
+ gst_structure_get (s, "context", GST_GL_TYPE_CONTEXT, &mix->context,
+ NULL);
+ }
+ }
+
+ GST_DEBUG_OBJECT (mix, "found local context %p", mix->context);
+
+ gst_query_unref (query);
+
+ if (mix->context)
+ return TRUE;
+
+ return FALSE;
+}
+
+static gboolean
+_get_gl_context (GstGLBaseMixer * mix)
+{
+ GstGLBaseMixerClass *mix_class = GST_GL_BASE_MIXER_GET_CLASS (mix);
+ GError *error = NULL;
+
+ if (!gst_gl_ensure_element_data (mix, &mix->display,
+ &mix->priv->other_context))
+ return FALSE;
+
+ gst_gl_display_filter_gl_api (mix->display, mix_class->supported_gl_api);
+
+ _find_local_gl_context (mix);
+
+ GST_OBJECT_LOCK (mix->display);
+ if (!mix->context) {
+ do {
+ if (mix->context) {
+ gst_object_unref (mix->context);
+ mix->context = NULL;
+ }
+ /* just get a GL context. we don't care */
+ mix->context =
+ gst_gl_display_get_gl_context_for_thread (mix->display, NULL);
+ if (!mix->context) {
+ if (!gst_gl_display_create_context (mix->display,
+ mix->priv->other_context, &mix->context, &error)) {
+ GST_OBJECT_UNLOCK (mix->display);
+ goto context_error;
+ }
+ }
+ } while (!gst_gl_display_add_context (mix->display, mix->context));
+ }
+ GST_OBJECT_UNLOCK (mix->display);
+
+ {
+ GstGLAPI current_gl_api = gst_gl_context_get_gl_api (mix->context);
+ if ((current_gl_api & mix_class->supported_gl_api) == 0)
+ goto unsupported_gl_api;
+ }
+
+ return TRUE;
+
+unsupported_gl_api:
+ {
+ GstGLAPI gl_api = gst_gl_context_get_gl_api (mix->context);
+ gchar *gl_api_str = gst_gl_api_to_string (gl_api);
+ gchar *supported_gl_api_str =
+ gst_gl_api_to_string (mix_class->supported_gl_api);
+ GST_ELEMENT_ERROR (mix, RESOURCE, BUSY,
+ ("GL API's not compatible context: %s supported: %s", gl_api_str,
+ supported_gl_api_str), (NULL));
+
+ g_free (supported_gl_api_str);
+ g_free (gl_api_str);
+ return FALSE;
+ }
+context_error:
+ {
+ GST_ELEMENT_ERROR (mix, RESOURCE, NOT_FOUND, ("%s", error->message),
+ (NULL));
+ g_clear_error (&error);
+ return FALSE;
+ }
+}
+
+static gboolean
gst_gl_base_mixer_sink_query (GstAggregator * agg, GstAggregatorPad * bpad,
GstQuery * query)
{
@@ -139,16 +264,20 @@
GstQuery *decide_query = NULL;
GST_OBJECT_LOCK (mix);
- if (G_UNLIKELY (!mix->priv->negotiated)) {
+ if (G_UNLIKELY (!pad->negotiated)) {
GST_DEBUG_OBJECT (mix,
"not negotiated yet, can't answer ALLOCATION query");
GST_OBJECT_UNLOCK (mix);
return FALSE;
}
+
if ((decide_query = mix->priv->query))
gst_query_ref (decide_query);
GST_OBJECT_UNLOCK (mix);
+ if (!_get_gl_context (mix))
+ return FALSE;
+
GST_DEBUG_OBJECT (mix,
"calling propose allocation with query %" GST_PTR_FORMAT,
decide_query);
@@ -273,6 +402,7 @@
agg_class->sinkpads_type = GST_TYPE_GL_BASE_MIXER_PAD;
agg_class->sink_query = gst_gl_base_mixer_sink_query;
+ agg_class->sink_event = gst_gl_base_mixer_sink_event;
agg_class->src_query = gst_gl_base_mixer_src_query;
agg_class->src_activate = gst_gl_base_mixer_src_activate_mode;
agg_class->stop = gst_gl_base_mixer_stop;
@@ -294,11 +424,24 @@
klass->supported_gl_api = GST_GL_API_ANY;
}
+static gboolean
+_reset_pad (GstAggregator * self, GstAggregatorPad * base_pad,
+ gpointer user_data)
+{
+ GstGLBaseMixerPad *mix_pad = GST_GL_BASE_MIXER_PAD (base_pad);
+
+ mix_pad->negotiated = FALSE;
+
+ return TRUE;
+}
+
static void
gst_gl_base_mixer_reset (GstGLBaseMixer * mix)
{
/* clean up collect data */
- mix->priv->negotiated = FALSE;
+
+ gst_aggregator_iterate_sinkpads (GST_AGGREGATOR (mix),
+ (GstAggregatorPadForeachFunc) _reset_pad, NULL);
}
static void
@@ -415,112 +558,18 @@
}
static gboolean
-_find_local_gl_context (GstGLBaseMixer * mix)
-{
- GstQuery *query;
- GstContext *context;
- const GstStructure *s;
-
- if (mix->context)
- return TRUE;
-
- query = gst_query_new_context ("gst.gl.local_context");
- if (!mix->context && gst_gl_run_query (GST_ELEMENT (mix), query, GST_PAD_SRC)) {
- gst_query_parse_context (query, &context);
- if (context) {
- s = gst_context_get_structure (context);
- gst_structure_get (s, "context", GST_GL_TYPE_CONTEXT, &mix->context,
- NULL);
- }
- }
- if (!mix->context
- && gst_gl_run_query (GST_ELEMENT (mix), query, GST_PAD_SINK)) {
- gst_query_parse_context (query, &context);
- if (context) {
- s = gst_context_get_structure (context);
- gst_structure_get (s, "context", GST_GL_TYPE_CONTEXT, &mix->context,
- NULL);
- }
- }
-
- GST_DEBUG_OBJECT (mix, "found local context %p", mix->context);
-
- gst_query_unref (query);
-
- if (mix->context)
- return TRUE;
-
- return FALSE;
-}
-
-static gboolean
gst_gl_base_mixer_decide_allocation (GstGLBaseMixer * mix, GstQuery * query)
{
GstGLBaseMixerClass *mix_class = GST_GL_BASE_MIXER_GET_CLASS (mix);
- GError *error = NULL;
- gboolean ret = TRUE;
- if (!gst_gl_ensure_element_data (mix, &mix->display,
- &mix->priv->other_context))
+ if (!_get_gl_context (mix))
return FALSE;
- gst_gl_display_filter_gl_api (mix->display, mix_class->supported_gl_api);
-
- _find_local_gl_context (mix);
-
- if (!mix->context) {
- GST_OBJECT_LOCK (mix->display);
- do {
- if (mix->context) {
- gst_object_unref (mix->context);
- mix->context = NULL;
- }
- /* just get a GL context. we don't care */
- mix->context =
- gst_gl_display_get_gl_context_for_thread (mix->display, NULL);
- if (!mix->context) {
- if (!gst_gl_display_create_context (mix->display,
- mix->priv->other_context, &mix->context, &error)) {
- GST_OBJECT_UNLOCK (mix->display);
- goto context_error;
- }
- }
- } while (!gst_gl_display_add_context (mix->display, mix->context));
- GST_OBJECT_UNLOCK (mix->display);
- }
-
- {
- GstGLAPI current_gl_api = gst_gl_context_get_gl_api (mix->context);
- if ((current_gl_api & mix_class->supported_gl_api) == 0)
- goto unsupported_gl_api;
- }
-
if (mix_class->decide_allocation)
- ret = mix_class->decide_allocation (mix, query);
+ if (!mix_class->decide_allocation (mix, query))
+ return FALSE;
- return ret;
-
-unsupported_gl_api:
- {
- GstGLAPI gl_api = gst_gl_context_get_gl_api (mix->context);
- gchar *gl_api_str = gst_gl_api_to_string (gl_api);
- gchar *supported_gl_api_str =
- gst_gl_api_to_string (mix_class->supported_gl_api);
- GST_ELEMENT_ERROR (mix, RESOURCE, BUSY,
- ("GL API's not compatible context: %s supported: %s", gl_api_str,
- supported_gl_api_str), (NULL));
-
- g_free (supported_gl_api_str);
- g_free (gl_api_str);
- return FALSE;
- }
-context_error:
- {
- GST_ELEMENT_ERROR (mix, RESOURCE, NOT_FOUND, ("%s", error->message),
- (NULL));
- g_clear_error (&error);
- return FALSE;
- }
+ return TRUE;
}
/* takes ownership of the pool, allocator and query */
@@ -665,7 +714,7 @@
static gboolean
gst_gl_base_mixer_start (GstAggregator * agg)
{
- return TRUE;
+ return GST_AGGREGATOR_CLASS (parent_class)->start (agg);;
}
static gboolean
diff --git a/ext/gl/gstglbasemixer.h b/ext/gl/gstglbasemixer.h
index 6282ccb..cba8184 100644
--- a/ext/gl/gstglbasemixer.h
+++ b/ext/gl/gstglbasemixer.h
@@ -47,6 +47,8 @@
struct _GstGLBaseMixerPad
{
GstVideoAggregatorPad parent; /* subclass the pad */
+
+ gboolean negotiated;
};
struct _GstGLBaseMixerPadClass
diff --git a/ext/gl/gstglcolorconvertelement.c b/ext/gl/gstglcolorconvertelement.c
index bd4fbeb..642b494 100644
--- a/ext/gl/gstglcolorconvertelement.c
+++ b/ext/gl/gstglcolorconvertelement.c
@@ -103,12 +103,10 @@
bt_class->passthrough_on_same_caps = TRUE;
- gst_element_class_add_pad_template (element_class,
- gst_static_pad_template_get
- (&gst_gl_color_convert_element_src_pad_template));
- gst_element_class_add_pad_template (element_class,
- gst_static_pad_template_get
- (&gst_gl_color_convert_element_sink_pad_template));
+ gst_element_class_add_static_pad_template (element_class,
+ &gst_gl_color_convert_element_src_pad_template);
+ gst_element_class_add_static_pad_template (element_class,
+ &gst_gl_color_convert_element_sink_pad_template);
gst_element_class_set_metadata (element_class,
"OpenGL color converter", "Filter/Converter/Video",
diff --git a/ext/gl/gstgldeinterlace.c b/ext/gl/gstgldeinterlace.c
index bd0eff0..c1429a9 100644
--- a/ext/gl/gstgldeinterlace.c
+++ b/ext/gl/gstgldeinterlace.c
@@ -43,7 +43,8 @@
enum
{
- PROP_0
+ PROP_0,
+ PROP_METHOD
};
#define DEBUG_INIT \
@@ -57,17 +58,23 @@
static void gst_gl_deinterlace_get_property (GObject * object,
guint prop_id, GValue * value, GParamSpec * pspec);
+static gboolean gst_gl_deinterlace_start (GstBaseTransform * trans);
static gboolean gst_gl_deinterlace_reset (GstBaseTransform * trans);
-static gboolean gst_gl_deinterlace_init_shader (GstGLFilter * filter);
+static gboolean gst_gl_deinterlace_init_fbo (GstGLFilter * filter);
static gboolean gst_gl_deinterlace_filter (GstGLFilter * filter,
GstBuffer * inbuf, GstBuffer * outbuf);
static gboolean gst_gl_deinterlace_filter_texture (GstGLFilter * filter,
guint in_tex, guint out_tex);
-static void gst_gl_deinterlace_callback (gint width, gint height,
+static void gst_gl_deinterlace_vfir_callback (gint width, gint height,
+ guint texture, gpointer stuff);
+static void gst_gl_deinterlace_greedyh_callback (gint width, gint height,
guint texture, gpointer stuff);
/* *INDENT-OFF* */
static const gchar *greedyh_fragment_source =
+ "#ifdef GL_ES\n"
+ "precision mediump float;\n"
+ "#endif\n"
"uniform sampler2D tex;\n"
"uniform sampler2D tex_prev;\n"
"uniform float max_comb;\n"
@@ -75,35 +82,35 @@
"uniform float motion_sense;\n"
"uniform float width;\n"
"uniform float height;\n"
+ "varying vec2 v_texcoord;\n"
"void main () {\n"
- " vec2 texcoord = gl_TexCoord[0].xy;\n"
- " if (int(mod(texcoord.y * height, 2.0)) == 0) {\n"
- " gl_FragColor = vec4(texture2D(tex_prev, texcoord).rgb, 1.0);\n"
+ " if (int(mod(v_texcoord.y * height, 2.0)) == 0) {\n"
+ " gl_FragColor = vec4(texture2D(tex_prev, v_texcoord).rgb, 1.0);\n"
" } else {\n"
" vec2 texcoord_L1_a1, texcoord_L3_a1, texcoord_L1, texcoord_L3, texcoord_L1_1, texcoord_L3_1;\n"
" vec3 L1_a1, L3_a1, L1, L3, L1_1, L3_1;\n"
- " texcoord_L1 = vec2(texcoord.x, texcoord.y - 1.0 / height);\n"
- " texcoord_L3 = vec2(texcoord.x, texcoord.y + 1.0 / height);\n"
+ " texcoord_L1 = vec2(v_texcoord.x, v_texcoord.y - 1.0 / height);\n"
+ " texcoord_L3 = vec2(v_texcoord.x, v_texcoord.y + 1.0 / height);\n"
" L1 = texture2D(tex_prev, texcoord_L1).rgb;\n"
" L3 = texture2D(tex_prev, texcoord_L3).rgb;\n"
- " if (texcoord.x == 1.0 && texcoord.y == 1.0) {\n"
+ " if (v_texcoord.x == 1.0 && v_texcoord.y == 1.0) {\n"
" L1_1 = L1;\n"
" L3_1 = L3;\n"
" } else {\n"
- " texcoord_L1_1 = vec2(texcoord.x + 1.0 / width, texcoord.y - 1.0 / height);\n"
- " texcoord_L3_1 = vec2(texcoord.x + 1.0 / width, texcoord.y + 1.0 / height);\n"
+ " texcoord_L1_1 = vec2(v_texcoord.x + 1.0 / width, v_texcoord.y - 1.0 / height);\n"
+ " texcoord_L3_1 = vec2(v_texcoord.x + 1.0 / width, v_texcoord.y + 1.0 / height);\n"
" L1_1 = texture2D(tex_prev, texcoord_L1_1).rgb;\n"
" L3_1 = texture2D(tex_prev, texcoord_L3_1).rgb;\n"
" }\n"
- " if (int(ceil(texcoord.x + texcoord.y)) == 0) {\n"
+ " if (int(ceil(v_texcoord.x + v_texcoord.y)) == 0) {\n"
" L1_a1 = L1;\n"
" L3_a1 = L3;\n"
" } else {\n"
- " texcoord_L1_a1 = vec2(texcoord.x - 1.0 / width, texcoord.y - 1.0 / height);\n"
- " texcoord_L3_a1 = vec2(texcoord.x - 1.0 / width, texcoord.y + 1.0 / height);\n"
+ " texcoord_L1_a1 = vec2(v_texcoord.x - 1.0 / width, v_texcoord.y - 1.0 / height);\n"
+ " texcoord_L3_a1 = vec2(v_texcoord.x - 1.0 / width, v_texcoord.y + 1.0 / height);\n"
" L1_a1 = texture2D(tex_prev, texcoord_L1_a1).rgb;\n"
" L3_a1 = texture2D(tex_prev, texcoord_L3_a1).rgb;\n"
" }\n"
@@ -113,8 +120,8 @@
" vec3 avg_1 = (L1_1 + L3_1) / 2.0;\n"
" vec3 avg_s = (avg_a1 + avg_1) / 2.0;\n"
" vec3 avg_sc = (avg_s + avg) / 2.0;\n"
- " vec3 L2 = texture2D(tex, texcoord).rgb;\n"
- " vec3 LP2 = texture2D(tex_prev, texcoord).rgb;\n"
+ " vec3 L2 = texture2D(tex, v_texcoord).rgb;\n"
+ " vec3 LP2 = texture2D(tex_prev, v_texcoord).rgb;\n"
" vec3 best;\n"
" if (abs(L2.r - avg_sc.r) < abs(LP2.r - avg_sc.r)) {\n"
" best.r = L2.r;\n" " } else {\n"
@@ -144,8 +151,87 @@
" gl_FragColor = vec4(last, 1.0);\n"
" }\n"
"}\n";
+
+const gchar *vfir_fragment_source =
+ "#ifdef GL_ES\n"
+ "precision mediump float;\n"
+ "#endif\n"
+ "uniform sampler2D tex;\n"
+ "uniform float width;\n"
+ "uniform float height;\n"
+ "varying vec2 v_texcoord;\n"
+ "void main()\n"
+ "{\n"
+ " vec2 topcoord, botcoord;\n"
+ " vec4 cur_color, top_color, bot_color;\n"
+ " topcoord.x = v_texcoord.x;\n"
+ " botcoord.x = v_texcoord.x;\n"
+ " if (v_texcoord.y == 0.0 || v_texcoord.y == 1.0) {\n"
+ " topcoord.y = v_texcoord.y ;\n"
+ " botcoord.y = v_texcoord.y ;\n"
+ " }\n"
+ " else {\n"
+ " topcoord.y = v_texcoord.y - 1.0/height;\n"
+ " botcoord.y = v_texcoord.y + 1.0/height;\n"
+ " }\n"
+ " cur_color = texture2D(tex, v_texcoord);\n"
+ " top_color = texture2D(tex, topcoord);\n"
+ " bot_color = texture2D(tex, botcoord);\n"
+ " gl_FragColor = 0.5*cur_color + 0.25*top_color + 0.25*bot_color;\n"
+ "}";
/* *INDENT-ON* */
+/* dont' forget to edit the following when a new method is added */
+typedef enum
+{
+ GST_GL_DEINTERLACE_VFIR,
+ GST_GL_DEINTERLACE_GREEDYH
+} GstGLDeinterlaceMethod;
+
+static const GEnumValue *
+gst_gl_deinterlace_get_methods (void)
+{
+ static const GEnumValue method_types[] = {
+ {GST_GL_DEINTERLACE_VFIR, "Blur Vertical", "vfir"},
+ {GST_GL_DEINTERLACE_GREEDYH, "Motion Adaptive: Advanced Detection",
+ "greedyh"},
+ {0, NULL, NULL}
+ };
+ return method_types;
+}
+
+#define GST_TYPE_GL_DEINTERLACE_METHODS (gst_gl_deinterlace_method_get_type ())
+static GType
+gst_gl_deinterlace_method_get_type (void)
+{
+ static GType gl_deinterlace_method_type = 0;
+ if (!gl_deinterlace_method_type) {
+ gl_deinterlace_method_type =
+ g_enum_register_static ("GstGLDeinterlaceMethod",
+ gst_gl_deinterlace_get_methods ());
+ }
+ return gl_deinterlace_method_type;
+}
+
+static void
+gst_gl_deinterlace_set_method (GstGLDeinterlace * deinterlace,
+ guint method_types)
+{
+ switch (method_types) {
+ case GST_GL_DEINTERLACE_VFIR:
+ deinterlace->deinterlacefunc = gst_gl_deinterlace_vfir_callback;
+ deinterlace->current_method = method_types;
+ break;
+ case GST_GL_DEINTERLACE_GREEDYH:
+ deinterlace->deinterlacefunc = gst_gl_deinterlace_greedyh_callback;
+ deinterlace->current_method = method_types;
+ break;
+ default:
+ g_assert_not_reached ();
+ break;
+ }
+}
+
static void
gst_gl_deinterlace_class_init (GstGLDeinterlaceClass * klass)
{
@@ -163,25 +249,60 @@
"Deinterlacing based on fragment shaders",
"Julien Isorce <julien.isorce@mail.com>");
+ g_object_class_install_property (gobject_class,
+ PROP_METHOD,
+ g_param_spec_enum ("method",
+ "Deinterlace Method",
+ "Select which deinterlace method apply to GL video texture",
+ GST_TYPE_GL_DEINTERLACE_METHODS,
+ GST_GL_DEINTERLACE_VFIR, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
+
+ GST_BASE_TRANSFORM_CLASS (klass)->start = gst_gl_deinterlace_start;
GST_BASE_TRANSFORM_CLASS (klass)->stop = gst_gl_deinterlace_reset;
GST_GL_FILTER_CLASS (klass)->filter = gst_gl_deinterlace_filter;
GST_GL_FILTER_CLASS (klass)->filter_texture =
gst_gl_deinterlace_filter_texture;
- GST_GL_FILTER_CLASS (klass)->init_fbo = gst_gl_deinterlace_init_shader;
+ GST_GL_FILTER_CLASS (klass)->init_fbo = gst_gl_deinterlace_init_fbo;
- GST_GL_BASE_FILTER_CLASS (klass)->supported_gl_api = GST_GL_API_OPENGL;
+ GST_GL_BASE_FILTER_CLASS (klass)->supported_gl_api =
+ GST_GL_API_OPENGL | GST_GL_API_GLES2 | GST_GL_API_OPENGL3;
}
static void
gst_gl_deinterlace_init (GstGLDeinterlace * filter)
{
- filter->shader = NULL;
+ filter->shaderstable = NULL;
+ filter->deinterlacefunc = gst_gl_deinterlace_vfir_callback;
+ filter->current_method = GST_GL_DEINTERLACE_VFIR;
filter->prev_buffer = NULL;
filter->prev_tex = 0;
}
static gboolean
+gst_gl_deinterlace_start (GstBaseTransform * trans)
+{
+ GstGLDeinterlace *deinterlace_filter = GST_GL_DEINTERLACE (trans);
+
+ deinterlace_filter->shaderstable = g_hash_table_new (g_str_hash, g_str_equal);
+
+ return GST_BASE_TRANSFORM_CLASS (parent_class)->start (trans);
+}
+
+static void
+gst_gl_deinterlace_ghash_func_clean (gpointer key, gpointer value,
+ gpointer data)
+{
+ GstGLShader *shader = (GstGLShader *) value;
+ GstGLFilter *filter = (GstGLFilter *) data;
+
+ //blocking call, wait the opengl thread has destroyed the shader
+ gst_gl_context_del_shader (GST_GL_BASE_FILTER (filter)->context, shader);
+
+ value = NULL;
+}
+
+static gboolean
gst_gl_deinterlace_reset (GstBaseTransform * trans)
{
GstGLDeinterlace *deinterlace_filter = GST_GL_DEINTERLACE (trans);
@@ -189,10 +310,17 @@
gst_buffer_replace (&deinterlace_filter->prev_buffer, NULL);
//blocking call, wait the opengl thread has destroyed the shader
- if (deinterlace_filter->shader)
- gst_gl_context_del_shader (GST_GL_BASE_FILTER (trans)->context,
- deinterlace_filter->shader);
- deinterlace_filter->shader = NULL;
+ if (deinterlace_filter->shaderstable) {
+ /* release shaders in the gl thread */
+ g_hash_table_foreach (deinterlace_filter->shaderstable,
+ gst_gl_deinterlace_ghash_func_clean, deinterlace_filter);
+
+ /* clean the htable without calling values destructors
+ * because shaders have been released in the glthread
+ * through the foreach func */
+ g_hash_table_unref (deinterlace_filter->shaderstable);
+ deinterlace_filter->shaderstable = NULL;
+ }
return GST_BASE_TRANSFORM_CLASS (parent_class)->stop (trans);
}
@@ -201,9 +329,12 @@
gst_gl_deinterlace_set_property (GObject * object, guint prop_id,
const GValue * value, GParamSpec * pspec)
{
- //GstGLDeinterlace *filter = GST_GL_DEINTERLACE (object);
+ GstGLDeinterlace *filter = GST_GL_DEINTERLACE (object);
switch (prop_id) {
+ case PROP_METHOD:
+ gst_gl_deinterlace_set_method (filter, g_value_get_enum (value));
+ break;
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
break;
@@ -214,9 +345,12 @@
gst_gl_deinterlace_get_property (GObject * object, guint prop_id,
GValue * value, GParamSpec * pspec)
{
- //GstGLDeinterlace *filter = GST_GL_DEINTERLACE (object);
+ GstGLDeinterlace *filter = GST_GL_DEINTERLACE (object);
switch (prop_id) {
+ case PROP_METHOD:
+ g_value_set_enum (value, filter->current_method);
+ break;
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
break;
@@ -224,13 +358,9 @@
}
static gboolean
-gst_gl_deinterlace_init_shader (GstGLFilter * filter)
+gst_gl_deinterlace_init_fbo (GstGLFilter * filter)
{
- GstGLDeinterlace *deinterlace_filter = GST_GL_DEINTERLACE (filter);
-
- //blocking call, wait the opengl thread has compiled the shader
- return gst_gl_context_gen_shader (GST_GL_BASE_FILTER (filter)->context, 0,
- greedyh_fragment_source, &deinterlace_filter->shader);
+ return TRUE;
}
static gboolean
@@ -241,7 +371,7 @@
//blocking call, use a FBO
gst_gl_filter_render_to_target (filter, TRUE, in_tex, out_tex,
- gst_gl_deinterlace_callback, deinterlace_filter);
+ deinterlace_filter->deinterlacefunc, deinterlace_filter);
return TRUE;
}
@@ -259,89 +389,124 @@
return TRUE;
}
-//opengl scene, params: input texture (not the output filter->texture)
+static GstGLShader *
+gst_gl_deinterlace_get_fragment_shader (GstGLFilter * filter,
+ const gchar * shader_name, const gchar * shader_source)
+{
+ GstGLShader *shader = NULL;
+ GstGLDeinterlace *deinterlace_filter = GST_GL_DEINTERLACE (filter);
+ GstGLContext *context = GST_GL_BASE_FILTER (filter)->context;
+
+ shader = g_hash_table_lookup (deinterlace_filter->shaderstable, shader_name);
+
+ if (!shader) {
+ GError *error = NULL;
+
+ if (!(shader = gst_gl_shader_new_link_with_stages (context, &error,
+ gst_glsl_stage_new_default_vertex (context),
+ gst_glsl_stage_new_with_string (context, GL_FRAGMENT_SHADER,
+ GST_GLSL_VERSION_NONE,
+ GST_GLSL_PROFILE_ES | GST_GLSL_PROFILE_COMPATIBILITY,
+ shader_source), NULL))) {
+ GST_ELEMENT_ERROR (deinterlace_filter, RESOURCE, NOT_FOUND,
+ ("Failed to initialize %s shader", shader_name), (NULL));
+ }
+
+ filter->draw_attr_position_loc =
+ gst_gl_shader_get_attribute_location (shader, "a_position");
+ filter->draw_attr_texture_loc =
+ gst_gl_shader_get_attribute_location (shader, "a_texcoord");
+ }
+
+ g_hash_table_insert (deinterlace_filter->shaderstable, (gchar *) shader_name,
+ shader);
+
+ return shader;
+}
+
static void
-gst_gl_deinterlace_callback (gint width, gint height, guint texture,
+gst_gl_deinterlace_vfir_callback (gint width, gint height, guint texture,
gpointer stuff)
{
- GstGLDeinterlace *deinterlace_filter = GST_GL_DEINTERLACE (stuff);
+ GstGLShader *shader;
GstGLFilter *filter = GST_GL_FILTER (stuff);
- GstGLFuncs *gl = GST_GL_BASE_FILTER (filter)->context->gl_vtable;
- guint temp;
+ GstGLContext *context = GST_GL_BASE_FILTER (filter)->context;
+ GstGLFuncs *gl = context->gl_vtable;
- GLfloat verts[] = { -1.0, -1.0,
- 1.0, -1.0,
- 1.0, 1.0,
- -1.0, 1.0
- };
- GLfloat texcoords0[] = { 0.0f, 0.0f,
- 1.0f, 0.0f,
- 1.0f, 1.0f,
- 0.0f, 1.0f
- };
- GLfloat texcoords1[] = { 0.0f, 0.0f,
- 1.0f, 0.0f,
- 1.0f, 1.0f,
- 0.0f, 1.0f
- };
+ shader = gst_gl_deinterlace_get_fragment_shader (filter, "vfir",
+ vfir_fragment_source);
- gl->MatrixMode (GL_PROJECTION);
- gl->LoadIdentity ();
+ if (!shader)
+ return;
- gst_gl_shader_use (deinterlace_filter->shader);
+#if GST_GL_HAVE_OPENGL
+ if (USING_OPENGL (context)) {
+ gl->MatrixMode (GL_PROJECTION);
+ gl->LoadIdentity ();
+ }
+#endif
- if (G_UNLIKELY (deinterlace_filter->prev_tex == 0)) {
- gst_gl_context_gen_texture (GST_GL_BASE_FILTER (filter)->context,
- &deinterlace_filter->prev_tex,
- GST_VIDEO_INFO_FORMAT (&filter->out_info),
- GST_VIDEO_INFO_WIDTH (&filter->out_info),
- GST_VIDEO_INFO_HEIGHT (&filter->out_info));
- } else {
+ gst_gl_shader_use (shader);
+
+ gl->ActiveTexture (GL_TEXTURE0);
+ gl->BindTexture (GL_TEXTURE_2D, texture);
+
+ gst_gl_shader_set_uniform_1i (shader, "tex", 0);
+ gst_gl_shader_set_uniform_1f (shader, "width",
+ GST_VIDEO_INFO_WIDTH (&filter->out_info));
+ gst_gl_shader_set_uniform_1f (shader, "height",
+ GST_VIDEO_INFO_HEIGHT (&filter->out_info));
+
+ gst_gl_filter_draw_texture (filter, texture, width, height);
+}
+
+static void
+gst_gl_deinterlace_greedyh_callback (gint width, gint height, guint texture,
+ gpointer stuff)
+{
+ GstGLShader *shader;
+ GstGLFilter *filter = GST_GL_FILTER (stuff);
+ GstGLDeinterlace *deinterlace_filter = GST_GL_DEINTERLACE (filter);
+ GstGLContext *context = GST_GL_BASE_FILTER (filter)->context;
+ GstGLFuncs *gl = context->gl_vtable;
+
+ shader =
+ gst_gl_deinterlace_get_fragment_shader (filter, "greedhy",
+ greedyh_fragment_source);
+
+ if (!shader)
+ return;
+
+#if GST_GL_HAVE_OPENGL
+ if (USING_OPENGL (context)) {
+ gl->MatrixMode (GL_PROJECTION);
+ gl->LoadIdentity ();
+ }
+#endif
+
+ gst_gl_shader_use (shader);
+
+ if (G_LIKELY (deinterlace_filter->prev_tex != 0)) {
gl->ActiveTexture (GL_TEXTURE1);
- gst_gl_shader_set_uniform_1i (deinterlace_filter->shader, "tex_prev", 1);
+ gst_gl_shader_set_uniform_1i (shader, "tex_prev", 1);
gl->BindTexture (GL_TEXTURE_2D, deinterlace_filter->prev_tex);
}
gl->ActiveTexture (GL_TEXTURE0);
- gst_gl_shader_set_uniform_1i (deinterlace_filter->shader, "tex", 0);
+ gl->BindTexture (GL_TEXTURE_2D, texture);
- gst_gl_shader_set_uniform_1f (deinterlace_filter->shader, "max_comb",
- 5.0f / 255.0f);
- gst_gl_shader_set_uniform_1f (deinterlace_filter->shader, "motion_threshold",
- 25.0f / 255.0f);
- gst_gl_shader_set_uniform_1f (deinterlace_filter->shader, "motion_sense",
- 30.0f / 255.0f);
+ gst_gl_shader_set_uniform_1i (shader, "tex", 0);
+ gst_gl_shader_set_uniform_1f (shader, "max_comb", 5.0f / 255.0f);
+ gst_gl_shader_set_uniform_1f (shader, "motion_threshold", 25.0f / 255.0f);
+ gst_gl_shader_set_uniform_1f (shader, "motion_sense", 30.0f / 255.0f);
- gst_gl_shader_set_uniform_1f (deinterlace_filter->shader, "width",
+ gst_gl_shader_set_uniform_1f (shader, "width",
GST_VIDEO_INFO_WIDTH (&filter->out_info));
- gst_gl_shader_set_uniform_1f (deinterlace_filter->shader, "height",
+ gst_gl_shader_set_uniform_1f (shader, "height",
GST_VIDEO_INFO_HEIGHT (&filter->out_info));
- gl->ClientActiveTexture (GL_TEXTURE0);
+ gst_gl_filter_draw_texture (filter, texture, width, height);
- gl->EnableClientState (GL_TEXTURE_COORD_ARRAY);
- gl->EnableClientState (GL_VERTEX_ARRAY);
-
- gl->VertexPointer (2, GL_FLOAT, 0, &verts);
- gl->TexCoordPointer (2, GL_FLOAT, 0, &texcoords0);
-
- gl->ClientActiveTexture (GL_TEXTURE1);
- gl->EnableClientState (GL_TEXTURE_COORD_ARRAY);
- gl->TexCoordPointer (2, GL_FLOAT, 0, &texcoords1);
-
- gl->DrawArrays (GL_TRIANGLE_FAN, 0, 4);
-
- gl->DisableClientState (GL_VERTEX_ARRAY);
- gl->DisableClientState (GL_TEXTURE_COORD_ARRAY);
-
- gl->ClientActiveTexture (GL_TEXTURE0);
- gl->DisableClientState (GL_TEXTURE_COORD_ARRAY);
-
- if (texture == filter->in_tex_id) {
- temp = filter->in_tex_id;
- filter->in_tex_id = deinterlace_filter->prev_tex;
- deinterlace_filter->prev_tex = temp;
- } else {
- deinterlace_filter->prev_tex = texture;
- }
+ /* we keep the previous buffer around so this is safe */
+ deinterlace_filter->prev_tex = texture;
}
diff --git a/ext/gl/gstgldeinterlace.h b/ext/gl/gstgldeinterlace.h
index a81a2e7..6a19d04 100644
--- a/ext/gl/gstgldeinterlace.h
+++ b/ext/gl/gstgldeinterlace.h
@@ -32,15 +32,21 @@
#define GST_IS_GL_DEINTERLACE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE((klass) ,GST_TYPE_GL_DEINTERLACE))
#define GST_GL_DEINTERLACE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS((obj) ,GST_TYPE_GL_DEINTERLACE,GstGLDeinterlaceClass))
+#define USING_OPENGL(context) (gst_gl_context_check_gl_version (context, GST_GL_API_OPENGL, 1, 0))
+
typedef struct _GstGLDeinterlace GstGLDeinterlace;
typedef struct _GstGLDeinterlaceClass GstGLDeinterlaceClass;
struct _GstGLDeinterlace
{
GstGLFilter filter;
- GstGLShader *shader;
+
+ GLCB deinterlacefunc;
+ GHashTable *shaderstable;
GstBuffer *prev_buffer;
guint prev_tex;
+
+ gint current_method;
};
struct _GstGLDeinterlaceClass
diff --git a/ext/gl/gstgldifferencematte.c b/ext/gl/gstgldifferencematte.c
index 6304c6d..d6c35cb 100644
--- a/ext/gl/gstgldifferencematte.c
+++ b/ext/gl/gstgldifferencematte.c
@@ -94,18 +94,24 @@
gl->TexParameteri (GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
gl->TexParameteri (GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
gl->TexParameteri (GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
- differencematte->shader[i] =
- gst_gl_shader_new (GST_GL_BASE_FILTER (filter)->context);
+ }
+
+ if (!(differencematte->identity_shader =
+ gst_gl_shader_new_default (context, &error))) {
+ GST_ELEMENT_ERROR (differencematte, RESOURCE, NOT_FOUND, ("%s",
+ "Failed to compile identity shader"), ("%s", error->message));
+ return;
}
if (!(differencematte->shader[0] =
gst_gl_shader_new_link_with_stages (context, &error,
gst_glsl_stage_new_default_vertex (context),
gst_glsl_stage_new_with_string (context, GL_FRAGMENT_SHADER,
- GST_GLSL_VERSION_NONE, GST_GLSL_PROFILE_ES,
+ GST_GLSL_VERSION_NONE,
+ GST_GLSL_PROFILE_ES | GST_GLSL_PROFILE_COMPATIBILITY,
difference_fragment_source), NULL))) {
GST_ELEMENT_ERROR (differencematte, RESOURCE, NOT_FOUND, ("%s",
- gst_gl_context_get_error ()), (NULL));
+ "Failed to compile difference shader"), ("%s", error->message));
return;
}
@@ -113,10 +119,11 @@
gst_gl_shader_new_link_with_stages (context, &error,
gst_glsl_stage_new_default_vertex (context),
gst_glsl_stage_new_with_string (context, GL_FRAGMENT_SHADER,
- GST_GLSL_VERSION_NONE, GST_GLSL_PROFILE_ES,
+ GST_GLSL_VERSION_NONE,
+ GST_GLSL_PROFILE_ES | GST_GLSL_PROFILE_COMPATIBILITY,
hconv7_fragment_source_gles2), NULL))) {
GST_ELEMENT_ERROR (differencematte, RESOURCE, NOT_FOUND, ("%s",
- gst_gl_context_get_error ()), (NULL));
+ "Failed to compile convolution shader"), ("%s", error->message));
return;
}
@@ -124,10 +131,11 @@
gst_gl_shader_new_link_with_stages (context, &error,
gst_glsl_stage_new_default_vertex (context),
gst_glsl_stage_new_with_string (context, GL_FRAGMENT_SHADER,
- GST_GLSL_VERSION_NONE, GST_GLSL_PROFILE_ES,
+ GST_GLSL_VERSION_NONE,
+ GST_GLSL_PROFILE_ES | GST_GLSL_PROFILE_COMPATIBILITY,
vconv7_fragment_source_gles2), NULL))) {
GST_ELEMENT_ERROR (differencematte, RESOURCE, NOT_FOUND, ("%s",
- gst_gl_context_get_error ()), (NULL));
+ "Failed to compile convolution shader"), ("%s", error->message));
return;
}
@@ -135,19 +143,20 @@
gst_gl_shader_new_link_with_stages (context, &error,
gst_glsl_stage_new_default_vertex (context),
gst_glsl_stage_new_with_string (context, GL_FRAGMENT_SHADER,
- GST_GLSL_VERSION_NONE, GST_GLSL_PROFILE_ES,
+ GST_GLSL_VERSION_NONE,
+ GST_GLSL_PROFILE_ES | GST_GLSL_PROFILE_COMPATIBILITY,
texture_interp_fragment_source), NULL))) {
GST_ELEMENT_ERROR (differencematte, RESOURCE, NOT_FOUND, ("%s",
- gst_gl_context_get_error ()), (NULL));
+ "Failed to compile interpolation shader"), ("%s", error->message));
return;
}
/* FIXME: this should really be per shader */
filter->draw_attr_position_loc =
- gst_gl_shader_get_attribute_location (differencematte->shader[3],
+ gst_gl_shader_get_attribute_location (differencematte->shader[2],
"a_position");
filter->draw_attr_texture_loc =
- gst_gl_shader_get_attribute_location (differencematte->shader[3],
+ gst_gl_shader_get_attribute_location (differencematte->shader[2],
"a_texcoord");
}
@@ -162,6 +171,11 @@
gl->DeleteTextures (1, &differencematte->savedbgtexture);
gl->DeleteTextures (1, &differencematte->newbgtexture);
for (i = 0; i < 4; i++) {
+ if (differencematte->identity_shader) {
+ gst_object_unref (differencematte->identity_shader);
+ differencematte->identity_shader = NULL;
+ }
+
if (differencematte->shader[i]) {
gst_object_unref (differencematte->shader[i]);
differencematte->shader[i] = NULL;
@@ -263,29 +277,19 @@
}
static void
-gst_gl_differencematte_save_texture (gint width, gint height, guint texture,
- gpointer stuff)
-{
- GstGLFilter *filter = GST_GL_FILTER (stuff);
- GstGLFuncs *gl = GST_GL_BASE_FILTER (filter)->context->gl_vtable;
-
- gl->MatrixMode (GL_PROJECTION);
- gl->LoadIdentity ();
-
- gst_gl_filter_draw_texture (filter, texture, width, height);
-}
-
-static void
init_pixbuf_texture (GstGLContext * context, gpointer data)
{
GstGLDifferenceMatte *differencematte = GST_GL_DIFFERENCEMATTE (data);
GstGLFilter *filter = GST_GL_FILTER (data);
- GstGLFuncs *gl = GST_GL_BASE_FILTER (filter)->context->gl_vtable;
+ const GstGLFuncs *gl = context->gl_vtable;
+ guint internal_format =
+ gst_gl_sized_gl_format_from_gl_format_type (context, GL_RGBA,
+ GL_UNSIGNED_BYTE);
gl->DeleteTextures (1, &differencematte->newbgtexture);
gl->GenTextures (1, &differencematte->newbgtexture);
gl->BindTexture (GL_TEXTURE_2D, differencematte->newbgtexture);
- gl->TexImage2D (GL_TEXTURE_2D, 0, GL_RGBA,
+ gl->TexImage2D (GL_TEXTURE_2D, 0, internal_format,
(gint) differencematte->pbuf_width, (gint) differencematte->pbuf_height,
0, GL_RGBA, GL_UNSIGNED_BYTE, differencematte->pixbuf);
gl->TexParameteri (GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
@@ -296,7 +300,7 @@
if (differencematte->savedbgtexture == 0) {
gl->GenTextures (1, &differencematte->savedbgtexture);
gl->BindTexture (GL_TEXTURE_2D, differencematte->savedbgtexture);
- gl->TexImage2D (GL_TEXTURE_2D, 0, GL_RGBA8,
+ gl->TexImage2D (GL_TEXTURE_2D, 0, internal_format,
GST_VIDEO_INFO_WIDTH (&filter->out_info),
GST_VIDEO_INFO_HEIGHT (&filter->out_info),
0, GL_RGBA, GL_UNSIGNED_BYTE, NULL);
@@ -315,9 +319,6 @@
GstGLFilter *filter = GST_GL_FILTER (stuff);
GstGLFuncs *gl = GST_GL_BASE_FILTER (filter)->context->gl_vtable;
- gl->MatrixMode (GL_PROJECTION);
- gl->LoadIdentity ();
-
gst_gl_shader_use (differencematte->shader[0]);
gl->ActiveTexture (GL_TEXTURE0);
@@ -341,9 +342,6 @@
GstGLFilter *filter = GST_GL_FILTER (stuff);
GstGLFuncs *gl = GST_GL_BASE_FILTER (filter)->context->gl_vtable;
- gl->MatrixMode (GL_PROJECTION);
- gl->LoadIdentity ();
-
gst_gl_shader_use (differencematte->shader[1]);
gl->ActiveTexture (GL_TEXTURE0);
@@ -353,7 +351,8 @@
gst_gl_shader_set_uniform_1fv (differencematte->shader[1], "kernel", 7,
differencematte->kernel);
- gst_gl_shader_set_uniform_1f (differencematte->shader[1], "width", width);
+ gst_gl_shader_set_uniform_1f (differencematte->shader[1], "gauss_width",
+ width);
gst_gl_filter_draw_texture (filter, texture, width, height);
}
@@ -366,9 +365,6 @@
GstGLFilter *filter = GST_GL_FILTER (stuff);
GstGLFuncs *gl = GST_GL_BASE_FILTER (filter)->context->gl_vtable;
- gl->MatrixMode (GL_PROJECTION);
- gl->LoadIdentity ();
-
gst_gl_shader_use (differencematte->shader[2]);
gl->ActiveTexture (GL_TEXTURE0);
@@ -378,7 +374,8 @@
gst_gl_shader_set_uniform_1fv (differencematte->shader[2], "kernel", 7,
differencematte->kernel);
- gst_gl_shader_set_uniform_1f (differencematte->shader[2], "height", height);
+ gst_gl_shader_set_uniform_1f (differencematte->shader[2], "gauss_height",
+ height);
gst_gl_filter_draw_texture (filter, texture, width, height);
}
@@ -391,9 +388,6 @@
GstGLFilter *filter = GST_GL_FILTER (stuff);
GstGLFuncs *gl = GST_GL_BASE_FILTER (filter)->context->gl_vtable;
- gl->MatrixMode (GL_PROJECTION);
- glLoadIdentity ();
-
gst_gl_shader_use (differencematte->shader[3]);
gl->ActiveTexture (GL_TEXTURE0);
@@ -422,8 +416,12 @@
GstGLFilter *filter = GST_GL_FILTER (differencematte);
GstGLFuncs *gl = GST_GL_BASE_FILTER (filter)->context->gl_vtable;
- gl->MatrixMode (GL_PROJECTION);
- gl->LoadIdentity ();
+ gst_gl_shader_use (differencematte->identity_shader);
+
+ gl->ActiveTexture (GL_TEXTURE0);
+ gl->BindTexture (GL_TEXTURE_2D, texture);
+
+ gst_gl_shader_set_uniform_1i (differencematte->identity_shader, "tex", 0);
gst_gl_filter_draw_texture (filter, texture, width, height);
}
@@ -449,7 +447,7 @@
* this frame and next ones */
gst_gl_filter_render_to_target (filter, TRUE, in_tex,
differencematte->savedbgtexture,
- gst_gl_differencematte_save_texture, differencematte);
+ gst_gl_differencematte_identity, differencematte);
if (differencematte->pixbuf) {
free (differencematte->pixbuf);
diff --git a/ext/gl/gstgldifferencematte.h b/ext/gl/gstgldifferencematte.h
index 0cd122f..45ba553 100644
--- a/ext/gl/gstgldifferencematte.h
+++ b/ext/gl/gstgldifferencematte.h
@@ -37,6 +37,7 @@
{
GstGLFilter filter;
+ GstGLShader *identity_shader;
GstGLShader *shader[4];
gchar *location;
diff --git a/ext/gl/gstgldownloadelement.c b/ext/gl/gstgldownloadelement.c
index ff931fa..058398b 100644
--- a/ext/gl/gstgldownloadelement.c
+++ b/ext/gl/gstgldownloadelement.c
@@ -73,10 +73,10 @@
bt_class->passthrough_on_same_caps = TRUE;
- gst_element_class_add_pad_template (element_class,
- gst_static_pad_template_get (&gst_gl_download_element_src_pad_template));
- gst_element_class_add_pad_template (element_class,
- gst_static_pad_template_get (&gst_gl_download_element_sink_pad_template));
+ gst_element_class_add_static_pad_template (element_class,
+ &gst_gl_download_element_src_pad_template);
+ gst_element_class_add_static_pad_template (element_class,
+ &gst_gl_download_element_sink_pad_template);
gst_element_class_set_metadata (element_class,
"OpenGL uploader", "Filter/Video",
diff --git a/ext/gl/gstglfilterbin.c b/ext/gl/gstglfilterbin.c
index 946d66c..a3621ec 100644
--- a/ext/gl/gstglfilterbin.c
+++ b/ext/gl/gstglfilterbin.c
@@ -73,8 +73,7 @@
gobject_class->set_property = gst_gl_filter_bin_set_property;
gobject_class->get_property = gst_gl_filter_bin_get_property;
- gst_element_class_add_pad_template (element_class,
- gst_static_pad_template_get (&_src_pad_template));
+ gst_element_class_add_static_pad_template (element_class, &_src_pad_template);
upload_caps = gst_gl_upload_get_input_template_caps ();
gst_element_class_add_pad_template (element_class,
diff --git a/ext/gl/gstglimagesink.c b/ext/gl/gstglimagesink.c
index 14ddeee..f176c23 100644
--- a/ext/gl/gstglimagesink.c
+++ b/ext/gl/gstglimagesink.c
@@ -94,10 +94,6 @@
#include "gstglimagesink.h"
#include "gstglsinkbin.h"
-#if GST_GL_HAVE_PLATFORM_EGL
-#include <gst/gl/egl/gsteglimagememory.h>
-#endif
-
#include <gst/gl/gstglviewconvert.h>
GST_DEBUG_CATEGORY (gst_debug_glimage_sink);
@@ -120,6 +116,7 @@
enum
{
PROP_BIN_0,
+ PROP_BIN_ROTATE_METHOD,
PROP_BIN_FORCE_ASPECT_RATIO,
PROP_BIN_PIXEL_ASPECT_RATIO,
PROP_BIN_HANDLE_EVENTS,
@@ -181,6 +178,39 @@
return ret;
}
+#define DEFAULT_ROTATE_METHOD GST_GL_ROTATE_METHOD_IDENTITY
+
+#define GST_TYPE_GL_ROTATE_METHOD (gst_gl_rotate_method_get_type())
+
+static const GEnumValue rotate_methods[] = {
+ {GST_GL_ROTATE_METHOD_IDENTITY, "Identity (no rotation)", "none"},
+ {GST_GL_ROTATE_METHOD_90R, "Rotate clockwise 90 degrees", "clockwise"},
+ {GST_GL_ROTATE_METHOD_180, "Rotate 180 degrees", "rotate-180"},
+ {GST_GL_ROTATE_METHOD_90L, "Rotate counter-clockwise 90 degrees",
+ "counterclockwise"},
+ {GST_GL_ROTATE_METHOD_FLIP_HORIZ, "Flip horizontally", "horizontal-flip"},
+ {GST_GL_ROTATE_METHOD_FLIP_VERT, "Flip vertically", "vertical-flip"},
+ {GST_GL_ROTATE_METHOD_FLIP_UL_LR,
+ "Flip across upper left/lower right diagonal", "upper-left-diagonal"},
+ {GST_GL_ROTATE_METHOD_FLIP_UR_LL,
+ "Flip across upper right/lower left diagonal", "upper-right-diagonal"},
+ {GST_GL_ROTATE_METHOD_AUTO,
+ "Select rotate method based on image-orientation tag", "automatic"},
+ {0, NULL, NULL},
+};
+
+static GType
+gst_gl_rotate_method_get_type (void)
+{
+ static GType rotate_method_type = 0;
+
+ if (!rotate_method_type) {
+ rotate_method_type = g_enum_register_static ("GstGLRotateMethod",
+ rotate_methods);
+ }
+ return rotate_method_type;
+}
+
static void
gst_gl_image_sink_bin_init (GstGLImageSinkBin * self)
{
@@ -203,6 +233,12 @@
gobject_class->set_property = gst_gl_image_sink_bin_set_property;
/* gl sink */
+ g_object_class_install_property (gobject_class, PROP_BIN_ROTATE_METHOD,
+ g_param_spec_enum ("rotate-method",
+ "rotate method",
+ "rotate method",
+ GST_TYPE_GL_ROTATE_METHOD, DEFAULT_ROTATE_METHOD,
+ G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
g_object_class_install_property (gobject_class, PROP_BIN_FORCE_ASPECT_RATIO,
g_param_spec_boolean ("force-aspect-ratio",
"Force aspect ratio",
@@ -291,6 +327,7 @@
static void gst_glimage_sink_get_property (GObject * object, guint prop_id,
GValue * value, GParamSpec * param_spec);
+static gboolean gst_glimage_sink_event (GstBaseSink * sink, GstEvent * event);
static gboolean gst_glimage_sink_query (GstBaseSink * bsink, GstQuery * query);
static void gst_glimage_sink_set_context (GstElement * element,
GstContext * context);
@@ -347,6 +384,7 @@
{
ARG_0,
ARG_DISPLAY,
+ PROP_ROTATE_METHOD,
PROP_FORCE_ASPECT_RATIO,
PROP_PIXEL_ASPECT_RATIO,
PROP_CONTEXT,
@@ -404,6 +442,126 @@
GST_TRACE ("transform %fx%f into %fx%f", x, y, *stream_x, *stream_y);
}
+/* rotate 90 */
+static const gfloat clockwise_matrix[] = {
+ 0.0f, -1.0f, 0.0f, 0.0f,
+ 1.0f, 0.0f, 0.0f, 0.0f,
+ 0.0f, 0.0f, 1.0f, 0.0f,
+ 0.0f, 0.0f, 0.0f, 1.0f,
+};
+
+/* rotate 180 */
+static const gfloat clockwise_180_matrix[] = {
+ -1.0f, 0.0f, 0.0f, 0.0f,
+ 0.0f, -1.0f, 0.0f, 0.0f,
+ 0.0f, 0.0f, 1.0f, 0.0f,
+ 0.0f, 0.0f, 0.0f, 1.0f,
+};
+
+/* rotate 270 */
+static const gfloat counterclockwise_matrix[] = {
+ 0.0f, 1.0f, 0.0f, 0.0f,
+ -1.0f, 0.0f, 0.0f, 0.0f,
+ 0.0f, 0.0f, 1.0f, 0.0f,
+ 0.0f, 0.0f, 0.0f, 1.0f,
+};
+
+/* horizontal-flip */
+static const gfloat horizontal_flip_matrix[] = {
+ 1.0f, 0.0f, 0.0f, 0.0f,
+ 0.0f, -1.0f, 0.0f, 0.0f,
+ 0.0f, 0.0f, 1.0f, 0.0f,
+ 0.0f, 0.0f, 0.0f, 1.0f,
+};
+
+/* vertical-flip */
+static const gfloat vertical_flip_matrix[] = {
+ -1.0f, 0.0f, 0.0f, 0.0f,
+ 0.0f, 1.0f, 0.0f, 0.0f,
+ 0.0f, 0.0f, 1.0f, 0.0f,
+ 0.0f, 0.0f, 0.0f, 1.0f,
+};
+
+/* upper-left-diagonal */
+static const gfloat upper_left_matrix[] = {
+ 0.0f, 1.0f, 0.0f, 0.0f,
+ 1.0f, 0.0f, 0.0f, 0.0f,
+ 0.0f, 0.0f, 1.0f, 0.0f,
+ 0.0f, 0.0f, 0.0f, 1.0f,
+};
+
+/* upper-right-diagonal */
+static const gfloat upper_right_matrix[] = {
+ 0.0f, -1.0f, 0.0f, 0.0f,
+ -1.0f, 0.0f, 0.0f, 0.0f,
+ 0.0f, 0.0f, 1.0f, 0.0f,
+ 0.0f, 0.0f, 0.0f, 1.0f,
+};
+
+static void
+gst_glimage_sink_set_rotate_method (GstGLImageSink * gl_sink,
+ GstGLRotateMethod method, gboolean from_tag)
+{
+ GstGLRotateMethod tag_method = DEFAULT_ROTATE_METHOD;
+ GST_GLIMAGE_SINK_LOCK (gl_sink);
+ if (from_tag)
+ tag_method = method;
+ else
+ gl_sink->rotate_method = method;
+
+ if (gl_sink->rotate_method == GST_GL_ROTATE_METHOD_AUTO)
+ method = tag_method;
+ else
+ method = gl_sink->rotate_method;
+
+ if (method != gl_sink->current_rotate_method) {
+ GST_DEBUG_OBJECT (gl_sink, "Changing method from %s to %s",
+ rotate_methods[gl_sink->current_rotate_method].value_nick,
+ rotate_methods[method].value_nick);
+
+ switch (method) {
+ case GST_GL_ROTATE_METHOD_IDENTITY:
+ gl_sink->transform_matrix = NULL;
+ gl_sink->output_mode_changed = TRUE;
+ break;
+ case GST_GL_ROTATE_METHOD_90R:
+ gl_sink->transform_matrix = clockwise_matrix;
+ gl_sink->output_mode_changed = TRUE;
+ break;
+ case GST_GL_ROTATE_METHOD_180:
+ gl_sink->transform_matrix = clockwise_180_matrix;
+ gl_sink->output_mode_changed = TRUE;
+ break;
+ case GST_GL_ROTATE_METHOD_90L:
+ gl_sink->transform_matrix = counterclockwise_matrix;
+ gl_sink->output_mode_changed = TRUE;
+ break;
+ case GST_GL_ROTATE_METHOD_FLIP_HORIZ:
+ gl_sink->transform_matrix = horizontal_flip_matrix;
+ gl_sink->output_mode_changed = TRUE;
+ break;
+ case GST_GL_ROTATE_METHOD_FLIP_VERT:
+ gl_sink->transform_matrix = vertical_flip_matrix;
+ gl_sink->output_mode_changed = TRUE;
+ break;
+ case GST_GL_ROTATE_METHOD_FLIP_UL_LR:
+ gl_sink->transform_matrix = upper_left_matrix;
+ gl_sink->output_mode_changed = TRUE;
+ break;
+ case GST_GL_ROTATE_METHOD_FLIP_UR_LL:
+ gl_sink->transform_matrix = upper_right_matrix;
+ gl_sink->output_mode_changed = TRUE;
+ break;
+ default:
+ g_assert_not_reached ();
+ break;
+ }
+
+ gl_sink->current_rotate_method = method;
+ }
+ GST_GLIMAGE_SINK_UNLOCK (gl_sink);
+}
+
static void
gst_glimage_sink_navigation_send_event (GstNavigation * navigation, GstStructure
* structure)
@@ -485,6 +643,13 @@
gobject_class->set_property = gst_glimage_sink_set_property;
gobject_class->get_property = gst_glimage_sink_get_property;
+ g_object_class_install_property (gobject_class, PROP_ROTATE_METHOD,
+ g_param_spec_enum ("rotate-method",
+ "rotate method",
+ "rotate method",
+ GST_TYPE_GL_ROTATE_METHOD, DEFAULT_ROTATE_METHOD,
+ G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
+
g_object_class_install_property (gobject_class, PROP_FORCE_ASPECT_RATIO,
g_param_spec_boolean ("force-aspect-ratio", "Force aspect ratio",
"When enabled, scaling will respect original aspect ratio",
@@ -570,13 +735,14 @@
G_SIGNAL_RUN_LAST, 0, NULL, NULL, g_cclosure_marshal_generic,
G_TYPE_BOOLEAN, 3, GST_GL_TYPE_CONTEXT, G_TYPE_UINT, G_TYPE_UINT);
- gst_element_class_add_pad_template (element_class,
- gst_static_pad_template_get (&gst_glimage_sink_template));
+ gst_element_class_add_static_pad_template (element_class,
+ &gst_glimage_sink_template);
gobject_class->finalize = gst_glimage_sink_finalize;
gstelement_class->change_state = gst_glimage_sink_change_state;
gstelement_class->set_context = gst_glimage_sink_set_context;
+ gstbasesink_class->event = gst_glimage_sink_event;
gstbasesink_class->query = GST_DEBUG_FUNCPTR (gst_glimage_sink_query);
gstbasesink_class->set_caps = gst_glimage_sink_set_caps;
gstbasesink_class->get_caps = gst_glimage_sink_get_caps;
@@ -606,6 +772,9 @@
glimage_sink->mview_output_flags = DEFAULT_MULTIVIEW_FLAGS;
glimage_sink->mview_downmix_mode = DEFAULT_MULTIVIEW_DOWNMIX;
+ glimage_sink->current_rotate_method = DEFAULT_ROTATE_METHOD;
+ glimage_sink->transform_matrix = NULL;
+
g_mutex_init (&glimage_sink->drawing_lock);
}
@@ -620,6 +789,10 @@
glimage_sink = GST_GLIMAGE_SINK (object);
switch (prop_id) {
+ case PROP_ROTATE_METHOD:
+ gst_glimage_sink_set_rotate_method (glimage_sink,
+ g_value_get_enum (value), FALSE);
+ break;
case PROP_FORCE_ASPECT_RATIO:
{
glimage_sink->keep_aspect_ratio = g_value_get_boolean (value);
@@ -687,6 +860,9 @@
glimage_sink = GST_GLIMAGE_SINK (object);
switch (prop_id) {
+ case PROP_ROTATE_METHOD:
+ g_value_set_enum (value, glimage_sink->current_rotate_method);
+ break;
case PROP_FORCE_ASPECT_RATIO:
g_value_set_boolean (value, glimage_sink->keep_aspect_ratio);
break;
@@ -844,6 +1020,58 @@
}
static gboolean
+gst_glimage_sink_event (GstBaseSink * sink, GstEvent * event)
+{
+ GstGLImageSink *gl_sink = GST_GLIMAGE_SINK (sink);
+ GstTagList *taglist;
+ gchar *orientation;
+ gboolean ret;
+
+ GST_DEBUG_OBJECT (gl_sink, "handling %s event", GST_EVENT_TYPE_NAME (event));
+
+ switch (GST_EVENT_TYPE (event)) {
+ case GST_EVENT_TAG:
+ gst_event_parse_tag (event, &taglist);
+
+ if (gst_tag_list_get_string (taglist, "image-orientation", &orientation)) {
+ if (!g_strcmp0 ("rotate-0", orientation))
+ gst_glimage_sink_set_rotate_method (gl_sink,
+ GST_GL_ROTATE_METHOD_IDENTITY, TRUE);
+ else if (!g_strcmp0 ("rotate-90", orientation))
+ gst_glimage_sink_set_rotate_method (gl_sink, GST_GL_ROTATE_METHOD_90R,
+ TRUE);
+ else if (!g_strcmp0 ("rotate-180", orientation))
+ gst_glimage_sink_set_rotate_method (gl_sink, GST_GL_ROTATE_METHOD_180,
+ TRUE);
+ else if (!g_strcmp0 ("rotate-270", orientation))
+ gst_glimage_sink_set_rotate_method (gl_sink, GST_GL_ROTATE_METHOD_90L,
+ TRUE);
+ else if (!g_strcmp0 ("flip-rotate-0", orientation))
+ gst_glimage_sink_set_rotate_method (gl_sink,
+ GST_GL_ROTATE_METHOD_FLIP_HORIZ, TRUE);
+ else if (!g_strcmp0 ("flip-rotate-90", orientation))
+ gst_glimage_sink_set_rotate_method (gl_sink,
+ GST_GL_ROTATE_METHOD_FLIP_UR_LL, TRUE);
+ else if (!g_strcmp0 ("flip-rotate-180", orientation))
+ gst_glimage_sink_set_rotate_method (gl_sink,
+ GST_GL_ROTATE_METHOD_FLIP_VERT, TRUE);
+ else if (!g_strcmp0 ("flip-rotate-270", orientation))
+ gst_glimage_sink_set_rotate_method (gl_sink,
+ GST_GL_ROTATE_METHOD_FLIP_UL_LR, TRUE);
+
+ g_free (orientation);
+ }
+ break;
+ default:
+ break;
+ }
+
+ ret = GST_BASE_SINK_CLASS (parent_class)->event (sink, event);
+
+ return ret;
+}
+
+static gboolean
gst_glimage_sink_query (GstBaseSink * bsink, GstQuery * query)
{
GstGLImageSink *glimage_sink = GST_GLIMAGE_SINK (bsink);
@@ -1702,6 +1930,8 @@
gst_query_add_allocation_meta (query,
GST_VIDEO_OVERLAY_COMPOSITION_META_API_TYPE, allocation_meta);
+ gst_query_add_allocation_meta (query,
+ GST_VIDEO_AFFINE_TRANSFORMATION_META_API_TYPE, 0);
if (allocation_meta)
gst_structure_free (allocation_meta);
@@ -1777,17 +2007,16 @@
GError *error = NULL;
GstGLSLStage *frag_stage, *vert_stage;
+ vert_stage = gst_glsl_stage_new_with_string (gl_sink->context,
+ GL_VERTEX_SHADER, GST_GLSL_VERSION_NONE,
+ GST_GLSL_PROFILE_ES | GST_GLSL_PROFILE_COMPATIBILITY,
+ gst_gl_shader_string_vertex_mat4_vertex_transform);
if (gl_sink->texture_target == GST_GL_TEXTURE_TARGET_EXTERNAL_OES) {
- vert_stage = gst_glsl_stage_new_with_string (gl_sink->context,
- GL_VERTEX_SHADER, GST_GLSL_VERSION_NONE,
- GST_GLSL_PROFILE_ES | GST_GLSL_PROFILE_COMPATIBILITY,
- gst_gl_shader_string_vertex_mat4_texture_transform);
frag_stage = gst_glsl_stage_new_with_string (gl_sink->context,
GL_FRAGMENT_SHADER, GST_GLSL_VERSION_NONE,
GST_GLSL_PROFILE_ES | GST_GLSL_PROFILE_COMPATIBILITY,
gst_gl_shader_string_fragment_external_oes_default);
} else {
- vert_stage = gst_glsl_stage_new_default_vertex (gl_sink->context);
frag_stage = gst_glsl_stage_new_default_fragment (gl_sink->context);
}
if (!vert_stage || !frag_stage) {
@@ -1913,8 +2142,17 @@
src.x = 0;
src.y = 0;
- src.w = GST_VIDEO_SINK_WIDTH (gl_sink);
- src.h = GST_VIDEO_SINK_HEIGHT (gl_sink);
+ if (gl_sink->current_rotate_method == GST_GL_ROTATE_METHOD_90R
+ || gl_sink->current_rotate_method == GST_GL_ROTATE_METHOD_90L
+ || gl_sink->current_rotate_method == GST_GL_ROTATE_METHOD_FLIP_UL_LR
+ || gl_sink->current_rotate_method ==
+ GST_GL_ROTATE_METHOD_FLIP_UR_LL) {
+ src.h = GST_VIDEO_SINK_WIDTH (gl_sink);
+ src.w = GST_VIDEO_SINK_HEIGHT (gl_sink);
+ } else {
+ src.w = GST_VIDEO_SINK_WIDTH (gl_sink);
+ src.h = GST_VIDEO_SINK_HEIGHT (gl_sink);
+ }
dst.x = 0;
dst.y = 0;
@@ -1944,13 +2182,6 @@
GST_GLIMAGE_SINK_UNLOCK (gl_sink);
}
-static const gfloat identity_matrix[] = {
- 1.0f, 0.0f, 0.0, 0.0f,
- 0.0f, 1.0f, 0.0, 0.0f,
- 0.0f, 0.0f, 1.0, 0.0f,
- 0.0f, 0.0f, 0.0, 1.0f,
-};
-
static void
gst_glimage_sink_on_draw (GstGLImageSink * gl_sink)
{
@@ -2031,18 +2262,21 @@
gl->ActiveTexture (GL_TEXTURE0);
gl->BindTexture (gl_target, gl_sink->redisplay_texture);
gst_gl_shader_set_uniform_1i (gl_sink->redisplay_shader, "tex", 0);
- if (gl_sink->texture_target == GST_GL_TEXTURE_TARGET_EXTERNAL_OES) {
+ {
GstVideoAffineTransformationMeta *af_meta;
+ gfloat matrix[16];
af_meta =
gst_buffer_get_video_affine_transformation_meta
(gl_sink->stored_buffer[0]);
- if (af_meta)
- gst_gl_shader_set_uniform_matrix_4fv (gl_sink->redisplay_shader,
- "u_transformation", 1, FALSE, af_meta->matrix);
- else
- gst_gl_shader_set_uniform_matrix_4fv (gl_sink->redisplay_shader,
- "u_transformation", 1, FALSE, identity_matrix);
+
+ gst_gl_get_affine_transformation_meta_as_ndc (af_meta, matrix);
+
+ if (gl_sink->transform_matrix)
+ gst_gl_multiply_matrix4 (gl_sink->transform_matrix, matrix, matrix);
+
+ gst_gl_shader_set_uniform_matrix_4fv (gl_sink->redisplay_shader,
+ "u_transformation", 1, FALSE, matrix);
}
gl->DrawElements (GL_TRIANGLES, 6, GL_UNSIGNED_SHORT, 0);
diff --git a/ext/gl/gstglimagesink.h b/ext/gl/gstglimagesink.h
index 6e9b98e..8833103 100644
--- a/ext/gl/gstglimagesink.h
+++ b/ext/gl/gstglimagesink.h
@@ -44,6 +44,19 @@
#define GST_IS_GLIMAGE_SINK_CLASS(klass) \
(G_TYPE_CHECK_CLASS_TYPE((klass),GST_TYPE_GLIMAGE_SINK))
+typedef enum
+{
+ GST_GL_ROTATE_METHOD_IDENTITY,
+ GST_GL_ROTATE_METHOD_90R,
+ GST_GL_ROTATE_METHOD_180,
+ GST_GL_ROTATE_METHOD_90L,
+ GST_GL_ROTATE_METHOD_FLIP_HORIZ,
+ GST_GL_ROTATE_METHOD_FLIP_VERT,
+ GST_GL_ROTATE_METHOD_FLIP_UL_LR,
+ GST_GL_ROTATE_METHOD_FLIP_UR_LL,
+ GST_GL_ROTATE_METHOD_AUTO,
+}GstGLRotateMethod;
+
typedef struct _GstGLImageSink GstGLImageSink;
typedef struct _GstGLImageSinkClass GstGLImageSinkClass;
@@ -122,6 +135,11 @@
GstGLStereoDownmix mview_downmix_mode;
GstGLOverlayCompositor *overlay_compositor;
+
+ /* current video flip method */
+ GstGLRotateMethod current_rotate_method;
+ GstGLRotateMethod rotate_method;
+ const gfloat *transform_matrix;
};
struct _GstGLImageSinkClass
diff --git a/ext/gl/gstglmixer.c b/ext/gl/gstglmixer.c
index 5ca1316..764a53c 100644
--- a/ext/gl/gstglmixer.c
+++ b/ext/gl/gstglmixer.c
@@ -28,10 +28,6 @@
#include "gstglmixer.h"
-#if GST_GL_HAVE_PLATFORM_EGL
-#include <gst/gl/egl/gsteglimagememory.h>
-#endif
-
#define gst_gl_mixer_parent_class parent_class
G_DEFINE_ABSTRACT_TYPE (GstGLMixer, gst_gl_mixer, GST_TYPE_GL_BASE_MIXER);
@@ -380,10 +376,8 @@
gobject_class->get_property = gst_gl_mixer_get_property;
gobject_class->set_property = gst_gl_mixer_set_property;
- gst_element_class_add_pad_template (element_class,
- gst_static_pad_template_get (&src_factory));
- gst_element_class_add_pad_template (element_class,
- gst_static_pad_template_get (&sink_factory));
+ gst_element_class_add_static_pad_template (element_class, &src_factory);
+ gst_element_class_add_static_pad_template (element_class, &sink_factory);
agg_class->sinkpads_type = GST_TYPE_GL_MIXER_PAD;
agg_class->sink_query = gst_gl_mixer_sink_query;
@@ -606,6 +600,7 @@
GstGLMixerPad *pad = GST_GL_MIXER_PAD (agg_pad);
GstGLMixer *mix = GST_GL_MIXER (agg);
+ pad->current_texture = 0;
if (vaggpad->buffer != NULL) {
GstVideoInfo gl_info;
GstVideoFrame gl_frame;
diff --git a/ext/gl/gstglmixerbin.c b/ext/gl/gstglmixerbin.c
index 6f83f82..1e6ebeb 100644
--- a/ext/gl/gstglmixerbin.c
+++ b/ext/gl/gstglmixerbin.c
@@ -31,6 +31,36 @@
GST_DEBUG_CATEGORY (gst_gl_mixer_bin_debug);
#define DEFAULT_LATENCY 0
+#define DEFAULT_START_TIME_SELECTION 0
+#define DEFAULT_START_TIME (-1)
+
+typedef enum
+{
+ GST_GL_MIXER_BIN_START_TIME_SELECTION_ZERO,
+ GST_GL_MIXER_BIN_START_TIME_SELECTION_FIRST,
+ GST_GL_MIXER_BIN_START_TIME_SELECTION_SET
+} GstGLMixerBinStartTimeSelection;
+
+static GType
+gst_gl_mixer_bin_start_time_selection_get_type (void)
+{
+ static GType gtype = 0;
+
+ if (gtype == 0) {
+ static const GEnumValue values[] = {
+ {GST_GL_MIXER_BIN_START_TIME_SELECTION_ZERO,
+ "Start at 0 running time (default)", "zero"},
+ {GST_GL_MIXER_BIN_START_TIME_SELECTION_FIRST,
+ "Start at first observed input running time", "first"},
+ {GST_GL_MIXER_BIN_START_TIME_SELECTION_SET,
+ "Set start time with start-time property", "set"},
+ {0, NULL, NULL}
+ };
+
+ gtype = g_enum_register_static ("GstGLMixerBinStartTimeSelection", values);
+ }
+ return gtype;
+}
struct input_chain
{
@@ -82,6 +112,8 @@
PROP_0,
PROP_MIXER,
PROP_LATENCY,
+ PROP_START_TIME_SELECTION,
+ PROP_START_TIME,
};
enum
@@ -156,6 +188,19 @@
(G_MAXLONG == G_MAXINT64) ? G_MAXINT64 : (G_MAXLONG * GST_SECOND - 1),
DEFAULT_LATENCY, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
+ g_object_class_install_property (gobject_class, PROP_START_TIME_SELECTION,
+ g_param_spec_enum ("start-time-selection", "Start Time Selection",
+ "Decides which start time is output",
+ gst_gl_mixer_bin_start_time_selection_get_type (),
+ DEFAULT_START_TIME_SELECTION,
+ G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
+
+ g_object_class_install_property (gobject_class, PROP_START_TIME,
+ g_param_spec_uint64 ("start-time", "Start Time",
+ "Start time to use if start-time-selection=set", 0,
+ G_MAXUINT64,
+ DEFAULT_START_TIME, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
+
/**
* GstMixerBin::create-element:
* @object: the #GstGLMixerBin
@@ -169,8 +214,7 @@
G_SIGNAL_RUN_LAST, 0, NULL, NULL, g_cclosure_marshal_generic,
GST_TYPE_ELEMENT, 0);
- gst_element_class_add_pad_template (element_class,
- gst_static_pad_template_get (&src_factory));
+ gst_element_class_add_static_pad_template (element_class, &src_factory);
upload_caps = gst_gl_upload_get_input_template_caps ();
gst_element_class_add_pad_template (element_class,
diff --git a/ext/gl/gstgloverlay.c b/ext/gl/gstgloverlay.c
index fa6c6c1..7ae56d2 100644
--- a/ext/gl/gstgloverlay.c
+++ b/ext/gl/gstgloverlay.c
@@ -702,7 +702,8 @@
(GST_GL_BASE_FILTER (overlay)->context));
params =
gst_gl_video_allocation_params_new (GST_GL_BASE_FILTER (overlay)->context,
- NULL, &v_info, 0, &v_align, GST_GL_TEXTURE_TARGET_2D);
+ NULL, &v_info, 0, &v_align, GST_GL_TEXTURE_TARGET_2D,
+ GST_VIDEO_GL_TEXTURE_TYPE_RGBA);
overlay->image_memory = (GstGLMemory *)
gst_gl_base_memory_alloc (mem_allocator,
(GstGLAllocationParams *) params);
@@ -817,7 +818,8 @@
(GST_GL_BASE_FILTER (overlay)->context));
params =
gst_gl_video_allocation_params_new (GST_GL_BASE_FILTER (overlay)->context,
- NULL, &v_info, 0, NULL, GST_GL_TEXTURE_TARGET_2D);
+ NULL, &v_info, 0, NULL, GST_GL_TEXTURE_TARGET_2D,
+ GST_VIDEO_GL_TEXTURE_TYPE_RGBA);
overlay->image_memory = (GstGLMemory *)
gst_gl_base_memory_alloc (mem_allocator,
(GstGLAllocationParams *) params);
diff --git a/ext/gl/gstglsrcbin.c b/ext/gl/gstglsrcbin.c
index 9eb66d3..da74aaa 100644
--- a/ext/gl/gstglsrcbin.c
+++ b/ext/gl/gstglsrcbin.c
@@ -102,8 +102,8 @@
"Infrastructure to process GL textures",
"Matthew Waters <matthew@centricular.com>");
- gst_element_class_add_pad_template (element_class,
- gst_static_pad_template_get (&gst_gl_src_bin_template));
+ gst_element_class_add_static_pad_template (element_class,
+ &gst_gl_src_bin_template);
}
static void
diff --git a/ext/gl/gstglstereomix.c b/ext/gl/gstglstereomix.c
index 989d7f6..663c1b7 100644
--- a/ext/gl/gstglstereomix.c
+++ b/ext/gl/gstglstereomix.c
@@ -150,10 +150,8 @@
GST_TYPE_GL_STEREO_DOWNMIX_MODE_TYPE, DEFAULT_DOWNMIX,
G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
- gst_element_class_add_pad_template (element_class,
- gst_static_pad_template_get (&src_factory));
- gst_element_class_add_pad_template (element_class,
- gst_static_pad_template_get (&sink_factory));
+ gst_element_class_add_static_pad_template (element_class, &src_factory);
+ gst_element_class_add_static_pad_template (element_class, &sink_factory);
agg_class->sinkpads_type = GST_TYPE_GL_STEREO_MIX_PAD;
agg_class->stop = gst_gl_stereo_mix_stop;
diff --git a/ext/gl/gstglstereosplit.c b/ext/gl/gstglstereosplit.c
index eba713c..1eaa440 100644
--- a/ext/gl/gstglstereosplit.c
+++ b/ext/gl/gstglstereosplit.c
@@ -38,10 +38,6 @@
#include "gstglstereosplit.h"
-#if GST_GL_HAVE_PLATFORM_EGL
-#include <gst/gl/egl/gsteglimagememory.h>
-#endif
-
#define GST_CAT_DEFAULT gst_gl_stereosplit_debug
GST_DEBUG_CATEGORY_STATIC (GST_CAT_DEFAULT);
@@ -55,53 +51,21 @@
static GstStaticPadTemplate sink_template = GST_STATIC_PAD_TEMPLATE ("sink",
GST_PAD_SINK, GST_PAD_ALWAYS,
GST_STATIC_CAPS (GST_VIDEO_CAPS_MAKE_WITH_FEATURES
- (GST_CAPS_FEATURE_MEMORY_GL_MEMORY,
- "RGBA") "; "
-#if GST_GL_HAVE_PLATFORM_EGL
- GST_VIDEO_CAPS_MAKE_WITH_FEATURES (GST_CAPS_FEATURE_MEMORY_EGL_IMAGE,
- "RGBA") "; "
-#endif
- GST_VIDEO_CAPS_MAKE_WITH_FEATURES
- (GST_CAPS_FEATURE_META_GST_VIDEO_GL_TEXTURE_UPLOAD_META, "RGBA") "; "
- GST_VIDEO_CAPS_MAKE (GST_GL_COLOR_CONVERT_FORMATS)
- )
+ (GST_CAPS_FEATURE_MEMORY_GL_MEMORY, "RGBA"))
);
static GstStaticPadTemplate src_left_template = GST_STATIC_PAD_TEMPLATE ("left",
GST_PAD_SRC, GST_PAD_ALWAYS,
GST_STATIC_CAPS (GST_VIDEO_CAPS_MAKE_WITH_FEATURES
- (GST_CAPS_FEATURE_MEMORY_GL_MEMORY,
- "RGBA")
-#if 0
- "; "
-#if GST_GL_HAVE_PLATFORM_EGL
- GST_VIDEO_CAPS_MAKE_WITH_FEATURES (GST_CAPS_FEATURE_MEMORY_EGL_IMAGE,
- "RGBA") "; "
-#endif
- GST_VIDEO_CAPS_MAKE_WITH_FEATURES
- (GST_CAPS_FEATURE_META_GST_VIDEO_GL_TEXTURE_UPLOAD_META, "RGBA") "; "
- GST_VIDEO_CAPS_MAKE (GST_GL_COLOR_CONVERT_FORMATS)
-#endif
- )
+ (GST_CAPS_FEATURE_MEMORY_GL_MEMORY, "RGBA"))
);
static GstStaticPadTemplate src_right_template =
- GST_STATIC_PAD_TEMPLATE ("right",
+GST_STATIC_PAD_TEMPLATE ("right",
GST_PAD_SRC, GST_PAD_ALWAYS,
GST_STATIC_CAPS (GST_VIDEO_CAPS_MAKE_WITH_FEATURES
(GST_CAPS_FEATURE_MEMORY_GL_MEMORY,
- "RGBA")
-#if 0
- "; "
-#if GST_GL_HAVE_PLATFORM_EGL
- GST_VIDEO_CAPS_MAKE_WITH_FEATURES (GST_CAPS_FEATURE_MEMORY_EGL_IMAGE,
- "RGBA") "; "
-#endif
- GST_VIDEO_CAPS_MAKE_WITH_FEATURES
- (GST_CAPS_FEATURE_META_GST_VIDEO_GL_TEXTURE_UPLOAD_META, "RGBA") "; "
- GST_VIDEO_CAPS_MAKE (GST_GL_COLOR_CONVERT_FORMATS)
-#endif
- )
+ "RGBA"))
);
static void stereosplit_reset (GstGLStereoSplit * self);
@@ -139,12 +103,10 @@
element_class->change_state = stereosplit_change_state;
element_class->set_context = stereosplit_set_context;
- gst_element_class_add_pad_template (element_class,
- gst_static_pad_template_get (&sink_template));
- gst_element_class_add_pad_template (element_class,
- gst_static_pad_template_get (&src_left_template));
- gst_element_class_add_pad_template (element_class,
- gst_static_pad_template_get (&src_right_template));
+ gst_element_class_add_static_pad_template (element_class, &sink_template);
+ gst_element_class_add_static_pad_template (element_class, &src_left_template);
+ gst_element_class_add_static_pad_template (element_class,
+ &src_right_template);
}
static void
@@ -179,10 +141,6 @@
static void
stereosplit_reset (GstGLStereoSplit * self)
{
- if (self->upload)
- gst_object_replace ((GstObject **) & self->upload, NULL);
- if (self->convert)
- gst_object_replace ((GstObject **) & self->convert, NULL);
if (self->context)
gst_object_replace ((GstObject **) & self->context, NULL);
if (self->display)
@@ -269,37 +227,9 @@
if (!ensure_context (self))
return NULL;
- if (direction == GST_PAD_SINK) {
- next_caps =
- gst_gl_upload_transform_caps (self->context, direction, caps, filter);
- caps = next_caps;
-
- next_caps =
- gst_gl_color_convert_transform_caps (self->context, direction, caps,
- NULL);
- gst_caps_unref (caps);
- caps = next_caps;
-
- next_caps =
- gst_gl_view_convert_transform_caps (self->viewconvert, direction, caps,
- NULL);
- gst_caps_unref (caps);
- } else {
- next_caps =
- gst_gl_view_convert_transform_caps (self->viewconvert, direction, caps,
- filter);
- caps = next_caps;
-
- next_caps =
- gst_gl_color_convert_transform_caps (self->context, direction, caps,
- NULL);
- gst_caps_unref (caps);
- caps = next_caps;
-
- next_caps =
- gst_gl_upload_transform_caps (self->context, direction, caps, NULL);
- gst_caps_unref (caps);
- }
+ next_caps =
+ gst_gl_view_convert_transform_caps (self->viewconvert, direction, caps,
+ NULL);
return next_caps;
}
@@ -453,6 +383,18 @@
goto fail;
}
+ gst_gl_view_convert_set_context (split->viewconvert, split->context);
+
+ tridcaps = gst_caps_make_writable (tridcaps);
+ gst_caps_set_simple (tridcaps, "multiview-mode", G_TYPE_STRING,
+ "separated", "views", G_TYPE_INT, 2, NULL);
+ tridcaps = gst_caps_fixate (tridcaps);
+
+ if (!gst_gl_view_convert_set_caps (split->viewconvert, sinkcaps, tridcaps)) {
+ GST_ERROR_OBJECT (split, "Failed to set caps on converter");
+ goto fail;
+ }
+
/* FIXME: Provide left and right caps to do_bufferpool */
stereosplit_do_bufferpool (split, left);
@@ -508,51 +450,6 @@
return FALSE;
}
-static void
-_init_upload (GstGLStereoSplit * split)
-{
- GstGLContext *context = split->context;
-
- if (!split->upload) {
- GstCaps *in_caps = gst_pad_get_current_caps (GST_PAD (split->sink_pad));
- GstCaps *split_caps = gst_pad_get_current_caps (split->left_pad);
- GstCaps *upload_caps = gst_caps_copy (in_caps);
- GstCapsFeatures *gl_features =
- gst_caps_features_from_string (GST_CAPS_FEATURE_MEMORY_GL_MEMORY);
- GstCaps *gl_caps;
-
- split->upload = gst_gl_upload_new (context);
-
- gst_caps_set_features (upload_caps, 0,
- gst_caps_features_copy (gl_features));
- gst_gl_upload_set_caps (split->upload, in_caps, upload_caps);
- gst_caps_unref (in_caps);
-
- gl_caps = gst_caps_copy (upload_caps);
- gst_caps_set_simple (gl_caps, "format", G_TYPE_STRING, "RGBA", NULL);
- gst_caps_set_features (gl_caps, 0, gst_caps_features_copy (gl_features));
-
- if (!split->convert) {
- split->convert = gst_gl_color_convert_new (context);
- gst_gl_color_convert_set_caps (split->convert, upload_caps, gl_caps);
- }
-
- gst_caps_unref (upload_caps);
- gst_caps_features_free (gl_features);
-
- gst_gl_view_convert_set_context (split->viewconvert, split->context);
-
- split_caps = gst_caps_make_writable (split_caps);
- gst_caps_set_simple (split_caps, "multiview-mode", G_TYPE_STRING,
- "separated", "views", G_TYPE_INT, 2, NULL);
-
- gst_gl_view_convert_set_caps (split->viewconvert, gl_caps, split_caps);
-
- gst_caps_unref (split_caps);
- gst_caps_unref (gl_caps);
- }
-}
-
static gboolean
ensure_context (GstGLStereoSplit * self)
{
@@ -619,10 +516,6 @@
{
if (!ensure_context (self))
return FALSE;
- if (self->upload)
- gst_object_replace ((GstObject **) & self->upload, NULL);
- if (self->convert)
- gst_object_replace ((GstObject **) & self->convert, NULL);
return TRUE;
@@ -635,10 +528,6 @@
if (!gst_gl_ensure_element_data (self, &self->display, &self->other_context))
return FALSE;
- _init_upload (self);
-
- gst_gl_upload_propose_allocation (self->upload, NULL, query);
-
return TRUE;
}
@@ -666,39 +555,17 @@
static GstFlowReturn
stereosplit_chain (GstPad * pad, GstGLStereoSplit * split, GstBuffer * buf)
{
- GstBuffer *uploaded_buffer, *converted_buffer, *left, *right;
+ GstBuffer *left, *right;
GstBuffer *split_buffer = NULL;
GstFlowReturn ret;
gint i, n_planes;
- if (!split->upload)
- _init_upload (split);
-
n_planes = GST_VIDEO_INFO_N_PLANES (&split->viewconvert->out_info);
GST_LOG_OBJECT (split, "chaining buffer %" GST_PTR_FORMAT, buf);
- if (GST_GL_UPLOAD_DONE != gst_gl_upload_perform_with_buffer (split->upload,
- buf, &uploaded_buffer)) {
- gst_buffer_unref (buf);
- GST_ELEMENT_ERROR (split, RESOURCE, NOT_FOUND, ("%s",
- "Failed to upload buffer"), (NULL));
- return GST_FLOW_ERROR;
- }
- gst_buffer_unref (buf);
-
- if (!(converted_buffer =
- gst_gl_color_convert_perform (split->convert, uploaded_buffer))) {
- GST_ELEMENT_ERROR (split, RESOURCE, NOT_FOUND, ("%s",
- "Failed to convert buffer"), (NULL));
- gst_buffer_unref (uploaded_buffer);
- return GST_FLOW_ERROR;
- }
- gst_buffer_unref (uploaded_buffer);
-
if (gst_gl_view_convert_submit_input_buffer (split->viewconvert,
- GST_BUFFER_IS_DISCONT (converted_buffer),
- converted_buffer) != GST_FLOW_OK) {
+ GST_BUFFER_IS_DISCONT (buf), buf) != GST_FLOW_OK) {
GST_ELEMENT_ERROR (split, RESOURCE, NOT_FOUND, ("%s",
"Failed to 3d convert buffer"),
("Could not get submit input buffer"));
diff --git a/ext/gl/gstglstereosplit.h b/ext/gl/gstglstereosplit.h
index 5a1e3c6..279bd26 100644
--- a/ext/gl/gstglstereosplit.h
+++ b/ext/gl/gstglstereosplit.h
@@ -49,8 +49,6 @@
GstGLContext *context;
GstGLContext *other_context;
- GstGLUpload *upload;
- GstGLColorConvert *convert;
GstGLViewConvert *viewconvert;
};
diff --git a/ext/gl/gstgltestsrc.c b/ext/gl/gstgltestsrc.c
index 95c7321..69c8b33 100644
--- a/ext/gl/gstgltestsrc.c
+++ b/ext/gl/gstgltestsrc.c
@@ -49,7 +49,7 @@
#include <gst/gst-i18n-plugin.h>
#define USE_PEER_BUFFERALLOC
-#define SUPPORTED_GL_APIS GST_GL_API_OPENGL
+#define SUPPORTED_GL_APIS (GST_GL_API_OPENGL | GST_GL_API_OPENGL3 | GST_GL_API_GLES2)
GST_DEBUG_CATEGORY_STATIC (gl_test_src_debug);
#define GST_CAT_DEFAULT gl_test_src_debug
@@ -178,8 +178,7 @@
"Source/Video", "Creates a test video stream",
"David A. Schleef <ds@schleef.org>");
- gst_element_class_add_pad_template (element_class,
- gst_static_pad_template_get (&src_factory));
+ gst_element_class_add_static_pad_template (element_class, &src_factory);
element_class->set_context = gst_gl_test_src_set_context;
element_class->change_state = gst_gl_test_src_change_state;
@@ -229,162 +228,10 @@
return caps;
}
-const gchar *snow_vertex_src = "attribute vec4 position; \
- attribute vec2 uv; \
- uniform mat4 mvp; \
- varying vec2 out_uv; \
- void main() \
- { \
- gl_Position = mvp * position; \
- out_uv = uv; \
- }";
-
-const gchar *snow_fragment_src = "uniform float time; \
- varying vec2 out_uv; \
- \
- float rand(vec2 co){ \
- return fract(sin(dot(co.xy, vec2(12.9898,78.233))) * 43758.5453); \
- } \
- void main() \
- { \
- gl_FragColor = rand(time * out_uv) * vec4(1); \
- }";
-
-const gchar *mandelbrot_vertex_src = "attribute vec4 position; \
- attribute vec2 uv; \
- uniform mat4 mvp; \
- uniform float aspect_ratio; \
- varying vec2 fractal_position; \
- \
- void main() \
- { \
- gl_Position = mvp * position; \
- fractal_position = vec2(uv.y - 0.8, aspect_ratio * (uv.x - 0.5)); \
- fractal_position *= 2.5; \
- }";
-
-const gchar *mandelbrot_fragment_src = "uniform float time; \
- varying vec2 fractal_position; \
- \
- const vec4 K = vec4(1.0, 0.66, 0.33, 3.0); \
- \
- vec4 hsv_to_rgb(float hue, float saturation, float value) { \
- vec4 p = abs(fract(vec4(hue) + K) * 6.0 - K.wwww); \
- return value * mix(K.xxxx, clamp(p - K.xxxx, 0.0, 1.0), saturation); \
- } \
- \
- vec4 i_to_rgb(int i) { \
- float hue = float(i) / 100.0 + sin(time); \
- return hsv_to_rgb(hue, 0.5, 0.8); \
- } \
- \
- vec2 pow_2_complex(vec2 c) { \
- return vec2(c.x*c.x - c.y*c.y, 2.0 * c.x * c.y); \
- } \
- \
- vec2 mandelbrot(vec2 c, vec2 c0) { \
- return pow_2_complex(c) + c0; \
- } \
- \
- vec4 iterate_pixel(vec2 position) { \
- vec2 c = vec2(0); \
- for (int i=0; i < 100; i++) { \
- if (c.x*c.x + c.y*c.y > 2.0*2.0) \
- return i_to_rgb(i); \
- c = mandelbrot(c, position); \
- } \
- return vec4(0, 0, 0, 1); \
- } \
- \
- void main() { \
- gl_FragColor = iterate_pixel(fractal_position); \
- }";
-
-
-const gchar *checkers_vertex_src = "attribute vec4 position; \
- uniform mat4 mvp; \
- void main() \
- { \
- gl_Position = mvp * position; \
- }";
-
-const gchar *checkers_fragment_src = "uniform float checker_width; \
- void main() \
- { \
- vec2 xy_index= floor((gl_FragCoord.xy-vec2(0.5,0.5))/checker_width); \
- vec2 xy_mod=mod(xy_index,vec2(2.0,2.0)); \
- float result=mod(xy_mod.x+xy_mod.y,2.0); \
- gl_FragColor.r=step(result,0.5); \
- gl_FragColor.g=1.0-gl_FragColor.r; \
- gl_FragColor.ba=vec2(0,1); \
- }";
-
-
static void
gst_gl_test_src_set_pattern (GstGLTestSrc * gltestsrc, gint pattern_type)
{
- gltestsrc->pattern_type = pattern_type;
-
- GST_DEBUG_OBJECT (gltestsrc, "setting pattern to %d", pattern_type);
-
- switch (pattern_type) {
- case GST_GL_TEST_SRC_SMPTE:
- gltestsrc->make_image = gst_gl_test_src_smpte;
- break;
- case GST_GL_TEST_SRC_SNOW:
- gltestsrc->vertex_src = snow_vertex_src;
- gltestsrc->fragment_src = snow_fragment_src;
- gltestsrc->make_image = gst_gl_test_src_shader;
- break;
- case GST_GL_TEST_SRC_BLACK:
- gltestsrc->make_image = gst_gl_test_src_black;
- break;
- case GST_GL_TEST_SRC_WHITE:
- gltestsrc->make_image = gst_gl_test_src_white;
- break;
- case GST_GL_TEST_SRC_RED:
- gltestsrc->make_image = gst_gl_test_src_red;
- break;
- case GST_GL_TEST_SRC_GREEN:
- gltestsrc->make_image = gst_gl_test_src_green;
- break;
- case GST_GL_TEST_SRC_BLUE:
- gltestsrc->make_image = gst_gl_test_src_blue;
- break;
- case GST_GL_TEST_SRC_CHECKERS1:
- gltestsrc->vertex_src = checkers_vertex_src;
- gltestsrc->fragment_src = checkers_fragment_src;
- gltestsrc->make_image = gst_gl_test_src_checkers1;
- break;
- case GST_GL_TEST_SRC_CHECKERS2:
- gltestsrc->vertex_src = checkers_vertex_src;
- gltestsrc->fragment_src = checkers_fragment_src;
- gltestsrc->make_image = gst_gl_test_src_checkers2;
- break;
- case GST_GL_TEST_SRC_CHECKERS4:
- gltestsrc->vertex_src = checkers_vertex_src;
- gltestsrc->fragment_src = checkers_fragment_src;
- gltestsrc->make_image = gst_gl_test_src_checkers4;
- break;
- case GST_GL_TEST_SRC_CHECKERS8:
- gltestsrc->vertex_src = checkers_vertex_src;
- gltestsrc->fragment_src = checkers_fragment_src;
- gltestsrc->make_image = gst_gl_test_src_checkers8;
- break;
- case GST_GL_TEST_SRC_CIRCULAR:
- gltestsrc->make_image = gst_gl_test_src_circular;
- break;
- case GST_GL_TEST_SRC_BLINK:
- gltestsrc->make_image = gst_gl_test_src_black;
- break;
- case GST_GL_TEST_SRC_MANDELBROT:
- gltestsrc->vertex_src = mandelbrot_vertex_src;
- gltestsrc->fragment_src = mandelbrot_fragment_src;
- gltestsrc->make_image = gst_gl_test_src_shader;
- break;
- default:
- g_assert_not_reached ();
- }
+ gltestsrc->set_pattern = pattern_type;
}
static void
@@ -416,7 +263,7 @@
switch (prop_id) {
case PROP_PATTERN:
- g_value_set_enum (value, src->pattern_type);
+ g_value_set_enum (value, src->set_pattern);
break;
case PROP_TIMESTAMP_OFFSET:
g_value_set_int64 (value, src->timestamp_offset);
@@ -599,10 +446,10 @@
{
if (gst_gl_context_get_gl_api (gltestsrc->context)) {
/* blocking call, wait until the opengl thread has compiled the shader */
- if (gltestsrc->vertex_src == NULL)
- return FALSE;
- return gst_gl_context_gen_shader (gltestsrc->context, gltestsrc->vertex_src,
- gltestsrc->fragment_src, &gltestsrc->shader);
+// if (gltestsrc->vertex_src == NULL)
+// return FALSE;
+// return gst_gl_context_gen_shader (gltestsrc->context, gltestsrc->vertex_src,
+// gltestsrc->fragment_src, &gltestsrc->shader);
}
return TRUE;
}
@@ -628,13 +475,6 @@
&& src->n_frames == 1))
goto eos;
- if (src->pattern_type == GST_GL_TEST_SRC_BLINK) {
- if (src->n_frames & 0x1)
- src->make_image = gst_gl_test_src_white;
- else
- src->make_image = gst_gl_test_src_black;
- }
-
if (!gst_video_frame_map (&out_frame, &src->out_info, buffer,
GST_MAP_WRITE | GST_MAP_GL)) {
return GST_FLOW_NOT_NEGOTIATED;
@@ -642,15 +482,15 @@
out_tex = *(guint *) out_frame.data[0];
- gst_buffer_replace (&src->buffer, buffer);
-
if (!gst_gl_context_use_fbo_v2 (src->context, width, height, src->fbo,
src->depthbuffer, out_tex, gst_gl_test_src_callback,
(gpointer) src)) {
- goto not_negotiated;
+ gst_video_frame_unmap (&out_frame);
+ goto gl_error;
}
-
gst_video_frame_unmap (&out_frame);
+ if (!src->gl_result)
+ goto gl_error;
sync_meta = gst_buffer_get_gl_sync_meta (buffer);
if (sync_meta)
@@ -674,6 +514,12 @@
return GST_FLOW_OK;
+gl_error:
+ {
+ GST_ELEMENT_ERROR (src, RESOURCE, NOT_FOUND, (_("failed to draw pattern")),
+ (_("A GL error occured")));
+ return GST_FLOW_NOT_NEGOTIATED;
+ }
not_negotiated:
{
GST_ELEMENT_ERROR (src, CORE, NEGOTIATION, (NULL),
@@ -722,6 +568,11 @@
src->context = NULL;
}
+ if (src->src_impl) {
+ src->src_funcs->free (src->src_impl);
+ src->src_impl = NULL;
+ }
+
return TRUE;
}
@@ -889,12 +740,33 @@
gst_gl_test_src_callback (gpointer stuff)
{
GstGLTestSrc *src = GST_GL_TEST_SRC (stuff);
+ const struct SrcFuncs *funcs;
- src->make_image (src, src->buffer, GST_VIDEO_INFO_WIDTH (&src->out_info),
- GST_VIDEO_INFO_HEIGHT (&src->out_info));
+ funcs = src->src_funcs;
- gst_buffer_unref (src->buffer);
- src->buffer = NULL;
+ if (!funcs || src->set_pattern != src->active_pattern) {
+ if (src->src_impl && funcs)
+ funcs->free (src->src_impl);
+ src->src_funcs = funcs =
+ gst_gl_test_src_get_src_funcs_for_pattern (src->set_pattern);
+ if (funcs == NULL) {
+ GST_ERROR_OBJECT (src, "Could not find an implementation of the "
+ "requested pattern");
+ src->gl_result = FALSE;
+ return;
+ }
+ src->src_impl = funcs->new (src);
+ if (!(src->gl_result =
+ funcs->init (src->src_impl, src->context, &src->out_info))) {
+ GST_ERROR_OBJECT (src, "Failed to initialize pattern");
+ return;
+ }
+ src->active_pattern = src->set_pattern;
+ }
+
+ src->gl_result = funcs->fill_bound_fbo (src->src_impl);
+ if (!src->gl_result)
+ GST_ERROR_OBJECT (src, "Failed to render the pattern");
}
static GstStateChangeReturn
diff --git a/ext/gl/gstgltestsrc.h b/ext/gl/gstgltestsrc.h
index 1c045c7..1b566ad 100644
--- a/ext/gl/gstgltestsrc.h
+++ b/ext/gl/gstgltestsrc.h
@@ -28,6 +28,8 @@
#include <gst/gl/gl.h>
+#include "gltestsrc.h"
+
G_BEGIN_DECLS
#define GST_TYPE_GL_TEST_SRC \
@@ -41,42 +43,6 @@
#define GST_IS_GL_TEST_SRC_CLASS(klass) \
(G_TYPE_CHECK_CLASS_TYPE((klass),GST_TYPE_GL_TEST_SRC))
-/**
- * GstGLTestSrcPattern:
- * @GST_GL_TEST_SRC_SMPTE: A standard SMPTE test pattern
- * @GST_GL_TEST_SRC_SNOW: Random noise
- * @GST_GL_TEST_SRC_BLACK: A black image
- * @GST_GL_TEST_SRC_WHITE: A white image
- * @GST_GL_TEST_SRC_RED: A red image
- * @GST_GL_TEST_SRC_GREEN: A green image
- * @GST_GL_TEST_SRC_BLUE: A blue image
- * @GST_GL_TEST_SRC_CHECKERS1: Checkers pattern (1px)
- * @GST_GL_TEST_SRC_CHECKERS2: Checkers pattern (2px)
- * @GST_GL_TEST_SRC_CHECKERS4: Checkers pattern (4px)
- * @GST_GL_TEST_SRC_CHECKERS8: Checkers pattern (8px)
- * @GST_GL_TEST_SRC_CIRCULAR: Circular pattern
- * @GST_GL_TEST_SRC_BLINK: Alternate between black and white
- *
- * The test pattern to produce.
- */
-typedef enum {
- GST_GL_TEST_SRC_SMPTE,
- GST_GL_TEST_SRC_SNOW,
- GST_GL_TEST_SRC_BLACK,
- GST_GL_TEST_SRC_WHITE,
- GST_GL_TEST_SRC_RED,
- GST_GL_TEST_SRC_GREEN,
- GST_GL_TEST_SRC_BLUE,
- GST_GL_TEST_SRC_CHECKERS1,
- GST_GL_TEST_SRC_CHECKERS2,
- GST_GL_TEST_SRC_CHECKERS4,
- GST_GL_TEST_SRC_CHECKERS8,
- GST_GL_TEST_SRC_CIRCULAR,
- GST_GL_TEST_SRC_BLINK,
- GST_GL_TEST_SRC_MANDELBROT
-} GstGLTestSrcPattern;
-
-typedef struct _GstGLTestSrc GstGLTestSrc;
typedef struct _GstGLTestSrcClass GstGLTestSrcClass;
/**
@@ -90,10 +56,10 @@
/*< private >*/
/* type of output */
- GstGLTestSrcPattern pattern_type;
+ GstGLTestSrcPattern set_pattern;
+ GstGLTestSrcPattern active_pattern;
/* video state */
- char *format_name;
GstVideoInfo out_info;
GLuint fbo;
@@ -101,7 +67,6 @@
GstGLShader *shader;
- GstBuffer* buffer;
GstBufferPool *pool;
GstGLDisplay *display;
@@ -111,10 +76,9 @@
gint64 n_frames; /* total frames sent */
gboolean negotiated;
- const gchar *vertex_src;
- const gchar *fragment_src;
-
- void (*make_image) (GstGLTestSrc* v, GstBuffer* buffer, gint w, gint h);
+ gboolean gl_result;
+ const struct SrcFuncs *src_funcs;
+ gpointer src_impl;
GstCaps *out_caps;
};
diff --git a/ext/gl/gstgltransformation.c b/ext/gl/gstgltransformation.c
index 779447c..b303d0c 100644
--- a/ext/gl/gstgltransformation.c
+++ b/ext/gl/gstgltransformation.c
@@ -89,6 +89,10 @@
GstCaps * incaps, GstCaps * outcaps);
static gboolean gst_gl_transformation_src_event (GstBaseTransform * trans,
GstEvent * event);
+static gboolean gst_gl_transformation_filter_meta (GstBaseTransform * trans,
+ GstQuery * query, GType api, const GstStructure * params);
+static gboolean gst_gl_transformation_decide_allocation (GstBaseTransform *
+ trans, GstQuery * query);
static void gst_gl_transformation_reset_gl (GstGLFilter * filter);
static gboolean gst_gl_transformation_stop (GstBaseTransform * trans);
@@ -97,33 +101,14 @@
static void gst_gl_transformation_build_mvp (GstGLTransformation *
transformation);
+static GstFlowReturn
+gst_gl_transformation_prepare_output_buffer (GstBaseTransform * trans,
+ GstBuffer * inbuf, GstBuffer ** outbuf);
+static gboolean gst_gl_transformation_filter (GstGLFilter * filter,
+ GstBuffer * inbuf, GstBuffer * outbuf);
static gboolean gst_gl_transformation_filter_texture (GstGLFilter * filter,
guint in_tex, guint out_tex);
-/* vertex source */
-static const gchar *cube_v_src =
- "attribute vec4 position; \n"
- "attribute vec2 uv; \n"
- "uniform mat4 mvp; \n"
- "varying vec2 out_uv; \n"
- "void main() \n"
- "{ \n"
- " gl_Position = mvp * position; \n"
- " out_uv = uv; \n"
- "} \n";
-
-/* fragment source */
-static const gchar *cube_f_src =
- "#ifdef GL_ES \n"
- " precision mediump float; \n"
- "#endif \n"
- "varying vec2 out_uv; \n"
- "uniform sampler2D texture; \n"
- "void main() \n"
- "{ \n"
- " gl_FragColor = texture2D (texture, out_uv);\n"
- "} \n";
-
static void
gst_gl_transformation_class_init (GstGLTransformationClass * klass)
{
@@ -139,14 +124,20 @@
gobject_class->get_property = gst_gl_transformation_get_property;
base_transform_class->src_event = gst_gl_transformation_src_event;
+ base_transform_class->decide_allocation =
+ gst_gl_transformation_decide_allocation;
+ base_transform_class->filter_meta = gst_gl_transformation_filter_meta;
GST_GL_FILTER_CLASS (klass)->init_fbo = gst_gl_transformation_init_shader;
GST_GL_FILTER_CLASS (klass)->display_reset_cb =
gst_gl_transformation_reset_gl;
GST_GL_FILTER_CLASS (klass)->set_caps = gst_gl_transformation_set_caps;
+ GST_GL_FILTER_CLASS (klass)->filter = gst_gl_transformation_filter;
GST_GL_FILTER_CLASS (klass)->filter_texture =
gst_gl_transformation_filter_texture;
GST_BASE_TRANSFORM_CLASS (klass)->stop = gst_gl_transformation_stop;
+ GST_BASE_TRANSFORM_CLASS (klass)->prepare_output_buffer =
+ gst_gl_transformation_prepare_output_buffer;
g_object_class_install_property (gobject_class, PROP_FOV,
g_param_spec_float ("fov", "Fov", "Field of view angle in degrees",
@@ -212,14 +203,14 @@
g_object_class_install_property (gobject_class, PROP_PIVOT_X,
g_param_spec_float ("pivot-x", "X Pivot",
"Rotation pivot point X coordinate, where 0 is the center,"
- " -1 the lef +1 the right boarder and <-1, >1 outside.",
+ " -1 the left border, +1 the right border and <-1, >1 outside.",
-G_MAXFLOAT, G_MAXFLOAT, 0.0,
G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
g_object_class_install_property (gobject_class, PROP_PIVOT_Y,
g_param_spec_float ("pivot-y", "Y Pivot",
"Rotation pivot point X coordinate, where 0 is the center,"
- " -1 the lef +1 the right boarder and <-1, >1 outside.",
+ " -1 the left border, +1 the right border and <-1, >1 outside.",
-G_MAXFLOAT, G_MAXFLOAT, 0.0,
G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
@@ -227,7 +218,7 @@
g_param_spec_float ("pivot-z", "Z Pivot",
"Relevant for rotation in 3D space. You look into the negative Z axis direction",
-G_MAXFLOAT, G_MAXFLOAT, 0.0,
- G_PARAM_READABLE | G_PARAM_STATIC_STRINGS));
+ G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
/* MVP */
g_object_class_install_property (gobject_class, PROP_MVP,
@@ -627,6 +618,39 @@
return ret;
}
+static gboolean
+gst_gl_transformation_filter_meta (GstBaseTransform * trans, GstQuery * query,
+ GType api, const GstStructure * params)
+{
+ if (api == GST_VIDEO_AFFINE_TRANSFORMATION_META_API_TYPE)
+ return TRUE;
+
+ if (api == GST_GL_SYNC_META_API_TYPE)
+ return TRUE;
+
+ return FALSE;
+}
+
+static gboolean
+gst_gl_transformation_decide_allocation (GstBaseTransform * trans,
+ GstQuery * query)
+{
+ GstGLTransformation *transformation = GST_GL_TRANSFORMATION (trans);
+
+ if (!GST_BASE_TRANSFORM_CLASS (parent_class)->decide_allocation (trans,
+ query))
+ return FALSE;
+
+ if (gst_query_find_allocation_meta (query,
+ GST_VIDEO_AFFINE_TRANSFORMATION_META_API_TYPE, NULL)) {
+ transformation->downstream_supports_affine_meta = TRUE;
+ } else {
+ transformation->downstream_supports_affine_meta = FALSE;
+ }
+
+ return TRUE;
+}
+
static void
gst_gl_transformation_reset_gl (GstGLFilter * filter)
{
@@ -682,11 +706,81 @@
if (gst_gl_context_get_gl_api (GST_GL_BASE_FILTER (filter)->context)) {
/* blocking call, wait until the opengl thread has compiled the shader */
return gst_gl_context_gen_shader (GST_GL_BASE_FILTER (filter)->context,
- cube_v_src, cube_f_src, &transformation->shader);
+ gst_gl_shader_string_vertex_mat4_vertex_transform,
+ gst_gl_shader_string_fragment_default, &transformation->shader);
}
return TRUE;
}
+static const gfloat from_ndc_matrix[] = {
+ 0.5f, 0.0f, 0.0, 0.5f,
+ 0.0f, 0.5f, 0.0, 0.5f,
+ 0.0f, 0.0f, 0.5, 0.5f,
+ 0.0f, 0.0f, 0.0, 1.0f,
+};
+
+static const gfloat to_ndc_matrix[] = {
+ 2.0f, 0.0f, 0.0, -1.0f,
+ 0.0f, 2.0f, 0.0, -1.0f,
+ 0.0f, 0.0f, 2.0, -1.0f,
+ 0.0f, 0.0f, 0.0, 1.0f,
+};
+
+static GstFlowReturn
+gst_gl_transformation_prepare_output_buffer (GstBaseTransform * trans,
+ GstBuffer * inbuf, GstBuffer ** outbuf)
+{
+ GstGLTransformation *transformation = GST_GL_TRANSFORMATION (trans);
+ GstGLFilter *filter = GST_GL_FILTER (trans);
+
+ if (transformation->downstream_supports_affine_meta &&
+ gst_video_info_is_equal (&filter->in_info, &filter->out_info)) {
+ GstVideoAffineTransformationMeta *af_meta;
+ graphene_matrix_t upstream_matrix, from_ndc, to_ndc, tmp, tmp2, inv_aspect;
+
+ *outbuf = gst_buffer_make_writable (inbuf);
+
+ af_meta = gst_buffer_get_video_affine_transformation_meta (inbuf);
+ if (!af_meta)
+ af_meta = gst_buffer_add_video_affine_transformation_meta (*outbuf);
+
+ GST_LOG_OBJECT (trans, "applying transformation to existing affine "
+ "transformation meta");
+
+ /* apply the transformation to the existing affine meta */
+ graphene_matrix_init_from_float (&from_ndc, from_ndc_matrix);
+ graphene_matrix_init_from_float (&to_ndc, to_ndc_matrix);
+ graphene_matrix_init_from_float (&upstream_matrix, af_meta->matrix);
+
+ graphene_matrix_init_scale (&inv_aspect, transformation->aspect, 1., 1.);
+
+ graphene_matrix_multiply (&from_ndc, &upstream_matrix, &tmp);
+ graphene_matrix_multiply (&tmp, &transformation->mvp_matrix, &tmp2);
+ graphene_matrix_multiply (&tmp2, &inv_aspect, &tmp);
+ graphene_matrix_multiply (&tmp, &to_ndc, &tmp2);
+
+ graphene_matrix_to_float (&tmp2, af_meta->matrix);
+ return GST_FLOW_OK;
+ }
+
+ return GST_BASE_TRANSFORM_CLASS (parent_class)->prepare_output_buffer (trans,
+ inbuf, outbuf);
+}
+
+static gboolean
+gst_gl_transformation_filter (GstGLFilter * filter,
+ GstBuffer * inbuf, GstBuffer * outbuf)
+{
+ GstGLTransformation *transformation = GST_GL_TRANSFORMATION (filter);
+
+ if (transformation->downstream_supports_affine_meta &&
+ gst_video_info_is_equal (&filter->in_info, &filter->out_info)) {
+ return TRUE;
+ } else {
+ return gst_gl_filter_filter_texture (filter, inbuf, outbuf);
+ }
+}
+
static gboolean
gst_gl_transformation_filter_texture (GstGLFilter * filter, guint in_tex,
guint out_tex)
@@ -784,16 +878,17 @@
gst_gl_shader_set_uniform_1i (transformation->shader, "texture", 0);
graphene_matrix_to_float (&transformation->mvp_matrix, temp_matrix);
- gst_gl_shader_set_uniform_matrix_4fv (transformation->shader, "mvp",
- 1, GL_FALSE, temp_matrix);
+ gst_gl_shader_set_uniform_matrix_4fv (transformation->shader,
+ "u_transformation", 1, GL_FALSE, temp_matrix);
if (!transformation->vertex_buffer) {
transformation->attr_position =
gst_gl_shader_get_attribute_location (transformation->shader,
- "position");
+ "a_position");
transformation->attr_texture =
- gst_gl_shader_get_attribute_location (transformation->shader, "uv");
+ gst_gl_shader_get_attribute_location (transformation->shader,
+ "a_texcoord");
if (gl->GenVertexArrays) {
gl->GenVertexArrays (1, &transformation->vao);
diff --git a/ext/gl/gstgltransformation.h b/ext/gl/gstgltransformation.h
index 7d41c61..ed75ff6 100644
--- a/ext/gl/gstgltransformation.h
+++ b/ext/gl/gstgltransformation.h
@@ -76,6 +76,7 @@
graphene_matrix_t projection_matrix;
graphene_matrix_t mvp_matrix;
+ gboolean downstream_supports_affine_meta;
gboolean caps_change;
};
diff --git a/ext/gl/gstgluploadelement.c b/ext/gl/gstgluploadelement.c
index 86e8b01..b65c0c4 100644
--- a/ext/gl/gstgluploadelement.c
+++ b/ext/gl/gstgluploadelement.c
@@ -80,8 +80,8 @@
bt_class->passthrough_on_same_caps = TRUE;
- gst_element_class_add_pad_template (element_class,
- gst_static_pad_template_get (&gst_gl_upload_element_src_pad_template));
+ gst_element_class_add_static_pad_template (element_class,
+ &gst_gl_upload_element_src_pad_template);
upload_caps = gst_gl_upload_get_input_template_caps ();
gst_element_class_add_pad_template (element_class,
diff --git a/ext/gl/gstglvideoflip.c b/ext/gl/gstglvideoflip.c
index caae79e..690396d 100644
--- a/ext/gl/gstglvideoflip.c
+++ b/ext/gl/gstglvideoflip.c
@@ -133,10 +133,8 @@
GST_PARAM_CONTROLLABLE | G_PARAM_READWRITE | G_PARAM_CONSTRUCT |
G_PARAM_STATIC_STRINGS));
- gst_element_class_add_pad_template (element_class,
- gst_static_pad_template_get (&_src_template));
- gst_element_class_add_pad_template (element_class,
- gst_static_pad_template_get (&_sink_template));
+ gst_element_class_add_static_pad_template (element_class, &_src_template);
+ gst_element_class_add_static_pad_template (element_class, &_sink_template);
gst_element_class_set_metadata (element_class, "OpenGL video flip filter",
"Filter/Effect/Video", "Flip video on the GPU",
diff --git a/ext/gl/gstglvideomixer.c b/ext/gl/gstglvideomixer.c
index e27ebc0..83905d0 100644
--- a/ext/gl/gstglvideomixer.c
+++ b/ext/gl/gstglvideomixer.c
@@ -43,6 +43,8 @@
#include "config.h"
#endif
+#include <gst/video/gstvideoaffinetransformationmeta.h>
+
#include "gstglvideomixer.h"
#include "gstglmixerbin.h"
@@ -452,6 +454,7 @@
#define DEBUG_INIT \
GST_DEBUG_CATEGORY_INIT (gst_gl_video_mixer_debug, "glvideomixer", 0, "glvideomixer element");
+#define gst_gl_video_mixer_parent_class parent_class
G_DEFINE_TYPE_WITH_CODE (GstGLVideoMixer, gst_gl_video_mixer, GST_TYPE_GL_MIXER,
DEBUG_INIT);
@@ -463,6 +466,9 @@
static GstCaps *_update_caps (GstVideoAggregator * vagg, GstCaps * caps,
GstCaps * filter);
static GstCaps *_fixate_caps (GstVideoAggregator * vagg, GstCaps * caps);
+static gboolean gst_gl_video_mixer_propose_allocation (GstGLBaseMixer *
+ base_mix, GstGLBaseMixerPad * base_pad, GstQuery * decide_query,
+ GstQuery * query);
static void gst_gl_video_mixer_reset (GstGLMixer * mixer);
static gboolean gst_gl_video_mixer_init_shader (GstGLMixer * mixer,
GstCaps * outcaps);
@@ -472,15 +478,6 @@
static void gst_gl_video_mixer_callback (gpointer stuff);
/* *INDENT-OFF* */
-/* vertex source */
-static const gchar *video_mixer_v_src =
- "attribute vec4 a_position; \n"
- "attribute vec2 a_texCoord; \n"
- "varying vec2 v_texCoord; \n"
- "void main() \n"
- "{ \n"
- " gl_Position = a_position; \n"
- " v_texCoord = a_texCoord; \n" "}";
/* fragment source */
static const gchar *video_mixer_f_src =
@@ -489,10 +486,10 @@
"#endif\n"
"uniform sampler2D texture; \n"
"uniform float alpha;\n"
- "varying vec2 v_texCoord; \n"
+ "varying vec2 v_texcoord; \n"
"void main() \n"
"{ \n"
- " vec4 rgba = texture2D( texture, v_texCoord );\n"
+ " vec4 rgba = texture2D(texture, v_texcoord);\n"
" gl_FragColor = vec4(rgba.rgb, rgba.a * alpha);\n"
"} \n";
@@ -863,6 +860,7 @@
GstElementClass *element_class;
GstAggregatorClass *agg_class = (GstAggregatorClass *) klass;
GstVideoAggregatorClass *vagg_class = (GstVideoAggregatorClass *) klass;
+ GstGLBaseMixerClass *mix_class = GST_GL_BASE_MIXER_CLASS (klass);
gobject_class = (GObjectClass *) klass;
element_class = GST_ELEMENT_CLASS (klass);
@@ -890,6 +888,8 @@
agg_class->sinkpads_type = GST_TYPE_GL_VIDEO_MIXER_PAD;
+ mix_class->propose_allocation = gst_gl_video_mixer_propose_allocation;
+
GST_GL_BASE_MIXER_CLASS (klass)->supported_gl_api =
GST_GL_API_OPENGL | GST_GL_API_OPENGL3 | GST_GL_API_GLES2;
}
@@ -933,6 +933,20 @@
}
}
+static gboolean
+gst_gl_video_mixer_propose_allocation (GstGLBaseMixer * base_mix,
+ GstGLBaseMixerPad * base_pad, GstQuery * decide_query, GstQuery * query)
+{
+ if (!GST_GL_BASE_MIXER_CLASS (parent_class)->propose_allocation (base_mix,
+ base_pad, decide_query, query))
+ return FALSE;
+
+ gst_query_add_allocation_meta (query,
+ GST_VIDEO_AFFINE_TRANSFORMATION_META_API_TYPE, 0);
+
+ return TRUE;
+}
+
static void
_mixer_pad_get_output_size (GstGLVideoMixer * mix,
GstGLVideoMixerPad * mix_pad, gint out_par_n, gint out_par_d, gint * width,
@@ -1137,7 +1151,8 @@
video_mixer->shader);
return gst_gl_context_gen_shader (GST_GL_BASE_MIXER (mixer)->context,
- video_mixer_v_src, video_mixer_f_src, &video_mixer->shader);
+ gst_gl_shader_string_vertex_mat4_vertex_transform,
+ video_mixer_f_src, &video_mixer->shader);
}
static gboolean
@@ -1403,7 +1418,7 @@
attr_position_loc =
gst_gl_shader_get_attribute_location (video_mixer->shader, "a_position");
attr_texture_loc =
- gst_gl_shader_get_attribute_location (video_mixer->shader, "a_texCoord");
+ gst_gl_shader_get_attribute_location (video_mixer->shader, "a_texcoord");
gl->Enable (GL_BLEND);
@@ -1412,6 +1427,7 @@
while (walk) {
GstGLMixerPad *mix_pad = walk->data;
GstGLVideoMixerPad *pad = walk->data;
+ GstVideoAggregatorPad *vagg_pad = walk->data;
GstVideoInfo *v_info;
guint in_tex;
guint in_width, in_height;
@@ -1491,6 +1507,17 @@
gst_gl_shader_set_uniform_1i (video_mixer->shader, "texture", 0);
gst_gl_shader_set_uniform_1f (video_mixer->shader, "alpha", pad->alpha);
+ {
+ GstVideoAffineTransformationMeta *af_meta;
+ gfloat matrix[16];
+
+ af_meta =
+ gst_buffer_get_video_affine_transformation_meta (vagg_pad->buffer);
+ gst_gl_get_affine_transformation_meta_as_ndc (af_meta, matrix);
+ gst_gl_shader_set_uniform_matrix_4fv (video_mixer->shader,
+ "u_transformation", 1, FALSE, matrix);
+ }
+
gl->EnableVertexAttribArray (attr_position_loc);
gl->EnableVertexAttribArray (attr_texture_loc);
diff --git a/ext/gl/gstopengl.c b/ext/gl/gstopengl.c
index 50676c4..9bd754d 100644
--- a/ext/gl/gstopengl.c
+++ b/ext/gl/gstopengl.c
@@ -62,6 +62,8 @@
#include "gstglstereosplit.h"
#include "gstglstereomix.h"
#include "gstglviewconvert.h"
+#include "gstgltestsrc.h"
+#include "gstgldeinterlace.h"
#if HAVE_GRAPHENE
#include "gstgltransformation.h"
@@ -74,10 +76,8 @@
#endif /* HAVE_JPEG */
#if GST_GL_HAVE_OPENGL
-#include "gstgltestsrc.h"
#include "gstglfilterglass.h"
/* #include "gstglfilterreflectedscreen.h" */
-#include "gstgldeinterlace.h"
#include "gstglmosaic.h"
#if HAVE_PNG
#include "gstgldifferencematte.h"
@@ -226,6 +226,17 @@
GST_RANK_NONE, GST_TYPE_GL_STEREO_MIX)) {
return FALSE;
}
+
+ if (!gst_element_register (plugin, "gltestsrc",
+ GST_RANK_NONE, GST_TYPE_GL_TEST_SRC)) {
+ return FALSE;
+ }
+
+ if (!gst_element_register (plugin, "gldeinterlace",
+ GST_RANK_NONE, GST_TYPE_GL_DEINTERLACE)) {
+ return FALSE;
+ }
+
#if HAVE_JPEG
#if HAVE_PNG
if (!gst_element_register (plugin, "gloverlay",
@@ -235,11 +246,6 @@
#endif /* HAVE_PNG */
#endif /* HAVE_JPEG */
#if GST_GL_HAVE_OPENGL
- if (!gst_element_register (plugin, "gltestsrc",
- GST_RANK_NONE, GST_TYPE_GL_TEST_SRC)) {
- return FALSE;
- }
-
if (!gst_element_register (plugin, "glfilterglass",
GST_RANK_NONE, GST_TYPE_GL_FILTER_GLASS)) {
return FALSE;
@@ -250,11 +256,6 @@
return FALSE;
}
#endif
- if (!gst_element_register (plugin, "gldeinterlace",
- GST_RANK_NONE, GST_TYPE_GL_DEINTERLACE)) {
- return FALSE;
- }
-
if (!gst_element_register (plugin, "glmosaic",
GST_RANK_NONE, GST_TYPE_GL_MOSAIC)) {
return FALSE;
diff --git a/ext/gme/Makefile.in b/ext/gme/Makefile.in
index 1f4bc08..969a974 100644
--- a/ext/gme/Makefile.in
+++ b/ext/gme/Makefile.in
@@ -302,6 +302,8 @@
DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
DSYMUTIL = @DSYMUTIL@
DTLS_CFLAGS = @DTLS_CFLAGS@
DTLS_LIBS = @DTLS_LIBS@
@@ -517,6 +519,8 @@
LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
LIPO = @LIPO@
LN_S = @LN_S@
LOCALEDIR = @LOCALEDIR@
@@ -643,8 +647,6 @@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
SNDIO_LIBS = @SNDIO_LIBS@
@@ -689,6 +691,8 @@
WAYLAND_LIBS = @WAYLAND_LIBS@
WEBP_CFLAGS = @WEBP_CFLAGS@
WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
WGET = @WGET@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
diff --git a/ext/gme/gstgme.c b/ext/gme/gstgme.c
index 1e149ac..1c5c83c 100644
--- a/ext/gme/gstgme.c
+++ b/ext/gme/gstgme.c
@@ -92,10 +92,8 @@
"Chris Lee <clee@kde.org>, Brian Koropoff <bkoropoff@gmail.com>, "
"Michael Pyne <mpyne@kde.org>, Sebastian Dröge <sebastian.droege@collabora.co.uk>");
- gst_element_class_add_pad_template (element_class,
- gst_static_pad_template_get (&sink_factory));
- gst_element_class_add_pad_template (element_class,
- gst_static_pad_template_get (&src_factory));
+ gst_element_class_add_static_pad_template (element_class, &sink_factory);
+ gst_element_class_add_static_pad_template (element_class, &src_factory);
element_class->change_state = GST_DEBUG_FUNCPTR (gst_gme_dec_change_state);
}
diff --git a/ext/gsm/Makefile.in b/ext/gsm/Makefile.in
index 1313c41..9f42e3e 100644
--- a/ext/gsm/Makefile.in
+++ b/ext/gsm/Makefile.in
@@ -303,6 +303,8 @@
DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
DSYMUTIL = @DSYMUTIL@
DTLS_CFLAGS = @DTLS_CFLAGS@
DTLS_LIBS = @DTLS_LIBS@
@@ -518,6 +520,8 @@
LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
LIPO = @LIPO@
LN_S = @LN_S@
LOCALEDIR = @LOCALEDIR@
@@ -644,8 +648,6 @@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
SNDIO_LIBS = @SNDIO_LIBS@
@@ -690,6 +692,8 @@
WAYLAND_LIBS = @WAYLAND_LIBS@
WEBP_CFLAGS = @WEBP_CFLAGS@
WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
WGET = @WGET@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
diff --git a/ext/gsm/gstgsmdec.c b/ext/gsm/gstgsmdec.c
index e02631f..0f3e49f 100644
--- a/ext/gsm/gstgsmdec.c
+++ b/ext/gsm/gstgsmdec.c
@@ -84,13 +84,13 @@
element_class = (GstElementClass *) klass;
base_class = (GstAudioDecoderClass *) klass;
- gst_element_class_add_pad_template (element_class,
- gst_static_pad_template_get (&gsmdec_sink_template));
- gst_element_class_add_pad_template (element_class,
- gst_static_pad_template_get (&gsmdec_src_template));
+ gst_element_class_add_static_pad_template (element_class,
+ &gsmdec_sink_template);
+ gst_element_class_add_static_pad_template (element_class,
+ &gsmdec_src_template);
gst_element_class_set_static_metadata (element_class, "GSM audio decoder",
- "Codec/Decoder/Audio",
- "Decodes GSM encoded audio", "Philippe Khalaf <burger@speedy.org>");
+ "Codec/Decoder/Audio", "Decodes GSM encoded audio",
+ "Philippe Khalaf <burger@speedy.org>");
base_class->start = GST_DEBUG_FUNCPTR (gst_gsmdec_start);
base_class->stop = GST_DEBUG_FUNCPTR (gst_gsmdec_stop);
diff --git a/ext/gsm/gstgsmenc.c b/ext/gsm/gstgsmenc.c
index 54ede2e..11c3d74 100644
--- a/ext/gsm/gstgsmenc.c
+++ b/ext/gsm/gstgsmenc.c
@@ -78,13 +78,13 @@
element_class = (GstElementClass *) klass;
base_class = (GstAudioEncoderClass *) klass;
- gst_element_class_add_pad_template (element_class,
- gst_static_pad_template_get (&gsmenc_sink_template));
- gst_element_class_add_pad_template (element_class,
- gst_static_pad_template_get (&gsmenc_src_template));
+ gst_element_class_add_static_pad_template (element_class,
+ &gsmenc_sink_template);
+ gst_element_class_add_static_pad_template (element_class,
+ &gsmenc_src_template);
gst_element_class_set_static_metadata (element_class, "GSM audio encoder",
- "Codec/Encoder/Audio",
- "Encodes GSM audio", "Philippe Khalaf <burger@speedy.org>");
+ "Codec/Encoder/Audio", "Encodes GSM audio",
+ "Philippe Khalaf <burger@speedy.org>");
base_class->start = GST_DEBUG_FUNCPTR (gst_gsmenc_start);
base_class->stop = GST_DEBUG_FUNCPTR (gst_gsmenc_stop);
diff --git a/ext/gtk/Makefile.in b/ext/gtk/Makefile.in
index 2e93d6c..5bc0735 100644
--- a/ext/gtk/Makefile.in
+++ b/ext/gtk/Makefile.in
@@ -316,6 +316,8 @@
DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
DSYMUTIL = @DSYMUTIL@
DTLS_CFLAGS = @DTLS_CFLAGS@
DTLS_LIBS = @DTLS_LIBS@
@@ -531,6 +533,8 @@
LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
LIPO = @LIPO@
LN_S = @LN_S@
LOCALEDIR = @LOCALEDIR@
@@ -657,8 +661,6 @@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
SNDIO_LIBS = @SNDIO_LIBS@
@@ -703,6 +705,8 @@
WAYLAND_LIBS = @WAYLAND_LIBS@
WEBP_CFLAGS = @WEBP_CFLAGS@
WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
WGET = @WGET@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
diff --git a/ext/gtk/gstgtkglsink.c b/ext/gtk/gstgtkglsink.c
index 5f36fa2..4081754 100644
--- a/ext/gtk/gstgtkglsink.c
+++ b/ext/gtk/gstgtkglsink.c
@@ -80,8 +80,8 @@
"Sink/Video", "A video sink that renders to a GtkWidget using OpenGL",
"Matthew Waters <matthew@centricular.com>");
- gst_element_class_add_pad_template (gstelement_class,
- gst_static_pad_template_get (&gst_gtk_gl_sink_template));
+ gst_element_class_add_static_pad_template (gstelement_class,
+ &gst_gtk_gl_sink_template);
}
static void
diff --git a/ext/gtk/gstgtksink.c b/ext/gtk/gstgtksink.c
index 950beab..e9f9d0c 100644
--- a/ext/gtk/gstgtksink.c
+++ b/ext/gtk/gstgtksink.c
@@ -67,8 +67,8 @@
"Sink/Video", "A video sink that renders to a GtkWidget",
"Matthew Waters <matthew@centricular.com>");
- gst_element_class_add_pad_template (gstelement_class,
- gst_static_pad_template_get (&gst_gtk_sink_template));
+ gst_element_class_add_static_pad_template (gstelement_class,
+ &gst_gtk_sink_template);
}
static void
diff --git a/ext/hls/Makefile.in b/ext/hls/Makefile.in
index dded051..d6d3533 100644
--- a/ext/hls/Makefile.in
+++ b/ext/hls/Makefile.in
@@ -308,6 +308,8 @@
DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
DSYMUTIL = @DSYMUTIL@
DTLS_CFLAGS = @DTLS_CFLAGS@
DTLS_LIBS = @DTLS_LIBS@
@@ -523,6 +525,8 @@
LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
LIPO = @LIPO@
LN_S = @LN_S@
LOCALEDIR = @LOCALEDIR@
@@ -649,8 +653,6 @@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
SNDIO_LIBS = @SNDIO_LIBS@
@@ -695,6 +697,8 @@
WAYLAND_LIBS = @WAYLAND_LIBS@
WEBP_CFLAGS = @WEBP_CFLAGS@
WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
WGET = @WGET@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
diff --git a/ext/hls/gsthlsdemux.c b/ext/hls/gsthlsdemux.c
index cf51d99..14e8819 100644
--- a/ext/hls/gsthlsdemux.c
+++ b/ext/hls/gsthlsdemux.c
@@ -92,7 +92,7 @@
static GstFlowReturn gst_hls_demux_finish_fragment (GstAdaptiveDemux * demux,
GstAdaptiveDemuxStream * stream);
static GstFlowReturn gst_hls_demux_data_received (GstAdaptiveDemux * demux,
- GstAdaptiveDemuxStream * stream);
+ GstAdaptiveDemuxStream * stream, GstBuffer * buffer);
static gboolean gst_hls_demux_stream_has_next_fragment (GstAdaptiveDemuxStream *
stream);
static GstFlowReturn gst_hls_demux_advance_fragment (GstAdaptiveDemuxStream *
@@ -114,6 +114,7 @@
GstHLSDemux *demux = GST_HLS_DEMUX (obj);
gst_hls_demux_reset (GST_ADAPTIVE_DEMUX_CAST (demux));
+ g_object_unref (demux->pending_encrypted_data);
gst_m3u8_client_free (demux->client);
G_OBJECT_CLASS (parent_class)->finalize (obj);
@@ -134,11 +135,8 @@
element_class->change_state = GST_DEBUG_FUNCPTR (gst_hls_demux_change_state);
- gst_element_class_add_pad_template (element_class,
- gst_static_pad_template_get (&srctemplate));
-
- gst_element_class_add_pad_template (element_class,
- gst_static_pad_template_get (&sinktemplate));
+ gst_element_class_add_static_pad_template (element_class, &srctemplate);
+ gst_element_class_add_static_pad_template (element_class, &sinktemplate);
gst_element_class_set_static_metadata (element_class,
"HLS Demuxer",
@@ -175,6 +173,7 @@
gst_hls_demux_init (GstHLSDemux * demux)
{
demux->do_typefind = TRUE;
+ demux->pending_encrypted_data = gst_adapter_new ();
}
static GstStateChangeReturn
@@ -230,6 +229,16 @@
return 0;
}
+static void
+gst_hls_demux_clear_pending_data (GstHLSDemux * hlsdemux)
+{
+ gst_hls_demux_decrypt_end (hlsdemux);
+ gst_adapter_clear (hlsdemux->pending_encrypted_data);
+ gst_buffer_replace (&hlsdemux->pending_decrypted_buffer, NULL);
+ gst_buffer_replace (&hlsdemux->pending_typefind_buffer, NULL);
+ hlsdemux->current_offset = -1;
+}
+
static gboolean
gst_hls_demux_seek (GstAdaptiveDemux * demux, GstEvent * seek)
{
@@ -254,7 +263,7 @@
/* properly cleanup pending decryption status */
if (flags & GST_SEEK_FLAG_FLUSH) {
- gst_hls_demux_decrypt_end (hlsdemux);
+ gst_hls_demux_clear_pending_data (hlsdemux);
}
/* Use I-frame variants for trick modes */
@@ -383,6 +392,7 @@
GstHLSDemux *hlsdemux = GST_HLS_DEMUX_CAST (demux);
/* only 1 output supported */
+ gst_hls_demux_clear_pending_data (hlsdemux);
gst_adaptive_demux_stream_new (demux, gst_hls_demux_create_pad (hlsdemux));
hlsdemux->reset_pts = TRUE;
@@ -512,6 +522,8 @@
g_object_unref (key_fragment);
}
+ gst_hls_demux_clear_pending_data (hlsdemux);
+
return TRUE;
key_failed:
@@ -523,6 +535,7 @@
}
}
+/* Handles decrypted buffers only */
static GstFlowReturn
gst_hls_demux_handle_buffer (GstAdaptiveDemux * demux,
GstAdaptiveDemuxStream * stream, GstBuffer * buffer, gboolean force)
@@ -535,6 +548,10 @@
guint buffer_size;
GstTypeFindProbability prob = GST_TYPE_FIND_NONE;
+ if (hlsdemux->pending_typefind_buffer)
+ buffer = gst_buffer_append (hlsdemux->pending_typefind_buffer, buffer);
+ hlsdemux->pending_typefind_buffer = NULL;
+
gst_buffer_map (buffer, &info, GST_MAP_READ);
buffer_size = info.size;
@@ -556,11 +573,7 @@
gst_buffer_unref (buffer);
return GST_FLOW_NOT_NEGOTIATED;
} else {
- if (hlsdemux->pending_buffer)
- hlsdemux->pending_buffer =
- gst_buffer_append (buffer, hlsdemux->pending_buffer);
- else
- hlsdemux->pending_buffer = buffer;
+ hlsdemux->pending_typefind_buffer = buffer;
return GST_FLOW_OK;
}
}
@@ -572,8 +585,15 @@
hlsdemux->do_typefind = FALSE;
}
- if (buffer)
+ g_assert (hlsdemux->pending_typefind_buffer == NULL);
+
+ if (buffer) {
+ buffer = gst_buffer_make_writable (buffer);
+ GST_BUFFER_OFFSET (buffer) = hlsdemux->current_offset;
+ hlsdemux->current_offset += gst_buffer_get_size (buffer);
+ GST_BUFFER_OFFSET_END (buffer) = hlsdemux->current_offset;
return gst_adaptive_demux_stream_push_buffer (stream, buffer);
+ }
return GST_FLOW_OK;
}
@@ -587,36 +607,29 @@
if (hlsdemux->current_key)
gst_hls_demux_decrypt_end (hlsdemux);
- /* ideally this should be empty, but this eos might have been
- * caused by an error on the source element */
- GST_DEBUG_OBJECT (demux, "Data still on the adapter when EOS was received"
- ": %" G_GSIZE_FORMAT, gst_adapter_available (stream->adapter));
- gst_adapter_clear (stream->adapter);
-
if (stream->last_ret == GST_FLOW_OK) {
- if (hlsdemux->pending_buffer) {
+ if (hlsdemux->pending_decrypted_buffer) {
if (hlsdemux->current_key) {
GstMapInfo info;
gssize unpadded_size;
/* Handle pkcs7 unpadding here */
- gst_buffer_map (hlsdemux->pending_buffer, &info, GST_MAP_READ);
+ gst_buffer_map (hlsdemux->pending_decrypted_buffer, &info,
+ GST_MAP_READ);
unpadded_size = info.size - info.data[info.size - 1];
- gst_buffer_unmap (hlsdemux->pending_buffer, &info);
+ gst_buffer_unmap (hlsdemux->pending_decrypted_buffer, &info);
- gst_buffer_resize (hlsdemux->pending_buffer, 0, unpadded_size);
+ gst_buffer_resize (hlsdemux->pending_decrypted_buffer, 0,
+ unpadded_size);
}
ret =
- gst_hls_demux_handle_buffer (demux, stream, hlsdemux->pending_buffer,
- TRUE);
- hlsdemux->pending_buffer = NULL;
+ gst_hls_demux_handle_buffer (demux, stream,
+ hlsdemux->pending_decrypted_buffer, TRUE);
+ hlsdemux->pending_decrypted_buffer = NULL;
}
- } else {
- if (hlsdemux->pending_buffer)
- gst_buffer_unref (hlsdemux->pending_buffer);
- hlsdemux->pending_buffer = NULL;
}
+ gst_hls_demux_clear_pending_data (hlsdemux);
if (ret == GST_FLOW_OK || ret == GST_FLOW_NOT_LINKED)
return gst_adaptive_demux_stream_advance_fragment (demux, stream,
@@ -626,27 +639,31 @@
static GstFlowReturn
gst_hls_demux_data_received (GstAdaptiveDemux * demux,
- GstAdaptiveDemuxStream * stream)
+ GstAdaptiveDemuxStream * stream, GstBuffer * buffer)
{
GstHLSDemux *hlsdemux = GST_HLS_DEMUX_CAST (demux);
- gsize available;
- GstBuffer *buffer = NULL;
- available = gst_adapter_available (stream->adapter);
+ if (hlsdemux->current_offset == -1)
+ hlsdemux->current_offset =
+ GST_BUFFER_OFFSET_IS_VALID (buffer) ? GST_BUFFER_OFFSET (buffer) : 0;
/* Is it encrypted? */
if (hlsdemux->current_key) {
GError *err = NULL;
+ gsize size;
GstBuffer *tmp_buffer;
- /* must be a multiple of 16 */
- available = available & (~0xF);
+ gst_adapter_push (hlsdemux->pending_encrypted_data, buffer);
+ size = gst_adapter_available (hlsdemux->pending_encrypted_data);
- if (available == 0) {
+ /* must be a multiple of 16 */
+ size = size & (~0xF);
+
+ if (size == 0) {
return GST_FLOW_OK;
}
- buffer = gst_adapter_take_buffer (stream->adapter, available);
+ buffer = gst_adapter_take_buffer (hlsdemux->pending_encrypted_data, size);
buffer = gst_hls_demux_decrypt_fragment (hlsdemux, buffer, &err);
if (buffer == NULL) {
GST_ELEMENT_ERROR (demux, STREAM, DECODE, ("Failed to decrypt buffer"),
@@ -655,15 +672,9 @@
return GST_FLOW_ERROR;
}
- tmp_buffer = hlsdemux->pending_buffer;
- hlsdemux->pending_buffer = buffer;
+ tmp_buffer = hlsdemux->pending_decrypted_buffer;
+ hlsdemux->pending_decrypted_buffer = buffer;
buffer = tmp_buffer;
- } else {
- buffer = gst_adapter_take_buffer (stream->adapter, available);
- if (hlsdemux->pending_buffer) {
- buffer = gst_buffer_append (hlsdemux->pending_buffer, buffer);
- hlsdemux->pending_buffer = NULL;
- }
}
return gst_hls_demux_handle_buffer (demux, stream, buffer, FALSE);
@@ -782,9 +793,8 @@
demux->client = gst_m3u8_client_new ("", NULL);
demux->srcpad_counter = 0;
- if (demux->pending_buffer)
- gst_buffer_unref (demux->pending_buffer);
- demux->pending_buffer = NULL;
+ gst_hls_demux_clear_pending_data (demux);
+ gst_buffer_replace (&demux->pending_typefind_buffer, NULL);
if (demux->current_key) {
g_free (demux->current_key);
demux->current_key = NULL;
diff --git a/ext/hls/gsthlsdemux.h b/ext/hls/gsthlsdemux.h
index 1154236..f0c530e 100644
--- a/ext/hls/gsthlsdemux.h
+++ b/ext/hls/gsthlsdemux.h
@@ -84,11 +84,11 @@
#endif
gchar *current_key;
guint8 *current_iv;
- GstBuffer *pending_buffer; /* decryption scenario:
- * the last buffer can only be pushed when
- * resized, so need to store and wait for
- * EOS to know it is the last */
-
+ GstAdapter *pending_encrypted_data; /* for chunking data into 16 byte multiples for decryption */
+ GstBuffer *pending_decrypted_buffer; /* last decrypted buffer for pkcs7 unpadding.
+ We only know that it is the last at EOS */
+ GstBuffer *pending_typefind_buffer; /* for collecting data until typefind succeeds */
+ guint64 current_offset; /* offset we're currently at */
gboolean reset_pts;
};
diff --git a/ext/hls/gsthlssink.c b/ext/hls/gsthlssink.c
index 03671d0..b56ef6c 100644
--- a/ext/hls/gsthlssink.c
+++ b/ext/hls/gsthlssink.c
@@ -120,8 +120,7 @@
element_class = GST_ELEMENT_CLASS (klass);
bin_class = GST_BIN_CLASS (klass);
- gst_element_class_add_pad_template (element_class,
- gst_static_pad_template_get (&sink_template));
+ gst_element_class_add_static_pad_template (element_class, &sink_template);
gst_element_class_set_static_metadata (element_class,
"HTTP Live Streaming sink", "Sink", "HTTP Live Streaming sink",
diff --git a/ext/kate/Makefile.in b/ext/kate/Makefile.in
index 9cc80ac..e4350bd 100644
--- a/ext/kate/Makefile.in
+++ b/ext/kate/Makefile.in
@@ -308,6 +308,8 @@
DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
DSYMUTIL = @DSYMUTIL@
DTLS_CFLAGS = @DTLS_CFLAGS@
DTLS_LIBS = @DTLS_LIBS@
@@ -523,6 +525,8 @@
LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
LIPO = @LIPO@
LN_S = @LN_S@
LOCALEDIR = @LOCALEDIR@
@@ -649,8 +653,6 @@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
SNDIO_LIBS = @SNDIO_LIBS@
@@ -695,6 +697,8 @@
WAYLAND_LIBS = @WAYLAND_LIBS@
WEBP_CFLAGS = @WEBP_CFLAGS@
WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
WGET = @WGET@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
diff --git a/ext/kate/gstkatedec.c b/ext/kate/gstkatedec.c
index c61d514..88a5666 100644
--- a/ext/kate/gstkatedec.c
+++ b/ext/kate/gstkatedec.c
@@ -162,10 +162,8 @@
gstelement_class->change_state =
GST_DEBUG_FUNCPTR (gst_kate_dec_change_state);
- gst_element_class_add_pad_template (gstelement_class,
- gst_static_pad_template_get (&src_factory));
- gst_element_class_add_pad_template (gstelement_class,
- gst_static_pad_template_get (&sink_factory));
+ gst_element_class_add_static_pad_template (gstelement_class, &src_factory);
+ gst_element_class_add_static_pad_template (gstelement_class, &sink_factory);
gst_element_class_set_static_metadata (gstelement_class,
"Kate stream text decoder", "Codec/Decoder/Subtitle",
diff --git a/ext/kate/gstkateenc.c b/ext/kate/gstkateenc.c
index d88914a..12bd1c8 100644
--- a/ext/kate/gstkateenc.c
+++ b/ext/kate/gstkateenc.c
@@ -214,10 +214,8 @@
gstelement_class->change_state =
GST_DEBUG_FUNCPTR (gst_kate_enc_change_state);
- gst_element_class_add_pad_template (gstelement_class,
- gst_static_pad_template_get (&src_factory));
- gst_element_class_add_pad_template (gstelement_class,
- gst_static_pad_template_get (&sink_factory));
+ gst_element_class_add_static_pad_template (gstelement_class, &src_factory);
+ gst_element_class_add_static_pad_template (gstelement_class, &sink_factory);
gst_element_class_set_static_metadata (gstelement_class,
"Kate stream encoder", "Codec/Encoder/Subtitle",
diff --git a/ext/kate/gstkateparse.c b/ext/kate/gstkateparse.c
index 99ea0c8..0cb9db0 100644
--- a/ext/kate/gstkateparse.c
+++ b/ext/kate/gstkateparse.c
@@ -109,10 +109,10 @@
gstelement_class->change_state = gst_kate_parse_change_state;
- gst_element_class_add_pad_template (gstelement_class,
- gst_static_pad_template_get (&gst_kate_parse_src_factory));
- gst_element_class_add_pad_template (gstelement_class,
- gst_static_pad_template_get (&gst_kate_parse_sink_factory));
+ gst_element_class_add_static_pad_template (gstelement_class,
+ &gst_kate_parse_src_factory);
+ gst_element_class_add_static_pad_template (gstelement_class,
+ &gst_kate_parse_sink_factory);
gst_element_class_set_static_metadata (gstelement_class, "Kate stream parser",
"Codec/Parser/Subtitle",
diff --git a/ext/ladspa/Makefile.in b/ext/ladspa/Makefile.in
index 27d850a..9c53aae 100644
--- a/ext/ladspa/Makefile.in
+++ b/ext/ladspa/Makefile.in
@@ -307,6 +307,8 @@
DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
DSYMUTIL = @DSYMUTIL@
DTLS_CFLAGS = @DTLS_CFLAGS@
DTLS_LIBS = @DTLS_LIBS@
@@ -522,6 +524,8 @@
LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
LIPO = @LIPO@
LN_S = @LN_S@
LOCALEDIR = @LOCALEDIR@
@@ -648,8 +652,6 @@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
SNDIO_LIBS = @SNDIO_LIBS@
@@ -694,6 +696,8 @@
WAYLAND_LIBS = @WAYLAND_LIBS@
WEBP_CFLAGS = @WEBP_CFLAGS@
WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
WGET = @WGET@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
diff --git a/ext/ladspa/gstladspa.c b/ext/ladspa/gstladspa.c
index df06693..624cbd8 100644
--- a/ext/ladspa/gstladspa.c
+++ b/ext/ladspa/gstladspa.c
@@ -24,21 +24,21 @@
* SECTION:element-ladspa
* @short_description: bridge for LADSPA (Linux Audio Developer's Simple Plugin API)
* @see_also: #GstAudioConvert #GstAudioResample, #GstAudioTestSrc, #GstAutoAudioSink
- *
+ *
* The LADSPA (Linux Audio Developer's Simple Plugin API) element is a bridge
* for plugins using the <ulink url="http://www.ladspa.org/">LADSPA</ulink> API.
* It scans all installed LADSPA plugins and registers them as gstreamer
* elements. If available it can also parse LRDF files and use the metadata for
* element classification. The functionality you get depends on the LADSPA plugins
* you have installed.
- *
+ *
* <refsect2>
* <title>Example LADSPA line without this plugins</title>
* |[
* (padsp) listplugins
* (padsp) analyseplugin cmt.so amp_mono
* gst-launch-1.0 -e filesrc location="$myfile" ! decodebin ! audioconvert ! audioresample ! "audio/x-raw,format=S16LE,rate=48000,channels=1" ! wavenc ! filesink location="testin.wav"
- * (padsp) applyplugin testin.wav testout.wav cmt.so amp_mono 2
+ * (padsp) applyplugin testin.wav testout.wav cmt.so amp_mono 2
* gst-launch-1.0 playbin uri=file://"$PWD"/testout.wav
* ]| Decode any audio file into wav with the format expected for the specific ladspa plugin to be applied, apply the ladspa filter and play it.
* </refsect2>
@@ -76,7 +76,7 @@
* ]| List details of the plugin, parameters, range and defaults included.
* </refsect2>
*
- * The elements categorize in:
+ * The elements categorize in:
* <itemizedlist>
* <listitem><para>Filter/Effect/Audio/LADSPA:</para>
* <refsect2>
@@ -86,7 +86,7 @@
* ]| Decode any audio file, filter it through Calf Reverb LADSPA then TAP Stereo Echo, and play it.
* </refsect2>
* </listitem>
- * <listitem><para>Source/Audio/LADSPA:</para>
+ * <listitem><para>Source/Audio/LADSPA:</para>
* <refsect2>
* <title>Example Source/Audio/LADSPA line with this plugins</title>
* |[
@@ -236,8 +236,7 @@
continue;
}
- ladspa_meta = gst_structure_new_empty ("ladspa");
- gst_structure_set (ladspa_meta,
+ ladspa_meta = gst_structure_new ("ladspa",
"plugin-filename", G_TYPE_STRING, file_name,
"element-ix", G_TYPE_UINT, i,
"element-type-name", G_TYPE_STRING, type_name,
@@ -360,7 +359,7 @@
}
if (skip)
break;
- /*
+ /*
* transform path: /usr/lib/ladspa -> /usr/share/ladspa/rdf/
* yes, this is ugly, but lrdf has not searchpath
*/
@@ -402,8 +401,8 @@
GST_DEBUG_CATEGORY_INIT (ladspa_debug, "ladspa", 0, "LADSPA plugins");
#ifdef ENABLE_NLS
- GST_DEBUG ("binding text domain %s to locale dir %s", GETTEXT_PACKAGE,
- LOCALEDIR);
+ GST_DEBUG_OBJECT (plugin, "binding text domain %s to locale dir %s",
+ GETTEXT_PACKAGE, LOCALEDIR);
bindtextdomain (GETTEXT_PACKAGE, LOCALEDIR);
bind_textdomain_codeset (GETTEXT_PACKAGE, "UTF-8");
#endif
@@ -420,13 +419,12 @@
if (ladspa_meta_all) {
n = gst_structure_n_fields (ladspa_meta_all);
}
- GST_INFO ("%d entries in cache", n);
+ GST_INFO_OBJECT (plugin, "%d entries in cache", n);
if (!n) {
ladspa_meta_all = gst_structure_new_empty ("ladspa");
- res = ladspa_plugin_path_search (plugin);
- if (res) {
+ if ((res = ladspa_plugin_path_search (plugin))) {
n = gst_structure_n_fields (ladspa_meta_all);
- GST_INFO ("%d entries after scanning", n);
+ GST_INFO_OBJECT (plugin, "%d entries after scanning", n);
gst_plugin_set_cache_data (plugin, ladspa_meta_all);
}
} else {
@@ -438,7 +436,7 @@
const gchar *name;
const GValue *value;
- GST_INFO ("register types");
+ GST_INFO_OBJECT (plugin, "register types");
for (i = 0; i < n; i++) {
name = gst_structure_nth_field_name (ladspa_meta_all, i);
@@ -452,7 +450,7 @@
}
if (!res) {
- GST_WARNING ("no LADSPA plugins found, check LADSPA_PATH");
+ GST_WARNING_OBJECT (plugin, "no LADSPA plugins found, check LADSPA_PATH");
}
/* we don't want to fail, even if there are no elements registered */
diff --git a/ext/ladspa/gstladspasource.c b/ext/ladspa/gstladspasource.c
index 943da62..c078664 100644
--- a/ext/ladspa/gstladspasource.c
+++ b/ext/ladspa/gstladspasource.c
@@ -256,7 +256,7 @@
gst_ladspa_source_type_fill (GstBaseSrc * base, guint64 offset,
guint length, GstBuffer * buffer)
{
- GstLADSPASource *ladspa;
+ GstLADSPASource *ladspa = GST_LADSPA_SOURCE (base);
GstClockTime next_time;
gint64 next_sample, next_byte;
gint bytes, samples;
@@ -264,8 +264,6 @@
GstMapInfo map;
gint samplerate, bpf;
- ladspa = GST_LADSPA_SOURCE (base);
-
/* example for tagging generated data */
if (!ladspa->tags_pushed) {
GstTagList *taglist;
diff --git a/ext/ladspa/gstladspautils.c b/ext/ladspa/gstladspautils.c
index c358b5e..d55db6f 100644
--- a/ext/ladspa/gstladspautils.c
+++ b/ext/ladspa/gstladspautils.c
@@ -1,4 +1,4 @@
-/* GStreamer LADSPA utils
+/* GStreamer LADSPA utils
* Copyright (C) 1999 Erik Walthinsen <omega@cse.ogi.edu>
* 2001 Steve Baker <stevebaker_org@yahoo.co.uk>
* 2003 Andy Wingo <wingo at pobox.com>
@@ -21,7 +21,7 @@
* Boston, MA 02110-1301, USA.
*/
-/*
+/*
* This module is smartly shared between the source, transform and
* sink elements. Handling any specific LADSPA <-> gstreamer interaction.
*
@@ -65,7 +65,7 @@
GST_DEBUG_CATEGORY_EXTERN (ladspa_debug);
#define GST_CAT_DEFAULT ladspa_debug
-/*
+/*
* Interleaved buffer: (c1c2c1c2...)
* De-interleaved buffer: (c1c1...c2c2...)
*/
@@ -81,7 +81,7 @@
outdata[i * samples + j] = ((LADSPA_Data *) indata)[j * audio_in + i];
}
-/*
+/*
* Interleaved buffer: (c1c2c1c2...)
* De-interleaved buffer: (c1c1...c2c2...)
*/
@@ -517,24 +517,20 @@
GObjectClass * object_class, guint offset)
{
GParamSpec *p;
- gint i, ix;
+ gint i;
ladspa_class->properties = offset;
- /* properties have an offset */
- ix = ladspa_class->properties;
-
/* register properties */
-
- for (i = 0; i < ladspa_class->count.control.in; i++, ix++) {
+ for (i = 0; i < ladspa_class->count.control.in; i++, offset++) {
p = gst_ladspa_object_class_get_param_spec (ladspa_class, object_class,
ladspa_class->map.control.in[i]);
- g_object_class_install_property (object_class, ix, p);
+ g_object_class_install_property (object_class, offset, p);
}
- for (i = 0; i < ladspa_class->count.control.out; i++, ix++) {
+ for (i = 0; i < ladspa_class->count.control.out; i++, offset++) {
p = gst_ladspa_object_class_get_param_spec (ladspa_class, object_class,
ladspa_class->map.control.out[i]);
- g_object_class_install_property (object_class, ix, p);
+ g_object_class_install_property (object_class, offset, p);
}
}
@@ -577,7 +573,7 @@
GST_DEBUG ("LADSPA uri (id=%lu) : %s", desc->UniqueID, uri);
/* we can take this directly from 'desc', keep this example for future
- attributes.
+ attributes.
if ((str = lrdf_get_setting_metadata (uri, "title"))) {
GST_DEBUG ("LADSPA title : %s", str);
@@ -730,15 +726,14 @@
ladspa->activated = FALSE;
ladspa->rate = 0;
- ladspa->ports.audio.in =
- g_new0 (LADSPA_Data *, ladspa->klass->count.audio.in);
+ ladspa->ports.audio.in = g_new0 (LADSPA_Data *, ladspa_class->count.audio.in);
ladspa->ports.audio.out =
- g_new0 (LADSPA_Data *, ladspa->klass->count.audio.out);
+ g_new0 (LADSPA_Data *, ladspa_class->count.audio.out);
ladspa->ports.control.in =
- g_new0 (LADSPA_Data, ladspa->klass->count.control.in);
+ g_new0 (LADSPA_Data, ladspa_class->count.control.in);
ladspa->ports.control.out =
- g_new0 (LADSPA_Data, ladspa->klass->count.control.out);
+ g_new0 (LADSPA_Data, ladspa_class->count.control.out);
}
void
@@ -840,7 +835,7 @@
ladspa_class->plugin = NULL;
}
-/*
+/*
* Create the type & register the element.
*/
void
diff --git a/ext/libde265/Makefile.in b/ext/libde265/Makefile.in
index c6c4676..0b6f596 100644
--- a/ext/libde265/Makefile.in
+++ b/ext/libde265/Makefile.in
@@ -304,6 +304,8 @@
DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
DSYMUTIL = @DSYMUTIL@
DTLS_CFLAGS = @DTLS_CFLAGS@
DTLS_LIBS = @DTLS_LIBS@
@@ -519,6 +521,8 @@
LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
LIPO = @LIPO@
LN_S = @LN_S@
LOCALEDIR = @LOCALEDIR@
@@ -645,8 +649,6 @@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
SNDIO_LIBS = @SNDIO_LIBS@
@@ -691,6 +693,8 @@
WAYLAND_LIBS = @WAYLAND_LIBS@
WEBP_CFLAGS = @WEBP_CFLAGS@
WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
WGET = @WGET@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
diff --git a/ext/libde265/libde265-dec.c b/ext/libde265/libde265-dec.c
index e11f12c..8053168 100644
--- a/ext/libde265/libde265-dec.c
+++ b/ext/libde265/libde265-dec.c
@@ -117,10 +117,8 @@
decoder_class->handle_frame =
GST_DEBUG_FUNCPTR (gst_libde265_dec_handle_frame);
- gst_element_class_add_pad_template (gstelement_class,
- gst_static_pad_template_get (&sink_template));
- gst_element_class_add_pad_template (gstelement_class,
- gst_static_pad_template_get (&src_template));
+ gst_element_class_add_static_pad_template (gstelement_class, &sink_template);
+ gst_element_class_add_static_pad_template (gstelement_class, &src_template);
gst_element_class_set_static_metadata (gstelement_class,
"HEVC/H.265 decoder",
diff --git a/ext/libmms/Makefile.in b/ext/libmms/Makefile.in
index 80f2ed8..5b0fa4c 100644
--- a/ext/libmms/Makefile.in
+++ b/ext/libmms/Makefile.in
@@ -303,6 +303,8 @@
DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
DSYMUTIL = @DSYMUTIL@
DTLS_CFLAGS = @DTLS_CFLAGS@
DTLS_LIBS = @DTLS_LIBS@
@@ -518,6 +520,8 @@
LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
LIPO = @LIPO@
LN_S = @LN_S@
LOCALEDIR = @LOCALEDIR@
@@ -644,8 +648,6 @@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
SNDIO_LIBS = @SNDIO_LIBS@
@@ -690,6 +692,8 @@
WAYLAND_LIBS = @WAYLAND_LIBS@
WEBP_CFLAGS = @WEBP_CFLAGS@
WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
WGET = @WGET@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
diff --git a/ext/libmms/gstmms.c b/ext/libmms/gstmms.c
index 5e3ff38..56243a2 100644
--- a/ext/libmms/gstmms.c
+++ b/ext/libmms/gstmms.c
@@ -100,8 +100,7 @@
0, G_MAXINT / 1000, DEFAULT_CONNECTION_SPEED,
G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
- gst_element_class_add_pad_template (gstelement_class,
- gst_static_pad_template_get (&src_factory));
+ gst_element_class_add_static_pad_template (gstelement_class, &src_factory);
gst_element_class_set_static_metadata (gstelement_class,
"MMS streaming source", "Source/Network",
diff --git a/ext/libvisual/Makefile.in b/ext/libvisual/Makefile.in
index e53a246..15e9ec3 100644
--- a/ext/libvisual/Makefile.in
+++ b/ext/libvisual/Makefile.in
@@ -300,6 +300,8 @@
DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
DSYMUTIL = @DSYMUTIL@
DTLS_CFLAGS = @DTLS_CFLAGS@
DTLS_LIBS = @DTLS_LIBS@
@@ -515,6 +517,8 @@
LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
LIPO = @LIPO@
LN_S = @LN_S@
LOCALEDIR = @LOCALEDIR@
@@ -641,8 +645,6 @@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
SNDIO_LIBS = @SNDIO_LIBS@
@@ -687,6 +689,8 @@
WAYLAND_LIBS = @WAYLAND_LIBS@
WEBP_CFLAGS = @WEBP_CFLAGS@
WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
WGET = @WGET@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
diff --git a/ext/libvisual/visual-gl.c b/ext/libvisual/visual-gl.c
index 85c91e0..c796d4b 100644
--- a/ext/libvisual/visual-gl.c
+++ b/ext/libvisual/visual-gl.c
@@ -216,10 +216,8 @@
klass->plugin->info->name, klass->plugin->info->version);
/* FIXME: improve to only register what plugin supports? */
- gst_element_class_add_pad_template (element_class,
- gst_static_pad_template_get (&src_template));
- gst_element_class_add_pad_template (element_class,
- gst_static_pad_template_get (&sink_template));
+ gst_element_class_add_static_pad_template (element_class, &src_template);
+ gst_element_class_add_static_pad_template (element_class, &sink_template);
gst_element_class_set_metadata (element_class,
longname, "Visualization", klass->plugin->info->about,
diff --git a/ext/lv2/Makefile.am b/ext/lv2/Makefile.am
index ea4517f..844823c 100644
--- a/ext/lv2/Makefile.am
+++ b/ext/lv2/Makefile.am
@@ -1,15 +1,18 @@
plugin_LTLIBRARIES = libgstlv2.la
-libgstlv2_la_SOURCES = gstlv2.c
+libgstlv2_la_SOURCES = gstlv2.c gstlv2utils.c gstlv2filter.c gstlv2source.c
libgstlv2_la_CFLAGS = \
-I$(top_srcdir)/gst-libs \
+ $(GST_AUDIO_CFLAGS) \
+ $(GST_BASE_CFLAGS) \
$(GST_PLUGINS_BASE_CFLAGS) \
- $(GST_CFLAGS) $(SLV2_CFLAGS)
+ $(GST_CFLAGS) $(LILV_CFLAGS)
libgstlv2_la_LIBADD = \
- $(top_builddir)/gst-libs/gst/signalprocessor/libgstsignalprocessor-@GST_API_VERSION@.la \
+ $(GST_AUDIO_LIBS) \
+ $(GST_BASE_LIBS) \
$(GST_PLUGINS_BASE_LIBS) -lgstaudio-$(GST_API_VERSION) \
- $(LIBM) $(SLV2_LIBS)
+ $(LIBM) $(LILV_LIBS)
libgstlv2_la_LDFLAGS = $(GST_PLUGIN_LDFLAGS)
libgstlv2_la_LIBTOOLFLAGS = $(GST_PLUGIN_LIBTOOLFLAGS)
-noinst_HEADERS = gstlv2.h
+noinst_HEADERS = gstlv2.h gstlv2utils.h
diff --git a/ext/lv2/Makefile.in b/ext/lv2/Makefile.in
index f8d6a08..644bc83 100644
--- a/ext/lv2/Makefile.in
+++ b/ext/lv2/Makefile.in
@@ -163,10 +163,12 @@
am__installdirs = "$(DESTDIR)$(plugindir)"
LTLIBRARIES = $(plugin_LTLIBRARIES)
am__DEPENDENCIES_1 =
-libgstlv2_la_DEPENDENCIES = $(top_builddir)/gst-libs/gst/signalprocessor/libgstsignalprocessor-@GST_API_VERSION@.la \
+libgstlv2_la_DEPENDENCIES = $(am__DEPENDENCIES_1) \
$(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \
$(am__DEPENDENCIES_1)
-am_libgstlv2_la_OBJECTS = libgstlv2_la-gstlv2.lo
+am_libgstlv2_la_OBJECTS = libgstlv2_la-gstlv2.lo \
+ libgstlv2_la-gstlv2utils.lo libgstlv2_la-gstlv2filter.lo \
+ libgstlv2_la-gstlv2source.lo
libgstlv2_la_OBJECTS = $(am_libgstlv2_la_OBJECTS)
AM_V_lt = $(am__v_lt_@AM_V@)
am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@)
@@ -303,6 +305,8 @@
DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
DSYMUTIL = @DSYMUTIL@
DTLS_CFLAGS = @DTLS_CFLAGS@
DTLS_LIBS = @DTLS_LIBS@
@@ -518,6 +522,8 @@
LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
LIPO = @LIPO@
LN_S = @LN_S@
LOCALEDIR = @LOCALEDIR@
@@ -644,8 +650,6 @@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
SNDIO_LIBS = @SNDIO_LIBS@
@@ -690,6 +694,8 @@
WAYLAND_LIBS = @WAYLAND_LIBS@
WEBP_CFLAGS = @WEBP_CFLAGS@
WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
WGET = @WGET@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
@@ -779,20 +785,23 @@
top_srcdir = @top_srcdir@
wayland_scanner = @wayland_scanner@
plugin_LTLIBRARIES = libgstlv2.la
-libgstlv2_la_SOURCES = gstlv2.c
+libgstlv2_la_SOURCES = gstlv2.c gstlv2utils.c gstlv2filter.c gstlv2source.c
libgstlv2_la_CFLAGS = \
-I$(top_srcdir)/gst-libs \
+ $(GST_AUDIO_CFLAGS) \
+ $(GST_BASE_CFLAGS) \
$(GST_PLUGINS_BASE_CFLAGS) \
- $(GST_CFLAGS) $(SLV2_CFLAGS)
+ $(GST_CFLAGS) $(LILV_CFLAGS)
libgstlv2_la_LIBADD = \
- $(top_builddir)/gst-libs/gst/signalprocessor/libgstsignalprocessor-@GST_API_VERSION@.la \
+ $(GST_AUDIO_LIBS) \
+ $(GST_BASE_LIBS) \
$(GST_PLUGINS_BASE_LIBS) -lgstaudio-$(GST_API_VERSION) \
- $(LIBM) $(SLV2_LIBS)
+ $(LIBM) $(LILV_LIBS)
libgstlv2_la_LDFLAGS = $(GST_PLUGIN_LDFLAGS)
libgstlv2_la_LIBTOOLFLAGS = $(GST_PLUGIN_LIBTOOLFLAGS)
-noinst_HEADERS = gstlv2.h
+noinst_HEADERS = gstlv2.h gstlv2utils.h
all: all-am
.SUFFIXES:
@@ -872,6 +881,9 @@
-rm -f *.tab.c
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstlv2_la-gstlv2.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstlv2_la-gstlv2filter.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstlv2_la-gstlv2source.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstlv2_la-gstlv2utils.Plo@am__quote@
.c.o:
@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\
@@ -904,6 +916,27 @@
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstlv2_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstlv2_la_CFLAGS) $(CFLAGS) -c -o libgstlv2_la-gstlv2.lo `test -f 'gstlv2.c' || echo '$(srcdir)/'`gstlv2.c
+libgstlv2_la-gstlv2utils.lo: gstlv2utils.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstlv2_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstlv2_la_CFLAGS) $(CFLAGS) -MT libgstlv2_la-gstlv2utils.lo -MD -MP -MF $(DEPDIR)/libgstlv2_la-gstlv2utils.Tpo -c -o libgstlv2_la-gstlv2utils.lo `test -f 'gstlv2utils.c' || echo '$(srcdir)/'`gstlv2utils.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgstlv2_la-gstlv2utils.Tpo $(DEPDIR)/libgstlv2_la-gstlv2utils.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gstlv2utils.c' object='libgstlv2_la-gstlv2utils.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 $(libgstlv2_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstlv2_la_CFLAGS) $(CFLAGS) -c -o libgstlv2_la-gstlv2utils.lo `test -f 'gstlv2utils.c' || echo '$(srcdir)/'`gstlv2utils.c
+
+libgstlv2_la-gstlv2filter.lo: gstlv2filter.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstlv2_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstlv2_la_CFLAGS) $(CFLAGS) -MT libgstlv2_la-gstlv2filter.lo -MD -MP -MF $(DEPDIR)/libgstlv2_la-gstlv2filter.Tpo -c -o libgstlv2_la-gstlv2filter.lo `test -f 'gstlv2filter.c' || echo '$(srcdir)/'`gstlv2filter.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgstlv2_la-gstlv2filter.Tpo $(DEPDIR)/libgstlv2_la-gstlv2filter.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gstlv2filter.c' object='libgstlv2_la-gstlv2filter.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 $(libgstlv2_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstlv2_la_CFLAGS) $(CFLAGS) -c -o libgstlv2_la-gstlv2filter.lo `test -f 'gstlv2filter.c' || echo '$(srcdir)/'`gstlv2filter.c
+
+libgstlv2_la-gstlv2source.lo: gstlv2source.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstlv2_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstlv2_la_CFLAGS) $(CFLAGS) -MT libgstlv2_la-gstlv2source.lo -MD -MP -MF $(DEPDIR)/libgstlv2_la-gstlv2source.Tpo -c -o libgstlv2_la-gstlv2source.lo `test -f 'gstlv2source.c' || echo '$(srcdir)/'`gstlv2source.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgstlv2_la-gstlv2source.Tpo $(DEPDIR)/libgstlv2_la-gstlv2source.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gstlv2source.c' object='libgstlv2_la-gstlv2source.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 $(libgstlv2_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstlv2_la_CFLAGS) $(CFLAGS) -c -o libgstlv2_la-gstlv2source.lo `test -f 'gstlv2source.c' || echo '$(srcdir)/'`gstlv2source.c
+
mostlyclean-libtool:
-rm -f *.lo
diff --git a/ext/lv2/README b/ext/lv2/README
index 5a409ff..289086d 100644
--- a/ext/lv2/README
+++ b/ext/lv2/README
@@ -2,26 +2,43 @@
Dependencies:
-SLV2 0.6.* <http://drobilla.net/software/slv2>
+Lilv 0.6.6 <http://drobilla.net/software/lilv/>
-Which in turn depends on:
-librdf (redland) >= 1.0.6 <http://librdf.org>
+Features:
+The plugin wrapper support the following plugin features:
+http://lv2plug.in/ns/lv2core
+http://lv2plug.in/ns/ext/event
+http://lv2plug.in/ns/ext/port-groups
+
+and these host features:
+http://lv2plug.in/ns/ext/log
+http://lv2plug.in/ns/ext/urid
Example Pipeline:
Requires swh-lv2 <http://plugin.org.uk/releases/>
-gst-launch-0.10 -v filesrc location=/usr/share/sounds/login.wav ! wavparse ! audioconvert ! plugin-org-uk-swh-plugins-djFlanger ! audioconvert ! alsasink
-
+gst-launch-1.0 -v filesrc location=/usr/share/sounds/login.wav ! wavparse ! audioconvert ! plugin-org-uk-swh-plugins-djFlanger ! audioconvert ! autoaudiosink
(A longer wav will be a better example)
+gst-launch-1.0 plugin-org-uk-swh-plugins-analogueOsc num-buffers=100 wave=1 ! wavenc ! filesink location="/tmp/lv2.wav"
Requires calf <http://calf.sourceforge.net/>
-GST_DEBUG="*:2,signalprocessor:5,lv2:5"
-gst-launch calf-sourceforge-net-plugins-Monosynth event-in="C-3" ! pulsesink
-gst-launch calf-sourceforge-net-plugins-Monosynth event-in="C-3" name=ms ! pulsesink ms. ! fakesink
-gst-launch calf-sourceforge-net-plugins-Organ event-in="C-3" name=s ! interleave name=i ! pulsesink s. ! i.
+GST_DEBUG="*:2,lv2:5"
+gst-launch-1.0 calf-sourceforge-net-plugins-Monosynth event-in="C-3" ! autoaudiosink
+gst-launch-1.0 calf-sourceforge-net-plugins-Monosynth event-in="C-3" name=ms ! autoaudiosink ms. ! fakesink
+gst-launch-1.0 calf-sourceforge-net-plugins-Organ event-in="C-3" name=s ! interleave name=i ! autoaudiosink s. ! i.
+
+TODO
+* make filters gap-aware
+* support more host features
+ GST_DEBUG="lv2:4" GST_DEBUG_FILE=/tmp/gst.log gst-inspect lv2
+ grep -o "needs host feature: .*$" /tmp/gst.log | sort | uniq -c | sort -n
+
+* example sources:
+ http://svn.drobilla.net/lad/trunk/lilv/utils/lv2info.c
+ http://svn.drobilla.net/lad/trunk/jalv/src/jalv.c
diff --git a/ext/lv2/gstlv2.c b/ext/lv2/gstlv2.c
index 41fcc21..acad443 100644
--- a/ext/lv2/gstlv2.c
+++ b/ext/lv2/gstlv2.c
@@ -2,6 +2,7 @@
* Copyright (C) 1999 Erik Walthinsen <omega@cse.ogi.edu>
* 2001 Steve Baker <stevebaker_org@yahoo.co.uk>
* 2003 Andy Wingo <wingo at pobox.com>
+ * 2016 Thibault Saunier <thibault.saunier@collabora.com>
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Library General Public
@@ -35,785 +36,104 @@
#ifdef HAVE_CONFIG_H
#include "config.h"
#endif
-#include <string.h>
-#include <math.h>
-#include <glib.h>
-#include <gst/audio/audio.h>
-#include <gst/audio/multichannel.h>
+#include <string.h>
#include "gstlv2.h"
-#include <slv2/slv2.h>
+
+#include <gst/audio/audio-channels.h>
+#include <lv2/lv2plug.in/ns/ext/port-groups/port-groups.h>
+#include "lv2/lv2plug.in/ns/ext/event/event.h"
+#include "lv2/lv2plug.in/ns/ext/presets/presets.h"
+#include "lv2/lv2plug.in/ns/ext/state/state.h"
+
+GST_DEBUG_CATEGORY (lv2_debug);
+#define GST_CAT_DEFAULT lv2_debug
#define GST_LV2_DEFAULT_PATH \
"/usr/lib/lv2" G_SEARCHPATH_SEPARATOR_S \
"/usr/local/lib/lv2" G_SEARCHPATH_SEPARATOR_S \
LIBDIR "/lv2"
-static void gst_lv2_set_property (GObject * object,
- guint prop_id, const GValue * value, GParamSpec * pspec);
-
-static void gst_lv2_get_property (GObject * object,
- guint prop_id, GValue * value, GParamSpec * pspec);
-
-static gboolean gst_lv2_setup (GstSignalProcessor * sigproc, GstCaps * caps);
-static gboolean gst_lv2_start (GstSignalProcessor * sigproc);
-static void gst_lv2_stop (GstSignalProcessor * sigproc);
-static void gst_lv2_cleanup (GstSignalProcessor * sigproc);
-static void gst_lv2_process (GstSignalProcessor * sigproc, guint nframes);
-
-static SLV2World world;
-static SLV2Value audio_class;
-static SLV2Value control_class;
-static SLV2Value input_class;
-static SLV2Value output_class;
-static SLV2Value integer_prop;
-static SLV2Value toggled_prop;
-static SLV2Value in_place_broken_pred;
-static SLV2Value in_group_pred;
-static SLV2Value has_role_pred;
-static SLV2Value lv2_symbol_pred;
-
-static SLV2Value center_role;
-static SLV2Value left_role;
-static SLV2Value right_role;
-static SLV2Value rear_center_role;
-static SLV2Value rear_left_role;
-static SLV2Value rear_right_role;
-static SLV2Value lfe_role;
-static SLV2Value center_left_role;
-static SLV2Value center_right_role;
-static SLV2Value side_left_role;
-static SLV2Value side_right_role;
-
-static GstSignalProcessorClass *parent_class;
-
-static GstPlugin *gst_lv2_plugin;
-
-GST_DEBUG_CATEGORY_STATIC (lv2_debug);
-#define GST_CAT_DEFAULT lv2_debug
-
-static GQuark descriptor_quark = 0;
-
-
-/* Convert an LV2 port role to a Gst channel positon
- * WARNING: If the group has only a single port,
- * GST_AUDIO_CHANNEL_POSITION_FRONT_CENTER will be returned for pg:centerRole
- * (which is used by LV2 for mono groups), but this is not correct. In this
- * case the value must be changed to GST_AUDIO_CHANNEL_POSITION_FRONT_MONO
- * (this can't be done by this function because this information isn't known
- * at the time it is used).
- */
-static GstAudioChannelPosition
-gst_lv2_role_to_position (SLV2Value role)
-{
- /* Front. Mono and left/right are mututally exclusive */
- if (slv2_value_equals (role, center_role)) {
-
- return GST_AUDIO_CHANNEL_POSITION_FRONT_CENTER;
- } else if (slv2_value_equals (role, left_role)) {
- return GST_AUDIO_CHANNEL_POSITION_FRONT_LEFT;
- } else if (slv2_value_equals (role, right_role)) {
- return GST_AUDIO_CHANNEL_POSITION_FRONT_RIGHT;
-
- /* Rear. Left/right and center are mututally exclusive */
- } else if (slv2_value_equals (role, rear_center_role)) {
- return GST_AUDIO_CHANNEL_POSITION_REAR_CENTER;
- } else if (slv2_value_equals (role, rear_left_role)) {
- return GST_AUDIO_CHANNEL_POSITION_REAR_LEFT;
- } else if (slv2_value_equals (role, rear_right_role)) {
- return GST_AUDIO_CHANNEL_POSITION_REAR_RIGHT;
-
- /* Subwoofer/low-frequency-effects */
- } else if (slv2_value_equals (role, lfe_role)) {
- return GST_AUDIO_CHANNEL_POSITION_LFE;
-
- /* Center front speakers. Center and left/right_of_center
- * are mutually exclusive */
- } else if (slv2_value_equals (role, center_left_role)) {
- return GST_AUDIO_CHANNEL_POSITION_FRONT_LEFT_OF_CENTER;
- } else if (slv2_value_equals (role, center_right_role)) {
- return GST_AUDIO_CHANNEL_POSITION_FRONT_RIGHT_OF_CENTER;
-
- /* sides */
- } else if (slv2_value_equals (role, side_left_role)) {
- return GST_AUDIO_CHANNEL_POSITION_SIDE_LEFT;
- } else if (slv2_value_equals (role, side_right_role)) {
- return GST_AUDIO_CHANNEL_POSITION_SIDE_RIGHT;
- }
-
- return GST_AUDIO_CHANNEL_POSITION_INVALID;
-}
-
-/* Find and return the group @a uri in @a groups, or NULL if not found */
-static GstLV2Group *
-gst_lv2_class_find_group (GArray * groups, SLV2Value uri)
-{
- int i = 0;
- for (; i < groups->len; ++i)
- if (slv2_value_equals (g_array_index (groups, GstLV2Group, i).uri, uri))
- return &g_array_index (groups, GstLV2Group, i);
- return NULL;
-}
-
-static GstAudioChannelPosition *
-gst_lv2_build_positions (GstLV2Group * group)
-{
- GstAudioChannelPosition *positions = NULL;
-
- /* don't do anything for mono */
- if (group->ports->len > 1) {
- gint i;
-
- positions = g_new (GstAudioChannelPosition, group->ports->len);
- for (i = 0; i < group->ports->len; ++i)
- positions[i] = g_array_index (group->ports, GstLV2Port, i).position;
- }
- return positions;
-}
+GstStructure *lv2_meta_all = NULL;
static void
-gst_lv2_base_init (gpointer g_class)
+lv2_plugin_register_element (GstPlugin * plugin, GstStructure * lv2_meta)
{
- GstLV2Class *klass = (GstLV2Class *) g_class;
- GstElementClass *element_class = GST_ELEMENT_CLASS (g_class);
- GstSignalProcessorClass *gsp_class = GST_SIGNAL_PROCESSOR_CLASS (g_class);
- SLV2Plugin lv2plugin;
- SLV2Value val;
- SLV2Values values, sub_values;
- GstLV2Group *group = NULL;
- GstAudioChannelPosition position = GST_AUDIO_CHANNEL_POSITION_INVALID;
- guint j, in_pad_index = 0, out_pad_index = 0;
- const gchar *klass_tags;
- gchar *longname, *author;
+ guint audio_in, audio_out;
- lv2plugin = (SLV2Plugin) g_type_get_qdata (G_OBJECT_CLASS_TYPE (klass),
- descriptor_quark);
+ gst_structure_get_uint (lv2_meta, "audio-in", &audio_in);
+ gst_structure_get_uint (lv2_meta, "audio-out", &audio_out);
- g_assert (lv2plugin);
-
- GST_DEBUG ("base_init %p, plugin %s", g_class,
- slv2_value_as_string (slv2_plugin_get_uri (lv2plugin)));
-
- gsp_class->num_group_in = 0;
- gsp_class->num_group_out = 0;
- gsp_class->num_audio_in = 0;
- gsp_class->num_audio_out = 0;
- gsp_class->num_control_in = 0;
- gsp_class->num_control_out = 0;
-
- klass->in_groups = g_array_new (FALSE, TRUE, sizeof (GstLV2Group));
- klass->out_groups = g_array_new (FALSE, TRUE, sizeof (GstLV2Group));
- klass->audio_in_ports = g_array_new (FALSE, TRUE, sizeof (GstLV2Port));
- klass->audio_out_ports = g_array_new (FALSE, TRUE, sizeof (GstLV2Port));
- klass->control_in_ports = g_array_new (FALSE, TRUE, sizeof (GstLV2Port));
- klass->control_out_ports = g_array_new (FALSE, TRUE, sizeof (GstLV2Port));
-
- /* find ports and groups */
- for (j = 0; j < slv2_plugin_get_num_ports (lv2plugin); j++) {
- const SLV2Port port = slv2_plugin_get_port_by_index (lv2plugin, j);
- const gboolean is_input = slv2_port_is_a (lv2plugin, port, input_class);
- gboolean in_group = FALSE;
- struct _GstLV2Port desc = { j, 0, };
- values = slv2_port_get_value (lv2plugin, port, in_group_pred);
-
- if (slv2_values_size (values) > 0) {
- /* port is part of a group */
- SLV2Value group_uri = slv2_values_get_at (values, 0);
- GArray *groups = is_input ? klass->in_groups : klass->out_groups;
- GstLV2Group *group = gst_lv2_class_find_group (groups, group_uri);
- in_group = TRUE;
- if (group == NULL) {
- GstLV2Group g;
- g.uri = slv2_value_duplicate (group_uri);
- g.pad = is_input ? in_pad_index++ : out_pad_index++;
- g.ports = g_array_new (FALSE, TRUE, sizeof (GstLV2Port));
- g.has_roles = TRUE;
- g.symbol = NULL;
- sub_values = slv2_plugin_get_value_for_subject (lv2plugin, group_uri,
- lv2_symbol_pred);
- /* symbol is mandatory */
- if (slv2_values_size (sub_values) > 0) {
- g.symbol = slv2_value_duplicate (slv2_values_get_at (sub_values, 0));
- if (!gst_element_class_get_pad_template (element_class,
- slv2_value_as_string (g.symbol))) {
- g_array_append_val (groups, g);
- group = &g_array_index (groups, GstLV2Group, groups->len - 1);
- assert (group);
- assert (slv2_value_equals (group->uri, group_uri));
- } else {
- GST_WARNING ("plugin %s has duplicate group symbol '%s'",
- slv2_value_as_string (slv2_plugin_get_uri (lv2plugin)),
- slv2_value_as_string (g.symbol));
- in_group = FALSE;
- }
- } else {
- GST_WARNING ("plugin %s has illegal group with no symbol",
- slv2_value_as_string (slv2_plugin_get_uri (lv2plugin)));
- in_group = FALSE;
- }
- }
-
- if (in_group) {
- position = GST_AUDIO_CHANNEL_POSITION_INVALID;
- sub_values = slv2_port_get_value (lv2plugin, port, has_role_pred);
- if (slv2_values_size (sub_values) > 0) {
- SLV2Value role = slv2_values_get_at (sub_values, 0);
- position = gst_lv2_role_to_position (role);
- }
- slv2_values_free (sub_values);
- if (position != GST_AUDIO_CHANNEL_POSITION_INVALID) {
- desc.position = position;
- g_array_append_val (group->ports, desc);
- } else {
- in_group = FALSE;
- }
- }
- }
-
- if (!in_group) {
- /* port is not part of a group, or it is part of a group but that group
- * is illegal so we just ignore it */
- if (slv2_port_is_a (lv2plugin, port, audio_class)) {
- desc.pad = is_input ? in_pad_index++ : out_pad_index++;
- if (is_input)
- g_array_append_val (klass->audio_in_ports, desc);
- else
- g_array_append_val (klass->audio_out_ports, desc);
- } else if (slv2_port_is_a (lv2plugin, port, control_class)) {
- if (is_input)
- g_array_append_val (klass->control_in_ports, desc);
- else
- g_array_append_val (klass->control_out_ports, desc);
- } else {
- /* unknown port type */
- GST_INFO ("unhandled port %d", j);
- continue;
- }
- }
- slv2_values_free (values);
- }
-
- gsp_class->num_group_in = klass->in_groups->len;
- gsp_class->num_group_out = klass->out_groups->len;
- gsp_class->num_audio_in = klass->audio_in_ports->len;
- gsp_class->num_audio_out = klass->audio_out_ports->len;
- gsp_class->num_control_in = klass->control_in_ports->len;
- gsp_class->num_control_out = klass->control_out_ports->len;
-
- /* add input group pad templates */
- for (j = 0; j < gsp_class->num_group_in; ++j) {
- group = &g_array_index (klass->in_groups, GstLV2Group, j);
-
- gst_signal_processor_class_add_pad_template (gsp_class,
- slv2_value_as_string (group->symbol), GST_PAD_SINK, j,
- group->ports->len);
- }
-
- /* add output group pad templates */
- for (j = 0; j < gsp_class->num_group_out; ++j) {
- group = &g_array_index (klass->out_groups, GstLV2Group, j);
-
- gst_signal_processor_class_add_pad_template (gsp_class,
- slv2_value_as_string (group->symbol), GST_PAD_SRC, j,
- group->ports->len);
- }
-
- /* add non-grouped input port pad templates */
- for (j = 0; j < gsp_class->num_audio_in; ++j) {
- struct _GstLV2Port *desc =
- &g_array_index (klass->audio_in_ports, GstLV2Port, j);
- SLV2Port port = slv2_plugin_get_port_by_index (lv2plugin, desc->index);
- const gchar *name =
- slv2_value_as_string (slv2_port_get_symbol (lv2plugin, port));
- gst_signal_processor_class_add_pad_template (gsp_class, name, GST_PAD_SINK,
- j, 1);
- }
-
- /* add non-grouped output port pad templates */
- for (j = 0; j < gsp_class->num_audio_out; ++j) {
- struct _GstLV2Port *desc =
- &g_array_index (klass->audio_out_ports, GstLV2Port, j);
- SLV2Port port = slv2_plugin_get_port_by_index (lv2plugin, desc->index);
- const gchar *name =
- slv2_value_as_string (slv2_port_get_symbol (lv2plugin, port));
- gst_signal_processor_class_add_pad_template (gsp_class, name, GST_PAD_SRC,
- j, 1);
- }
-
- val = slv2_plugin_get_name (lv2plugin);
- if (val) {
- longname = g_strdup (slv2_value_as_string (val));
- slv2_value_free (val);
+ if (audio_in == 0) {
+ gst_lv2_source_register_element (plugin, lv2_meta);
} else {
- longname = g_strdup ("no description available");
- }
- val = slv2_plugin_get_author_name (lv2plugin);
- if (val) {
- author = g_strdup (slv2_value_as_string (val));
- slv2_value_free (val);
- } else {
- author = g_strdup ("no author available");
- }
-
- if (gsp_class->num_audio_in == 0)
- klass_tags = "Source/Audio/LV2";
- else if (gsp_class->num_audio_out == 0) {
- if (gsp_class->num_control_out == 0)
- klass_tags = "Sink/Audio/LV2";
- else
- klass_tags = "Sink/Analyzer/Audio/LV2";
- } else
- klass_tags = "Filter/Effect/Audio/LV2";
-
- GST_INFO ("tags : %s", klass_tags);
- gst_element_class_set_metadata (element_class, longname,
- klass_tags, longname, author);
- g_free (longname);
- g_free (author);
-
- if (!slv2_plugin_has_feature (lv2plugin, in_place_broken_pred))
- GST_SIGNAL_PROCESSOR_CLASS_SET_CAN_PROCESS_IN_PLACE (klass);
-
- klass->plugin = lv2plugin;
-}
-
-static gchar *
-gst_lv2_class_get_param_name (GstLV2Class * klass, SLV2Port port)
-{
- SLV2Plugin lv2plugin = klass->plugin;
- gchar *ret;
-
- ret = g_strdup (slv2_value_as_string (slv2_port_get_symbol (lv2plugin,
- port)));
-
- /* this is the same thing that param_spec_* will do */
- g_strcanon (ret, G_CSET_A_2_Z G_CSET_a_2_z G_CSET_DIGITS "-", '-');
- /* satisfy glib2 (argname[0] must be [A-Za-z]) */
- if (!((ret[0] >= 'a' && ret[0] <= 'z') || (ret[0] >= 'A' && ret[0] <= 'Z'))) {
- gchar *tempstr = ret;
-
- ret = g_strconcat ("param-", ret, NULL);
- g_free (tempstr);
- }
-
- /* check for duplicate property names */
- if (g_object_class_find_property (G_OBJECT_CLASS (klass), ret)) {
- gint n = 1;
- gchar *nret = g_strdup_printf ("%s-%d", ret, n++);
-
- while (g_object_class_find_property (G_OBJECT_CLASS (klass), nret)) {
- g_free (nret);
- nret = g_strdup_printf ("%s-%d", ret, n++);
- }
- g_free (ret);
- ret = nret;
- }
-
- GST_DEBUG ("built property name '%s' from port name '%s'", ret,
- slv2_value_as_string (slv2_port_get_symbol (lv2plugin, port)));
-
- return ret;
-}
-
-static gchar *
-gst_lv2_class_get_param_nick (GstLV2Class * klass, SLV2Port port)
-{
- SLV2Plugin lv2plugin = klass->plugin;
-
- return g_strdup (slv2_value_as_string (slv2_port_get_name (lv2plugin, port)));
-}
-
-static GParamSpec *
-gst_lv2_class_get_param_spec (GstLV2Class * klass, gint portnum)
-{
- SLV2Plugin lv2plugin = klass->plugin;
- SLV2Port port = slv2_plugin_get_port_by_index (lv2plugin, portnum);
- SLV2Value lv2def, lv2min, lv2max;
- GParamSpec *ret;
- gchar *name, *nick;
- gint perms;
- gfloat lower = 0.0f, upper = 1.0f, def = 0.0f;
-
- nick = gst_lv2_class_get_param_nick (klass, port);
- name = gst_lv2_class_get_param_name (klass, port);
-
- GST_DEBUG ("%s trying port %s : %s",
- slv2_value_as_string (slv2_plugin_get_uri (lv2plugin)), name, nick);
-
- perms = G_PARAM_READABLE;
- if (slv2_port_is_a (lv2plugin, port, input_class))
- perms |= G_PARAM_WRITABLE | G_PARAM_CONSTRUCT;
- if (slv2_port_is_a (lv2plugin, port, control_class))
- perms |= GST_PARAM_CONTROLLABLE;
-
- if (slv2_port_has_property (lv2plugin, port, toggled_prop)) {
- ret = g_param_spec_boolean (name, nick, nick, FALSE, perms);
- goto done;
- }
-
- slv2_port_get_range (lv2plugin, port, &lv2def, &lv2min, &lv2max);
-
- if (lv2def)
- def = slv2_value_as_float (lv2def);
- if (lv2min)
- lower = slv2_value_as_float (lv2min);
- if (lv2max)
- upper = slv2_value_as_float (lv2max);
-
- slv2_value_free (lv2def);
- slv2_value_free (lv2min);
- slv2_value_free (lv2max);
-
- if (def < lower) {
- GST_WARNING ("%s has lower bound %f > default %f",
- slv2_value_as_string (slv2_plugin_get_uri (lv2plugin)), lower, def);
- lower = def;
- }
-
- if (def > upper) {
- GST_WARNING ("%s has upper bound %f < default %f",
- slv2_value_as_string (slv2_plugin_get_uri (lv2plugin)), upper, def);
- upper = def;
- }
-
- if (slv2_port_has_property (lv2plugin, port, integer_prop))
- ret = g_param_spec_int (name, nick, nick, lower, upper, def, perms);
- else
- ret = g_param_spec_float (name, nick, nick, lower, upper, def, perms);
-
-done:
- g_free (name);
- g_free (nick);
-
- return ret;
-}
-
-static void
-gst_lv2_class_init (GstLV2Class * klass, SLV2Plugin lv2plugin)
-{
- GObjectClass *gobject_class;
- GstSignalProcessorClass *gsp_class;
- GParamSpec *p;
- gint i, ix;
-
- GST_DEBUG ("class_init %p", klass);
-
- gobject_class = (GObjectClass *) klass;
- gobject_class->set_property = gst_lv2_set_property;
- gobject_class->get_property = gst_lv2_get_property;
-
- gsp_class = GST_SIGNAL_PROCESSOR_CLASS (klass);
- gsp_class->setup = gst_lv2_setup;
- gsp_class->start = gst_lv2_start;
- gsp_class->stop = gst_lv2_stop;
- gsp_class->cleanup = gst_lv2_cleanup;
- gsp_class->process = gst_lv2_process;
-
- klass->plugin = lv2plugin;
-
- /* properties have an offset of 1 */
- ix = 1;
-
- /* register properties */
-
- for (i = 0; i < gsp_class->num_control_in; i++, ix++) {
- p = gst_lv2_class_get_param_spec (klass,
- g_array_index (klass->control_in_ports, GstLV2Port, i).index);
-
- g_object_class_install_property (gobject_class, ix, p);
- }
-
- for (i = 0; i < gsp_class->num_control_out; i++, ix++) {
- p = gst_lv2_class_get_param_spec (klass,
- g_array_index (klass->control_out_ports, GstLV2Port, i).index);
-
- g_object_class_install_property (gobject_class, ix, p);
+ gst_lv2_filter_register_element (plugin, lv2_meta);
}
}
static void
-gst_lv2_init (GstLV2 * lv2, GstLV2Class * klass)
+lv2_count_ports (const LilvPlugin * lv2plugin, guint * audio_in,
+ guint * audio_out, guint * control)
{
- lv2->plugin = klass->plugin;
- lv2->instance = NULL;
- lv2->activated = FALSE;
-}
+ GHashTable *port_groups = g_hash_table_new_full (g_str_hash, g_str_equal,
+ g_free, NULL);
+ guint i;
-static void
-gst_lv2_set_property (GObject * object, guint prop_id, const GValue * value,
- GParamSpec * pspec)
-{
- GstSignalProcessor *gsp;
- GstSignalProcessorClass *gsp_class;
+ *audio_in = *audio_out = *control = 0;
+ for (i = 0; i < lilv_plugin_get_num_ports (lv2plugin); i++) {
+ const LilvPort *port = lilv_plugin_get_port_by_index (lv2plugin, i);
- gsp = GST_SIGNAL_PROCESSOR (object);
- gsp_class = GST_SIGNAL_PROCESSOR_GET_CLASS (object);
+ if (lilv_port_is_a (lv2plugin, port, audio_class)) {
+ const gboolean is_input = lilv_port_is_a (lv2plugin, port, input_class);
+ LilvNodes *lv2group = lilv_port_get (lv2plugin, port, group_pred);
- /* remember, properties have an offset of 1 */
- prop_id--;
+ if (lv2group) {
+ const gchar *uri = lilv_node_as_uri (lv2group);
- /* only input ports */
- g_return_if_fail (prop_id < gsp_class->num_control_in);
+ if (g_hash_table_contains (port_groups, uri))
+ continue;
- /* now see what type it is */
- switch (pspec->value_type) {
- case G_TYPE_BOOLEAN:
- gsp->control_in[prop_id] = g_value_get_boolean (value) ? 0.0f : 1.0f;
- break;
- case G_TYPE_INT:
- gsp->control_in[prop_id] = g_value_get_int (value);
- break;
- case G_TYPE_FLOAT:
- gsp->control_in[prop_id] = g_value_get_float (value);
- break;
- default:
- g_assert_not_reached ();
- }
-}
-
-static void
-gst_lv2_get_property (GObject * object, guint prop_id, GValue * value,
- GParamSpec * pspec)
-{
- GstSignalProcessor *gsp;
- GstSignalProcessorClass *gsp_class;
- gfloat *controls;
-
- gsp = GST_SIGNAL_PROCESSOR (object);
- gsp_class = GST_SIGNAL_PROCESSOR_GET_CLASS (object);
-
- /* remember, properties have an offset of 1 */
- prop_id--;
-
- if (prop_id < gsp_class->num_control_in) {
- controls = gsp->control_in;
- } else if (prop_id < gsp_class->num_control_in + gsp_class->num_control_out) {
- controls = gsp->control_out;
- prop_id -= gsp_class->num_control_in;
- } else {
- g_return_if_reached ();
- }
-
- /* now see what type it is */
- switch (pspec->value_type) {
- case G_TYPE_BOOLEAN:
- g_value_set_boolean (value, controls[prop_id] > 0.0f);
- break;
- case G_TYPE_INT:
- g_value_set_int (value, CLAMP (controls[prop_id], G_MININT, G_MAXINT));
- break;
- case G_TYPE_FLOAT:
- g_value_set_float (value, controls[prop_id]);
- break;
- default:
- g_return_if_reached ();
- }
-}
-
-static gboolean
-gst_lv2_setup (GstSignalProcessor * gsp, GstCaps * caps)
-{
- GstLV2 *lv2;
- GstLV2Class *oclass;
- GstSignalProcessorClass *gsp_class;
- GstStructure *s;
- gint i;
- GstLV2Group *group = NULL;
- GstAudioChannelPosition *positions = NULL;
- GstPad *pad;
-
- gsp_class = GST_SIGNAL_PROCESSOR_GET_CLASS (gsp);
- lv2 = (GstLV2 *) gsp;
- oclass = (GstLV2Class *) gsp_class;
-
- g_return_val_if_fail (lv2->activated == FALSE, FALSE);
-
- GST_DEBUG_OBJECT (lv2, "instantiating the plugin at %d Hz", gsp->sample_rate);
-
- if (!(lv2->instance =
- slv2_plugin_instantiate (oclass->plugin, gsp->sample_rate, NULL)))
- goto no_instance;
-
- /* connect the control ports */
- for (i = 0; i < gsp_class->num_control_in; i++)
- slv2_instance_connect_port (lv2->instance,
- g_array_index (oclass->control_in_ports, GstLV2Port, i).index,
- &(gsp->control_in[i]));
- for (i = 0; i < gsp_class->num_control_out; i++)
- slv2_instance_connect_port (lv2->instance,
- g_array_index (oclass->control_out_ports, GstLV2Port, i).index,
- &(gsp->control_out[i]));
-
- /* set input group pad audio channel position */
- for (i = 0; i < gsp_class->num_group_in; ++i) {
- group = &g_array_index (oclass->in_groups, GstLV2Group, i);
- if (group->has_roles) {
- if ((positions = gst_lv2_build_positions (group))) {
- if ((pad = gst_element_get_static_pad (GST_ELEMENT (gsp),
- slv2_value_as_string (group->symbol)))) {
- GST_INFO_OBJECT (lv2, "set audio channel positions on sink pad %s",
- slv2_value_as_string (group->symbol));
- s = gst_caps_get_structure (caps, 0);
- gst_audio_set_channel_positions (s, positions);
- gst_object_unref (pad);
- }
- g_free (positions);
- positions = NULL;
+ g_hash_table_add (port_groups, g_strdup (uri));
+ lilv_node_free (lv2group);
}
- }
- }
- /* set output group pad audio channel position */
- for (i = 0; i < gsp_class->num_group_out; ++i) {
- group = &g_array_index (oclass->out_groups, GstLV2Group, i);
- if (group->has_roles) {
- if ((positions = gst_lv2_build_positions (group))) {
- if ((pad = gst_element_get_static_pad (GST_ELEMENT (gsp),
- slv2_value_as_string (group->symbol)))) {
- GST_INFO_OBJECT (lv2, "set audio channel positions on src pad %s",
- slv2_value_as_string (group->symbol));
- s = gst_caps_get_structure (caps, 0);
- gst_audio_set_channel_positions (s, positions);
- gst_object_unref (pad);
- }
- g_free (positions);
- positions = NULL;
- }
- }
- }
- return TRUE;
-no_instance:
- {
- GST_WARNING_OBJECT (gsp, "could not create instance");
- return FALSE;
+ if (is_input)
+ (*audio_in)++;
+ else
+ (*audio_out)++;
+ } else if (lilv_port_is_a (lv2plugin, port, control_class) ||
+ lilv_port_is_a (lv2plugin, port, cv_class)) {
+ (*control)++;
+ }
}
+ g_hash_table_unref (port_groups);
}
+/* search the plugin path */
static gboolean
-gst_lv2_start (GstSignalProcessor * gsp)
+lv2_plugin_discover (GstPlugin * plugin)
{
- GstLV2 *lv2 = (GstLV2 *) gsp;
+ guint audio_in, audio_out, control;
+ LilvIter *i;
+ const LilvPlugins *plugins = lilv_world_get_all_plugins (world);
- g_return_val_if_fail (lv2->activated == FALSE, FALSE);
- g_return_val_if_fail (lv2->instance != NULL, FALSE);
-
- GST_DEBUG_OBJECT (lv2, "activating");
-
- slv2_instance_activate (lv2->instance);
-
- lv2->activated = TRUE;
-
- return TRUE;
-}
-
-static void
-gst_lv2_stop (GstSignalProcessor * gsp)
-{
- GstLV2 *lv2 = (GstLV2 *) gsp;
-
- g_return_if_fail (lv2->activated == TRUE);
- g_return_if_fail (lv2->instance != NULL);
-
- GST_DEBUG_OBJECT (lv2, "deactivating");
-
- slv2_instance_deactivate (lv2->instance);
-
- lv2->activated = FALSE;
-}
-
-static void
-gst_lv2_cleanup (GstSignalProcessor * gsp)
-{
- GstLV2 *lv2 = (GstLV2 *) gsp;
-
- g_return_if_fail (lv2->activated == FALSE);
- g_return_if_fail (lv2->instance != NULL);
-
- GST_DEBUG_OBJECT (lv2, "cleaning up");
-
- slv2_instance_free (lv2->instance);
-
- lv2->instance = NULL;
-}
-
-static void
-gst_lv2_process (GstSignalProcessor * gsp, guint nframes)
-{
- GstSignalProcessorClass *gsp_class;
- GstLV2 *lv2;
- GstLV2Class *lv2_class;
- GstLV2Group *lv2_group;
- GstLV2Port *lv2_port;
- GstSignalProcessorGroup *gst_group;
- guint i, j;
-
- gsp_class = GST_SIGNAL_PROCESSOR_GET_CLASS (gsp);
- lv2 = (GstLV2 *) gsp;
- lv2_class = (GstLV2Class *) gsp_class;
-
- /* multi channel inputs */
- for (i = 0; i < gsp_class->num_group_in; i++) {
- lv2_group = &g_array_index (lv2_class->in_groups, GstLV2Group, i);
- gst_group = &gsp->group_in[i];
- for (j = 0; j < lv2_group->ports->len; ++j) {
- lv2_port = &g_array_index (lv2_group->ports, GstLV2Port, j);
- slv2_instance_connect_port (lv2->instance, lv2_port->index,
- gst_group->buffer + (j * nframes));
- }
- }
- /* mono inputs */
- for (i = 0; i < gsp_class->num_audio_in; i++) {
- lv2_port = &g_array_index (lv2_class->audio_in_ports, GstLV2Port, i);
- slv2_instance_connect_port (lv2->instance, lv2_port->index,
- gsp->audio_in[i]);
- }
- /* multi channel outputs */
- for (i = 0; i < gsp_class->num_group_out; i++) {
- lv2_group = &g_array_index (lv2_class->out_groups, GstLV2Group, i);
- gst_group = &gsp->group_out[i];
- for (j = 0; j < lv2_group->ports->len; ++j) {
- lv2_port = &g_array_index (lv2_group->ports, GstLV2Port, j);
- slv2_instance_connect_port (lv2->instance, lv2_port->index,
- gst_group->buffer + (j * nframes));
- }
- }
- /* mono outputs */
- for (i = 0; i < gsp_class->num_audio_out; i++) {
- lv2_port = &g_array_index (lv2_class->audio_out_ports, GstLV2Port, i);
- slv2_instance_connect_port (lv2->instance, lv2_port->index,
- gsp->audio_out[i]);
- }
-
- slv2_instance_run (lv2->instance, nframes);
-}
-
-/* search the plugin path
- */
-static gboolean
-lv2_plugin_discover (void)
-{
- guint i, j;
- SLV2Plugins plugins = slv2_world_get_all_plugins (world);
-
- for (i = 0; i < slv2_plugins_size (plugins); ++i) {
- SLV2Plugin lv2plugin = slv2_plugins_get_at (plugins, i);
- gint num_audio_ports = 0;
+ for (i = lilv_plugins_begin (plugins); !lilv_plugins_is_end (plugins, i);
+ i = lilv_plugins_next (plugins, i)) {
+ GstStructure *lv2_meta = NULL;
+ GValue value = { 0, };
+ const LilvPlugin *lv2plugin = lilv_plugins_get (plugins, i);
const gchar *plugin_uri, *p;
gchar *type_name;
- GTypeInfo typeinfo = {
- sizeof (GstLV2Class),
- (GBaseInitFunc) gst_lv2_base_init,
- NULL,
- (GClassInitFunc) gst_lv2_class_init,
- NULL,
- lv2plugin,
- sizeof (GstLV2),
- 0,
- (GInstanceInitFunc) gst_lv2_init,
- };
- GType type;
+ gboolean can_do_presets;
- plugin_uri = slv2_value_as_uri (slv2_plugin_get_uri (lv2plugin));
+ plugin_uri = lilv_node_as_uri (lilv_plugin_get_uri (lv2plugin));
+
+ /* check if we support the required host features */
+ if (!gst_lv2_check_required_features (lv2plugin)) {
+ GST_FIXME ("lv2 plugin %s needs host features", plugin_uri);
+ continue;
+ }
+
/* construct the type name from plugin URI */
if ((p = strstr (plugin_uri, "://"))) {
/* cut off the protocol (e.g. http://) */
@@ -828,85 +148,154 @@
goto next;
/* check if this has any audio ports */
- for (j = 0; j < slv2_plugin_get_num_ports (lv2plugin); j++) {
- const SLV2Port port = slv2_plugin_get_port_by_index (lv2plugin, j);
- if (slv2_port_is_a (lv2plugin, port, audio_class)) {
- num_audio_ports++;
+ lv2_count_ports (lv2plugin, &audio_in, &audio_out, &control);
+
+ if (audio_in == 0 && audio_out == 0) {
+ GST_FIXME ("plugin %s has no audio pads", type_name);
+ goto next;
+ } else if (audio_in == 0) {
+ if (audio_out != 1) {
+ GST_FIXME ("plugin %s is not a GstBaseSrc (num_src_pads: %d)",
+ type_name, audio_out);
+ goto next;
+ }
+ } else if (audio_out == 0) {
+ GST_FIXME ("plugin %s is a sink element (num_sink_pads: %d"
+ " num_src_pads: %d)", type_name, audio_in, audio_out);
+ goto next;
+ } else {
+ if (audio_in != 1 || audio_out != 1) {
+ GST_FIXME ("plugin %s is not a GstAudioFilter (num_sink_pads: %d"
+ " num_src_pads: %d)", type_name, audio_in, audio_out);
+ goto next;
}
}
- if (!num_audio_ports) {
- GST_INFO ("plugin %s has no audio ports", type_name);
- goto next;
- }
- /* create the type */
- type =
- g_type_register_static (GST_TYPE_SIGNAL_PROCESSOR, type_name, &typeinfo,
- 0);
+ /* check supported extensions */
+ can_do_presets = lilv_plugin_has_extension_data (lv2plugin, state_iface)
+ || lilv_plugin_has_feature (lv2plugin, state_uri)
+ || (control > 0);
+ GST_INFO ("plugin %s can%s do presets", type_name,
+ (can_do_presets ? "" : "'t"));
- /* FIXME: not needed anymore when we can add pad templates, etc in class_init
- * as class_data contains the LADSPA_Descriptor too */
- g_type_set_qdata (type, descriptor_quark, (gpointer) lv2plugin);
+ lv2_meta = gst_structure_new ("lv2",
+ "element-uri", G_TYPE_STRING, plugin_uri,
+ "element-type-name", G_TYPE_STRING, type_name,
+ "audio-in", G_TYPE_UINT, audio_in,
+ "audio-out", G_TYPE_UINT, audio_out,
+ "can-do-presets", G_TYPE_BOOLEAN, can_do_presets, NULL);
- if (!gst_element_register (gst_lv2_plugin, type_name, GST_RANK_NONE, type))
- goto next;
+ g_value_init (&value, GST_TYPE_STRUCTURE);
+ g_value_set_boxed (&value, lv2_meta);
+ gst_structure_set_value (lv2_meta_all, type_name, &value);
+ g_value_unset (&value);
+
+ // don't free type_name
+ continue;
next:
g_free (type_name);
}
+
return TRUE;
}
static gboolean
plugin_init (GstPlugin * plugin)
{
+ gboolean res = FALSE;
+ gint n = 0;
+
GST_DEBUG_CATEGORY_INIT (lv2_debug, "lv2",
GST_DEBUG_FG_GREEN | GST_DEBUG_BG_BLACK | GST_DEBUG_BOLD, "LV2");
- world = slv2_world_new ();
- slv2_world_load_all (world);
+ world = lilv_world_new ();
+ lilv_world_load_all (world);
+ gst_lv2_host_init ();
- audio_class = slv2_value_new_uri (world, SLV2_PORT_CLASS_AUDIO);
- control_class = slv2_value_new_uri (world, SLV2_PORT_CLASS_CONTROL);
- input_class = slv2_value_new_uri (world, SLV2_PORT_CLASS_INPUT);
- output_class = slv2_value_new_uri (world, SLV2_PORT_CLASS_OUTPUT);
+/* have been added after lilv-0.22.0, which is the last release */
+#ifndef LILV_URI_ATOM_PORT
+#define LILV_URI_ATOM_PORT "http://lv2plug.in/ns/ext/atom#AtomPort"
+#endif
+#ifndef LILV_URI_CV_PORT
+#define LILV_URI_CV_PORT "http://lv2plug.in/ns/lv2core#CVPort"
+#endif
-#define NS_LV2 "http://lv2plug.in/ns/lv2core#"
-#define NS_PG "http://lv2plug.in/ns/ext/port-groups"
+ atom_class = lilv_new_uri (world, LILV_URI_ATOM_PORT);
+ audio_class = lilv_new_uri (world, LILV_URI_AUDIO_PORT);
+ control_class = lilv_new_uri (world, LILV_URI_CONTROL_PORT);
+ cv_class = lilv_new_uri (world, LILV_URI_CV_PORT);
+ event_class = lilv_new_uri (world, LILV_URI_EVENT_PORT);
+ input_class = lilv_new_uri (world, LILV_URI_INPUT_PORT);
+ output_class = lilv_new_uri (world, LILV_URI_OUTPUT_PORT);
+ preset_class = lilv_new_uri (world, LV2_PRESETS__Preset);
+ state_iface = lilv_new_uri (world, LV2_STATE__interface);
+ state_uri = lilv_new_uri (world, LV2_STATE_URI);
- integer_prop = slv2_value_new_uri (world, NS_LV2 "integer");
- toggled_prop = slv2_value_new_uri (world, NS_LV2 "toggled");
- in_place_broken_pred = slv2_value_new_uri (world, NS_LV2 "inPlaceBroken");
- in_group_pred = slv2_value_new_uri (world, NS_PG "inGroup");
- has_role_pred = slv2_value_new_uri (world, NS_PG "role");
- lv2_symbol_pred = slv2_value_new_string (world, NS_LV2 "symbol");
+ integer_prop = lilv_new_uri (world, LV2_CORE__integer);
+ toggled_prop = lilv_new_uri (world, LV2_CORE__toggled);
+ designation_pred = lilv_new_uri (world, LV2_CORE__designation);
+ in_place_broken_pred = lilv_new_uri (world, LV2_CORE__inPlaceBroken);
+ optional_pred = lilv_new_uri (world, LV2_CORE__optionalFeature);
+ group_pred = lilv_new_uri (world, LV2_PORT_GROUPS__group);
+ supports_event_pred = lilv_new_uri (world, LV2_EVENT__supportsEvent);
+ label_pred = lilv_new_uri (world, LILV_NS_RDFS "label");
- center_role = slv2_value_new_uri (world, NS_PG "centerChannel");
- left_role = slv2_value_new_uri (world, NS_PG "leftChannel");
- right_role = slv2_value_new_uri (world, NS_PG "rightChannel");
- rear_center_role = slv2_value_new_uri (world, NS_PG "rearCenterChannel");
- rear_left_role = slv2_value_new_uri (world, NS_PG "rearLeftChannel");
- rear_right_role = slv2_value_new_uri (world, NS_PG "rearRightChannel");
- lfe_role = slv2_value_new_uri (world, NS_PG "lfeChannel");
- center_left_role = slv2_value_new_uri (world, NS_PG "centerLeftChannel");
- center_right_role = slv2_value_new_uri (world, NS_PG "centerRightChannel");
- side_left_role = slv2_value_new_uri (world, NS_PG "sideLeftChannel");
- side_right_role = slv2_value_new_uri (world, NS_PG "sideRightChannel");
+ center_role = lilv_new_uri (world, LV2_PORT_GROUPS__center);
+ left_role = lilv_new_uri (world, LV2_PORT_GROUPS__left);
+ right_role = lilv_new_uri (world, LV2_PORT_GROUPS__right);
+ rear_center_role = lilv_new_uri (world, LV2_PORT_GROUPS__rearCenter);
+ rear_left_role = lilv_new_uri (world, LV2_PORT_GROUPS__rearLeft);
+ rear_right_role = lilv_new_uri (world, LV2_PORT_GROUPS__rearLeft);
+ lfe_role = lilv_new_uri (world, LV2_PORT_GROUPS__lowFrequencyEffects);
+ center_left_role = lilv_new_uri (world, LV2_PORT_GROUPS__centerLeft);
+ center_right_role = lilv_new_uri (world, LV2_PORT_GROUPS__centerRight);
+ side_left_role = lilv_new_uri (world, LV2_PORT_GROUPS__sideLeft);
+ side_right_role = lilv_new_uri (world, LV2_PORT_GROUPS__sideRight);
gst_plugin_add_dependency_simple (plugin,
"LV2_PATH", GST_LV2_DEFAULT_PATH, NULL, GST_PLUGIN_DEPENDENCY_FLAG_NONE);
- parent_class = g_type_class_ref (GST_TYPE_SIGNAL_PROCESSOR);
-
- gst_lv2_plugin = plugin;
- descriptor_quark = g_quark_from_static_string ("slv2-plugin");
-
/* ensure GstAudioChannelPosition type is registered */
if (!gst_audio_channel_position_get_type ())
return FALSE;
- if (!lv2_plugin_discover ()) {
- GST_WARNING ("no lv2 plugins found, check LV2_PATH");
+ lv2_meta_all = (GstStructure *) gst_plugin_get_cache_data (plugin);
+ if (lv2_meta_all) {
+ n = gst_structure_n_fields (lv2_meta_all);
+ }
+ GST_INFO_OBJECT (plugin, "%d entries in cache", n);
+ if (!n) {
+ lv2_meta_all = gst_structure_new_empty ("lv2");
+ if ((res = lv2_plugin_discover (plugin))) {
+ n = gst_structure_n_fields (lv2_meta_all);
+ GST_INFO_OBJECT (plugin, "%d entries after scanning", n);
+ gst_plugin_set_cache_data (plugin, lv2_meta_all);
+ }
+ } else {
+ res = TRUE;
+ }
+
+ if (n) {
+ gint i;
+ const gchar *name;
+ const GValue *value;
+
+ GST_INFO_OBJECT (plugin, "register types");
+
+ for (i = 0; i < n; i++) {
+ name = gst_structure_nth_field_name (lv2_meta_all, i);
+ value = gst_structure_get_value (lv2_meta_all, name);
+ if (G_VALUE_TYPE (value) == GST_TYPE_STRUCTURE) {
+ GstStructure *lv2_meta = g_value_get_boxed (value);
+
+ lv2_plugin_register_element (plugin, lv2_meta);
+ }
+ }
+ }
+
+ if (!res) {
+ GST_WARNING_OBJECT (plugin, "no lv2 plugins found, check LV2_PATH");
}
/* we don't want to fail, even if there are no elements registered */
@@ -918,31 +307,39 @@
#endif
static void plugin_cleanup (GstPlugin * plugin)
{
- slv2_value_free (audio_class);
- slv2_value_free (control_class);
- slv2_value_free (input_class);
- slv2_value_free (output_class);
+ lilv_node_free (atom_class);
+ lilv_node_free (audio_class);
+ lilv_node_free (control_class);
+ lilv_node_free (cv_class);
+ lilv_node_free (event_class);
+ lilv_node_free (input_class);
+ lilv_node_free (output_class);
+ lilv_node_free (preset_class);
+ lilv_node_free (state_iface);
+ lilv_node_free (state_uri);
- slv2_value_free (integer_prop);
- slv2_value_free (toggled_prop);
- slv2_value_free (in_place_broken_pred);
- slv2_value_free (in_group_pred);
- slv2_value_free (has_role_pred);
- slv2_value_free (lv2_symbol_pred);
+ lilv_node_free (integer_prop);
+ lilv_node_free (toggled_prop);
+ lilv_node_free (designation_pred);
+ lilv_node_free (in_place_broken_pred);
+ lilv_node_free (optional_pred);
+ lilv_node_free (group_pred);
+ lilv_node_free (supports_event_pred);
+ lilv_node_free (label_pred);
- slv2_value_free (center_role);
- slv2_value_free (left_role);
- slv2_value_free (right_role);
- slv2_value_free (rear_center_role);
- slv2_value_free (rear_left_role);
- slv2_value_free (rear_right_role);
- slv2_value_free (lfe_role);
- slv2_value_free (center_left_role);
- slv2_value_free (center_right_role);
- slv2_value_free (side_left_role);
- slv2_value_free (side_right_role);
+ lilv_node_free (center_role);
+ lilv_node_free (left_role);
+ lilv_node_free (right_role);
+ lilv_node_free (rear_center_role);
+ lilv_node_free (rear_left_role);
+ lilv_node_free (rear_right_role);
+ lilv_node_free (lfe_role);
+ lilv_node_free (center_left_role);
+ lilv_node_free (center_right_role);
+ lilv_node_free (side_left_role);
+ lilv_node_free (side_right_role);
- slv2_world_free (world);
+ lilv_world_free (world);
}
GST_PLUGIN_DEFINE (GST_VERSION_MAJOR,
diff --git a/ext/lv2/gstlv2.h b/ext/lv2/gstlv2.h
index 6f0b466..177f9b2 100644
--- a/ext/lv2/gstlv2.h
+++ b/ext/lv2/gstlv2.h
@@ -1,7 +1,8 @@
/* GStreamer
- * Copyright (C) <1999> Erik Walthinsen <omega@cse.ogi.edu>
- *
- * gstladspa.h: Header for LV2 plugin
+ * Copyright (C) 1999 Erik Walthinsen <omega@cse.ogi.edu>
+ * 2001 Steve Baker <stevebaker_org@yahoo.co.uk>
+ * 2003 Andy Wingo <wingo at pobox.com>
+ * 2016 Thibault Saunier <thibault.saunier@collabora.com>
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Library General Public
@@ -19,77 +20,51 @@
* Boston, MA 02110-1301, USA.
*/
-
#ifndef __GST_LV2_H__
#define __GST_LV2_H__
-
-#include <slv2/slv2.h>
-
+#include <lilv/lilv.h>
#include <gst/gst.h>
-#include <gst/signalprocessor/gstsignalprocessor.h>
+#include "gstlv2utils.h"
+LilvWorld *world;
+LilvNode *atom_class;
+LilvNode *audio_class;
+LilvNode *control_class;
+LilvNode *cv_class;
+LilvNode *event_class;
+LilvNode *input_class;
+LilvNode *output_class;
+LilvNode *preset_class;
+LilvNode *state_iface;
+LilvNode *state_uri;
-G_BEGIN_DECLS
+LilvNode *integer_prop;
+LilvNode *toggled_prop;
+LilvNode *designation_pred;
+LilvNode *in_place_broken_pred;
+LilvNode *optional_pred;
+LilvNode *group_pred;
+LilvNode *supports_event_pred;
+LilvNode *label_pred;
+LilvNode *center_role;
+LilvNode *left_role;
+LilvNode *right_role;
+LilvNode *rear_center_role;
+LilvNode *rear_left_role;
+LilvNode *rear_right_role;
+LilvNode *lfe_role;
+LilvNode *center_left_role;
+LilvNode *center_right_role;
+LilvNode *side_left_role;
+LilvNode *side_right_role;
-typedef struct _lv2_control_info {
- gchar *name;
- gchar *param_name;
- gfloat lowerbound, upperbound;
- gfloat def;
- gboolean lower, upper, samplerate;
- gboolean toggled, logarithmic, integer, writable;
-} lv2_control_info;
+GstStructure *lv2_meta_all;
-
-typedef struct _GstLV2 GstLV2;
-typedef struct _GstLV2Class GstLV2Class;
-typedef struct _GstLV2Group GstLV2Group;
-typedef struct _GstLV2Port GstLV2Port;
-
-
-struct _GstLV2 {
- GstSignalProcessor parent;
-
- SLV2Plugin plugin;
- SLV2Instance instance;
-
- gboolean activated;
-};
-
-struct _GstLV2Group {
- SLV2Value uri; /**< RDF resource (URI or blank node) */
- guint pad; /**< Gst pad index */
- SLV2Value symbol; /**< Gst pad name / LV2 group symbol */
- GArray *ports; /**< Array of GstLV2Port */
- gboolean has_roles; /**< TRUE iff all ports have a known role */
-};
-
-struct _GstLV2Port {
- gint index; /**< LV2 port index (on LV2 plugin) */
- gint pad; /**< Gst pad index (iff not part of a group) */
- SLV2Value role; /**< Channel position / port role */
- GstAudioChannelPosition position; /**< Channel position */
-};
-
-struct _GstLV2Class {
- GstSignalProcessorClass parent_class;
-
- SLV2Plugin plugin;
-
- GArray *in_groups; /**< Array of GstLV2Group */
- GArray *out_groups; /**< Array of GstLV2Group */
- GArray *audio_in_ports; /**< Array of GstLV2Port */
- GArray *audio_out_ports; /**< Array of GstLV2Port */
- GArray *control_in_ports; /**< Array of GstLV2Port */
- GArray *control_out_ports; /**< Array of GstLV2Port */
-
-};
-
-
-G_END_DECLS
-
-
+void gst_lv2_filter_register_element (GstPlugin *plugin,
+ GstStructure * lv2_meta);
+void gst_lv2_source_register_element (GstPlugin *plugin,
+ GstStructure * lv2_meta);
#endif /* __GST_LV2_H__ */
diff --git a/ext/lv2/gstlv2filter.c b/ext/lv2/gstlv2filter.c
new file mode 100644
index 0000000..0ef6ade
--- /dev/null
+++ b/ext/lv2/gstlv2filter.c
@@ -0,0 +1,568 @@
+/* GStreamer
+ * Copyright (C) 1999 Erik Walthinsen <omega@cse.ogi.edu>
+ * 2001 Steve Baker <stevebaker_org@yahoo.co.uk>
+ * 2003 Andy Wingo <wingo at pobox.com>
+ * 2016 Thibault Saunier <thibault.saunier@collabora.com>
+ *
+ * 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.
+ */
+
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+#include "gstlv2.h"
+#include "gstlv2utils.h"
+
+#include <string.h>
+#include <math.h>
+#include <glib.h>
+
+#include <lilv/lilv.h>
+
+#include <gst/audio/audio.h>
+#include <gst/audio/gstaudiofilter.h>
+#include <gst/audio/audio-channels.h>
+
+GST_DEBUG_CATEGORY_EXTERN (lv2_debug);
+#define GST_CAT_DEFAULT lv2_debug
+
+typedef struct _lv2_control_info
+{
+ gchar *name;
+ gchar *param_name;
+ gfloat lowerbound, upperbound;
+ gfloat def;
+ gboolean lower, upper, samplerate;
+ gboolean toggled, logarithmic, integer, writable;
+} lv2_control_info;
+
+
+typedef struct _GstLV2Filter GstLV2Filter;
+typedef struct _GstLV2FilterClass GstLV2FilterClass;
+
+
+struct _GstLV2Filter
+{
+ GstAudioFilter parent;
+
+ GstLV2 lv2;
+};
+
+struct _GstLV2FilterClass
+{
+ GstAudioFilterClass parent_class;
+
+ GstLV2Class lv2;
+};
+
+static GstAudioFilter *parent_class = NULL;
+
+/* preset interface */
+
+static gchar **
+gst_lv2_filter_get_preset_names (GstPreset * preset)
+{
+ GstLV2Filter *self = (GstLV2Filter *) preset;
+
+ return gst_lv2_get_preset_names (&self->lv2, (GstObject *) self);
+}
+
+static gboolean
+gst_lv2_filter_load_preset (GstPreset * preset, const gchar * name)
+{
+ GstLV2Filter *self = (GstLV2Filter *) preset;
+
+ return gst_lv2_load_preset (&self->lv2, (GstObject *) self, name);
+}
+
+static gboolean
+gst_lv2_filter_save_preset (GstPreset * preset, const gchar * name)
+{
+ GstLV2Filter *self = (GstLV2Filter *) preset;
+
+ return gst_lv2_save_preset (&self->lv2, (GstObject *) self, name);
+}
+
+static gboolean
+gst_lv2_filter_rename_preset (GstPreset * preset, const gchar * old_name,
+ const gchar * new_name)
+{
+ return FALSE;
+}
+
+static gboolean
+gst_lv2_filter_delete_preset (GstPreset * preset, const gchar * name)
+{
+ GstLV2Filter *self = (GstLV2Filter *) preset;
+
+ return gst_lv2_delete_preset (&self->lv2, (GstObject *) self, name);
+}
+
+static gboolean
+gst_lv2_filter_set_meta (GstPreset * preset, const gchar * name,
+ const gchar * tag, const gchar * value)
+{
+ return FALSE;
+}
+
+static gboolean
+gst_lv2_filter_get_meta (GstPreset * preset, const gchar * name,
+ const gchar * tag, gchar ** value)
+{
+ *value = NULL;
+ return FALSE;
+}
+
+static void
+gst_lv2_filter_preset_interface_init (gpointer g_iface, gpointer iface_data)
+{
+ GstPresetInterface *iface = g_iface;
+
+ iface->get_preset_names = gst_lv2_filter_get_preset_names;
+ iface->load_preset = gst_lv2_filter_load_preset;
+ iface->save_preset = gst_lv2_filter_save_preset;
+ iface->rename_preset = gst_lv2_filter_rename_preset;
+ iface->delete_preset = gst_lv2_filter_delete_preset;
+ iface->set_meta = gst_lv2_filter_set_meta;
+ iface->get_meta = gst_lv2_filter_get_meta;
+}
+
+
+/* GObject vmethods implementation */
+static void
+gst_lv2_filter_set_property (GObject * object, guint prop_id,
+ const GValue * value, GParamSpec * pspec)
+{
+ GstLV2Filter *self = (GstLV2Filter *) object;
+
+ gst_lv2_object_set_property (&self->lv2, object, prop_id, value, pspec);
+}
+
+static void
+gst_lv2_filter_get_property (GObject * object, guint prop_id, GValue * value,
+ GParamSpec * pspec)
+{
+ GstLV2Filter *self = (GstLV2Filter *) object;
+
+ gst_lv2_object_get_property (&self->lv2, object, prop_id, value, pspec);
+}
+
+static void
+gst_lv2_filter_finalize (GObject * object)
+{
+ GstLV2Filter *self = (GstLV2Filter *) object;
+
+ gst_lv2_finalize (&self->lv2);
+
+ G_OBJECT_CLASS (parent_class)->finalize (object);
+}
+
+#if 0
+/* Convert an LV2 port role to a Gst channel positon
+ * WARNING: If the group has only a single port,
+ * GST_AUDIO_CHANNEL_POSITION_FRONT_CENTER will be returned for pg:centerRole
+ * (which is used by LV2 for mono groups), but this is not correct. In this
+ * case the value must be changed to GST_AUDIO_CHANNEL_POSITION_FRONT_MONO
+ * (this can't be done by this function because this information isn't known
+ * at the time it is used).
+ */
+static GstAudioChannelPosition
+gst_lv2_filter_role_to_position (LilvNode * role)
+{
+ /* Front. Mono and left/right are mututally exclusive */
+ if (lilv_node_equals (role, center_role)) {
+
+ return GST_AUDIO_CHANNEL_POSITION_FRONT_CENTER;
+ } else if (lilv_node_equals (role, left_role)) {
+ return GST_AUDIO_CHANNEL_POSITION_FRONT_LEFT;
+ } else if (lilv_node_equals (role, right_role)) {
+ return GST_AUDIO_CHANNEL_POSITION_FRONT_RIGHT;
+
+ /* Rear. Left/right and center are mututally exclusive */
+ } else if (lilv_node_equals (role, rear_center_role)) {
+ return GST_AUDIO_CHANNEL_POSITION_REAR_CENTER;
+ } else if (lilv_node_equals (role, rear_left_role)) {
+ return GST_AUDIO_CHANNEL_POSITION_REAR_LEFT;
+ } else if (lilv_node_equals (role, rear_right_role)) {
+ return GST_AUDIO_CHANNEL_POSITION_REAR_RIGHT;
+
+ /* Subwoofer/low-frequency-effects */
+ } else if (lilv_node_equals (role, lfe_role)) {
+ return GST_AUDIO_CHANNEL_POSITION_LFE1;
+
+ /* Center front speakers. Center and left/right_of_center
+ * are mutually exclusive */
+ } else if (lilv_node_equals (role, center_left_role)) {
+ return GST_AUDIO_CHANNEL_POSITION_FRONT_LEFT_OF_CENTER;
+ } else if (lilv_node_equals (role, center_right_role)) {
+ return GST_AUDIO_CHANNEL_POSITION_FRONT_RIGHT_OF_CENTER;
+
+ /* sides */
+ } else if (lilv_node_equals (role, side_left_role)) {
+ return GST_AUDIO_CHANNEL_POSITION_SIDE_LEFT;
+ } else if (lilv_node_equals (role, side_right_role)) {
+ return GST_AUDIO_CHANNEL_POSITION_SIDE_RIGHT;
+ }
+
+ return GST_AUDIO_CHANNEL_POSITION_INVALID;
+}
+
+static GstAudioChannelPosition *
+gst_lv2_filter_build_positions (GstLV2Group * group)
+{
+ GstAudioChannelPosition *positions = NULL;
+
+ /* don't do anything for mono */
+ if (group->ports->len > 1) {
+ gint i;
+
+ positions = g_new (GstAudioChannelPosition, group->ports->len);
+ for (i = 0; i < group->ports->len; ++i)
+ positions[i] = g_array_index (group->ports, GstLV2Port, i).position;
+ }
+ return positions;
+}
+#endif
+
+/* Find and return the group @a uri in @a groups, or NULL if not found */
+static void
+gst_lv2_filter_type_class_add_pad_templates (GstLV2FilterClass * klass)
+{
+ GstCaps *srccaps, *sinkcaps;
+ GstPadTemplate *pad_template;
+ GstElementClass *elem_class = GST_ELEMENT_CLASS (klass);
+
+ gint in_channels = 1, out_channels = 1;
+
+ in_channels = klass->lv2.in_group.ports->len;
+
+ out_channels = klass->lv2.out_group.ports->len;
+
+ /* FIXME Implement deintereleaved audio support */
+ sinkcaps = gst_caps_new_simple ("audio/x-raw",
+ "format", G_TYPE_STRING, GST_AUDIO_NE (F32),
+ "channels", G_TYPE_INT, in_channels,
+ "rate", GST_TYPE_INT_RANGE, 1, G_MAXINT,
+ "layout", G_TYPE_STRING, "interleaved", NULL);
+
+ srccaps = gst_caps_new_simple ("audio/x-raw",
+ "format", G_TYPE_STRING, GST_AUDIO_NE (F32),
+ "channels", G_TYPE_INT, out_channels,
+ "rate", GST_TYPE_INT_RANGE, 1, G_MAXINT,
+ "layout", G_TYPE_STRING, "interleaved", NULL);
+
+ pad_template =
+ gst_pad_template_new (GST_BASE_TRANSFORM_SINK_NAME, GST_PAD_SINK,
+ GST_PAD_ALWAYS, sinkcaps);
+ gst_element_class_add_pad_template (elem_class, pad_template);
+
+ pad_template =
+ gst_pad_template_new (GST_BASE_TRANSFORM_SRC_NAME, GST_PAD_SRC,
+ GST_PAD_ALWAYS, srccaps);
+ gst_element_class_add_pad_template (elem_class, pad_template);
+
+ gst_caps_unref (sinkcaps);
+ gst_caps_unref (srccaps);
+}
+
+static gboolean
+gst_lv2_filter_setup (GstAudioFilter * gsp, const GstAudioInfo * info)
+{
+ GstLV2Filter *self = (GstLV2Filter *) gsp;
+
+ g_return_val_if_fail (self->lv2.activated == FALSE, FALSE);
+
+ GST_DEBUG_OBJECT (self, "instantiating the plugin at %d Hz",
+ GST_AUDIO_INFO_RATE (info));
+
+ if (!gst_lv2_setup (&self->lv2, GST_AUDIO_INFO_RATE (info)))
+ goto no_instance;
+
+ /* FIXME Handle audio channel positionning while negotiating CAPS */
+#if 0
+ gint i;
+ /* set input group pad audio channel position */
+ for (i = 0; i < oclass->lv2.in_groups->len; ++i) {
+ group = &g_array_index (oclass->lv2.in_groups, GstLV2Group, i);
+ if (group->has_roles) {
+ if ((positions = gst_lv2_filter_build_positions (group))) {
+ if ((pad = gst_element_get_static_pad (GST_ELEMENT (gsp),
+ lilv_node_as_string (group->symbol)))) {
+ GST_INFO_OBJECT (self, "set audio channel positions on sink pad %s",
+ lilv_node_as_string (group->symbol));
+ s = gst_caps_get_structure (caps, 0);
+ gst_audio_set_channel_positions (s, positions);
+ gst_object_unref (pad);
+ }
+ g_free (positions);
+ positions = NULL;
+ }
+ }
+ }
+ /* set output group pad audio channel position */
+ for (i = 0; i < oclass->lv2.out_groups->len; ++i) {
+ group = &g_array_index (oclass->lv2.out_groups, GstLV2Group, i);
+ if (group->has_roles) {
+ if ((positions = gst_lv2_filter_build_positions (group))) {
+ if ((pad = gst_element_get_static_pad (GST_ELEMENT (gsp),
+ lilv_node_as_string (group->symbol)))) {
+ GST_INFO_OBJECT (self, "set audio channel positions on src pad %s",
+ lilv_node_as_string (group->symbol));
+ s = gst_caps_get_structure (caps, 0);
+ gst_audio_set_channel_positions (s, positions);
+ gst_object_unref (pad);
+ }
+ g_free (positions);
+ positions = NULL;
+ }
+ }
+ }
+#endif
+
+ return TRUE;
+
+no_instance:
+ {
+ GST_ERROR_OBJECT (gsp, "could not create instance");
+ return FALSE;
+ }
+}
+
+static gboolean
+gst_lv2_filter_stop (GstBaseTransform * transform)
+{
+ GstLV2Filter *lv2 = (GstLV2Filter *) transform;
+
+ return gst_lv2_cleanup (&lv2->lv2, (GstObject *) lv2);
+}
+
+static inline void
+gst_lv2_filter_deinterleave_data (guint n_channels, gfloat * outdata,
+ guint samples, gfloat * indata)
+{
+ guint i, j;
+
+ for (i = 0; i < n_channels; i++)
+ for (j = 0; j < samples; j++)
+ outdata[i * samples + j] = indata[j * n_channels + i];
+}
+
+static inline void
+gst_lv2_filter_interleave_data (guint n_channels, gfloat * outdata,
+ guint samples, gfloat * indata)
+{
+ guint i, j;
+
+ for (i = 0; i < n_channels; i++)
+ for (j = 0; j < samples; j++) {
+ outdata[j * n_channels + i] = indata[i * samples + j];
+ }
+}
+
+static GstFlowReturn
+gst_lv2_filter_transform_data (GstLV2Filter * self,
+ GstMapInfo * in_map, GstMapInfo * out_map)
+{
+ GstLV2FilterClass *klass =
+ (GstLV2FilterClass *) GST_AUDIO_FILTER_GET_CLASS (self);
+ GstLV2Class *lv2_class = &klass->lv2;
+ GstLV2Group *lv2_group;
+ GstLV2Port *lv2_port;
+ guint j, k, l, nframes, samples, out_samples;
+ gfloat *in = NULL, *out = NULL, *cv = NULL, *mem;
+ gfloat val;
+
+ nframes = in_map->size / sizeof (float);
+
+ /* multi channel inputs */
+ lv2_group = &lv2_class->in_group;
+ samples = nframes / lv2_group->ports->len;
+ in = g_new0 (gfloat, nframes);
+ GST_LOG_OBJECT (self, "in : samples=%u, nframes=%u, ports=%d", samples,
+ nframes, lv2_group->ports->len);
+
+ if (lv2_group->ports->len > 1)
+ gst_lv2_filter_deinterleave_data (lv2_group->ports->len, in,
+ samples, (gfloat *) in_map->data);
+
+ for (j = 0; j < lv2_group->ports->len; ++j) {
+ lv2_port = &g_array_index (lv2_group->ports, GstLV2Port, j);
+ lilv_instance_connect_port (self->lv2.instance, lv2_port->index,
+ in + (j * samples));
+ }
+
+ /* multi channel outputs */
+ lv2_group = &lv2_class->out_group;
+ out_samples = nframes / lv2_group->ports->len;
+ out = g_new0 (gfloat, samples * lv2_group->ports->len);
+ GST_LOG_OBJECT (self, "out: samples=%u, nframes=%u, ports=%d", out_samples,
+ nframes, lv2_group->ports->len);
+ for (j = 0; j < lv2_group->ports->len; ++j) {
+ lv2_port = &g_array_index (lv2_group->ports, GstLV2Port, j);
+ lilv_instance_connect_port (self->lv2.instance, lv2_port->index,
+ out + (j * out_samples));
+ }
+
+ /* cv ports */
+ cv = g_new (gfloat, samples * lv2_class->num_cv_in);
+ for (j = k = 0; j < lv2_class->control_in_ports->len; j++) {
+ lv2_port = &g_array_index (lv2_class->control_in_ports, GstLV2Port, j);
+ if (lv2_port->type != GST_LV2_PORT_CV)
+ continue;
+
+ mem = cv + (k * samples);
+ val = self->lv2.ports.control.in[j];
+ /* FIXME: use gst_control_binding_get_value_array */
+ for (l = 0; l < samples; l++)
+ mem[l] = val;
+ lilv_instance_connect_port (self->lv2.instance, lv2_port->index, mem);
+ k++;
+ }
+
+ lilv_instance_run (self->lv2.instance, samples);
+
+ if (lv2_group->ports->len > 1)
+ gst_lv2_filter_interleave_data (lv2_group->ports->len,
+ (gfloat *) out_map->data, out_samples, out);
+ g_free (out);
+ g_free (in);
+ g_free (cv);
+
+ return GST_FLOW_OK;
+}
+
+static GstFlowReturn
+gst_lv2_filter_transform_ip (GstBaseTransform * transform, GstBuffer * buf)
+{
+ GstFlowReturn ret;
+ GstMapInfo map;
+
+ gst_buffer_map (buf, &map, GST_MAP_READWRITE);
+
+ ret = gst_lv2_filter_transform_data ((GstLV2Filter *) transform, &map, &map);
+
+ gst_buffer_unmap (buf, &map);
+
+ return ret;
+}
+
+static GstFlowReturn
+gst_lv2_filter_transform (GstBaseTransform * transform,
+ GstBuffer * inbuf, GstBuffer * outbuf)
+{
+ GstMapInfo in_map, out_map;
+ GstFlowReturn ret;
+
+ gst_buffer_map (inbuf, &in_map, GST_MAP_READ);
+ gst_buffer_map (outbuf, &out_map, GST_MAP_WRITE);
+
+ ret = gst_lv2_filter_transform_data ((GstLV2Filter *) transform,
+ &in_map, &out_map);
+
+ gst_buffer_unmap (inbuf, &in_map);
+ gst_buffer_unmap (outbuf, &out_map);
+
+ return ret;
+}
+
+static void
+gst_lv2_filter_base_init (gpointer g_class)
+{
+ GstLV2FilterClass *klass = (GstLV2FilterClass *) g_class;
+ GstElementClass *element_class = GST_ELEMENT_CLASS (g_class);
+
+ gst_lv2_class_init (&klass->lv2, G_TYPE_FROM_CLASS (klass));
+
+ gst_lv2_element_class_set_metadata (&klass->lv2, element_class,
+ "Filter/Effect/Audio/LV2");
+
+ gst_lv2_filter_type_class_add_pad_templates (klass);
+}
+
+static void
+gst_lv2_filter_base_finalize (GstLV2FilterClass * lv2_class)
+{
+ gst_lv2_class_finalize (&lv2_class->lv2);
+}
+
+static void
+gst_lv2_filter_class_init (GstLV2FilterClass * klass)
+{
+ GObjectClass *gobject_class = (GObjectClass *) klass;
+ GstBaseTransformClass *transform_class = GST_BASE_TRANSFORM_CLASS (klass);
+ GstAudioFilterClass *audiofilter_class = GST_AUDIO_FILTER_CLASS (klass);
+
+ GST_DEBUG ("class_init %p", klass);
+
+ gobject_class->set_property = gst_lv2_filter_set_property;
+ gobject_class->get_property = gst_lv2_filter_get_property;
+ gobject_class->finalize = gst_lv2_filter_finalize;
+
+ audiofilter_class->setup = gst_lv2_filter_setup;
+
+ transform_class->stop = gst_lv2_filter_stop;
+ transform_class->transform = gst_lv2_filter_transform;
+ transform_class->transform_ip = gst_lv2_filter_transform_ip;
+
+ gst_lv2_class_install_properties (&klass->lv2, gobject_class, 1);
+}
+
+static void
+gst_lv2_filter_init (GstLV2Filter * self, GstLV2FilterClass * klass)
+{
+ gst_lv2_init (&self->lv2, &klass->lv2);
+
+ if (!lilv_plugin_has_feature (klass->lv2.plugin, in_place_broken_pred))
+ gst_base_transform_set_in_place (GST_BASE_TRANSFORM (self), TRUE);
+}
+
+void
+gst_lv2_filter_register_element (GstPlugin * plugin, GstStructure * lv2_meta)
+{
+ GTypeInfo info = {
+ sizeof (GstLV2FilterClass),
+ (GBaseInitFunc) gst_lv2_filter_base_init,
+ (GBaseFinalizeFunc) gst_lv2_filter_base_finalize,
+ (GClassInitFunc) gst_lv2_filter_class_init,
+ NULL,
+ NULL,
+ sizeof (GstLV2Filter),
+ 0,
+ (GInstanceInitFunc) gst_lv2_filter_init,
+ };
+ const gchar *type_name =
+ gst_structure_get_string (lv2_meta, "element-type-name");
+ GType element_type =
+ g_type_register_static (GST_TYPE_AUDIO_FILTER, type_name, &info, 0);
+ gboolean can_do_presets;
+
+ /* register interfaces */
+ gst_structure_get_boolean (lv2_meta, "can-do-presets", &can_do_presets);
+ if (can_do_presets) {
+ const GInterfaceInfo preset_interface_info = {
+ (GInterfaceInitFunc) gst_lv2_filter_preset_interface_init,
+ NULL,
+ NULL
+ };
+ g_type_add_interface_static (element_type, GST_TYPE_PRESET,
+ &preset_interface_info);
+ }
+
+ gst_element_register (plugin, type_name, GST_RANK_NONE, element_type);
+
+ if (!parent_class)
+ parent_class = g_type_class_ref (GST_TYPE_AUDIO_FILTER);
+}
diff --git a/ext/lv2/gstlv2source.c b/ext/lv2/gstlv2source.c
new file mode 100644
index 0000000..56f9911
--- /dev/null
+++ b/ext/lv2/gstlv2source.c
@@ -0,0 +1,755 @@
+/* GStreamer
+ * Copyright (C) 1999 Erik Walthinsen <omega@cse.ogi.edu>
+ * 2001 Steve Baker <stevebaker_org@yahoo.co.uk>
+ * 2003 Andy Wingo <wingo at pobox.com>
+ * 2016 Stefan Sauer <ensonic@users.sf.net>
+ *
+ * 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.
+ */
+
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+#include "gstlv2.h"
+#include "gstlv2utils.h"
+
+#include <string.h>
+#include <math.h>
+#include <glib.h>
+
+#include <lilv/lilv.h>
+
+#include <gst/audio/audio.h>
+#include <gst/audio/audio-channels.h>
+#include <gst/base/gstbasesrc.h>
+
+GST_DEBUG_CATEGORY_EXTERN (lv2_debug);
+#define GST_CAT_DEFAULT lv2_debug
+
+
+typedef struct _GstLV2Source GstLV2Source;
+typedef struct _GstLV2SourceClass GstLV2SourceClass;
+
+struct _GstLV2Source
+{
+ GstBaseSrc parent;
+
+ GstLV2 lv2;
+
+ /* audio parameters */
+ GstAudioInfo info;
+ gint samples_per_buffer;
+
+ /*< private > */
+ gboolean tags_pushed; /* send tags just once ? */
+ GstClockTimeDiff timestamp_offset; /* base offset */
+ GstClockTime next_time; /* next timestamp */
+ gint64 next_sample; /* next sample to send */
+ gint64 next_byte; /* next byte to send */
+ gint64 sample_stop;
+ gboolean check_seek_stop;
+ gboolean eos_reached;
+ gint generate_samples_per_buffer; /* used to generate a partial buffer */
+ gboolean can_activate_pull;
+ gboolean reverse; /* play backwards */
+};
+
+struct _GstLV2SourceClass
+{
+ GstBaseSrcClass parent_class;
+
+ GstLV2Class lv2;
+};
+
+enum
+{
+ GST_LV2_SOURCE_PROP_0,
+ GST_LV2_SOURCE_PROP_SAMPLES_PER_BUFFER,
+ GST_LV2_SOURCE_PROP_IS_LIVE,
+ GST_LV2_SOURCE_PROP_TIMESTAMP_OFFSET,
+ GST_LV2_SOURCE_PROP_CAN_ACTIVATE_PUSH,
+ GST_LV2_SOURCE_PROP_CAN_ACTIVATE_PULL,
+ GST_LV2_SOURCE_PROP_LAST
+};
+
+static GstBaseSrc *parent_class = NULL;
+
+/* preset interface */
+
+static gchar **
+gst_lv2_source_get_preset_names (GstPreset * preset)
+{
+ GstLV2Source *self = (GstLV2Source *) preset;
+
+ return gst_lv2_get_preset_names (&self->lv2, (GstObject *) self);
+}
+
+static gboolean
+gst_lv2_source_load_preset (GstPreset * preset, const gchar * name)
+{
+ GstLV2Source *self = (GstLV2Source *) preset;
+
+ return gst_lv2_load_preset (&self->lv2, (GstObject *) self, name);
+}
+
+static gboolean
+gst_lv2_source_save_preset (GstPreset * preset, const gchar * name)
+{
+ GstLV2Source *self = (GstLV2Source *) preset;
+
+ return gst_lv2_save_preset (&self->lv2, (GstObject *) self, name);
+}
+
+static gboolean
+gst_lv2_source_rename_preset (GstPreset * preset, const gchar * old_name,
+ const gchar * new_name)
+{
+ return FALSE;
+}
+
+static gboolean
+gst_lv2_source_delete_preset (GstPreset * preset, const gchar * name)
+{
+ GstLV2Source *self = (GstLV2Source *) preset;
+
+ return gst_lv2_delete_preset (&self->lv2, (GstObject *) self, name);
+}
+
+static gboolean
+gst_lv2_source_set_meta (GstPreset * preset, const gchar * name,
+ const gchar * tag, const gchar * value)
+{
+ return FALSE;
+}
+
+static gboolean
+gst_lv2_source_get_meta (GstPreset * preset, const gchar * name,
+ const gchar * tag, gchar ** value)
+{
+ *value = NULL;
+ return FALSE;
+}
+
+static void
+gst_lv2_source_preset_interface_init (gpointer g_iface, gpointer iface_data)
+{
+ GstPresetInterface *iface = g_iface;
+
+ iface->get_preset_names = gst_lv2_source_get_preset_names;
+ iface->load_preset = gst_lv2_source_load_preset;
+ iface->save_preset = gst_lv2_source_save_preset;
+ iface->rename_preset = gst_lv2_source_rename_preset;
+ iface->delete_preset = gst_lv2_source_delete_preset;
+ iface->set_meta = gst_lv2_source_set_meta;
+ iface->get_meta = gst_lv2_source_get_meta;
+}
+
+
+/* GstBasesrc vmethods implementation */
+
+static gboolean
+gst_lv2_source_set_caps (GstBaseSrc * base, GstCaps * caps)
+{
+ GstLV2Source *lv2 = (GstLV2Source *) base;
+ GstAudioInfo info;
+
+ if (!gst_audio_info_from_caps (&info, caps)) {
+ GST_ERROR_OBJECT (base, "received invalid caps");
+ return FALSE;
+ }
+
+ GST_DEBUG_OBJECT (lv2, "negotiated to caps %" GST_PTR_FORMAT, caps);
+
+ lv2->info = info;
+
+ gst_base_src_set_blocksize (base,
+ GST_AUDIO_INFO_BPF (&info) * lv2->samples_per_buffer);
+
+ if (!gst_lv2_setup (&lv2->lv2, GST_AUDIO_INFO_RATE (&info)))
+ goto no_instance;
+
+ return TRUE;
+
+no_instance:
+ {
+ GST_ERROR_OBJECT (lv2, "could not create instance");
+ return FALSE;
+ }
+}
+
+static GstCaps *
+gst_lv2_source_fixate (GstBaseSrc * base, GstCaps * caps)
+{
+ GstLV2Source *lv2 = (GstLV2Source *) base;
+ GstStructure *structure;
+
+ caps = gst_caps_make_writable (caps);
+
+ structure = gst_caps_get_structure (caps, 0);
+
+ GST_DEBUG_OBJECT (lv2, "fixating samplerate to %d", GST_AUDIO_DEF_RATE);
+
+ gst_structure_fixate_field_nearest_int (structure, "rate",
+ GST_AUDIO_DEF_RATE);
+
+ gst_structure_fixate_field_string (structure, "format", GST_AUDIO_NE (F32));
+
+ gst_structure_fixate_field_nearest_int (structure, "channels",
+ lv2->lv2.klass->out_group.ports->len);
+
+ caps = GST_BASE_SRC_CLASS (parent_class)->fixate (base, caps);
+
+ return caps;
+}
+
+static void
+gst_lv2_source_get_times (GstBaseSrc * base, GstBuffer * buffer,
+ GstClockTime * start, GstClockTime * end)
+{
+ /* for live sources, sync on the timestamp of the buffer */
+ if (gst_base_src_is_live (base)) {
+ GstClockTime timestamp = GST_BUFFER_TIMESTAMP (buffer);
+
+ if (GST_CLOCK_TIME_IS_VALID (timestamp)) {
+ /* get duration to calculate end time */
+ GstClockTime duration = GST_BUFFER_DURATION (buffer);
+
+ if (GST_CLOCK_TIME_IS_VALID (duration)) {
+ *end = timestamp + duration;
+ }
+ *start = timestamp;
+ }
+ } else {
+ *start = -1;
+ *end = -1;
+ }
+}
+
+/* seek to time, will be called when we operate in push mode. In pull mode we
+ * get the requested byte offset. */
+static gboolean
+gst_lv2_source_do_seek (GstBaseSrc * base, GstSegment * segment)
+{
+ GstLV2Source *lv2 = (GstLV2Source *) base;
+ GstClockTime time;
+ gint samplerate, bpf;
+ gint64 next_sample;
+
+ GST_DEBUG_OBJECT (lv2, "seeking %" GST_SEGMENT_FORMAT, segment);
+
+ time = segment->position;
+ lv2->reverse = (segment->rate < 0.0);
+
+ samplerate = GST_AUDIO_INFO_RATE (&lv2->info);
+ bpf = GST_AUDIO_INFO_BPF (&lv2->info);
+
+ /* now move to the time indicated, don't seek to the sample *after* the time */
+ next_sample = gst_util_uint64_scale_int (time, samplerate, GST_SECOND);
+ lv2->next_byte = next_sample * bpf;
+ if (samplerate == 0)
+ lv2->next_time = 0;
+ else
+ lv2->next_time =
+ gst_util_uint64_scale_round (next_sample, GST_SECOND, samplerate);
+
+ GST_DEBUG_OBJECT (lv2, "seeking next_sample=%" G_GINT64_FORMAT
+ " next_time=%" GST_TIME_FORMAT, next_sample,
+ GST_TIME_ARGS (lv2->next_time));
+
+ g_assert (lv2->next_time <= time);
+
+ lv2->next_sample = next_sample;
+
+ if (!lv2->reverse) {
+ if (GST_CLOCK_TIME_IS_VALID (segment->start)) {
+ segment->time = segment->start;
+ }
+ } else {
+ if (GST_CLOCK_TIME_IS_VALID (segment->stop)) {
+ segment->time = segment->stop;
+ }
+ }
+
+ if (GST_CLOCK_TIME_IS_VALID (segment->stop)) {
+ time = segment->stop;
+ lv2->sample_stop =
+ gst_util_uint64_scale_round (time, samplerate, GST_SECOND);
+ lv2->check_seek_stop = TRUE;
+ } else {
+ lv2->check_seek_stop = FALSE;
+ }
+ lv2->eos_reached = FALSE;
+
+ return TRUE;
+}
+
+static gboolean
+gst_lv2_source_is_seekable (GstBaseSrc * base)
+{
+ /* we're seekable... */
+ return TRUE;
+}
+
+static gboolean
+gst_lv2_source_query (GstBaseSrc * base, GstQuery * query)
+{
+ GstLV2Source *lv2 = (GstLV2Source *) base;
+ gboolean res = FALSE;
+
+ switch (GST_QUERY_TYPE (query)) {
+ case GST_QUERY_CONVERT:
+ {
+ GstFormat src_fmt, dest_fmt;
+ gint64 src_val, dest_val;
+
+ gst_query_parse_convert (query, &src_fmt, &src_val, &dest_fmt, &dest_val);
+
+ if (!gst_audio_info_convert (&lv2->info, src_fmt, src_val, dest_fmt,
+ &dest_val)) {
+ GST_DEBUG_OBJECT (lv2, "query failed");
+ return FALSE;
+ }
+
+ gst_query_set_convert (query, src_fmt, src_val, dest_fmt, dest_val);
+ res = TRUE;
+ break;
+ }
+ case GST_QUERY_SCHEDULING:
+ {
+ /* if we can operate in pull mode */
+ gst_query_set_scheduling (query, GST_SCHEDULING_FLAG_SEEKABLE, 1, -1, 0);
+ gst_query_add_scheduling_mode (query, GST_PAD_MODE_PUSH);
+ if (lv2->can_activate_pull)
+ gst_query_add_scheduling_mode (query, GST_PAD_MODE_PULL);
+
+ res = TRUE;
+ break;
+ }
+ default:
+ res = GST_BASE_SRC_CLASS (parent_class)->query (base, query);
+ break;
+ }
+
+ return res;
+}
+
+static inline void
+gst_lv2_source_interleave_data (guint n_channels, gfloat * outdata,
+ guint samples, gfloat * indata)
+{
+ guint i, j;
+
+ for (i = 0; i < n_channels; i++)
+ for (j = 0; j < samples; j++) {
+ outdata[j * n_channels + i] = indata[i * samples + j];
+ }
+}
+
+static GstFlowReturn
+gst_lv2_source_fill (GstBaseSrc * base, guint64 offset,
+ guint length, GstBuffer * buffer)
+{
+ GstLV2Source *lv2 = (GstLV2Source *) base;
+ GstLV2SourceClass *klass = (GstLV2SourceClass *) GST_BASE_SRC_GET_CLASS (lv2);
+ GstLV2Class *lv2_class = &klass->lv2;
+ GstLV2Group *lv2_group;
+ GstLV2Port *lv2_port;
+ GstClockTime next_time;
+ gint64 next_sample, next_byte;
+ guint bytes, samples;
+ GstElementClass *eclass;
+ GstMapInfo map;
+ gint samplerate, bpf;
+ guint j, k, l;
+ gfloat *out = NULL, *cv = NULL, *mem;
+ gfloat val;
+
+ /* example for tagging generated data */
+ if (!lv2->tags_pushed) {
+ GstTagList *taglist;
+
+ taglist = gst_tag_list_new (GST_TAG_DESCRIPTION, "lv2 wave", NULL);
+
+ eclass = GST_ELEMENT_CLASS (parent_class);
+ if (eclass->send_event)
+ eclass->send_event (GST_ELEMENT (base), gst_event_new_tag (taglist));
+ else
+ gst_tag_list_unref (taglist);
+ lv2->tags_pushed = TRUE;
+ }
+
+ if (lv2->eos_reached) {
+ GST_INFO_OBJECT (lv2, "eos");
+ return GST_FLOW_EOS;
+ }
+
+ samplerate = GST_AUDIO_INFO_RATE (&lv2->info);
+ bpf = GST_AUDIO_INFO_BPF (&lv2->info);
+
+ /* if no length was given, use our default length in samples otherwise convert
+ * the length in bytes to samples. */
+ if (length == -1)
+ samples = lv2->samples_per_buffer;
+ else
+ samples = length / bpf;
+
+ /* if no offset was given, use our next logical byte */
+ if (offset == -1)
+ offset = lv2->next_byte;
+
+ /* now see if we are at the byteoffset we think we are */
+ if (offset != lv2->next_byte) {
+ GST_DEBUG_OBJECT (lv2, "seek to new offset %" G_GUINT64_FORMAT, offset);
+ /* we have a discont in the expected sample offset, do a 'seek' */
+ lv2->next_sample = offset / bpf;
+ lv2->next_time =
+ gst_util_uint64_scale_int (lv2->next_sample, GST_SECOND, samplerate);
+ lv2->next_byte = offset;
+ }
+
+ /* check for eos */
+ if (lv2->check_seek_stop &&
+ (lv2->sample_stop > lv2->next_sample) &&
+ (lv2->sample_stop < lv2->next_sample + samples)
+ ) {
+ /* calculate only partial buffer */
+ lv2->generate_samples_per_buffer = lv2->sample_stop - lv2->next_sample;
+ next_sample = lv2->sample_stop;
+ lv2->eos_reached = TRUE;
+
+ GST_INFO_OBJECT (lv2, "eos reached");
+ } else {
+ /* calculate full buffer */
+ lv2->generate_samples_per_buffer = samples;
+ next_sample = lv2->next_sample + (lv2->reverse ? (-samples) : samples);
+ }
+
+ bytes = lv2->generate_samples_per_buffer * bpf;
+
+ next_byte = lv2->next_byte + (lv2->reverse ? (-bytes) : bytes);
+ next_time = gst_util_uint64_scale_int (next_sample, GST_SECOND, samplerate);
+
+ GST_LOG_OBJECT (lv2, "samplerate %d", samplerate);
+ GST_LOG_OBJECT (lv2,
+ "next_sample %" G_GINT64_FORMAT ", ts %" GST_TIME_FORMAT, next_sample,
+ GST_TIME_ARGS (next_time));
+
+ gst_buffer_set_size (buffer, bytes);
+
+ GST_BUFFER_OFFSET (buffer) = lv2->next_sample;
+ GST_BUFFER_OFFSET_END (buffer) = next_sample;
+ if (!lv2->reverse) {
+ GST_BUFFER_TIMESTAMP (buffer) = lv2->timestamp_offset + lv2->next_time;
+ GST_BUFFER_DURATION (buffer) = next_time - lv2->next_time;
+ } else {
+ GST_BUFFER_TIMESTAMP (buffer) = lv2->timestamp_offset + next_time;
+ GST_BUFFER_DURATION (buffer) = lv2->next_time - next_time;
+ }
+
+ gst_object_sync_values (GST_OBJECT (lv2), GST_BUFFER_TIMESTAMP (buffer));
+
+ lv2->next_time = next_time;
+ lv2->next_sample = next_sample;
+ lv2->next_byte = next_byte;
+
+ GST_LOG_OBJECT (lv2, "generating %u samples at ts %" GST_TIME_FORMAT,
+ samples, GST_TIME_ARGS (GST_BUFFER_TIMESTAMP (buffer)));
+
+ gst_buffer_map (buffer, &map, GST_MAP_WRITE);
+
+ /* multi channel outputs */
+ lv2_group = &lv2_class->out_group;
+ if (lv2_group->ports->len > 1) {
+ out = g_new0 (gfloat, samples * lv2_group->ports->len);
+ for (j = 0; j < lv2_group->ports->len; ++j) {
+ lv2_port = &g_array_index (lv2_group->ports, GstLV2Port, j);
+ lilv_instance_connect_port (lv2->lv2.instance, lv2_port->index,
+ out + (j * samples));
+ GST_LOG_OBJECT (lv2, "connected port %d/%d", j, lv2_group->ports->len);
+ }
+ } else {
+ lv2_port = &g_array_index (lv2_group->ports, GstLV2Port, 0);
+ lilv_instance_connect_port (lv2->lv2.instance, lv2_port->index,
+ (gfloat *) map.data);
+ GST_LOG_OBJECT (lv2, "connected port 0");
+ }
+
+ /* cv ports */
+ cv = g_new (gfloat, samples * lv2_class->num_cv_in);
+ for (j = k = 0; j < lv2_class->control_in_ports->len; j++) {
+ lv2_port = &g_array_index (lv2_class->control_in_ports, GstLV2Port, j);
+ if (lv2_port->type != GST_LV2_PORT_CV)
+ continue;
+
+ mem = cv + (k * samples);
+ val = lv2->lv2.ports.control.in[j];
+ /* FIXME: use gst_control_binding_get_value_array */
+ for (l = 0; l < samples; l++)
+ mem[l] = val;
+ lilv_instance_connect_port (lv2->lv2.instance, lv2_port->index, mem);
+ k++;
+ }
+
+ lilv_instance_run (lv2->lv2.instance, samples);
+
+ if (lv2_group->ports->len > 1) {
+ gst_lv2_source_interleave_data (lv2_group->ports->len,
+ (gfloat *) map.data, samples, out);
+ g_free (out);
+ }
+
+ g_free (cv);
+
+ gst_buffer_unmap (buffer, &map);
+
+ return GST_FLOW_OK;
+}
+
+static gboolean
+gst_lv2_source_start (GstBaseSrc * base)
+{
+ GstLV2Source *lv2 = (GstLV2Source *) base;
+
+ lv2->next_sample = 0;
+ lv2->next_byte = 0;
+ lv2->next_time = 0;
+ lv2->check_seek_stop = FALSE;
+ lv2->eos_reached = FALSE;
+ lv2->tags_pushed = FALSE;
+
+ GST_INFO_OBJECT (base, "starting");
+
+ return TRUE;
+}
+
+static gboolean
+gst_lv2_source_stop (GstBaseSrc * base)
+{
+ GstLV2Source *lv2 = (GstLV2Source *) base;
+
+ GST_INFO_OBJECT (base, "stopping");
+ return gst_lv2_cleanup (&lv2->lv2, (GstObject *) lv2);
+}
+
+/* GObject vmethods implementation */
+static void
+gst_lv2_source_set_property (GObject * object, guint prop_id,
+ const GValue * value, GParamSpec * pspec)
+{
+ GstLV2Source *self = (GstLV2Source *) object;
+
+ switch (prop_id) {
+ case GST_LV2_SOURCE_PROP_SAMPLES_PER_BUFFER:
+ self->samples_per_buffer = g_value_get_int (value);
+ gst_base_src_set_blocksize (GST_BASE_SRC (self),
+ GST_AUDIO_INFO_BPF (&self->info) * self->samples_per_buffer);
+ break;
+ case GST_LV2_SOURCE_PROP_IS_LIVE:
+ gst_base_src_set_live (GST_BASE_SRC (self), g_value_get_boolean (value));
+ break;
+ case GST_LV2_SOURCE_PROP_TIMESTAMP_OFFSET:
+ self->timestamp_offset = g_value_get_int64 (value);
+ break;
+ case GST_LV2_SOURCE_PROP_CAN_ACTIVATE_PUSH:
+ GST_BASE_SRC (self)->can_activate_push = g_value_get_boolean (value);
+ break;
+ case GST_LV2_SOURCE_PROP_CAN_ACTIVATE_PULL:
+ self->can_activate_pull = g_value_get_boolean (value);
+ break;
+ default:
+ gst_lv2_object_set_property (&self->lv2, object, prop_id, value, pspec);
+ break;
+ }
+}
+
+static void
+gst_lv2_source_get_property (GObject * object, guint prop_id, GValue * value,
+ GParamSpec * pspec)
+{
+ GstLV2Source *self = (GstLV2Source *) object;
+
+ switch (prop_id) {
+ case GST_LV2_SOURCE_PROP_SAMPLES_PER_BUFFER:
+ g_value_set_int (value, self->samples_per_buffer);
+ break;
+ case GST_LV2_SOURCE_PROP_IS_LIVE:
+ g_value_set_boolean (value, gst_base_src_is_live (GST_BASE_SRC (self)));
+ break;
+ case GST_LV2_SOURCE_PROP_TIMESTAMP_OFFSET:
+ g_value_set_int64 (value, self->timestamp_offset);
+ break;
+ case GST_LV2_SOURCE_PROP_CAN_ACTIVATE_PUSH:
+ g_value_set_boolean (value, GST_BASE_SRC (self)->can_activate_push);
+ break;
+ case GST_LV2_SOURCE_PROP_CAN_ACTIVATE_PULL:
+ g_value_set_boolean (value, self->can_activate_pull);
+ break;
+ default:
+ gst_lv2_object_get_property (&self->lv2, object, prop_id, value, pspec);
+ break;
+ }
+}
+
+static void
+gst_lv2_source_finalize (GObject * object)
+{
+ GstLV2Source *self = (GstLV2Source *) object;
+
+ gst_lv2_finalize (&self->lv2);
+
+ G_OBJECT_CLASS (parent_class)->finalize (object);
+}
+
+
+static void
+gst_lv2_source_base_init (gpointer g_class)
+{
+ GstLV2SourceClass *klass = (GstLV2SourceClass *) g_class;
+ GstElementClass *element_class = GST_ELEMENT_CLASS (g_class);
+ GstPadTemplate *pad_template;
+ GstCaps *srccaps;
+
+ gst_lv2_class_init (&klass->lv2, G_TYPE_FROM_CLASS (klass));
+
+ gst_lv2_element_class_set_metadata (&klass->lv2, element_class,
+ "Source/Audio/LV2");
+
+ srccaps = gst_caps_new_simple ("audio/x-raw",
+ "format", G_TYPE_STRING, GST_AUDIO_NE (F32),
+ "channels", G_TYPE_INT, klass->lv2.out_group.ports->len,
+ "rate", GST_TYPE_INT_RANGE, 1, G_MAXINT,
+ "layout", G_TYPE_STRING, "interleaved", NULL);
+
+ pad_template =
+ gst_pad_template_new (GST_BASE_TRANSFORM_SRC_NAME, GST_PAD_SRC,
+ GST_PAD_ALWAYS, srccaps);
+ gst_element_class_add_pad_template (element_class, pad_template);
+
+ gst_caps_unref (srccaps);
+}
+
+static void
+gst_lv2_source_base_finalize (GstLV2SourceClass * lv2_class)
+{
+ gst_lv2_class_finalize (&lv2_class->lv2);
+}
+
+static void
+gst_lv2_source_class_init (GstLV2SourceClass * klass)
+{
+ GObjectClass *gobject_class = (GObjectClass *) klass;
+ GstBaseSrcClass *src_class = (GstBaseSrcClass *) klass;
+
+ GST_DEBUG ("class_init %p", klass);
+
+ gobject_class->set_property = gst_lv2_source_set_property;
+ gobject_class->get_property = gst_lv2_source_get_property;
+ gobject_class->finalize = gst_lv2_source_finalize;
+
+ src_class->set_caps = gst_lv2_source_set_caps;
+ src_class->fixate = gst_lv2_source_fixate;
+ src_class->is_seekable = gst_lv2_source_is_seekable;
+ src_class->do_seek = gst_lv2_source_do_seek;
+ src_class->query = gst_lv2_source_query;
+ src_class->get_times = gst_lv2_source_get_times;
+ src_class->start = gst_lv2_source_start;
+ src_class->stop = gst_lv2_source_stop;
+ src_class->fill = gst_lv2_source_fill;
+
+ g_object_class_install_property (gobject_class,
+ GST_LV2_SOURCE_PROP_SAMPLES_PER_BUFFER,
+ g_param_spec_int ("samplesperbuffer", "Samples per buffer",
+ "Number of samples in each outgoing buffer", 1, G_MAXINT, 1024,
+ G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
+
+ g_object_class_install_property (gobject_class, GST_LV2_SOURCE_PROP_IS_LIVE,
+ g_param_spec_boolean ("is-live", "Is Live",
+ "Whether to act as a live source", FALSE,
+ G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
+
+ g_object_class_install_property (gobject_class,
+ GST_LV2_SOURCE_PROP_TIMESTAMP_OFFSET,
+ g_param_spec_int64 ("timestamp-offset", "Timestamp offset",
+ "An offset added to timestamps set on buffers (in ns)", G_MININT64,
+ G_MAXINT64, G_GINT64_CONSTANT (0),
+ G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
+
+ g_object_class_install_property (gobject_class,
+ GST_LV2_SOURCE_PROP_CAN_ACTIVATE_PUSH,
+ g_param_spec_boolean ("can-activate-push", "Can activate push",
+ "Can activate in push mode", TRUE,
+ G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
+
+ g_object_class_install_property (gobject_class,
+ GST_LV2_SOURCE_PROP_CAN_ACTIVATE_PULL,
+ g_param_spec_boolean ("can-activate-pull", "Can activate pull",
+ "Can activate in pull mode", FALSE,
+ G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
+
+ gst_lv2_class_install_properties (&klass->lv2, gobject_class,
+ GST_LV2_SOURCE_PROP_LAST);
+}
+
+static void
+gst_lv2_source_init (GstLV2Source * self, GstLV2SourceClass * klass)
+{
+ gst_lv2_init (&self->lv2, &klass->lv2);
+
+ gst_base_src_set_format (GST_BASE_SRC (self), GST_FORMAT_TIME);
+ gst_base_src_set_blocksize (GST_BASE_SRC (self), -1);
+
+ self->samples_per_buffer = 1024;
+ self->generate_samples_per_buffer = self->samples_per_buffer;
+}
+
+void
+gst_lv2_source_register_element (GstPlugin * plugin, GstStructure * lv2_meta)
+{
+ GTypeInfo info = {
+ sizeof (GstLV2SourceClass),
+ (GBaseInitFunc) gst_lv2_source_base_init,
+ (GBaseFinalizeFunc) gst_lv2_source_base_finalize,
+ (GClassInitFunc) gst_lv2_source_class_init,
+ NULL,
+ NULL,
+ sizeof (GstLV2Source),
+ 0,
+ (GInstanceInitFunc) gst_lv2_source_init,
+ };
+ const gchar *type_name =
+ gst_structure_get_string (lv2_meta, "element-type-name");
+ GType element_type =
+ g_type_register_static (GST_TYPE_BASE_SRC, type_name, &info, 0);
+ gboolean can_do_presets;
+
+ /* register interfaces */
+ gst_structure_get_boolean (lv2_meta, "can-do-presets", &can_do_presets);
+ if (can_do_presets) {
+ const GInterfaceInfo preset_interface_info = {
+ (GInterfaceInitFunc) gst_lv2_source_preset_interface_init,
+ NULL,
+ NULL
+ };
+
+ g_type_add_interface_static (element_type, GST_TYPE_PRESET,
+ &preset_interface_info);
+ }
+
+ gst_element_register (plugin, type_name, GST_RANK_NONE, element_type);
+
+ if (!parent_class)
+ parent_class = g_type_class_ref (GST_TYPE_BASE_SRC);
+}
diff --git a/ext/lv2/gstlv2utils.c b/ext/lv2/gstlv2utils.c
new file mode 100644
index 0000000..017d449
--- /dev/null
+++ b/ext/lv2/gstlv2utils.c
@@ -0,0 +1,935 @@
+/* GStreamer
+ * Copyright (C) 2016 Thibault Saunier <thibault.saunier@collabora.com>
+ * 2016 Stefan Sauer <ensonic@users.sf.net>
+ *
+ * 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.
+ */
+
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#include "string.h"
+#include "stdlib.h"
+
+#include "gstlv2.h"
+#include "gstlv2utils.h"
+
+#include "lv2/lv2plug.in/ns/ext/atom/atom.h"
+#include "lv2/lv2plug.in/ns/ext/atom/forge.h"
+#include <lv2/lv2plug.in/ns/ext/log/log.h>
+#include <lv2/lv2plug.in/ns/ext/state/state.h>
+#include <lv2/lv2plug.in/ns/ext/urid/urid.h>
+
+GST_DEBUG_CATEGORY_EXTERN (lv2_debug);
+#define GST_CAT_DEFAULT lv2_debug
+
+/* host features */
+
+/* - log extension */
+
+static int
+lv2_log_printf (LV2_Log_Handle handle, LV2_URID type, const char *fmt, ...)
+{
+ va_list ap;
+
+ va_start (ap, fmt);
+ gst_debug_log_valist (lv2_debug, GST_LEVEL_INFO, "", "", 0, NULL, fmt, ap);
+ va_end (ap);
+ return 1;
+}
+
+static int
+lv2_log_vprintf (LV2_Log_Handle handle, LV2_URID type,
+ const char *fmt, va_list ap)
+{
+ gst_debug_log_valist (lv2_debug, GST_LEVEL_INFO, "", "", 0, NULL, fmt, ap);
+ return 1;
+}
+
+static LV2_Log_Log lv2_log = {
+ /* handle = */ NULL, lv2_log_printf, lv2_log_vprintf
+};
+
+
+static const LV2_Feature lv2_log_feature = { LV2_LOG__log, &lv2_log };
+
+/* - urid map/unmap extension */
+
+static LV2_URID
+lv2_urid_map (LV2_URID_Map_Handle handle, const char *uri)
+{
+ return (LV2_URID) g_quark_from_string (uri);
+}
+
+static const char *
+lv2_urid_unmap (LV2_URID_Unmap_Handle handle, LV2_URID urid)
+{
+ return g_quark_to_string ((GQuark) urid);
+}
+
+static LV2_URID_Map lv2_map = {
+ /* handle = */ NULL, lv2_urid_map
+};
+
+static LV2_URID_Unmap lv2_unmap = {
+ /* handle = */ NULL, lv2_urid_unmap
+};
+
+static const LV2_Feature lv2_map_feature = { LV2_URID__map, &lv2_map };
+static const LV2_Feature lv2_unmap_feature = { LV2_URID__unmap, &lv2_unmap };
+
+/* feature list */
+
+static const LV2_Feature *lv2_features[] = {
+ &lv2_log_feature,
+ &lv2_map_feature,
+ &lv2_unmap_feature,
+ NULL
+};
+
+gboolean
+gst_lv2_check_required_features (const LilvPlugin * lv2plugin)
+{
+ LilvNodes *required_features = lilv_plugin_get_required_features (lv2plugin);
+ if (required_features) {
+ LilvIter *i;
+ gint j;
+ gboolean missing = FALSE;
+
+ for (i = lilv_nodes_begin (required_features);
+ !lilv_nodes_is_end (required_features, i);
+ i = lilv_nodes_next (required_features, i)) {
+ const LilvNode *required_feature = lilv_nodes_get (required_features, i);
+ const char *required_feature_uri = lilv_node_as_uri (required_feature);
+ missing = TRUE;
+
+ for (j = 0; lv2_features[j]; j++) {
+ if (!strcmp (lv2_features[j]->URI, required_feature_uri)) {
+ missing = FALSE;
+ break;
+ }
+ }
+ if (missing) {
+ GST_FIXME ("lv2 plugin %s needs host feature: %s",
+ lilv_node_as_uri (lilv_plugin_get_uri (lv2plugin)),
+ required_feature_uri);
+ break;
+ }
+ }
+ lilv_nodes_free (required_features);
+ return (!missing);
+ }
+ return TRUE;
+}
+
+static LV2_Atom_Forge forge;
+
+void
+gst_lv2_host_init (void)
+{
+ lv2_atom_forge_init (&forge, &lv2_map);
+}
+
+/* preset interface */
+
+gchar **
+gst_lv2_get_preset_names (GstLV2 * lv2, GstObject * obj)
+{
+ /* lazily scan for presets when first called */
+ if (!lv2->presets) {
+ LilvNodes *presets;
+
+ if ((presets = lilv_plugin_get_related (lv2->klass->plugin, preset_class))) {
+ LilvIter *j;
+
+ lv2->presets = g_hash_table_new_full (g_str_hash, g_str_equal, g_free,
+ (GDestroyNotify) lilv_node_free);
+
+ for (j = lilv_nodes_begin (presets);
+ !lilv_nodes_is_end (presets, j); j = lilv_nodes_next (presets, j)) {
+ const LilvNode *preset = lilv_nodes_get (presets, j);
+ LilvNodes *titles;
+
+ lilv_world_load_resource (world, preset);
+ titles = lilv_world_find_nodes (world, preset, label_pred, NULL);
+ if (titles) {
+ const LilvNode *title = lilv_nodes_get_first (titles);
+ g_hash_table_insert (lv2->presets,
+ g_strdup (lilv_node_as_string (title)),
+ lilv_node_duplicate (preset));
+ lilv_nodes_free (titles);
+ } else {
+ GST_WARNING_OBJECT (obj, "plugin has preset '%s' without rdfs:label",
+ lilv_node_as_string (preset));
+ }
+ }
+ lilv_nodes_free (presets);
+ }
+ }
+ if (lv2->presets) {
+ GList *node, *keys = g_hash_table_get_keys (lv2->presets);
+ gchar **names = g_new0 (gchar *, g_hash_table_size (lv2->presets) + 1);
+ gint i = 0;
+
+ for (node = keys; node; node = g_list_next (node)) {
+ names[i++] = g_strdup (node->data);
+ }
+ g_list_free (keys);
+ return names;
+ }
+ return NULL;
+}
+
+static void
+set_port_value (const char *port_symbol, void *data, const void *value,
+ uint32_t size, uint32_t type)
+{
+ gpointer *user_data = (gpointer *) data;
+ GstLV2Class *klass = user_data[0];
+ GstObject *obj = user_data[1];
+ gchar *prop_name = g_hash_table_lookup (klass->sym_to_name, port_symbol);
+ gfloat fvalue;
+
+ if (!prop_name) {
+ GST_WARNING_OBJECT (obj, "Preset port '%s' is missing", port_symbol);
+ return;
+ }
+
+ if (type == forge.Float) {
+ fvalue = *(const gfloat *) value;
+ } else if (type == forge.Double) {
+ fvalue = *(const gdouble *) value;
+ } else if (type == forge.Int) {
+ fvalue = *(const gint32 *) value;
+ } else if (type == forge.Long) {
+ fvalue = *(const gint64 *) value;
+ } else {
+ GST_WARNING_OBJECT (obj, "Preset '%s' value has bad type '%s'",
+ port_symbol, lv2_unmap.unmap (lv2_unmap.handle, type));
+ return;
+ }
+ g_object_set (obj, prop_name, fvalue, NULL);
+}
+
+gboolean
+gst_lv2_load_preset (GstLV2 * lv2, GstObject * obj, const gchar * name)
+{
+ LilvNode *preset = g_hash_table_lookup (lv2->presets, name);
+ LilvState *state = lilv_state_new_from_world (world, &lv2_map, preset);
+ gpointer user_data[] = { lv2->klass, obj };
+
+ GST_INFO_OBJECT (obj, "loading preset <%s>", lilv_node_as_string (preset));
+
+ lilv_state_restore (state, lv2->instance, set_port_value,
+ (gpointer) user_data, 0, NULL);
+
+ lilv_state_free (state);
+ return FALSE;
+}
+
+static const void *
+get_port_value (const char *port_symbol, void *data, uint32_t * size,
+ uint32_t * type)
+{
+ gpointer *user_data = (gpointer *) data;
+ GstLV2Class *klass = user_data[0];
+ GstObject *obj = user_data[1];
+ gchar *prop_name = g_hash_table_lookup (klass->sym_to_name, port_symbol);
+ static gfloat fvalue;
+
+ if (!prop_name) {
+ GST_WARNING_OBJECT (obj, "Preset port '%s' is missing", port_symbol);
+ *size = *type = 0;
+ return NULL;
+ }
+
+ *size = sizeof (float);
+ *type = forge.Float;
+ g_object_get (obj, prop_name, &fvalue, NULL);
+ /* FIXME: can we return &lv2->ports.{in,out}[x]; */
+ return &fvalue;
+}
+
+gboolean
+gst_lv2_save_preset (GstLV2 * lv2, GstObject * obj, const gchar * name)
+{
+ gchar *filename, *basename, *bundle, *dir, *tmp_dir, *s;
+ gpointer user_data[] = { lv2->klass, obj };
+ GstElementFactory *factory;
+ LilvState *state;
+ LilvNode *bundle_dir;
+ LilvInstance *instance = lv2->instance;
+ gboolean res;
+
+ factory = gst_element_get_factory ((GstElement *) obj);
+ basename = g_strdup (gst_element_factory_get_metadata (factory,
+ GST_ELEMENT_METADATA_LONGNAME));
+ s = basename;
+ while ((s = strchr (s, ' '))) {
+ *s = '_';
+ }
+
+ filename = g_strjoin (NULL, name, ".ttl", NULL);
+ bundle = g_strjoin (NULL, basename, "_", name, ".preset.lv2", NULL);
+ /* dir needs to end on a dir separator for the lilv_new_file_uri() to work */
+ dir =
+ g_build_filename (g_get_home_dir (), ".lv2", bundle, G_DIR_SEPARATOR_S,
+ NULL);
+ tmp_dir = g_dir_make_tmp ("gstlv2-XXXXXX", NULL);
+ g_mkdir_with_parents (dir, 0750);
+
+ if (!instance) {
+ /* instance is NULL until we play!! */
+ instance = lilv_plugin_instantiate (lv2->klass->plugin, GST_AUDIO_DEF_RATE,
+ lv2_features);
+ }
+
+ state = lilv_state_new_from_instance (lv2->klass->plugin, instance, &lv2_map,
+ tmp_dir, dir, dir, dir, get_port_value, user_data,
+ LV2_STATE_IS_POD | LV2_STATE_IS_PORTABLE, NULL);
+
+ lilv_state_set_label (state, name);
+
+ res = lilv_state_save (world, &lv2_map, &lv2_unmap, state, /*uri */ NULL, dir,
+ filename) != 0;
+
+ /* reload bundle into the world */
+ bundle_dir = lilv_new_file_uri (world, NULL, dir);
+ lilv_world_unload_bundle (world, bundle_dir);
+ lilv_world_load_bundle (world, bundle_dir);
+ lilv_node_free (bundle_dir);
+
+ lilv_world_load_resource (world, lilv_state_get_uri (state));
+ g_hash_table_insert (lv2->presets, g_strdup (name),
+ lilv_node_duplicate (lilv_state_get_uri (state)));
+
+ lilv_state_free (state);
+ if (!lv2->instance) {
+ lilv_instance_free (instance);
+ }
+
+ g_free (tmp_dir);
+ g_free (dir);
+ g_free (bundle);
+ g_free (filename);
+ g_free (basename);
+
+ return res;
+}
+
+#if 0
+gboolean
+gst_lv2_rename_preset (GstLV2 * lv2, GstObject * obj,
+ const gchar * old_name, const gchar * new_name)
+{
+ /* need to relabel the preset */
+ return FALSE;
+}
+#endif
+
+gboolean
+gst_lv2_delete_preset (GstLV2 * lv2, GstObject * obj, const gchar * name)
+{
+ LilvNode *preset = g_hash_table_lookup (lv2->presets, name);
+ LilvState *state = lilv_state_new_from_world (world, &lv2_map, preset);
+
+ lilv_world_unload_resource (world, lilv_state_get_uri (state));
+ lilv_state_delete (world, state);
+ lilv_state_free (state);
+
+ g_hash_table_remove (lv2->presets, name);
+
+ return FALSE;
+}
+
+
+/* api helpers */
+
+void
+gst_lv2_init (GstLV2 * lv2, GstLV2Class * lv2_class)
+{
+ lv2->klass = lv2_class;
+
+ lv2->instance = NULL;
+ lv2->activated = FALSE;
+
+ lv2->ports.control.in = g_new0 (gfloat, lv2_class->control_in_ports->len);
+ lv2->ports.control.out = g_new0 (gfloat, lv2_class->control_out_ports->len);
+}
+
+void
+gst_lv2_finalize (GstLV2 * lv2)
+{
+ if (lv2->presets) {
+ g_hash_table_destroy (lv2->presets);
+ }
+ g_free (lv2->ports.control.in);
+ g_free (lv2->ports.control.out);
+}
+
+gboolean
+gst_lv2_setup (GstLV2 * lv2, unsigned long rate)
+{
+ GstLV2Class *lv2_class = lv2->klass;
+ GstLV2Port *port;
+ GArray *ports;
+ gint i;
+
+ if (lv2->instance)
+ lilv_instance_free (lv2->instance);
+
+ if (!(lv2->instance =
+ lilv_plugin_instantiate (lv2_class->plugin, rate, lv2_features)))
+ return FALSE;
+
+ /* connect the control ports */
+ ports = lv2_class->control_in_ports;
+ for (i = 0; i < ports->len; i++) {
+ port = &g_array_index (ports, GstLV2Port, i);
+ if (port->type != GST_LV2_PORT_CONTROL)
+ continue;
+ lilv_instance_connect_port (lv2->instance, port->index,
+ &(lv2->ports.control.in[i]));
+ }
+ ports = lv2_class->control_out_ports;
+ for (i = 0; i < ports->len; i++) {
+ port = &g_array_index (ports, GstLV2Port, i);
+ if (port->type != GST_LV2_PORT_CONTROL)
+ continue;
+ lilv_instance_connect_port (lv2->instance, port->index,
+ &(lv2->ports.control.out[i]));
+ }
+
+ lilv_instance_activate (lv2->instance);
+ lv2->activated = TRUE;
+
+ return TRUE;
+}
+
+gboolean
+gst_lv2_cleanup (GstLV2 * lv2, GstObject * obj)
+{
+ if (lv2->activated == FALSE) {
+ GST_ERROR_OBJECT (obj, "Deactivating but LV2 plugin not activated");
+ return TRUE;
+ }
+
+ if (lv2->instance == NULL) {
+ GST_ERROR_OBJECT (obj, "Deactivating but no LV2 plugin set");
+ return TRUE;
+ }
+
+ GST_DEBUG_OBJECT (obj, "deactivating");
+
+ lilv_instance_deactivate (lv2->instance);
+
+ lv2->activated = FALSE;
+
+ lilv_instance_free (lv2->instance);
+ lv2->instance = NULL;
+
+ return TRUE;
+}
+
+void
+gst_lv2_object_set_property (GstLV2 * lv2, GObject * object,
+ guint prop_id, const GValue * value, GParamSpec * pspec)
+{
+ GType base, type = pspec->value_type;
+ /* remember, properties have an offset */
+ prop_id -= lv2->klass->properties;
+
+ /* only input ports */
+ g_return_if_fail (prop_id < lv2->klass->control_in_ports->len);
+
+ while ((base = g_type_parent (type)))
+ type = base;
+
+ /* now see what type it is */
+ switch (type) {
+ case G_TYPE_BOOLEAN:
+ lv2->ports.control.in[prop_id] =
+ g_value_get_boolean (value) ? 0.0f : 1.0f;
+ break;
+ case G_TYPE_INT:
+ lv2->ports.control.in[prop_id] = g_value_get_int (value);
+ break;
+ case G_TYPE_FLOAT:
+ lv2->ports.control.in[prop_id] = g_value_get_float (value);
+ break;
+ case G_TYPE_ENUM:
+ lv2->ports.control.in[prop_id] = g_value_get_enum (value);
+ break;
+ default:
+ GST_WARNING_OBJECT (object, "unhandled type: %s",
+ g_type_name (pspec->value_type));
+ g_assert_not_reached ();
+ }
+}
+
+void
+gst_lv2_object_get_property (GstLV2 * lv2, GObject * object,
+ guint prop_id, GValue * value, GParamSpec * pspec)
+{
+ GType base, type = pspec->value_type;
+ gfloat *controls;
+
+ /* remember, properties have an offset */
+ prop_id -= lv2->klass->properties;
+
+ if (prop_id < lv2->klass->control_in_ports->len) {
+ controls = lv2->ports.control.in;
+ } else if (prop_id < lv2->klass->control_in_ports->len +
+ lv2->klass->control_out_ports->len) {
+ controls = lv2->ports.control.out;
+ prop_id -= lv2->klass->control_in_ports->len;
+ } else {
+ g_return_if_reached ();
+ }
+
+ while ((base = g_type_parent (type)))
+ type = base;
+
+ /* now see what type it is */
+ switch (type) {
+ case G_TYPE_BOOLEAN:
+ g_value_set_boolean (value, controls[prop_id] > 0.0f);
+ break;
+ case G_TYPE_INT:
+ g_value_set_int (value, CLAMP (controls[prop_id], G_MININT, G_MAXINT));
+ break;
+ case G_TYPE_FLOAT:
+ g_value_set_float (value, controls[prop_id]);
+ break;
+ case G_TYPE_ENUM:
+ g_value_set_enum (value, (gint) controls[prop_id]);
+ break;
+ default:
+ GST_WARNING_OBJECT (object, "unhandled type: %s",
+ g_type_name (pspec->value_type));
+ g_return_if_reached ();
+ }
+}
+
+
+static gchar *
+gst_lv2_class_get_param_name (GstLV2Class * klass, GObjectClass * object_class,
+ const gchar * port_symbol)
+{
+ gchar *ret = g_strdup (port_symbol);
+
+ /* this is the same thing that param_spec_* will do */
+ g_strcanon (ret, G_CSET_A_2_Z G_CSET_a_2_z G_CSET_DIGITS "-", '-');
+ /* satisfy glib2 (argname[0] must be [A-Za-z]) */
+ if (!((ret[0] >= 'a' && ret[0] <= 'z') || (ret[0] >= 'A' && ret[0] <= 'Z'))) {
+ gchar *tempstr = ret;
+
+ ret = g_strconcat ("param-", ret, NULL);
+ g_free (tempstr);
+ }
+
+ /* check for duplicate property names */
+ if (g_object_class_find_property (object_class, ret)) {
+ gint n = 1;
+ gchar *nret = g_strdup_printf ("%s-%d", ret, n++);
+
+ while (g_object_class_find_property (object_class, nret)) {
+ g_free (nret);
+ nret = g_strdup_printf ("%s-%d", ret, n++);
+ }
+ g_free (ret);
+ ret = nret;
+ }
+
+ GST_DEBUG ("built property name '%s' from port name '%s'", ret, port_symbol);
+ return ret;
+}
+
+static gchar *
+gst_lv2_class_get_param_nick (GstLV2Class * klass, const LilvPort * port)
+{
+ const LilvPlugin *lv2plugin = klass->plugin;
+
+ return g_strdup (lilv_node_as_string (lilv_port_get_name (lv2plugin, port)));
+}
+
+static int
+enum_val_cmp (GEnumValue * p1, GEnumValue * p2)
+{
+ return p1->value - p2->value;
+}
+
+static GParamSpec *
+gst_lv2_class_get_param_spec (GstLV2Class * klass, GObjectClass * object_class,
+ gint portnum)
+{
+ const LilvPlugin *lv2plugin = klass->plugin;
+ const LilvPort *port = lilv_plugin_get_port_by_index (lv2plugin, portnum);
+ LilvNode *lv2def, *lv2min, *lv2max;
+ LilvScalePoints *points;
+ GParamSpec *ret;
+ gchar *name, *nick;
+ gint perms;
+ gfloat lower = 0.0f, upper = 1.0f, def = 0.0f;
+ GType enum_type = G_TYPE_INVALID;
+ const gchar *port_symbol =
+ lilv_node_as_string (lilv_port_get_symbol (lv2plugin, port));
+
+ nick = gst_lv2_class_get_param_nick (klass, port);
+ name = gst_lv2_class_get_param_name (klass, object_class, port_symbol);
+
+ GST_DEBUG ("%s trying port %s : %s",
+ lilv_node_as_string (lilv_plugin_get_uri (lv2plugin)), name, nick);
+
+ perms = G_PARAM_READABLE;
+ if (lilv_port_is_a (lv2plugin, port, input_class))
+ perms |= G_PARAM_WRITABLE | G_PARAM_CONSTRUCT;
+ if (lilv_port_is_a (lv2plugin, port, control_class) ||
+ lilv_port_is_a (lv2plugin, port, cv_class))
+ perms |= GST_PARAM_CONTROLLABLE;
+
+ if (lilv_port_has_property (lv2plugin, port, toggled_prop)) {
+ ret = g_param_spec_boolean (name, nick, nick, FALSE, perms);
+ goto done;
+ }
+
+ lilv_port_get_range (lv2plugin, port, &lv2def, &lv2min, &lv2max);
+
+ if (lv2def)
+ def = lilv_node_as_float (lv2def);
+ if (lv2min)
+ lower = lilv_node_as_float (lv2min);
+ if (lv2max)
+ upper = lilv_node_as_float (lv2max);
+
+ lilv_node_free (lv2def);
+ lilv_node_free (lv2min);
+ lilv_node_free (lv2max);
+
+ if (def < lower) {
+ if (lv2def && lv2min) {
+ GST_WARNING ("%s:%s has lower bound %f > default %f",
+ lilv_node_as_string (lilv_plugin_get_uri (lv2plugin)), name, lower,
+ def);
+ }
+ lower = def;
+ }
+
+ if (def > upper) {
+ if (lv2def && lv2max) {
+ GST_WARNING ("%s:%s has upper bound %f < default %f",
+ lilv_node_as_string (lilv_plugin_get_uri (lv2plugin)), name, upper,
+ def);
+ }
+ upper = def;
+ }
+
+ if ((points = lilv_port_get_scale_points (lv2plugin, port))) {
+ GEnumValue *enums;
+ LilvIter *i;
+ gint j = 0, n, def_ix = -1;
+
+ n = lilv_scale_points_size (points);
+ enums = g_new (GEnumValue, n + 1);
+
+ for (i = lilv_scale_points_begin (points);
+ !lilv_scale_points_is_end (points, i);
+ i = lilv_scale_points_next (points, i)) {
+ const LilvScalePoint *point = lilv_scale_points_get (points, i);
+ gfloat v = lilv_node_as_float (lilv_scale_point_get_value (point));
+ const gchar *l = lilv_node_as_string (lilv_scale_point_get_label (point));
+
+ /* check if value can be safely converted to int */
+ if (v != (gint) v) {
+ GST_INFO ("%s:%s non integer scale point %lf, %s",
+ lilv_node_as_string (lilv_plugin_get_uri (lv2plugin)), name, v, l);
+ break;
+ }
+ if (v == def) {
+ def_ix = j;
+ }
+ enums[j].value = (gint) v;
+ enums[j].value_nick = enums[j].value_name = l;
+ GST_LOG ("%s:%s enum: %lf, %s",
+ lilv_node_as_string (lilv_plugin_get_uri (lv2plugin)), name, v, l);
+ j++;
+ }
+ if (j == n) {
+ gchar *type_name;
+
+ /* scalepoints are not sorted */
+ qsort (enums, n, sizeof (GEnumValue),
+ (int (*)(const void *, const void *)) enum_val_cmp);
+
+ if (def_ix == -1) {
+ if (lv2def) {
+ GST_WARNING ("%s:%s has default %f outside of scalepoints",
+ lilv_node_as_string (lilv_plugin_get_uri (lv2plugin)), name, def);
+ }
+ def = enums[0].value;
+ }
+ /* terminator */
+ enums[j].value = 0;
+ enums[j].value_name = enums[j].value_nick = NULL;
+
+ type_name = g_strdup_printf ("%s%s",
+ g_type_name (G_TYPE_FROM_CLASS (object_class)), name);
+ enum_type = g_enum_register_static (type_name, enums);
+ g_free (type_name);
+ } else {
+ g_free (enums);
+ }
+ lilv_scale_points_free (points);
+ }
+
+ if (enum_type != G_TYPE_INVALID) {
+ ret = g_param_spec_enum (name, nick, nick, enum_type, def, perms);
+ } else if (lilv_port_has_property (lv2plugin, port, integer_prop))
+ ret = g_param_spec_int (name, nick, nick, lower, upper, def, perms);
+ else
+ ret = g_param_spec_float (name, nick, nick, lower, upper, def, perms);
+
+done:
+ // build a map of (port_symbol to ret->name) for extensions
+ g_hash_table_insert (klass->sym_to_name, (gchar *) port_symbol,
+ (gchar *) ret->name);
+
+ g_free (name);
+ g_free (nick);
+
+ return ret;
+}
+
+void
+gst_lv2_class_install_properties (GstLV2Class * lv2_class,
+ GObjectClass * object_class, guint offset)
+{
+ GParamSpec *p;
+ guint i;
+
+ lv2_class->properties = offset;
+
+ for (i = 0; i < lv2_class->control_in_ports->len; i++, offset++) {
+ p = gst_lv2_class_get_param_spec (lv2_class, object_class,
+ g_array_index (lv2_class->control_in_ports, GstLV2Port, i).index);
+
+ g_object_class_install_property (object_class, offset, p);
+ }
+
+ for (i = 0; i < lv2_class->control_out_ports->len; i++, offset++) {
+ p = gst_lv2_class_get_param_spec (lv2_class, object_class,
+ g_array_index (lv2_class->control_out_ports, GstLV2Port, i).index);
+
+ g_object_class_install_property (object_class, offset, p);
+ }
+}
+
+void
+gst_lv2_element_class_set_metadata (GstLV2Class * lv2_class,
+ GstElementClass * elem_class, const gchar * lv2_class_tags)
+{
+ const LilvPlugin *lv2plugin = lv2_class->plugin;
+ LilvNode *val;
+ const LilvPluginClass *lv2plugin_class;
+ const LilvNode *cval;
+ gchar *longname, *author, *class_tags = NULL;
+
+ val = lilv_plugin_get_name (lv2plugin);
+ if (val) {
+ longname = g_strdup (lilv_node_as_string (val));
+ lilv_node_free (val);
+ } else {
+ longname = g_strdup ("no description available");
+ }
+ val = lilv_plugin_get_author_name (lv2plugin);
+ if (val) {
+ author = g_strdup (lilv_node_as_string (val));
+ lilv_node_free (val);
+ } else {
+ author = g_strdup ("no author available");
+ }
+
+ lv2plugin_class = lilv_plugin_get_class (lv2plugin);
+ cval = lilv_plugin_class_get_label (lv2plugin_class);
+ if (cval) {
+ class_tags = g_strconcat (lv2_class_tags, "/", lilv_node_as_string (cval),
+ NULL);
+ }
+
+ gst_element_class_set_metadata (elem_class, longname,
+ (class_tags ? class_tags : lv2_class_tags), longname, author);
+ g_free (longname);
+ g_free (author);
+ g_free (class_tags);
+}
+
+
+void
+gst_lv2_class_init (GstLV2Class * lv2_class, GType type)
+{
+ const GValue *value =
+ gst_structure_get_value (lv2_meta_all, g_type_name (type));
+ GstStructure *lv2_meta = g_value_get_boxed (value);
+ const LilvPlugin *lv2plugin;
+ guint j, in_pad_index = 0, out_pad_index = 0;
+ const LilvPlugins *plugins = lilv_world_get_all_plugins (world);
+ LilvNode *plugin_uri;
+ const gchar *element_uri;
+
+ GST_DEBUG ("LV2 initializing class");
+
+ element_uri = gst_structure_get_string (lv2_meta, "element-uri");
+ plugin_uri = lilv_new_uri (world, element_uri);
+ g_assert (plugin_uri);
+ lv2plugin = lilv_plugins_get_by_uri (plugins, plugin_uri);
+ g_assert (lv2plugin);
+ lv2_class->plugin = lv2plugin;
+ lilv_node_free (plugin_uri);
+
+ lv2_class->sym_to_name = g_hash_table_new (g_str_hash, g_str_equal);
+
+ lv2_class->in_group.ports = g_array_new (FALSE, TRUE, sizeof (GstLV2Port));
+ lv2_class->out_group.ports = g_array_new (FALSE, TRUE, sizeof (GstLV2Port));
+ lv2_class->control_in_ports = g_array_new (FALSE, TRUE, sizeof (GstLV2Port));
+ lv2_class->control_out_ports = g_array_new (FALSE, TRUE, sizeof (GstLV2Port));
+
+ /* find ports and groups */
+ for (j = 0; j < lilv_plugin_get_num_ports (lv2plugin); j++) {
+ const LilvPort *port = lilv_plugin_get_port_by_index (lv2plugin, j);
+ const gboolean is_input = lilv_port_is_a (lv2plugin, port, input_class);
+ const gboolean is_optional = lilv_port_has_property (lv2plugin, port,
+ optional_pred);
+ GstLV2Port desc = { j, GST_LV2_PORT_AUDIO, -1, };
+ LilvNodes *lv2group = lilv_port_get (lv2plugin, port, group_pred);
+ /* FIXME Handle channels positionning
+ * GstAudioChannelPosition position = GST_AUDIO_CHANNEL_POSITION_INVALID; */
+
+ if (lv2group) {
+ /* port is part of a group */
+ const gchar *group_uri = lilv_node_as_uri (lv2group);
+ GstLV2Group *group = is_input
+ ? &lv2_class->in_group : &lv2_class->out_group;
+
+ if (group->uri == NULL) {
+ group->uri = g_strdup (group_uri);
+ group->pad = is_input ? in_pad_index++ : out_pad_index++;
+ group->ports = g_array_new (FALSE, TRUE, sizeof (GstLV2Port));
+ }
+
+ /* FIXME Handle channels positionning
+ position = GST_AUDIO_CHANNEL_POSITION_FRONT_LEFT;
+ sub_values = lilv_port_get_value (lv2plugin, port, designation_pred);
+ if (lilv_nodes_size (sub_values) > 0) {
+ LilvNode *role = lilv_nodes_get_at (sub_values, 0);
+ position = gst_lv2_filter_role_to_position (role);
+ }
+ lilv_nodes_free (sub_values);
+
+ if (position != GST_AUDIO_CHANNEL_POSITION_INVALID) {
+ desc.position = position;
+ } */
+
+ g_array_append_val (group->ports, desc);
+ } else {
+ /* port is not part of a group, or it is part of a group but that group
+ * is illegal so we just ignore it */
+ if (lilv_port_is_a (lv2plugin, port, audio_class)) {
+ if (is_input) {
+ desc.pad = in_pad_index++;
+ g_array_append_val (lv2_class->in_group.ports, desc);
+ } else {
+ desc.pad = out_pad_index++;
+ g_array_append_val (lv2_class->out_group.ports, desc);
+ }
+ } else if (lilv_port_is_a (lv2plugin, port, control_class)) {
+ desc.type = GST_LV2_PORT_CONTROL;
+ if (is_input) {
+ lv2_class->num_control_in++;
+ g_array_append_val (lv2_class->control_in_ports, desc);
+ } else {
+ lv2_class->num_control_out++;
+ g_array_append_val (lv2_class->control_out_ports, desc);
+ }
+ } else if (lilv_port_is_a (lv2plugin, port, cv_class)) {
+ desc.type = GST_LV2_PORT_CV;
+ if (is_input) {
+ lv2_class->num_cv_in++;
+ g_array_append_val (lv2_class->control_in_ports, desc);
+ } else {
+ lv2_class->num_cv_out++;
+ g_array_append_val (lv2_class->control_out_ports, desc);
+ }
+ } else if (lilv_port_is_a (lv2plugin, port, event_class)) {
+ LilvNodes *supported = lilv_port_get_value (lv2plugin, port,
+ supports_event_pred);
+
+ GST_INFO ("%s: unhandled event port %d: %s, optional=%d, input=%d",
+ element_uri, j,
+ lilv_node_as_string (lilv_port_get_symbol (lv2plugin, port)),
+ is_optional, is_input);
+
+ if (lilv_nodes_size (supported) > 0) {
+ LilvIter *i;
+
+ for (i = lilv_nodes_begin (supported);
+ !lilv_nodes_is_end (supported, i);
+ i = lilv_nodes_next (supported, i)) {
+ const LilvNode *value = lilv_nodes_get (supported, i);
+ GST_INFO (" type = %s", lilv_node_as_uri (value));
+ }
+ }
+ lilv_nodes_free (supported);
+ // FIXME: handle them
+ } else {
+ /* unhandled port type */
+ const LilvNodes *classes = lilv_port_get_classes (lv2plugin, port);
+ GST_INFO ("%s: unhandled port %d: %s, optional=%d, input=%d",
+ element_uri, j,
+ lilv_node_as_string (lilv_port_get_symbol (lv2plugin, port)),
+ is_optional, is_input);
+ if (classes && lilv_nodes_size (classes) > 0) {
+ LilvIter *i;
+
+ // FIXME: we getting the same classe multiple times
+ for (i = lilv_nodes_begin (classes);
+ !lilv_nodes_is_end (classes, i);
+ i = lilv_nodes_next (classes, i)) {
+ const LilvNode *value = lilv_nodes_get (classes, i);
+ GST_INFO (" class = %s", lilv_node_as_uri (value));
+ }
+ }
+ }
+ }
+ }
+}
+
+void
+gst_lv2_class_finalize (GstLV2Class * lv2_class)
+{
+ GST_DEBUG ("LV2 finalizing class");
+
+ g_hash_table_destroy (lv2_class->sym_to_name);
+
+ g_array_free (lv2_class->in_group.ports, TRUE);
+ lv2_class->in_group.ports = NULL;
+ g_array_free (lv2_class->out_group.ports, TRUE);
+ lv2_class->out_group.ports = NULL;
+ g_array_free (lv2_class->control_in_ports, TRUE);
+ lv2_class->control_in_ports = NULL;
+ g_array_free (lv2_class->control_out_ports, TRUE);
+ lv2_class->control_out_ports = NULL;
+}
diff --git a/ext/lv2/gstlv2utils.h b/ext/lv2/gstlv2utils.h
new file mode 100644
index 0000000..b179e36
--- /dev/null
+++ b/ext/lv2/gstlv2utils.h
@@ -0,0 +1,134 @@
+/* GStreamer
+ * Copyright (C) 2016 Thibault Saunier <thibault.saunier@collabora.com>
+ * 2016 Stefan Sauer <ensonic@users.sf.net>
+ *
+ * gstlv2utils.h: Header for LV2 plugin utils
+ *
+ * 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.
+ */
+
+#ifndef __GST_LV2_UTILS_H__
+#define __GST_LV2_UTILS_H__
+
+#include <gst/gst.h>
+#include <gst/audio/audio.h>
+#include <gst/audio/audio-channels.h>
+
+#include <lilv/lilv.h>
+
+G_BEGIN_DECLS
+
+typedef struct _GstLV2Group GstLV2Group;
+typedef struct _GstLV2Port GstLV2Port;
+
+typedef struct _GstLV2 GstLV2;
+typedef struct _GstLV2Class GstLV2Class;
+
+struct _GstLV2Group
+{
+ gchar *uri; /**< RDF resource (URI or blank node) */
+ guint pad; /**< Gst pad index */
+ gchar *symbol; /**< Gst pad name / LV2 group symbol */
+ GArray *ports; /**< Array of GstLV2Port */
+ /* FIXME: not set as of now */
+ gboolean has_roles; /**< TRUE iff all ports have a known role */
+};
+
+typedef enum {
+ GST_LV2_PORT_AUDIO = 0,
+ GST_LV2_PORT_CONTROL,
+ GST_LV2_PORT_CV
+} GstLV2PortType;
+
+struct _GstLV2Port
+{
+ gint index; /**< LV2 port index (on LV2 plugin) */
+ GstLV2PortType type; /**< Port type */
+ /**< Gst pad index (iff not part of a group), only for audio ports */
+ gint pad;
+ /* FIXME: not set as of now */
+ LilvNode *role; /**< Channel position / port role */
+ GstAudioChannelPosition position; /**< Channel position */
+};
+
+struct _GstLV2
+{
+ GstLV2Class *klass;
+
+ LilvInstance *instance;
+ GHashTable *presets;
+
+ gboolean activated;
+ unsigned long rate;
+
+ struct
+ {
+ struct
+ {
+ gfloat *in;
+ gfloat *out;
+ } control;
+ } ports;
+};
+
+struct _GstLV2Class
+{
+ guint properties;
+
+ const LilvPlugin *plugin;
+ GHashTable *sym_to_name;
+
+ gint num_control_in, num_control_out;
+ gint num_cv_in, num_cv_out;
+
+ GstLV2Group in_group; /**< Array of GstLV2Group */
+ GstLV2Group out_group; /**< Array of GstLV2Group */
+ GArray *control_in_ports; /**< Array of GstLV2Port */
+ GArray *control_out_ports; /**< Array of GstLV2Port */
+};
+
+gboolean gst_lv2_check_required_features (const LilvPlugin * lv2plugin);
+
+void gst_lv2_host_init (void);
+
+gchar **gst_lv2_get_preset_names (GstLV2 * lv2, GstObject * obj);
+gboolean gst_lv2_load_preset (GstLV2 * lv2, GstObject * obj, const gchar * name);
+gboolean gst_lv2_save_preset (GstLV2 * lv2, GstObject * obj, const gchar * name);
+gboolean gst_lv2_delete_preset (GstLV2 * lv2, GstObject * obj, const gchar * name);
+
+
+void gst_lv2_init (GstLV2 * lv2, GstLV2Class * lv2_class);
+void gst_lv2_finalize (GstLV2 * lv2);
+
+gboolean gst_lv2_setup (GstLV2 * lv2, unsigned long rate);
+gboolean gst_lv2_cleanup (GstLV2 * lv2, GstObject *obj);
+
+void gst_lv2_object_set_property (GstLV2 * lv2, GObject * object,
+ guint prop_id, const GValue * value, GParamSpec * pspec);
+void gst_lv2_object_get_property (GstLV2 * lv2, GObject * object,
+ guint prop_id, GValue * value, GParamSpec * pspec);
+
+void gst_lv2_class_install_properties (GstLV2Class * lv2_class,
+ GObjectClass * object_class, guint offset);
+void gst_lv2_element_class_set_metadata (GstLV2Class * lv2_class,
+ GstElementClass * elem_class, const gchar * lv2_class_tags);
+
+void gst_lv2_class_init (GstLV2Class * lv2_class, GType type);
+void gst_lv2_class_finalize (GstLV2Class * lv2_class);
+
+G_END_DECLS
+
+#endif /* __GST_LV2_UTILS_H__ */
diff --git a/ext/mimic/Makefile.in b/ext/mimic/Makefile.in
index 75d2f6c..be4d23a 100644
--- a/ext/mimic/Makefile.in
+++ b/ext/mimic/Makefile.in
@@ -303,6 +303,8 @@
DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
DSYMUTIL = @DSYMUTIL@
DTLS_CFLAGS = @DTLS_CFLAGS@
DTLS_LIBS = @DTLS_LIBS@
@@ -518,6 +520,8 @@
LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
LIPO = @LIPO@
LN_S = @LN_S@
LOCALEDIR = @LOCALEDIR@
@@ -644,8 +648,6 @@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
SNDIO_LIBS = @SNDIO_LIBS@
@@ -690,6 +692,8 @@
WAYLAND_LIBS = @WAYLAND_LIBS@
WEBP_CFLAGS = @WEBP_CFLAGS@
WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
WGET = @WGET@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
diff --git a/ext/mimic/gstmimdec.c b/ext/mimic/gstmimdec.c
index c7ad022..4ad38f9 100644
--- a/ext/mimic/gstmimdec.c
+++ b/ext/mimic/gstmimdec.c
@@ -80,10 +80,8 @@
gstelement_class = (GstElementClass *) klass;
gstelement_class->change_state = GST_DEBUG_FUNCPTR (gst_mim_dec_change_state);
- gst_element_class_add_pad_template (gstelement_class,
- gst_static_pad_template_get (&src_factory));
- gst_element_class_add_pad_template (gstelement_class,
- gst_static_pad_template_get (&sink_factory));
+ gst_element_class_add_static_pad_template (gstelement_class, &src_factory);
+ gst_element_class_add_static_pad_template (gstelement_class, &sink_factory);
gst_element_class_set_static_metadata (gstelement_class,
"Mimic Decoder",
diff --git a/ext/mimic/gstmimenc.c b/ext/mimic/gstmimenc.c
index c94c411..3232ca5 100644
--- a/ext/mimic/gstmimenc.c
+++ b/ext/mimic/gstmimenc.c
@@ -122,10 +122,8 @@
" when no data is received",
FALSE, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
- gst_element_class_add_pad_template (gstelement_class,
- gst_static_pad_template_get (&src_factory));
- gst_element_class_add_pad_template (gstelement_class,
- gst_static_pad_template_get (&sink_factory));
+ gst_element_class_add_static_pad_template (gstelement_class, &src_factory);
+ gst_element_class_add_static_pad_template (gstelement_class, &sink_factory);
gst_element_class_set_static_metadata (gstelement_class,
"Mimic Encoder",
"Codec/Encoder/Video",
diff --git a/ext/modplug/Makefile.in b/ext/modplug/Makefile.in
index ebd6793..a48b694 100644
--- a/ext/modplug/Makefile.in
+++ b/ext/modplug/Makefile.in
@@ -302,6 +302,8 @@
DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
DSYMUTIL = @DSYMUTIL@
DTLS_CFLAGS = @DTLS_CFLAGS@
DTLS_LIBS = @DTLS_LIBS@
@@ -517,6 +519,8 @@
LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
LIPO = @LIPO@
LN_S = @LN_S@
LOCALEDIR = @LOCALEDIR@
@@ -643,8 +647,6 @@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
SNDIO_LIBS = @SNDIO_LIBS@
@@ -689,6 +691,8 @@
WAYLAND_LIBS = @WAYLAND_LIBS@
WEBP_CFLAGS = @WEBP_CFLAGS@
WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
WGET = @WGET@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
diff --git a/ext/modplug/gstmodplug.cc b/ext/modplug/gstmodplug.cc
index ff3641d..b5fbcb2 100644
--- a/ext/modplug/gstmodplug.cc
+++ b/ext/modplug/gstmodplug.cc
@@ -205,10 +205,8 @@
gstelement_class->change_state = gst_modplug_change_state;
- gst_element_class_add_pad_template (gstelement_class,
- gst_static_pad_template_get (&modplug_sink_template_factory));
- gst_element_class_add_pad_template (gstelement_class,
- gst_static_pad_template_get (&modplug_src_template_factory));
+ gst_element_class_add_static_pad_template (gstelement_class, &modplug_sink_template_factory);
+ gst_element_class_add_static_pad_template (gstelement_class, &modplug_src_template_factory);
gst_element_class_set_static_metadata (gstelement_class, "ModPlug",
"Codec/Decoder/Audio", "Module decoder based on modplug engine",
diff --git a/ext/mpeg2enc/Makefile.in b/ext/mpeg2enc/Makefile.in
index 56c7db7..ce444cc 100644
--- a/ext/mpeg2enc/Makefile.in
+++ b/ext/mpeg2enc/Makefile.in
@@ -306,6 +306,8 @@
DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
DSYMUTIL = @DSYMUTIL@
DTLS_CFLAGS = @DTLS_CFLAGS@
DTLS_LIBS = @DTLS_LIBS@
@@ -521,6 +523,8 @@
LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
LIPO = @LIPO@
LN_S = @LN_S@
LOCALEDIR = @LOCALEDIR@
@@ -647,8 +651,6 @@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
SNDIO_LIBS = @SNDIO_LIBS@
@@ -693,6 +695,8 @@
WAYLAND_LIBS = @WAYLAND_LIBS@
WEBP_CFLAGS = @WEBP_CFLAGS@
WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
WGET = @WGET@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
diff --git a/ext/mpeg2enc/gstmpeg2enc.cc b/ext/mpeg2enc/gstmpeg2enc.cc
index 5c686cc..b974826 100644
--- a/ext/mpeg2enc/gstmpeg2enc.cc
+++ b/ext/mpeg2enc/gstmpeg2enc.cc
@@ -126,10 +126,8 @@
element_class->change_state = GST_DEBUG_FUNCPTR (gst_mpeg2enc_change_state);
- gst_element_class_add_pad_template (element_class,
- gst_static_pad_template_get (&src_template));
- gst_element_class_add_pad_template (element_class,
- gst_static_pad_template_get (&sink_template));
+ gst_element_class_add_static_pad_template (element_class, &src_template);
+ gst_element_class_add_static_pad_template (element_class, &sink_template);
gst_element_class_set_static_metadata (element_class,
"mpeg2enc video encoder", "Codec/Encoder/Video",
diff --git a/ext/mplex/Makefile.in b/ext/mplex/Makefile.in
index cfcd330..2cd7f3c 100644
--- a/ext/mplex/Makefile.in
+++ b/ext/mplex/Makefile.in
@@ -306,6 +306,8 @@
DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
DSYMUTIL = @DSYMUTIL@
DTLS_CFLAGS = @DTLS_CFLAGS@
DTLS_LIBS = @DTLS_LIBS@
@@ -521,6 +523,8 @@
LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
LIPO = @LIPO@
LN_S = @LN_S@
LOCALEDIR = @LOCALEDIR@
@@ -647,8 +651,6 @@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
SNDIO_LIBS = @SNDIO_LIBS@
@@ -693,6 +695,8 @@
WAYLAND_LIBS = @WAYLAND_LIBS@
WEBP_CFLAGS = @WEBP_CFLAGS@
WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
WGET = @WGET@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
diff --git a/ext/mplex/gstmplex.cc b/ext/mplex/gstmplex.cc
index ae50bea..4089485 100644
--- a/ext/mplex/gstmplex.cc
+++ b/ext/mplex/gstmplex.cc
@@ -149,12 +149,9 @@
"Ronald Bultje <rbultje@ronald.bitfreak.net>\n"
"Mark Nauwelaerts <mnauw@users.sourceforge.net>");
- gst_element_class_add_pad_template (element_class,
- gst_static_pad_template_get (&src_templ));
- gst_element_class_add_pad_template (element_class,
- gst_static_pad_template_get (&video_sink_templ));
- gst_element_class_add_pad_template (element_class,
- gst_static_pad_template_get (&audio_sink_templ));
+ gst_element_class_add_static_pad_template (element_class, &src_templ);
+ gst_element_class_add_static_pad_template (element_class, &video_sink_templ);
+ gst_element_class_add_static_pad_template (element_class, &audio_sink_templ);
}
static void
diff --git a/ext/musepack/Makefile.in b/ext/musepack/Makefile.in
index fc7c2f1..4ff8cf6 100644
--- a/ext/musepack/Makefile.in
+++ b/ext/musepack/Makefile.in
@@ -303,6 +303,8 @@
DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
DSYMUTIL = @DSYMUTIL@
DTLS_CFLAGS = @DTLS_CFLAGS@
DTLS_LIBS = @DTLS_LIBS@
@@ -518,6 +520,8 @@
LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
LIPO = @LIPO@
LN_S = @LN_S@
LOCALEDIR = @LOCALEDIR@
@@ -644,8 +648,6 @@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
SNDIO_LIBS = @SNDIO_LIBS@
@@ -690,6 +692,8 @@
WAYLAND_LIBS = @WAYLAND_LIBS@
WEBP_CFLAGS = @WEBP_CFLAGS@
WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
WGET = @WGET@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
diff --git a/ext/musepack/gstmusepackdec.c b/ext/musepack/gstmusepackdec.c
index bf08b1d..f8670ec 100644
--- a/ext/musepack/gstmusepackdec.c
+++ b/ext/musepack/gstmusepackdec.c
@@ -19,10 +19,6 @@
* Boston, MA 02110-1301, USA.
*/
-/* FIXME 0.11: suppress warnings for deprecated API such as GStaticRecMutex
- * with newer GLib versions (>= 2.31.0) */
-#define GLIB_DISABLE_DEPRECATION_WARNINGS
-
#ifdef HAVE_CONFIG_H
#include "config.h"
#endif
@@ -44,66 +40,67 @@
);
#ifdef MPC_FIXED_POINT
-#define BASE_CAPS \
- "audio/x-raw-int, " \
- "signed = (bool) TRUE, " \
- "width = (int) 32, " \
- "depth = (int) 32"
+# if G_BYTE_ORDER == G_LITTLE_ENDIAN
+# define GST_MPC_FORMAT "S32LE"
+# else
+# define GST_MPC_FORMAT "S32BE"
+# endif
#else
-#define BASE_CAPS \
- "audio/x-raw-float, " \
- "width = (int) 32"
+# if G_BYTE_ORDER == G_LITTLE_ENDIAN
+# define GST_MPC_FORMAT "F32LE"
+# else
+# define GST_MPC_FORMAT "F32BE"
+# endif
#endif
static GstStaticPadTemplate src_template = GST_STATIC_PAD_TEMPLATE ("src",
GST_PAD_SRC,
GST_PAD_ALWAYS,
- GST_STATIC_CAPS (BASE_CAPS ", "
- "endianness = (int) BYTE_ORDER, "
+ GST_STATIC_CAPS ("audio/x-raw, "
+ "format = (string) " GST_MPC_FORMAT ", "
+ "layout = (string) interleaved, "
"rate = (int) [ 8000, 96000 ], " "channels = (int) [ 1, 2 ]")
);
static void gst_musepackdec_dispose (GObject * obj);
-static gboolean gst_musepackdec_src_event (GstPad * pad, GstEvent * event);
-static const GstQueryType *gst_musepackdec_get_src_query_types (GstPad * pad);
-static gboolean gst_musepackdec_src_query (GstPad * pad, GstQuery * query);
-static gboolean gst_musepackdec_sink_activate (GstPad * sinkpad);
-static gboolean
-gst_musepackdec_sink_activate_pull (GstPad * sinkpad, gboolean active);
+static gboolean gst_musepackdec_src_event (GstPad * pad, GstObject * parent,
+ GstEvent * event);
+static gboolean gst_musepackdec_src_query (GstPad * pad, GstObject * parent,
+ GstQuery * query);
+static gboolean gst_musepackdec_sink_activate (GstPad * sinkpad,
+ GstObject * parent);
+static gboolean gst_musepackdec_sink_activate_mode (GstPad * sinkpad,
+ GstObject * parent, GstPadMode mode, gboolean active);
static void gst_musepackdec_loop (GstPad * sinkpad);
static GstStateChangeReturn
gst_musepackdec_change_state (GstElement * element, GstStateChange transition);
-GST_BOILERPLATE (GstMusepackDec, gst_musepackdec, GstElement, GST_TYPE_ELEMENT);
-
-static void
-gst_musepackdec_base_init (gpointer klass)
-{
- GstElementClass *element_class = GST_ELEMENT_CLASS (klass);
-
- gst_element_class_add_pad_template (element_class,
- gst_static_pad_template_get (&src_template));
- gst_element_class_add_pad_template (element_class,
- gst_static_pad_template_get (&sink_template));
-
- gst_element_class_set_static_metadata (element_class, "Musepack decoder",
- "Codec/Decoder/Audio",
- "Musepack decoder", "Ronald Bultje <rbultje@ronald.bitfreak.net>");
-}
+#define parent_class gst_musepackdec_parent_class
+G_DEFINE_TYPE (GstMusepackDec, gst_musepackdec, GST_TYPE_ELEMENT);
static void
gst_musepackdec_class_init (GstMusepackDecClass * klass)
{
- GST_ELEMENT_CLASS (klass)->change_state =
- GST_DEBUG_FUNCPTR (gst_musepackdec_change_state);
+ GObjectClass *gobject_class = G_OBJECT_CLASS (klass);
+ GstElementClass *element_class = GST_ELEMENT_CLASS (klass);
- G_OBJECT_CLASS (klass)->dispose = GST_DEBUG_FUNCPTR (gst_musepackdec_dispose);
+ gst_element_class_add_static_pad_template (element_class, &src_template);
+ gst_element_class_add_static_pad_template (element_class, &sink_template);
+
+ gst_element_class_set_static_metadata (element_class, "Musepack decoder",
+ "Codec/Decoder/Audio",
+ "Musepack decoder", "Ronald Bultje <rbultje@ronald.bitfreak.net>");
+
+ gobject_class->dispose = GST_DEBUG_FUNCPTR (gst_musepackdec_dispose);
+
+ element_class->change_state =
+ GST_DEBUG_FUNCPTR (gst_musepackdec_change_state);
}
static void
-gst_musepackdec_init (GstMusepackDec * musepackdec, GstMusepackDecClass * klass)
+gst_musepackdec_init (GstMusepackDec * musepackdec)
{
musepackdec->offset = 0;
musepackdec->rate = 0;
@@ -118,8 +115,8 @@
gst_pad_new_from_static_template (&sink_template, "sink");
gst_pad_set_activate_function (musepackdec->sinkpad,
GST_DEBUG_FUNCPTR (gst_musepackdec_sink_activate));
- gst_pad_set_activatepull_function (musepackdec->sinkpad,
- GST_DEBUG_FUNCPTR (gst_musepackdec_sink_activate_pull));
+ gst_pad_set_activatemode_function (musepackdec->sinkpad,
+ GST_DEBUG_FUNCPTR (gst_musepackdec_sink_activate_mode));
gst_element_add_pad (GST_ELEMENT (musepackdec), musepackdec->sinkpad);
musepackdec->srcpad = gst_pad_new_from_static_template (&src_template, "src");
@@ -127,8 +124,6 @@
GST_DEBUG_FUNCPTR (gst_musepackdec_src_event));
gst_pad_set_query_function (musepackdec->srcpad,
GST_DEBUG_FUNCPTR (gst_musepackdec_src_query));
- gst_pad_set_query_type_function (musepackdec->srcpad,
- GST_DEBUG_FUNCPTR (gst_musepackdec_get_src_query_types));
gst_pad_use_fixed_caps (musepackdec->srcpad);
gst_element_add_pad (GST_ELEMENT (musepackdec), musepackdec->srcpad);
}
@@ -157,22 +152,19 @@
static void
gst_musepackdec_send_newsegment (GstMusepackDec * dec)
{
- GstSegment *s = &dec->segment;
- gint64 stop_time = GST_CLOCK_TIME_NONE;
- gint64 start_time = 0;
+ GstSegment os = dec->segment;
- start_time = gst_util_uint64_scale_int (s->start, GST_SECOND, dec->rate);
-
- if (s->stop != -1)
- stop_time = gst_util_uint64_scale_int (s->stop, GST_SECOND, dec->rate);
+ os.format = GST_FORMAT_TIME;
+ os.start = gst_util_uint64_scale_int (os.start, GST_SECOND, dec->rate);
+ if (os.stop)
+ os.stop = gst_util_uint64_scale_int (os.stop, GST_SECOND, dec->rate);
+ os.time = gst_util_uint64_scale_int (os.time, GST_SECOND, dec->rate);
GST_DEBUG_OBJECT (dec, "sending newsegment from %" GST_TIME_FORMAT
- " to %" GST_TIME_FORMAT ", rate = %.1f", GST_TIME_ARGS (start_time),
- GST_TIME_ARGS (stop_time), s->rate);
+ " to %" GST_TIME_FORMAT ", rate = %.1f", GST_TIME_ARGS (os.start),
+ GST_TIME_ARGS (os.stop), os.rate);
- gst_pad_push_event (dec->srcpad,
- gst_event_new_new_segment (FALSE, s->rate, GST_FORMAT_TIME,
- start_time, stop_time, start_time));
+ gst_pad_push_event (dec->srcpad, gst_event_new_segment (&os));
}
static gboolean
@@ -216,10 +208,10 @@
/* operate on segment copy until we know the seek worked */
segment = dec->segment;
- gst_segment_set_seek (&segment, rate, GST_FORMAT_DEFAULT,
+ gst_segment_do_seek (&segment, rate, GST_FORMAT_DEFAULT,
flags, start_type, start, stop_type, stop, NULL);
- gst_pad_push_event (dec->sinkpad, gst_event_new_flush_stop ());
+ gst_pad_push_event (dec->sinkpad, gst_event_new_flush_stop (TRUE));
GST_DEBUG_OBJECT (dec, "segment: [%" G_GINT64_FORMAT "-%" G_GINT64_FORMAT
"] = [%" GST_TIME_FORMAT "-%" GST_TIME_FORMAT "]",
@@ -251,10 +243,10 @@
}
if (flush) {
- gst_pad_push_event (dec->srcpad, gst_event_new_flush_stop ());
+ gst_pad_push_event (dec->srcpad, gst_event_new_flush_stop (TRUE));
}
- gst_segment_set_last_stop (&segment, GST_FORMAT_DEFAULT, segment.start);
+ segment.position = segment.start;
dec->segment = segment;
gst_musepackdec_send_newsegment (dec);
@@ -276,12 +268,12 @@
}
static gboolean
-gst_musepackdec_src_event (GstPad * pad, GstEvent * event)
+gst_musepackdec_src_event (GstPad * pad, GstObject * parent, GstEvent * event)
{
GstMusepackDec *dec;
gboolean res;
- dec = GST_MUSEPACK_DEC (gst_pad_get_parent (pad));
+ dec = GST_MUSEPACK_DEC (parent);
GST_DEBUG_OBJECT (dec, "handling %s event", GST_EVENT_TYPE_NAME (event));
@@ -290,31 +282,17 @@
res = gst_musepackdec_handle_seek_event (dec, event);
break;
default:
- res = gst_pad_event_default (pad, event);
+ res = gst_pad_event_default (pad, parent, event);
break;
}
- gst_object_unref (dec);
return res;
}
-static const GstQueryType *
-gst_musepackdec_get_src_query_types (GstPad * pad)
-{
- static const GstQueryType query_types[] = {
- GST_QUERY_POSITION,
- GST_QUERY_DURATION,
- GST_QUERY_SEEKING,
- (GstQueryType) 0
- };
-
- return query_types;
-}
-
static gboolean
-gst_musepackdec_src_query (GstPad * pad, GstQuery * query)
+gst_musepackdec_src_query (GstPad * pad, GstObject * parent, GstQuery * query)
{
- GstMusepackDec *musepackdec = GST_MUSEPACK_DEC (gst_pad_get_parent (pad));
+ GstMusepackDec *musepackdec = GST_MUSEPACK_DEC (parent);
GstFormat format;
gboolean res = FALSE;
gint samplerate;
@@ -331,7 +309,7 @@
gst_query_parse_position (query, &format, NULL);
GST_OBJECT_LOCK (musepackdec);
- cur_off = musepackdec->segment.last_stop;
+ cur_off = musepackdec->segment.position;
GST_OBJECT_UNLOCK (musepackdec);
if (format == GST_FORMAT_TIME) {
@@ -365,23 +343,31 @@
}
case GST_QUERY_SEEKING:{
GstFormat fmt;
+ gint64 len, len_off;
res = TRUE;
gst_query_parse_seeking (query, &fmt, NULL, NULL, NULL);
- if (fmt == GST_FORMAT_TIME || fmt == GST_FORMAT_DEFAULT)
- gst_query_set_seeking (query, fmt, TRUE, 0, -1);
- else
- gst_query_set_seeking (query, fmt, FALSE, -1, -1);
+ GST_OBJECT_LOCK (musepackdec);
+ len_off = musepackdec->segment.duration;
+ GST_OBJECT_UNLOCK (musepackdec);
+
+ if (fmt == GST_FORMAT_TIME) {
+ len = gst_util_uint64_scale_int (len_off, GST_SECOND, samplerate);
+ gst_query_set_seeking (query, fmt, TRUE, 0, len);
+ } else if (fmt == GST_FORMAT_DEFAULT) {
+ gst_query_set_seeking (query, fmt, TRUE, 0, len_off);
+ } else {
+ gst_query_set_seeking (query, fmt, FALSE, -1, -1);
+ }
break;
}
default:
- res = gst_pad_query_default (pad, query);
+ res = gst_pad_query_default (pad, parent, query);
break;
}
done:
- gst_object_unref (musepackdec);
return res;
}
@@ -391,6 +377,7 @@
mpc_streaminfo i;
GstTagList *tags;
GstCaps *caps;
+ gchar *stream_id;
/* set up reading */
gst_musepack_init_reader (musepackdec->r, musepackdec);
@@ -420,10 +407,16 @@
mpc_demux_get_info (musepackdec->d, &i);
#endif
+ stream_id = gst_pad_create_stream_id (musepackdec->srcpad,
+ GST_ELEMENT_CAST (musepackdec), NULL);
+ gst_pad_push_event (musepackdec->srcpad,
+ gst_event_new_stream_start (stream_id));
+ g_free (stream_id);
+
/* capsnego */
- caps = gst_caps_from_string (BASE_CAPS);
- gst_caps_set_simple (caps,
- "endianness", G_TYPE_INT, G_BYTE_ORDER,
+ caps = gst_caps_new_simple ("audio/x-raw",
+ "format", G_TYPE_STRING, GST_MPC_FORMAT,
+ "layout", G_TYPE_STRING, "interleaved",
"channels", G_TYPE_INT, i.channels,
"rate", G_TYPE_INT, i.sample_freq, NULL);
gst_pad_use_fixed_caps (musepackdec->srcpad);
@@ -435,12 +428,11 @@
g_atomic_int_set (&musepackdec->bps, 4 * i.channels);
g_atomic_int_set (&musepackdec->rate, i.sample_freq);
- gst_segment_set_last_stop (&musepackdec->segment, GST_FORMAT_DEFAULT, 0);
- gst_segment_set_duration (&musepackdec->segment, GST_FORMAT_DEFAULT,
- mpc_streaminfo_get_length_samples (&i));
+ musepackdec->segment.position = 0;
+ musepackdec->segment.duration = mpc_streaminfo_get_length_samples (&i);
/* send basic tags */
- tags = gst_tag_list_new ();
+ tags = gst_tag_list_new_empty ();
gst_tag_list_add (tags, GST_TAG_MERGE_REPLACE,
GST_TAG_AUDIO_CODEC, "Musepack", NULL);
@@ -472,30 +464,57 @@
}
GST_LOG_OBJECT (musepackdec, "Posting tags: %" GST_PTR_FORMAT, tags);
- gst_element_found_tags (GST_ELEMENT (musepackdec), tags);
+ gst_pad_push_event (musepackdec->srcpad, gst_event_new_tag (tags));
+
return TRUE;
}
static gboolean
-gst_musepackdec_sink_activate (GstPad * sinkpad)
+gst_musepackdec_sink_activate (GstPad * sinkpad, GstObject * parent)
{
- if (!gst_pad_check_pull_range (sinkpad))
+ GstQuery *query;
+ gboolean pull_mode;
+
+ query = gst_query_new_scheduling ();
+
+ if (!gst_pad_peer_query (sinkpad, query)) {
+ gst_query_unref (query);
+ return FALSE;
+ }
+
+ pull_mode = gst_query_has_scheduling_mode_with_flags (query,
+ GST_PAD_MODE_PULL, GST_SCHEDULING_FLAG_SEEKABLE);
+ gst_query_unref (query);
+
+ if (!pull_mode)
return FALSE;
- return gst_pad_activate_pull (sinkpad, TRUE);
+ GST_DEBUG_OBJECT (sinkpad, "activating pull");
+ return gst_pad_activate_mode (sinkpad, GST_PAD_MODE_PULL, TRUE);
}
static gboolean
-gst_musepackdec_sink_activate_pull (GstPad * sinkpad, gboolean active)
+gst_musepackdec_sink_activate_mode (GstPad * sinkpad, GstObject * parent,
+ GstPadMode mode, gboolean active)
{
gboolean result;
- if (active) {
- result = gst_pad_start_task (sinkpad,
- (GstTaskFunction) gst_musepackdec_loop, sinkpad, NULL);
- } else {
- result = gst_pad_stop_task (sinkpad);
+ switch (mode) {
+ case GST_PAD_MODE_PUSH:
+ result = FALSE;
+ break;
+ case GST_PAD_MODE_PULL:
+ if (active) {
+ result = gst_pad_start_task (sinkpad,
+ (GstTaskFunction) gst_musepackdec_loop, sinkpad, NULL);
+ } else {
+ result = gst_pad_stop_task (sinkpad);
+ }
+ break;
+ default:
+ result = FALSE;
+ break;
}
return result;
@@ -507,6 +526,7 @@
GstMusepackDec *musepackdec;
GstFlowReturn flow;
GstBuffer *out;
+ GstMapInfo info;
#ifdef MPC_IS_OLD_API
guint32 update_acc, update_bits;
@@ -530,16 +550,14 @@
bitspersample = g_atomic_int_get (&musepackdec->bps);
- flow = gst_pad_alloc_buffer_and_set_caps (musepackdec->srcpad, -1,
- MPC_DECODER_BUFFER_LENGTH * 4, GST_PAD_CAPS (musepackdec->srcpad), &out);
+ out = gst_buffer_new_allocate (NULL, MPC_DECODER_BUFFER_LENGTH * 4, NULL);
- if (flow != GST_FLOW_OK) {
- GST_DEBUG_OBJECT (musepackdec, "Flow: %s", gst_flow_get_name (flow));
- goto pause_task;
- }
#ifdef MPC_IS_OLD_API
+
+ gst_buffer_map (out, &info, GST_MAP_READWRITE);
num_samples = mpc_decoder_decode (musepackdec->d,
- (MPC_SAMPLE_FORMAT *) GST_BUFFER_DATA (out), &update_acc, &update_bits);
+ (MPC_SAMPLE_FORMAT *) info.data, &update_acc, &update_bits);
+ gst_buffer_unmap (out, &info);
if (num_samples < 0) {
GST_ERROR_OBJECT (musepackdec, "Failed to decode sample");
@@ -549,8 +567,10 @@
goto eos_and_pause;
}
#else
- frame.buffer = (MPC_SAMPLE_FORMAT *) GST_BUFFER_DATA (out);
+ gst_buffer_map (out, &info, GST_MAP_READWRITE);
+ frame.buffer = (MPC_SAMPLE_FORMAT *) info.data;
err = mpc_demux_decode (musepackdec->d, &frame);
+ gst_buffer_unmap (out, &info);
if (err != MPC_STATUS_OK) {
GST_ERROR_OBJECT (musepackdec, "Failed to decode sample");
@@ -563,16 +583,16 @@
num_samples = frame.samples;
#endif
- GST_BUFFER_SIZE (out) = num_samples * bitspersample;
+ gst_buffer_set_size (out, num_samples * bitspersample);
- GST_BUFFER_OFFSET (out) = musepackdec->segment.last_stop;
- GST_BUFFER_TIMESTAMP (out) =
- gst_util_uint64_scale_int (musepackdec->segment.last_stop,
+ GST_BUFFER_OFFSET (out) = musepackdec->segment.position;
+ GST_BUFFER_PTS (out) =
+ gst_util_uint64_scale_int (musepackdec->segment.position,
GST_SECOND, samplerate);
GST_BUFFER_DURATION (out) =
gst_util_uint64_scale_int (num_samples, GST_SECOND, samplerate);
- musepackdec->segment.last_stop += num_samples;
+ musepackdec->segment.position += num_samples;
GST_LOG_OBJECT (musepackdec, "Pushing buffer, timestamp %" GST_TIME_FORMAT,
GST_TIME_ARGS (GST_BUFFER_TIMESTAMP (out)));
@@ -585,7 +605,7 @@
/* check if we're at the end of a configured segment */
if (musepackdec->segment.stop != -1 &&
- musepackdec->segment.last_stop >= musepackdec->segment.stop) {
+ musepackdec->segment.position >= musepackdec->segment.stop) {
gint64 stop_time;
GST_DEBUG_OBJECT (musepackdec, "Reached end of configured segment");
@@ -633,7 +653,7 @@
switch (transition) {
case GST_STATE_CHANGE_READY_TO_PAUSED:
gst_segment_init (&musepackdec->segment, GST_FORMAT_DEFAULT);
- gst_segment_set_last_stop (&musepackdec->segment, GST_FORMAT_DEFAULT, 0);
+ musepackdec->segment.position = 0;
break;
default:
break;
diff --git a/ext/musepack/gstmusepackreader.c b/ext/musepack/gstmusepackreader.c
index 6717698..2c5bb14 100644
--- a/ext/musepack/gstmusepackreader.c
+++ b/ext/musepack/gstmusepackreader.c
@@ -77,7 +77,7 @@
return 0;
}
- read = MIN (GST_BUFFER_SIZE (buf), size);
+ read = MIN (gst_buffer_get_size (buf), size);
if (read < size) {
GST_WARNING_OBJECT (musepackdec, "Short read: got only %u bytes of %u "
@@ -86,7 +86,7 @@
/* GST_ELEMENT_ERROR (musepackdec, RESOURCE, READ, (NULL), (NULL)); */
}
- memcpy (ptr, GST_BUFFER_DATA (buf), read);
+ gst_buffer_extract (buf, 0, ptr, read);
gst_buffer_unref (buf);
return read;
}
@@ -161,10 +161,14 @@
{
GstMusepackDec *dec = GST_MUSEPACK_DEC (this->data);
#endif
- GstFormat format = GST_FORMAT_BYTES;
- gint64 length = -1;
+ GstQuery *query;
+ GstFormat format;
+ gint64 length;
- if (!gst_pad_query_peer_duration (dec->sinkpad, &format, &length))
+ query = gst_query_new_duration (GST_FORMAT_BYTES);
+ if (gst_pad_peer_query (dec->sinkpad, query))
+ gst_query_parse_duration (query, &format, &length);
+ else
length = -1;
return (mpc_int32_t) length;
diff --git a/ext/nas/Makefile.in b/ext/nas/Makefile.in
index d8cbef4..1ac8f13 100644
--- a/ext/nas/Makefile.in
+++ b/ext/nas/Makefile.in
@@ -302,6 +302,8 @@
DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
DSYMUTIL = @DSYMUTIL@
DTLS_CFLAGS = @DTLS_CFLAGS@
DTLS_LIBS = @DTLS_LIBS@
@@ -517,6 +519,8 @@
LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
LIPO = @LIPO@
LN_S = @LN_S@
LOCALEDIR = @LOCALEDIR@
@@ -643,8 +647,6 @@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
SNDIO_LIBS = @SNDIO_LIBS@
@@ -689,6 +691,8 @@
WAYLAND_LIBS = @WAYLAND_LIBS@
WEBP_CFLAGS = @WEBP_CFLAGS@
WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
WGET = @WGET@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
diff --git a/ext/nas/nassink.c b/ext/nas/nassink.c
index cd8485b..2d6404b 100644
--- a/ext/nas/nassink.c
+++ b/ext/nas/nassink.c
@@ -94,8 +94,7 @@
{
GstElementClass *element_class = GST_ELEMENT_CLASS (g_class);
- gst_element_class_add_pad_template (element_class,
- gst_static_pad_template_get (&sink_factory));
+ gst_element_class_add_static_pad_template (element_class, &sink_factory);
gst_element_class_set_static_metadata (element_class, "NAS audio sink",
"Sink/Audio",
"Plays audio to a Network Audio Server",
diff --git a/ext/neon/Makefile.in b/ext/neon/Makefile.in
index f1797d0..9de8640 100644
--- a/ext/neon/Makefile.in
+++ b/ext/neon/Makefile.in
@@ -303,6 +303,8 @@
DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
DSYMUTIL = @DSYMUTIL@
DTLS_CFLAGS = @DTLS_CFLAGS@
DTLS_LIBS = @DTLS_LIBS@
@@ -518,6 +520,8 @@
LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
LIPO = @LIPO@
LN_S = @LN_S@
LOCALEDIR = @LOCALEDIR@
@@ -644,8 +648,6 @@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
SNDIO_LIBS = @SNDIO_LIBS@
@@ -690,6 +692,8 @@
WAYLAND_LIBS = @WAYLAND_LIBS@
WEBP_CFLAGS = @WEBP_CFLAGS@
WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
WGET = @WGET@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
diff --git a/ext/neon/gstneonhttpsrc.c b/ext/neon/gstneonhttpsrc.c
index 8a4ff0d..03c596c 100644
--- a/ext/neon/gstneonhttpsrc.c
+++ b/ext/neon/gstneonhttpsrc.c
@@ -203,8 +203,7 @@
GST_DEBUG_CATEGORY_INIT (neonhttpsrc_debug, "neonhttpsrc", 0,
"NEON HTTP Client Source");
- gst_element_class_add_pad_template (element_class,
- gst_static_pad_template_get (&srctemplate));
+ gst_element_class_add_static_pad_template (element_class, &srctemplate);
gst_element_class_set_static_metadata (element_class, "HTTP client source",
"Source/Network",
diff --git a/ext/ofa/Makefile.in b/ext/ofa/Makefile.in
index 58d02ba..af6bdc9 100644
--- a/ext/ofa/Makefile.in
+++ b/ext/ofa/Makefile.in
@@ -303,6 +303,8 @@
DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
DSYMUTIL = @DSYMUTIL@
DTLS_CFLAGS = @DTLS_CFLAGS@
DTLS_LIBS = @DTLS_LIBS@
@@ -518,6 +520,8 @@
LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
LIPO = @LIPO@
LN_S = @LN_S@
LOCALEDIR = @LOCALEDIR@
@@ -644,8 +648,6 @@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
SNDIO_LIBS = @SNDIO_LIBS@
@@ -690,6 +692,8 @@
WAYLAND_LIBS = @WAYLAND_LIBS@
WEBP_CFLAGS = @WEBP_CFLAGS@
WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
WGET = @WGET@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
diff --git a/ext/openal/Makefile.in b/ext/openal/Makefile.in
index 929858a..b676c8a 100644
--- a/ext/openal/Makefile.in
+++ b/ext/openal/Makefile.in
@@ -307,6 +307,8 @@
DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
DSYMUTIL = @DSYMUTIL@
DTLS_CFLAGS = @DTLS_CFLAGS@
DTLS_LIBS = @DTLS_LIBS@
@@ -522,6 +524,8 @@
LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
LIPO = @LIPO@
LN_S = @LN_S@
LOCALEDIR = @LOCALEDIR@
@@ -648,8 +652,6 @@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
SNDIO_LIBS = @SNDIO_LIBS@
@@ -694,6 +696,8 @@
WAYLAND_LIBS = @WAYLAND_LIBS@
WEBP_CFLAGS = @WEBP_CFLAGS@
WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
WGET = @WGET@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
diff --git a/ext/openal/gstopenalsink.c b/ext/openal/gstopenalsink.c
index 74f58e4..66de051 100644
--- a/ext/openal/gstopenalsink.c
+++ b/ext/openal/gstopenalsink.c
@@ -229,8 +229,8 @@
"Sink/Audio", "Output audio through OpenAL",
"Juan Manuel Borges Caño <juanmabcmail@gmail.com>");
- gst_element_class_add_pad_template (gstelement_class,
- gst_static_pad_template_get (&openalsink_factory));
+ gst_element_class_add_static_pad_template (gstelement_class,
+ &openalsink_factory);
}
diff --git a/ext/openal/gstopenalsrc.c b/ext/openal/gstopenalsrc.c
index d06b3c4..26e73d4 100644
--- a/ext/openal/gstopenalsrc.c
+++ b/ext/openal/gstopenalsrc.c
@@ -192,8 +192,8 @@
"OpenAL Audio Source", "Source/Audio", "Input audio through OpenAL",
"Juan Manuel Borges Caño <juanmabcmail@gmail.com>");
- gst_element_class_add_pad_template (gstelement_class,
- gst_static_pad_template_get (&openalsrc_factory));
+ gst_element_class_add_static_pad_template (gstelement_class,
+ &openalsrc_factory);
}
static void
diff --git a/ext/opencv/Makefile.am b/ext/opencv/Makefile.am
index 0eee38c..360d4ab 100644
--- a/ext/opencv/Makefile.am
+++ b/ext/opencv/Makefile.am
@@ -14,7 +14,6 @@
gstedgedetect.cpp \
gstfaceblur.cpp \
gsthanddetect.cpp \
- gstpyramidsegment.cpp \
gsttemplatematch.cpp \
gsttextoverlay.cpp \
gstmotioncells.cpp \
@@ -59,7 +58,6 @@
gstfaceblur.h \
gstfacedetect.h \
gsthanddetect.h \
- gstpyramidsegment.h \
gsttemplatematch.h \
gsttextoverlay.h \
gstskindetect.h \
diff --git a/ext/opencv/Makefile.in b/ext/opencv/Makefile.in
index 1aaafee..3c56b33 100644
--- a/ext/opencv/Makefile.in
+++ b/ext/opencv/Makefile.in
@@ -178,7 +178,6 @@
libgstopencv_la-gstedgedetect.lo \
libgstopencv_la-gstfaceblur.lo \
libgstopencv_la-gsthanddetect.lo \
- libgstopencv_la-gstpyramidsegment.lo \
libgstopencv_la-gsttemplatematch.lo \
libgstopencv_la-gsttextoverlay.lo \
libgstopencv_la-gstmotioncells.lo \
@@ -325,6 +324,8 @@
DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
DSYMUTIL = @DSYMUTIL@
DTLS_CFLAGS = @DTLS_CFLAGS@
DTLS_LIBS = @DTLS_LIBS@
@@ -540,6 +541,8 @@
LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
LIPO = @LIPO@
LN_S = @LN_S@
LOCALEDIR = @LOCALEDIR@
@@ -666,8 +669,6 @@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
SNDIO_LIBS = @SNDIO_LIBS@
@@ -712,6 +713,8 @@
WAYLAND_LIBS = @WAYLAND_LIBS@
WEBP_CFLAGS = @WEBP_CFLAGS@
WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
WGET = @WGET@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
@@ -816,7 +819,6 @@
gstedgedetect.cpp \
gstfaceblur.cpp \
gsthanddetect.cpp \
- gstpyramidsegment.cpp \
gsttemplatematch.cpp \
gsttextoverlay.cpp \
gstmotioncells.cpp \
@@ -862,7 +864,6 @@
gstfaceblur.h \
gstfacedetect.h \
gsthanddetect.h \
- gstpyramidsegment.h \
gsttemplatematch.h \
gsttextoverlay.h \
gstskindetect.h \
@@ -973,7 +974,6 @@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstopencv_la-gstopencv.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstopencv_la-gstopencvutils.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstopencv_la-gstopencvvideofilter.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstopencv_la-gstpyramidsegment.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstopencv_la-gstretinex.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstopencv_la-gstsegmentation.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstopencv_la-gstskindetect.Plo@am__quote@
@@ -1096,13 +1096,6 @@
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(libgstopencv_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstopencv_la_CXXFLAGS) $(CXXFLAGS) -c -o libgstopencv_la-gsthanddetect.lo `test -f 'gsthanddetect.cpp' || echo '$(srcdir)/'`gsthanddetect.cpp
-libgstopencv_la-gstpyramidsegment.lo: gstpyramidsegment.cpp
-@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(libgstopencv_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstopencv_la_CXXFLAGS) $(CXXFLAGS) -MT libgstopencv_la-gstpyramidsegment.lo -MD -MP -MF $(DEPDIR)/libgstopencv_la-gstpyramidsegment.Tpo -c -o libgstopencv_la-gstpyramidsegment.lo `test -f 'gstpyramidsegment.cpp' || echo '$(srcdir)/'`gstpyramidsegment.cpp
-@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgstopencv_la-gstpyramidsegment.Tpo $(DEPDIR)/libgstopencv_la-gstpyramidsegment.Plo
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='gstpyramidsegment.cpp' object='libgstopencv_la-gstpyramidsegment.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(libgstopencv_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstopencv_la_CXXFLAGS) $(CXXFLAGS) -c -o libgstopencv_la-gstpyramidsegment.lo `test -f 'gstpyramidsegment.cpp' || echo '$(srcdir)/'`gstpyramidsegment.cpp
-
libgstopencv_la-gsttemplatematch.lo: gsttemplatematch.cpp
@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(libgstopencv_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstopencv_la_CXXFLAGS) $(CXXFLAGS) -MT libgstopencv_la-gsttemplatematch.lo -MD -MP -MF $(DEPDIR)/libgstopencv_la-gsttemplatematch.Tpo -c -o libgstopencv_la-gsttemplatematch.lo `test -f 'gsttemplatematch.cpp' || echo '$(srcdir)/'`gsttemplatematch.cpp
@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgstopencv_la-gsttemplatematch.Tpo $(DEPDIR)/libgstopencv_la-gsttemplatematch.Plo
diff --git a/ext/opencv/MotionCells.cpp b/ext/opencv/MotionCells.cpp
index 9a16176..53d3371 100644
--- a/ext/opencv/MotionCells.cpp
+++ b/ext/opencv/MotionCells.cpp
@@ -79,6 +79,15 @@
m_cellwidth = 0;
m_cellheight = 0;
m_sensitivity = 0;
+
+ memset (&m_header, 0, sizeof (MotionCellHeader));
+ m_header.headersize = GINT32_TO_BE (MC_HEADER);
+ m_header.type = GINT32_TO_BE (MC_TYPE);
+ m_header.version = GINT32_TO_BE (MC_VERSION);
+ m_header.itemsize = 0;
+ m_header.gridx = 0;
+ m_header.gridy = 0;
+ m_header.starttime = 0;
}
MotionCells::~MotionCells ()
@@ -116,6 +125,8 @@
int sumframecnt = 0;
int ret = 0;
+ CvSize frameSize;
+
p_framerate >= 1 ? p_framerate <= 5 ? sumframecnt = 1
: p_framerate <= 10 ? sumframecnt = 2
: p_framerate <= 15 ? sumframecnt = 3
@@ -135,21 +146,21 @@
return ret;
}
- m_frameSize = cvGetSize (p_frame);
- m_frameSize.width /= 2;
- m_frameSize.height /= 2;
- setMotionCells (m_frameSize.width, m_frameSize.height);
+ frameSize = cvGetSize (p_frame);
+ frameSize.width /= 2;
+ frameSize.height /= 2;
+ setMotionCells (frameSize.width, frameSize.height);
m_sensitivity = 1 - p_sensitivity;
m_isVisible = p_isVisible;
m_pcurFrame = cvCloneImage (p_frame);
- IplImage *m_pcurgreyImage = cvCreateImage (m_frameSize, IPL_DEPTH_8U, 1);
- IplImage *m_pprevgreyImage = cvCreateImage (m_frameSize, IPL_DEPTH_8U, 1);
- IplImage *m_pgreyImage = cvCreateImage (m_frameSize, IPL_DEPTH_8U, 1);
+ IplImage *m_pcurgreyImage = cvCreateImage (frameSize, IPL_DEPTH_8U, 1);
+ IplImage *m_pprevgreyImage = cvCreateImage (frameSize, IPL_DEPTH_8U, 1);
+ IplImage *m_pgreyImage = cvCreateImage (frameSize, IPL_DEPTH_8U, 1);
IplImage *m_pcurDown =
- cvCreateImage (m_frameSize, m_pcurFrame->depth, m_pcurFrame->nChannels);
- IplImage *m_pprevDown = cvCreateImage (m_frameSize, m_pprevFrame->depth,
+ cvCreateImage (frameSize, m_pcurFrame->depth, m_pcurFrame->nChannels);
+ IplImage *m_pprevDown = cvCreateImage (frameSize, m_pprevFrame->depth,
m_pprevFrame->nChannels);
- m_pbwImage = cvCreateImage (m_frameSize, IPL_DEPTH_8U, 1);
+ m_pbwImage = cvCreateImage (frameSize, IPL_DEPTH_8U, 1);
cvPyrDown (m_pprevFrame, m_pprevDown);
cvCvtColor (m_pprevDown, m_pprevgreyImage, CV_RGB2GRAY);
cvPyrDown (m_pcurFrame, m_pcurDown);
@@ -333,10 +344,7 @@
}
} else
mc_savefile = NULL;
- memset (&m_header, 0, sizeof (MotionCellHeader));
- m_header.headersize = GINT32_TO_BE (MC_HEADER);
- m_header.type = GINT32_TO_BE (MC_TYPE);
- m_header.version = GINT32_TO_BE (MC_VERSION);
+
//it needs these bytes
m_header.itemsize =
GINT32_TO_BE ((int) ceil (ceil (m_gridx * m_gridy / 8.0) / 4.0) * 4 +
diff --git a/ext/opencv/MotionCells.h b/ext/opencv/MotionCells.h
index 97137bb..c858d87 100644
--- a/ext/opencv/MotionCells.h
+++ b/ext/opencv/MotionCells.h
@@ -242,7 +242,6 @@
IplImage *m_pcurFrame, *m_pprevFrame, *m_pdifferenceImage,
*m_pbwImage,*transparencyimg;
- CvSize m_frameSize;
bool m_isVisible, m_changed_datafile, m_useAlpha, m_saveInDatafile;
Cell **m_pCells;
vector < MotionCellsIdx > m_MotionCells;
diff --git a/ext/opencv/gstcvequalizehist.cpp b/ext/opencv/gstcvequalizehist.cpp
index ea1db28..bd3a7f0 100644
--- a/ext/opencv/gstcvequalizehist.cpp
+++ b/ext/opencv/gstcvequalizehist.cpp
@@ -93,10 +93,8 @@
gstopencvbasefilter_class->cv_trans_func = gst_cv_equalize_hist_transform;
- gst_element_class_add_pad_template (element_class,
- gst_static_pad_template_get (&src_factory));
- gst_element_class_add_pad_template (element_class,
- gst_static_pad_template_get (&sink_factory));
+ gst_element_class_add_static_pad_template (element_class, &src_factory);
+ gst_element_class_add_static_pad_template (element_class, &sink_factory);
gst_element_class_set_static_metadata (element_class,
"cvequalizehist",
diff --git a/ext/opencv/gstcvlaplace.cpp b/ext/opencv/gstcvlaplace.cpp
index c989456..c8293bd 100644
--- a/ext/opencv/gstcvlaplace.cpp
+++ b/ext/opencv/gstcvlaplace.cpp
@@ -164,10 +164,8 @@
"Sets whether the detected edges should be used as a mask on the original input or not",
DEFAULT_MASK, (GParamFlags) (G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)));
- gst_element_class_add_pad_template (element_class,
- gst_static_pad_template_get (&src_factory));
- gst_element_class_add_pad_template (element_class,
- gst_static_pad_template_get (&sink_factory));
+ gst_element_class_add_static_pad_template (element_class, &src_factory);
+ gst_element_class_add_static_pad_template (element_class, &sink_factory);
gst_element_class_set_static_metadata (element_class,
"cvlaplace",
diff --git a/ext/opencv/gstcvsmooth.cpp b/ext/opencv/gstcvsmooth.cpp
index 8715736..f9a8a02 100644
--- a/ext/opencv/gstcvsmooth.cpp
+++ b/ext/opencv/gstcvsmooth.cpp
@@ -317,18 +317,18 @@
switch (filter->type) {
case CV_BLUR:
- blur (Mat (img), Mat (img), Size (filter->width, filter->height),
+ blur (cvarrToMat(img), cvarrToMat(img), Size (filter->width, filter->height),
Point (-1, -1));
break;
case CV_GAUSSIAN:
- GaussianBlur (Mat (img), Mat (img), Size (filter->width, filter->height),
+ GaussianBlur (cvarrToMat(img), cvarrToMat(img), Size (filter->width, filter->height),
filter->colorsigma, filter->colorsigma);
break;
case CV_MEDIAN:
- medianBlur (Mat (img), Mat (img), filter->width);
+ medianBlur (cvarrToMat(img), cvarrToMat(img), filter->width);
break;
case CV_BILATERAL:
- bilateralFilter (Mat (img), Mat (img), -1, filter->colorsigma, 0.0);
+ bilateralFilter (cvarrToMat(img), cvarrToMat(img), -1, filter->colorsigma, 0.0);
break;
default:
break;
diff --git a/ext/opencv/gstcvsobel.cpp b/ext/opencv/gstcvsobel.cpp
index d5c9ef7..4c2ccc4 100644
--- a/ext/opencv/gstcvsobel.cpp
+++ b/ext/opencv/gstcvsobel.cpp
@@ -163,10 +163,8 @@
"Sets whether the detected derivative edges should be used as a mask on the original input or not",
DEFAULT_MASK, (GParamFlags) (G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)));
- gst_element_class_add_pad_template (element_class,
- gst_static_pad_template_get (&src_factory));
- gst_element_class_add_pad_template (element_class,
- gst_static_pad_template_get (&sink_factory));
+ gst_element_class_add_static_pad_template (element_class, &src_factory);
+ gst_element_class_add_static_pad_template (element_class, &sink_factory);
gst_element_class_set_static_metadata (element_class,
"cvsobel",
diff --git a/ext/opencv/gstdisparity.cpp b/ext/opencv/gstdisparity.cpp
index 3ca9015..486e865 100644
--- a/ext/opencv/gstdisparity.cpp
+++ b/ext/opencv/gstdisparity.cpp
@@ -119,12 +119,16 @@
#include <config.h>
#endif
-#include <opencv2/contrib/contrib.hpp>
#include "gstdisparity.h"
+#include <opencv2/imgproc/imgproc_c.h>
+#if (CV_MAJOR_VERSION >= 3)
+#include <opencv2/imgproc.hpp>
+#endif
GST_DEBUG_CATEGORY_STATIC (gst_disparity_debug);
#define GST_CAT_DEFAULT gst_disparity_debug
+using namespace cv;
/* Filter signals and args */
enum
{
@@ -141,9 +145,7 @@
typedef enum
{
METHOD_SBM,
- METHOD_SGBM,
- METHOD_VAR,
- METHOD_GC
+ METHOD_SGBM
} GstDisparityMethod;
#define DEFAULT_METHOD METHOD_SGBM
@@ -157,8 +159,6 @@
static const GEnumValue values[] = {
{METHOD_SBM, "Global block matching algorithm", "sbm"},
{METHOD_SGBM, "Semi-global block matching algorithm", "sgbm"},
- {METHOD_VAR, "Variational matching algorithm", "svar"},
- {METHOD_GC, "Graph-cut based matching algorithm", "sgc"},
{0, NULL, NULL},
};
etype = g_enum_register_static ("GstDisparityMethod", values);
@@ -205,8 +205,6 @@
static int initialise_sbm (GstDisparity * filter);
static int run_sbm_iteration (GstDisparity * filter);
static int run_sgbm_iteration (GstDisparity * filter);
-static int run_svar_iteration (GstDisparity * filter);
-static int run_sgc_iteration (GstDisparity * filter);
static int finalise_sbm (GstDisparity * filter);
/* initialize the disparity's class */
@@ -238,10 +236,8 @@
"Calculates the stereo disparity map from two (sequences of) rectified and aligned stereo images",
"Miguel Casas-Sanchez <miguelecasassanchez@gmail.com>");
- gst_element_class_add_pad_template (element_class,
- gst_static_pad_template_get (&src_factory));
- gst_element_class_add_pad_template (element_class,
- gst_static_pad_template_get (&sink_factory));
+ gst_element_class_add_static_pad_template (element_class, &src_factory);
+ gst_element_class_add_static_pad_template (element_class, &sink_factory);
}
/* initialize the new element
@@ -582,27 +578,6 @@
CV_MINMAX, NULL);
cvCvtColor (fs->cvGray_depth_map2, fs->cvRGB_right, CV_GRAY2RGB);
}
- /* The class implements the modified S. G. Kosov algorithm
- See the comments on top of the file.
- */
- else if (METHOD_VAR == fs->method) {
- cvCvtColor (fs->cvRGB_left, fs->cvGray_left, CV_RGB2GRAY);
- cvCvtColor (fs->cvRGB_right, fs->cvGray_right, CV_RGB2GRAY);
- run_svar_iteration (fs);
- cvCvtColor (fs->cvGray_depth_map2, fs->cvRGB_right, CV_GRAY2RGB);
- }
- /* The Graph Cut stereo vision algorithm (GC) introduced in [D] is a global
- stereo vision method. It calculates depth discontinuities by minimizing an
- energy function combingin a point-wise matching cost and a smoothness term.
- See the comments on top of the file.
- */
- else if (METHOD_GC == fs->method) {
- cvCvtColor (fs->cvRGB_left, fs->cvGray_left, CV_RGB2GRAY);
- cvCvtColor (fs->cvRGB_right, fs->cvGray_right, CV_RGB2GRAY);
- run_sgc_iteration (fs);
- cvConvertScale (fs->cvGray_depth_map1, fs->cvGray_depth_map2, -16.0, 0.0);
- cvCvtColor (fs->cvGray_depth_map2, fs->cvRGB_right, CV_GRAY2RGB);
- }
GST_DEBUG_OBJECT (pad, " right has finished");
@@ -665,72 +640,65 @@
int
initialise_sbm (GstDisparity * filter)
{
- filter->img_right_as_cvMat_rgb =
- (void *) new cv::Mat (filter->cvRGB_right, false);
- filter->img_left_as_cvMat_rgb =
- (void *) new cv::Mat (filter->cvRGB_left, false);
filter->img_right_as_cvMat_gray =
- (void *) new cv::Mat (filter->cvGray_right, false);
+ (void *) new Mat (cvarrToMat (filter->cvGray_right, false));
filter->img_left_as_cvMat_gray =
- (void *) new cv::Mat (filter->cvGray_left, false);
+ (void *) new Mat (cvarrToMat (filter->cvGray_left, false));
filter->depth_map_as_cvMat =
- (void *) new cv::Mat (filter->cvGray_depth_map1, false);
- filter->depth_map_as_cvMat2 =
- (void *) new cv::Mat (filter->cvGray_depth_map2, false);
+ (void *) new Mat (cvarrToMat (filter->cvGray_depth_map1, false));
+#if (CV_MAJOR_VERSION >= 3)
+ filter->sbm = StereoBM::create();
+ filter->sgbm = StereoSGBM::create(1,64,3);
- filter->sbm = (void *) new cv::StereoBM ();
- filter->sgbm = (void *) new cv::StereoSGBM ();
- filter->svar = (void *) new cv::StereoVar ();
- /* SGC has only two parameters on creation: NumerOfDisparities and MaxIters */
- filter->sgc = cvCreateStereoGCState (16, 2);
+ filter->sbm->setBlockSize (9);
+ filter->sbm->setNumDisparities (32);
+ filter->sbm->setPreFilterSize (9);
+ filter->sbm->setPreFilterCap (32);
+ filter->sbm->setMinDisparity (0);
+ filter->sbm->setTextureThreshold (0);
+ filter->sbm->setUniquenessRatio (0);
+ filter->sbm->setSpeckleWindowSize (0);
+ filter->sbm->setSpeckleRange (0);
+ filter->sbm->setDisp12MaxDiff (0);
- ((cv::StereoBM *) filter->sbm)->state->SADWindowSize = 9;
- ((cv::StereoBM *) filter->sbm)->state->numberOfDisparities = 32;
- ((cv::StereoBM *) filter->sbm)->state->preFilterSize = 9;
- ((cv::StereoBM *) filter->sbm)->state->preFilterCap = 32;
- ((cv::StereoBM *) filter->sbm)->state->minDisparity = 0;
- ((cv::StereoBM *) filter->sbm)->state->textureThreshold = 0;
- ((cv::StereoBM *) filter->sbm)->state->uniquenessRatio = 0;
- ((cv::StereoBM *) filter->sbm)->state->speckleWindowSize = 0;
- ((cv::StereoBM *) filter->sbm)->state->speckleRange = 0;
- ((cv::StereoBM *) filter->sbm)->state->disp12MaxDiff = 0;
+ filter->sgbm->setMinDisparity (1);
+ filter->sgbm->setNumDisparities (64);
+ filter->sgbm->setBlockSize (3);
+ filter->sgbm->setP1 (200);
+ filter->sgbm->setP2 (255);
+ filter->sgbm->setDisp12MaxDiff (0);
+ filter->sgbm->setPreFilterCap (0);
+ filter->sgbm->setUniquenessRatio (0);
+ filter->sgbm->setSpeckleWindowSize (0);
+ filter->sgbm->setSpeckleRange (0);
+ filter->sgbm->setMode (StereoSGBM::MODE_HH);
+#else
+ filter->sbm = (void *) new StereoBM ();
+ filter->sgbm = (void *) new StereoSGBM ();
- ((cv::StereoSGBM *) filter->sgbm)->minDisparity = 1;
- ((cv::StereoSGBM *) filter->sgbm)->numberOfDisparities = 64;
- ((cv::StereoSGBM *) filter->sgbm)->SADWindowSize = 3;
- ((cv::StereoSGBM *) filter->sgbm)->P1 = 200;;
- ((cv::StereoSGBM *) filter->sgbm)->P2 = 255;
- ((cv::StereoSGBM *) filter->sgbm)->disp12MaxDiff = 0;
- ((cv::StereoSGBM *) filter->sgbm)->preFilterCap = 0;
- ((cv::StereoSGBM *) filter->sgbm)->uniquenessRatio = 0;
- ((cv::StereoSGBM *) filter->sgbm)->speckleWindowSize = 0;
- ((cv::StereoSGBM *) filter->sgbm)->speckleRange = 0;
- ((cv::StereoSGBM *) filter->sgbm)->fullDP = true;
+ ((StereoBM *) filter->sbm)->state->SADWindowSize = 9;
+ ((StereoBM *) filter->sbm)->state->numberOfDisparities = 32;
+ ((StereoBM *) filter->sbm)->state->preFilterSize = 9;
+ ((StereoBM *) filter->sbm)->state->preFilterCap = 32;
+ ((StereoBM *) filter->sbm)->state->minDisparity = 0;
+ ((StereoBM *) filter->sbm)->state->textureThreshold = 0;
+ ((StereoBM *) filter->sbm)->state->uniquenessRatio = 0;
+ ((StereoBM *) filter->sbm)->state->speckleWindowSize = 0;
+ ((StereoBM *) filter->sbm)->state->speckleRange = 0;
+ ((StereoBM *) filter->sbm)->state->disp12MaxDiff = 0;
- /* From Opencv samples/cpp/stereo_match.cpp */
- ((cv::StereoVar *) filter->svar)->levels = 3;
- ((cv::StereoVar *) filter->svar)->pyrScale = 0.5;
- ((cv::StereoVar *) filter->svar)->nIt = 25;
- ((cv::StereoVar *) filter->svar)->minDisp = -64;
- ((cv::StereoVar *) filter->svar)->maxDisp = 0;
- ((cv::StereoVar *) filter->svar)->poly_n = 3;
- ((cv::StereoVar *) filter->svar)->poly_sigma = 0.0;
- ((cv::StereoVar *) filter->svar)->fi = 15.0f;
- ((cv::StereoVar *) filter->svar)->lambda = 0.03f;
- ((cv::StereoVar *) filter->svar)->penalization =
- cv::StereoVar::PENALIZATION_TICHONOV;
- ((cv::StereoVar *) filter->svar)->cycle = cv::StereoVar::CYCLE_V;
- ((cv::StereoVar *) filter->svar)->flags = cv::StereoVar::USE_SMART_ID |
- cv::StereoVar::USE_AUTO_PARAMS |
- cv::StereoVar::USE_INITIAL_DISPARITY |
- cv::StereoVar::USE_MEDIAN_FILTERING;
-
- filter->sgc->Ithreshold = 5;
- filter->sgc->interactionRadius = 1;
- filter->sgc->occlusionCost = 10000;
- filter->sgc->minDisparity = 0;
- filter->sgc->numberOfDisparities = 16; /* Coming from constructor too */
- filter->sgc->maxIters = 1; /* Coming from constructor too */
+ ((StereoSGBM *) filter->sgbm)->minDisparity = 1;
+ ((StereoSGBM *) filter->sgbm)->numberOfDisparities = 64;
+ ((StereoSGBM *) filter->sgbm)->SADWindowSize = 3;
+ ((StereoSGBM *) filter->sgbm)->P1 = 200;;
+ ((StereoSGBM *) filter->sgbm)->P2 = 255;
+ ((StereoSGBM *) filter->sgbm)->disp12MaxDiff = 0;
+ ((StereoSGBM *) filter->sgbm)->preFilterCap = 0;
+ ((StereoSGBM *) filter->sgbm)->uniquenessRatio = 0;
+ ((StereoSGBM *) filter->sgbm)->speckleWindowSize = 0;
+ ((StereoSGBM *) filter->sgbm)->speckleRange = 0;
+ ((StereoSGBM *) filter->sgbm)->fullDP = true;
+#endif
return (0);
}
@@ -738,53 +706,49 @@
int
run_sbm_iteration (GstDisparity * filter)
{
- (*((cv::StereoBM *) filter->
- sbm)) (*((cv::Mat *) filter->img_left_as_cvMat_gray),
- *((cv::Mat *) filter->img_right_as_cvMat_gray),
- *((cv::Mat *) filter->depth_map_as_cvMat));
+#if (CV_MAJOR_VERSION >= 3)
+ ((StereoBM *) filter->
+ sbm)->compute (*((Mat *) filter->img_left_as_cvMat_gray),
+ *((Mat *) filter->img_right_as_cvMat_gray),
+ *((Mat *) filter->depth_map_as_cvMat));
+#else
+ (*((StereoBM *) filter->
+ sbm)) (*((Mat *) filter->img_left_as_cvMat_gray),
+ *((Mat *) filter->img_right_as_cvMat_gray),
+ *((Mat *) filter->depth_map_as_cvMat));
+#endif
return (0);
}
int
run_sgbm_iteration (GstDisparity * filter)
{
- (*((cv::StereoSGBM *) filter->
- sgbm)) (*((cv::Mat *) filter->img_left_as_cvMat_gray),
- *((cv::Mat *) filter->img_right_as_cvMat_gray),
- *((cv::Mat *) filter->depth_map_as_cvMat));
- return (0);
-}
-
-int
-run_svar_iteration (GstDisparity * filter)
-{
- (*((cv::StereoVar *) filter->
- svar)) (*((cv::Mat *) filter->img_left_as_cvMat_gray),
- *((cv::Mat *) filter->img_right_as_cvMat_gray),
- *((cv::Mat *) filter->depth_map_as_cvMat2));
- return (0);
-}
-
-int
-run_sgc_iteration (GstDisparity * filter)
-{
- cvFindStereoCorrespondenceGC (filter->cvGray_left,
- filter->cvGray_right, filter->cvGray_depth_map1,
- filter->cvGray_depth_map1_2, filter->sgc, 0);
+#if (CV_MAJOR_VERSION >= 3)
+ ((StereoSGBM *) filter->
+ sgbm)->compute (*((Mat *) filter->img_left_as_cvMat_gray),
+ *((Mat *) filter->img_right_as_cvMat_gray),
+ *((Mat *) filter->depth_map_as_cvMat));
+#else
+ (*((StereoSGBM *) filter->
+ sgbm)) (*((Mat *) filter->img_left_as_cvMat_gray),
+ *((Mat *) filter->img_right_as_cvMat_gray),
+ *((Mat *) filter->depth_map_as_cvMat));
+#endif
return (0);
}
int
finalise_sbm (GstDisparity * filter)
{
- delete (cv::Mat *) filter->img_left_as_cvMat_rgb;
- delete (cv::Mat *) filter->img_right_as_cvMat_rgb;
- delete (cv::Mat *) filter->depth_map_as_cvMat;
- delete (cv::Mat *) filter->depth_map_as_cvMat2;
- delete (cv::Mat *) filter->img_left_as_cvMat_gray;
- delete (cv::Mat *) filter->img_right_as_cvMat_gray;
- delete (cv::StereoBM *) filter->sbm;
- delete (cv::StereoSGBM *) filter->sgbm;
- delete (cv::StereoVar *) filter->svar;
+ delete (Mat *) filter->depth_map_as_cvMat;
+ delete (Mat *) filter->img_left_as_cvMat_gray;
+ delete (Mat *) filter->img_right_as_cvMat_gray;
+#if (CV_MAJOR_VERSION >= 3)
+ filter->sbm.release();
+ filter->sgbm.release();
+#else
+ delete (StereoBM *) filter->sbm;
+ delete (StereoSGBM *) filter->sgbm;
+#endif
return (0);
}
diff --git a/ext/opencv/gstdisparity.h b/ext/opencv/gstdisparity.h
index 07e2417..218699d 100644
--- a/ext/opencv/gstdisparity.h
+++ b/ext/opencv/gstdisparity.h
@@ -47,7 +47,9 @@
#include <gst/gst.h>
#include <gst/video/video.h>
-#include <opencv2/legacy/legacy.hpp>
+#include <opencv2/core/core.hpp>
+#include <opencv2/calib3d/calib3d.hpp>
+#include <opencv2/core/version.hpp>
G_BEGIN_DECLS
/* #defines don't like whitespacey bits */
@@ -92,16 +94,16 @@
IplImage *cvGray_depth_map2; /*IPL_DEPTH_8U */
IplImage *cvGray_depth_map1_2; /*IPL_DEPTH_16S */
- void *sbm; /* cv::StereoBM */
- void *sgbm; /* cv::StereoSGBM */
- void *svar; /* cv::StereoVar */
- CvStereoGCState *sgc; /* This is a C implementation */
- void *img_right_as_cvMat_rgb; /* cv::Mat */
- void *img_left_as_cvMat_rgb; /* cv::Mat */
- void *depth_map_as_cvMat; /* cv::Mat */
- void *depth_map_as_cvMat2; /* cv::Mat */
void *img_right_as_cvMat_gray; /* cv::Mat */
void *img_left_as_cvMat_gray; /* cv::Mat */
+ void *depth_map_as_cvMat; /* cv::Mat */
+#if (CV_MAJOR_VERSION >= 3)
+ cv::Ptr<cv::StereoBM> sbm; /* cv::StereoBM */
+ cv::Ptr<cv::StereoSGBM> sgbm; /* cv::StereoSGBM */
+#else
+ void *sbm; /* cv::StereoBM */
+ void *sgbm; /* cv::StereoSGBM */
+#endif
};
struct _GstDisparityClass
diff --git a/ext/opencv/gstedgedetect.cpp b/ext/opencv/gstedgedetect.cpp
index 7e6c1e7..1be9836 100644
--- a/ext/opencv/gstedgedetect.cpp
+++ b/ext/opencv/gstedgedetect.cpp
@@ -169,10 +169,8 @@
"Performs canny edge detection on videos and images.",
"Michael Sheldon <mike@mikeasoft.com>");
- gst_element_class_add_pad_template (element_class,
- gst_static_pad_template_get (&src_factory));
- gst_element_class_add_pad_template (element_class,
- gst_static_pad_template_get (&sink_factory));
+ gst_element_class_add_static_pad_template (element_class, &src_factory);
+ gst_element_class_add_static_pad_template (element_class, &sink_factory);
}
/* initialize the new element
diff --git a/ext/opencv/gstfaceblur.cpp b/ext/opencv/gstfaceblur.cpp
index 2bc88d1..4476e14 100644
--- a/ext/opencv/gstfaceblur.cpp
+++ b/ext/opencv/gstfaceblur.cpp
@@ -80,6 +80,7 @@
#define DEFAULT_MIN_SIZE_HEIGHT 30
using namespace cv;
+using namespace std;
enum
{
PROP_0,
@@ -227,10 +228,8 @@
"Blurs faces in images and videos",
"Michael Sheldon <mike@mikeasoft.com>,Robert Jobbagy <jobbagy.robert@gmail.com>");
- gst_element_class_add_pad_template (element_class,
- gst_static_pad_template_get (&src_factory));
- gst_element_class_add_pad_template (element_class,
- gst_static_pad_template_get (&sink_factory));
+ gst_element_class_add_static_pad_template (element_class, &src_factory);
+ gst_element_class_add_static_pad_template (element_class, &sink_factory);
}
/* initialize the new element
@@ -357,9 +356,7 @@
cvCvtColor (img, filter->cvGray, CV_RGB2GRAY);
- Mat image (filter->cvGray, Rect (filter->cvGray->origin,
- filter->cvGray->origin, filter->cvGray->width,
- filter->cvGray->height));
+ Mat image = cvarrToMat(filter->cvGray);
filter->cvCascade->detectMultiScale (image, faces, filter->scale_factor,
filter->min_neighbors, filter->flags,
cvSize (filter->min_size_width, filter->min_size_height), cvSize (0, 0));
@@ -368,7 +365,8 @@
for (i = 0; i < faces.size (); ++i) {
Rect *r = &faces[i];
- Mat roi (img, Rect (r->x, r->y, r->width, r->height));
+ Mat imag = cvarrToMat(img);
+ Mat roi (imag, Rect (r->x, r->y, r->width, r->height));
blur (roi, roi, Size (11, 11));
GaussianBlur (roi, roi, Size (11, 11), 0, 0);
}
diff --git a/ext/opencv/gstfacedetect.cpp b/ext/opencv/gstfacedetect.cpp
index aff9979..3c82ce0 100644
--- a/ext/opencv/gstfacedetect.cpp
+++ b/ext/opencv/gstfacedetect.cpp
@@ -78,8 +78,12 @@
#include <vector>
+using namespace std;
+
#include "gstfacedetect.h"
-#include <opencv2/imgproc/imgproc_c.h>
+#if (CV_MAJOR_VERSION >= 3)
+#include <opencv2/imgproc.hpp>
+#endif
GST_DEBUG_CATEGORY_STATIC (gst_face_detect_debug);
#define GST_CAT_DEFAULT gst_face_detect_debug
@@ -349,10 +353,8 @@
"Performs face detection on videos and images, providing detected positions via bus messages",
"Michael Sheldon <mike@mikeasoft.com>");
- gst_element_class_add_pad_template (element_class,
- gst_static_pad_template_get (&src_factory));
- gst_element_class_add_pad_template (element_class,
- gst_static_pad_template_get (&sink_factory));
+ gst_element_class_add_static_pad_template (element_class, &src_factory);
+ gst_element_class_add_static_pad_template (element_class, &sink_factory);
}
/* initialize the new element
@@ -559,7 +561,7 @@
img_stddev = stddev.val[0];
}
if (img_stddev >= filter->min_stddev) {
- Mat roi (filter->cvGray, r);
+ Mat roi (cv::cvarrToMat (filter->cvGray), r);
detector->detectMultiScale (roi, faces, filter->scale_factor,
filter->min_neighbors, filter->flags, cvSize (min_size_width,
min_size_height), cvSize (0, 0));
@@ -591,7 +593,7 @@
gboolean do_display = FALSE;
gboolean post_msg = FALSE;
- Mat mtxOrg (img, false);
+ Mat mtxOrg (cv::cvarrToMat (img));
if (filter->display) {
if (gst_buffer_is_writable (buf)) {
diff --git a/ext/opencv/gstgrabcut.cpp b/ext/opencv/gstgrabcut.cpp
index eaf727b..f604953 100644
--- a/ext/opencv/gstgrabcut.cpp
+++ b/ext/opencv/gstgrabcut.cpp
@@ -93,6 +93,7 @@
GST_DEBUG_CATEGORY_STATIC (gst_grabcut_debug);
#define GST_CAT_DEFAULT gst_grabcut_debug
+using namespace cv;
/* Filter signals and args */
enum
{
@@ -184,10 +185,8 @@
downstream event is used to create a bbox of PR_FG elements.\n\
IF nothing is present, then nothing is done.", "Miguel Casas-Sanchez <miguelecasassanchez@gmail.com>");
- gst_element_class_add_pad_template (element_class,
- gst_static_pad_template_get (&src_factory));
- gst_element_class_add_pad_template (element_class,
- gst_static_pad_template_get (&sink_factory));
+ gst_element_class_add_static_pad_template (element_class, &src_factory);
+ gst_element_class_add_static_pad_template (element_class, &sink_factory);
}
@@ -394,8 +393,8 @@
for (x = 0; x < output->cols; x++) {
for (y = 0; y < output->rows; y++) {
CV_MAT_ELEM (*output, uchar, y, x) =
- (cvGetReal2D (input, y, x) <= cv::GC_PR_FGD) ? cvGetReal2D (input, y,
- x) : cv::GC_PR_FGD;
+ (cvGetReal2D (input, y, x) <= GC_PR_FGD) ? cvGetReal2D (input, y,
+ x) : GC_PR_FGD;
}
}
}
@@ -405,10 +404,10 @@
initialise_grabcut (struct grabcut_params *GC, IplImage * image_c,
CvMat * mask_c)
{
- GC->image = (void *) new cv::Mat (image_c, false); /* "true" refers to copydata */
- GC->mask = (void *) new cv::Mat (mask_c, false);
- GC->bgdModel = (void *) new cv::Mat (); /* "true" refers to copydata */
- GC->fgdModel = (void *) new cv::Mat ();
+ GC->image = (void *) new Mat (cvarrToMat (image_c, false)); /* "true" refers to copydata */
+ GC->mask = (void *) new Mat (cvarrToMat (mask_c, false));
+ GC->bgdModel = (void *) new Mat (); /* "true" refers to copydata */
+ GC->fgdModel = (void *) new Mat ();
return (0);
}
@@ -417,13 +416,13 @@
run_grabcut_iteration (struct grabcut_params *GC, IplImage * image_c,
CvMat * mask_c, CvRect * bbox)
{
- ((cv::Mat *) GC->image)->data = (uchar *) image_c->imageData;
- ((cv::Mat *) GC->mask)->data = mask_c->data.ptr;
+ ((Mat *) GC->image)->data = (uchar *) image_c->imageData;
+ ((Mat *) GC->mask)->data = mask_c->data.ptr;
if (cvCountNonZero (mask_c))
- grabCut (*((cv::Mat *) GC->image), *((cv::Mat *) GC->mask), cv::Rect (),
- *((cv::Mat *) GC->bgdModel), *((cv::Mat *) GC->fgdModel), 1,
- cv::GC_INIT_WITH_MASK);
+ grabCut (*((Mat *) GC->image), *((Mat *) GC->mask), Rect (),
+ *((Mat *) GC->bgdModel), *((Mat *) GC->fgdModel), 1,
+ GC_INIT_WITH_MASK);
return (0);
}
@@ -432,12 +431,11 @@
run_grabcut_iteration2 (struct grabcut_params *GC, IplImage * image_c,
CvMat * mask_c, CvRect * bbox)
{
- ((cv::Mat *) GC->image)->data = (uchar *) image_c->imageData;
- ((cv::Mat *) GC->mask)->data = mask_c->data.ptr;
-
- grabCut (*((cv::Mat *) GC->image), *((cv::Mat *) GC->mask), *(bbox),
- *((cv::Mat *) GC->bgdModel), *((cv::Mat *) GC->fgdModel), 1,
- cv::GC_INIT_WITH_RECT);
+ ((Mat *) GC->image)->data = (uchar *) image_c->imageData;
+ ((Mat *) GC->mask)->data = mask_c->data.ptr;
+ grabCut (*((Mat *) GC->image), *((Mat *) GC->mask), *(bbox),
+ *((Mat *) GC->bgdModel), *((Mat *) GC->fgdModel), 1,
+ GC_INIT_WITH_RECT);
return (0);
}
@@ -445,10 +443,10 @@
int
finalise_grabcut (struct grabcut_params *GC)
{
- delete ((cv::Mat *) GC->image);
- delete ((cv::Mat *) GC->mask);
- delete ((cv::Mat *) GC->bgdModel);
- delete ((cv::Mat *) GC->fgdModel);
+ delete ((Mat *) GC->image);
+ delete ((Mat *) GC->mask);
+ delete ((Mat *) GC->bgdModel);
+ delete ((Mat *) GC->fgdModel);
return (0);
}
diff --git a/ext/opencv/gsthanddetect.cpp b/ext/opencv/gsthanddetect.cpp
index e36b80e..f85f2c9 100644
--- a/ext/opencv/gsthanddetect.cpp
+++ b/ext/opencv/gsthanddetect.cpp
@@ -72,6 +72,7 @@
#define HAAR_FILE_PALM GST_HAAR_CASCADES_DIR G_DIR_SEPARATOR_S "palm.xml"
using namespace cv;
+using namespace std;
/* Filter signals and args */
enum
{
@@ -245,10 +246,8 @@
"Performs hand gesture detection on videos, providing detected hand positions via bus message and navigation event, and deals with hand gesture events",
"Andol Li <andol@andol.info>");
- gst_element_class_add_pad_template (element_class,
- gst_static_pad_template_get (&src_factory));
- gst_element_class_add_pad_template (element_class,
- gst_static_pad_template_get (&sink_factory));
+ gst_element_class_add_static_pad_template (element_class, &src_factory);
+ gst_element_class_add_static_pad_template (element_class, &sink_factory);
}
@@ -407,7 +406,8 @@
cvCvtColor (img, filter->cvGray, CV_RGB2GRAY);
/* detect FIST gesture fist */
- Mat roi (filter->cvGray, Rect (filter->cvGray->origin,
+ Mat image = cvarrToMat(filter->cvGray);
+ Mat roi (image, Rect (filter->cvGray->origin,
filter->cvGray->origin, filter->cvGray->width,
filter->cvGray->height));
filter->cvCascade_fist->detectMultiScale (roi, hands, 1.1, 2,
diff --git a/ext/opencv/gstmotioncells.cpp b/ext/opencv/gstmotioncells.cpp
index e1d412f..33f314a 100644
--- a/ext/opencv/gstmotioncells.cpp
+++ b/ext/opencv/gstmotioncells.cpp
@@ -308,10 +308,8 @@
"Performs motion detection on videos and images, providing detected motion cells index via bus messages",
"Robert Jobbagy <jobbagy dot robert at gmail dot com>, Nicola Murino <nicola dot murino at gmail.com>");
- gst_element_class_add_pad_template (element_class,
- gst_static_pad_template_get (&src_factory));
- gst_element_class_add_pad_template (element_class,
- gst_static_pad_template_get (&sink_factory));
+ gst_element_class_add_static_pad_template (element_class, &src_factory);
+ gst_element_class_add_static_pad_template (element_class, &sink_factory);
}
/* initialize the new element
diff --git a/ext/opencv/gstopencv.cpp b/ext/opencv/gstopencv.cpp
index 4077ba6..8f50cd8 100644
--- a/ext/opencv/gstopencv.cpp
+++ b/ext/opencv/gstopencv.cpp
@@ -33,7 +33,6 @@
#include "gstfaceblur.h"
#include "gstfacedetect.h"
#include "gstmotioncells.h"
-#include "gstpyramidsegment.h"
#include "gsttemplatematch.h"
#include "gsttextoverlay.h"
#include "gsthanddetect.h"
@@ -76,9 +75,6 @@
if (!gst_motion_cells_plugin_init (plugin))
return FALSE;
- if (!gst_pyramid_segment_plugin_init (plugin))
- return FALSE;
-
if (!gst_template_match_plugin_init (plugin))
return FALSE;
diff --git a/ext/opencv/gstopencvutils.cpp b/ext/opencv/gstopencvutils.cpp
index da6eea9..57b660d 100644
--- a/ext/opencv/gstopencvutils.cpp
+++ b/ext/opencv/gstopencvutils.cpp
@@ -24,7 +24,7 @@
#endif
#include "gstopencvutils.h"
-#include <opencv2/core/types_c.h>
+#include <opencv2/core/core_c.h>
gboolean
diff --git a/ext/opencv/gstpyramidsegment.cpp b/ext/opencv/gstpyramidsegment.cpp
deleted file mode 100644
index d8247c0..0000000
--- a/ext/opencv/gstpyramidsegment.cpp
+++ /dev/null
@@ -1,273 +0,0 @@
-/*
- * GStreamer
- * Copyright (C) 2005 Thomas Vander Stichele <thomas@apestaart.org>
- * Copyright (C) 2005 Ronald S. Bultje <rbultje@ronald.bitfreak.net>
- * Copyright (C) 2008 Michael Sheldon <mike@mikeasoft.com>
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sublicense,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
- * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
- * DEALINGS IN THE SOFTWARE.
- *
- * Alternatively, the contents of this file may be used under the
- * GNU Lesser General Public License Version 2.1 (the "LGPL"), in
- * which case the following provisions apply instead of the ones
- * mentioned above:
- *
- * 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.
- */
-
-/**
- * SECTION:element-pyramidsegment
- *
- * Applies pyramid segmentation to a video or image.
- *
- * <refsect2>
- * <title>Example launch line</title>
- * |[
- * gst-launch-1.0 -v videotestsrc ! pyramidsegment ! videoconvert ! autovideosink
- * ]|
- * </refsect2>
- */
-
-#ifdef HAVE_CONFIG_H
-# include <config.h>
-#endif
-
-#include "gstpyramidsegment.h"
-
-#define BLOCK_SIZE 1000
-
-GST_DEBUG_CATEGORY_STATIC (gst_pyramid_segment_debug);
-#define GST_CAT_DEFAULT gst_pyramid_segment_debug
-
-using namespace cv;
-/* Filter signals and args */
-enum
-{
- /* FILL ME */
- LAST_SIGNAL
-};
-
-enum
-{
- PROP_0,
- PROP_SILENT,
- PROP_THRESHOLD1,
- PROP_THRESHOLD2,
- PROP_LEVEL
-};
-
-/* the capabilities of the inputs and outputs.
- *
- * describe the real formats here.
- */
-static GstStaticPadTemplate sink_factory = GST_STATIC_PAD_TEMPLATE ("sink",
- GST_PAD_SINK,
- GST_PAD_ALWAYS,
- GST_STATIC_CAPS (GST_VIDEO_CAPS_MAKE ("RGB"))
- );
-
-static GstStaticPadTemplate src_factory = GST_STATIC_PAD_TEMPLATE ("src",
- GST_PAD_SRC,
- GST_PAD_ALWAYS,
- GST_STATIC_CAPS (GST_VIDEO_CAPS_MAKE ("RGB"))
- );
-
-G_DEFINE_TYPE (GstPyramidSegment, gst_pyramid_segment,
- GST_TYPE_OPENCV_VIDEO_FILTER);
-
-static void gst_pyramid_segment_set_property (GObject * object, guint prop_id,
- const GValue * value, GParamSpec * pspec);
-static void gst_pyramid_segment_get_property (GObject * object, guint prop_id,
- GValue * value, GParamSpec * pspec);
-
-static GstFlowReturn gst_pyramid_segment_transform_ip (GstOpencvVideoFilter *
- base, GstBuffer * buf, IplImage * img);
-
-/* Clean up */
-static void
-gst_pyramid_segment_finalize (GObject * obj)
-{
- GstPyramidSegment *filter = GST_PYRAMID_SEGMENT (obj);
-
- cvReleaseMemStorage (&filter->storage);
-
- G_OBJECT_CLASS (gst_pyramid_segment_parent_class)->finalize (obj);
-}
-
-/* initialize the pyramidsegment's class */
-static void
-gst_pyramid_segment_class_init (GstPyramidSegmentClass * klass)
-{
- GObjectClass *gobject_class;
- GstOpencvVideoFilterClass *gstopencvbasefilter_class;
-
- GstElementClass *element_class = GST_ELEMENT_CLASS (klass);
- gobject_class = (GObjectClass *) klass;
- gstopencvbasefilter_class = (GstOpencvVideoFilterClass *) klass;
-
- gobject_class->finalize = GST_DEBUG_FUNCPTR (gst_pyramid_segment_finalize);
- gobject_class->set_property = gst_pyramid_segment_set_property;
- gobject_class->get_property = gst_pyramid_segment_get_property;
-
- gstopencvbasefilter_class->cv_trans_ip_func =
- gst_pyramid_segment_transform_ip;
-
- g_object_class_install_property (gobject_class, PROP_SILENT,
- g_param_spec_boolean ("silent", "Silent", "Produce verbose output ?",
- FALSE, (GParamFlags) (G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)));
-
- g_object_class_install_property (gobject_class, PROP_THRESHOLD1,
- g_param_spec_double ("threshold1", "Threshold1",
- "Error threshold for establishing links", 0, 1000, 50,
- (GParamFlags) (G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)));
-
- g_object_class_install_property (gobject_class, PROP_THRESHOLD2,
- g_param_spec_double ("threshold2", "Threshold2",
- "Error threshold for segment clustering", 0, 1000, 60,
- (GParamFlags) (G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)));
-
- g_object_class_install_property (gobject_class, PROP_LEVEL,
- g_param_spec_int ("level", "Level",
- "Maximum level of the pyramid segmentation", 1, 4, 4,
- (GParamFlags) (G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)));
-
- gst_element_class_set_static_metadata (element_class,
- "pyramidsegment",
- "Filter/Effect/Video",
- "Applies pyramid segmentation to a video or image.",
- "Michael Sheldon <mike@mikeasoft.com>");
-
- gst_element_class_add_pad_template (element_class,
- gst_static_pad_template_get (&src_factory));
- gst_element_class_add_pad_template (element_class,
- gst_static_pad_template_get (&sink_factory));
-}
-
-/* initialize the new element
- * instantiate pads and add them to element
- * set pad calback functions
- * initialize instance structure
- */
-static void
-gst_pyramid_segment_init (GstPyramidSegment * filter)
-{
- filter->storage = cvCreateMemStorage (BLOCK_SIZE);
- filter->comp =
- cvCreateSeq (0, sizeof (CvSeq), sizeof (CvPoint), filter->storage);
- filter->silent = FALSE;
- filter->threshold1 = 50.0;
- filter->threshold2 = 60.0;
- filter->level = 4;
-
- gst_opencv_video_filter_set_in_place (GST_OPENCV_VIDEO_FILTER_CAST (filter),
- TRUE);
-}
-
-static void
-gst_pyramid_segment_set_property (GObject * object, guint prop_id,
- const GValue * value, GParamSpec * pspec)
-{
- GstPyramidSegment *filter = GST_PYRAMID_SEGMENT (object);
-
- switch (prop_id) {
- case PROP_SILENT:
- filter->silent = g_value_get_boolean (value);
- break;
- case PROP_THRESHOLD1:
- filter->threshold1 = g_value_get_double (value);
- break;
- case PROP_THRESHOLD2:
- filter->threshold2 = g_value_get_double (value);
- break;
- case PROP_LEVEL:
- filter->level = g_value_get_int (value);
- break;
- default:
- G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
- break;
- }
-}
-
-static void
-gst_pyramid_segment_get_property (GObject * object, guint prop_id,
- GValue * value, GParamSpec * pspec)
-{
- GstPyramidSegment *filter = GST_PYRAMID_SEGMENT (object);
-
- switch (prop_id) {
- case PROP_SILENT:
- g_value_set_boolean (value, filter->silent);
- break;
- case PROP_THRESHOLD1:
- g_value_set_double (value, filter->threshold1);
- break;
- case PROP_THRESHOLD2:
- g_value_set_double (value, filter->threshold2);
- break;
- case PROP_LEVEL:
- g_value_set_int (value, filter->level);
- break;
- default:
- G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
- break;
- }
-}
-
-/* transform function
- * this function does the actual processing
- */
-static GstFlowReturn
-gst_pyramid_segment_transform_ip (GstOpencvVideoFilter * base, GstBuffer * buf,
- IplImage * img)
-{
- GstPyramidSegment *filter = GST_PYRAMID_SEGMENT (base);
-
- cvPyrSegmentation (img, img, filter->storage,
- &(filter->comp), filter->level, filter->threshold1, filter->threshold2);
-
- return GST_FLOW_OK;
-}
-
-
-/* entry point to initialize the plug-in
- * initialize the plug-in itself
- * register the element factories and other features
- */
-gboolean
-gst_pyramid_segment_plugin_init (GstPlugin * plugin)
-{
- /* debug category for fltering log messages */
- GST_DEBUG_CATEGORY_INIT (gst_pyramid_segment_debug, "pyramidsegment",
- 0, "Applies pyramid segmentation to a video or image");
-
- return gst_element_register (plugin, "pyramidsegment", GST_RANK_NONE,
- GST_TYPE_PYRAMID_SEGMENT);
-}
diff --git a/ext/opencv/gstpyramidsegment.h b/ext/opencv/gstpyramidsegment.h
deleted file mode 100644
index e715766..0000000
--- a/ext/opencv/gstpyramidsegment.h
+++ /dev/null
@@ -1,96 +0,0 @@
-/*
- * GStreamer
- * Copyright (C) 2005 Thomas Vander Stichele <thomas@apestaart.org>
- * Copyright (C) 2005 Ronald S. Bultje <rbultje@ronald.bitfreak.net>
- * Copyright (C) 2008 Michael Sheldon <mike@mikeasoft.com>
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sublicense,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included in
- * all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
- * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
- * DEALINGS IN THE SOFTWARE.
- *
- * Alternatively, the contents of this file may be used under the
- * GNU Lesser General Public License Version 2.1 (the "LGPL"), in
- * which case the following provisions apply instead of the ones
- * mentioned above:
- *
- * 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.
- */
-
-#ifndef __GST_PYRAMID_SEGMENT_H__
-#define __GST_PYRAMID_SEGMENT_H__
-
-#include <gstopencvvideofilter.h>
-#include <opencv2/core/version.hpp>
-#include <opencv2/legacy/legacy.hpp>
-
-G_BEGIN_DECLS
-/* #defines don't like whitespacey bits */
-#define GST_TYPE_PYRAMID_SEGMENT \
- (gst_pyramid_segment_get_type())
-#define GST_PYRAMID_SEGMENT(obj) \
- (G_TYPE_CHECK_INSTANCE_CAST((obj),GST_TYPE_PYRAMID_SEGMENT,GstPyramidSegment))
-#define GST_PYRAMID_SEGMENT_CLASS(klass) \
- (G_TYPE_CHECK_CLASS_CAST((klass),GST_TYPE_PYRAMID_SEGMENT,GstPyramidSegmentClass))
-#define GST_IS_PYRAMID_SEGMENT(obj) \
- (G_TYPE_CHECK_INSTANCE_TYPE((obj),GST_TYPE_PYRAMID_SEGMENT))
-#define GST_IS_PYRAMID_SEGMENT_CLASS(klass) \
- (G_TYPE_CHECK_CLASS_TYPE((klass),GST_TYPE_PYRAMID_SEGMENT))
-
-typedef struct _GstPyramidSegment GstPyramidSegment;
-typedef struct _GstPyramidSegmentClass GstPyramidSegmentClass;
-
-struct _GstPyramidSegment
-{
- GstOpencvVideoFilter element;
-
- GstPad *sinkpad, *srcpad;
-
- gboolean silent;
-
- CvMemStorage *storage;
-
- CvSeq *comp;
-
- double threshold1, threshold2;
-
- int level;
-};
-
-struct _GstPyramidSegmentClass
-{
- GstOpencvVideoFilterClass parent_class;
-};
-
-GType gst_pyramid_segment_get_type (void);
-
-gboolean gst_pyramid_segment_plugin_init (GstPlugin * plugin);
-
-G_END_DECLS
-#endif /* __GST_PYRAMID_SEGMENT_H__ */
diff --git a/ext/opencv/gstretinex.cpp b/ext/opencv/gstretinex.cpp
index 75842f8..a333914 100644
--- a/ext/opencv/gstretinex.cpp
+++ b/ext/opencv/gstretinex.cpp
@@ -167,10 +167,8 @@
"Multiscale retinex for colour image enhancement",
"Miguel Casas-Sanchez <miguelecasassanchez@gmail.com>");
- gst_element_class_add_pad_template (element_class,
- gst_static_pad_template_get (&src_factory));
- gst_element_class_add_pad_template (element_class,
- gst_static_pad_template_get (&sink_factory));
+ gst_element_class_add_static_pad_template (element_class, &src_factory);
+ gst_element_class_add_static_pad_template (element_class, &sink_factory);
}
/* initialize the new element
@@ -294,7 +292,7 @@
int gain = 128;
int offset = 128;
int filter_size;
- Mat icvD (retinex->cvD, false);
+ Mat icvD = cvarrToMat(retinex->cvD, false);
if (!gst_buffer_map (buf, &info, (GstMapFlags) GST_MAP_READWRITE)) {
return GST_FLOW_ERROR;
diff --git a/ext/opencv/gstsegmentation.cpp b/ext/opencv/gstsegmentation.cpp
index e0aa821..472a3c4 100644
--- a/ext/opencv/gstsegmentation.cpp
+++ b/ext/opencv/gstsegmentation.cpp
@@ -91,12 +91,15 @@
#endif
#include "gstsegmentation.h"
-#include <opencv2/video/background_segm.hpp>
#include <opencv2/imgproc/imgproc_c.h>
GST_DEBUG_CATEGORY_STATIC (gst_segmentation_debug);
#define GST_CAT_DEFAULT gst_segmentation_debug
+using namespace cv;
+#if (CV_MAJOR_VERSION >= 3)
+ using namespace cv::bgsegm;
+#endif
/* Filter signals and args */
enum
{
@@ -223,10 +226,8 @@
"Create a Foregound/Background mask applying a particular algorithm",
"Miguel Casas-Sanchez <miguelecasassanchez@gmail.com>");
- gst_element_class_add_pad_template (element_class,
- gst_static_pad_template_get (&src_factory));
- gst_element_class_add_pad_template (element_class,
- gst_static_pad_template_get (&sink_factory));
+ gst_element_class_add_static_pad_template (element_class, &src_factory);
+ gst_element_class_add_static_pad_template (element_class, &sink_factory);
}
@@ -779,11 +780,16 @@
int
initialise_mog (GstSegmentation * filter)
{
- filter->img_input_as_cvMat = (void *) new cv::Mat (filter->cvYUV, false);
- filter->img_fg_as_cvMat = (void *) new cv::Mat (filter->cvFG, false);
+ filter->img_input_as_cvMat = (void *) new Mat (cvarrToMat (filter->cvYUV, false));
+ filter->img_fg_as_cvMat = (void *) new Mat (cvarrToMat(filter->cvFG, false));
- filter->mog = (void *) new cv::BackgroundSubtractorMOG ();
- filter->mog2 = (void *) new cv::BackgroundSubtractorMOG2 ();
+#if (CV_MAJOR_VERSION >= 3)
+ filter->mog = bgsegm::createBackgroundSubtractorMOG ();
+ filter->mog2 = createBackgroundSubtractorMOG2 ();
+#else
+ filter->mog = (void *) new BackgroundSubtractorMOG ();
+ filter->mog2 = (void *) new BackgroundSubtractorMOG2 ();
+#endif
return (0);
}
@@ -806,9 +812,15 @@
European Workshop on Advanced Video-Based Surveillance Systems, 2001
*/
- (*((cv::BackgroundSubtractorMOG *) filter->mog)) (*((cv::Mat *) filter->
- img_input_as_cvMat), *((cv::Mat *) filter->img_fg_as_cvMat),
+#if (CV_MAJOR_VERSION >= 3)
+ filter->mog->apply (*((Mat *) filter->
+ img_input_as_cvMat), *((Mat *) filter->img_fg_as_cvMat),
filter->learning_rate);
+#else
+ (*((BackgroundSubtractorMOG *) filter->mog)) (*((Mat *) filter->
+ img_input_as_cvMat), *((Mat *) filter->img_fg_as_cvMat),
+ filter->learning_rate);
+#endif
return (0);
}
@@ -816,10 +828,10 @@
int
run_mog2_iteration (GstSegmentation * filter)
{
- ((cv::Mat *) filter->img_input_as_cvMat)->data =
- (uchar *) filter->cvYUV->imageData;
- ((cv::Mat *) filter->img_fg_as_cvMat)->data =
- (uchar *) filter->cvFG->imageData;
+ ((Mat *) filter->img_input_as_cvMat)->data =
+ (uchar *) filter->cvYUV->imageData;
+ ((Mat *) filter->img_fg_as_cvMat)->data =
+ (uchar *) filter->cvFG->imageData;
/*
BackgroundSubtractorMOG2 [1], Gaussian Mixture-based Background/Foreground
@@ -834,9 +846,15 @@
Letters, vol. 27, no. 7, pages 773-780, 2006.
*/
- (*((cv::BackgroundSubtractorMOG *) filter->mog2)) (*((cv::Mat *) filter->
- img_input_as_cvMat), *((cv::Mat *) filter->img_fg_as_cvMat),
+#if (CV_MAJOR_VERSION >= 3)
+ filter->mog2->apply (*((Mat *) filter->
+ img_input_as_cvMat), *((Mat *) filter->img_fg_as_cvMat),
filter->learning_rate);
+#else
+ (*((BackgroundSubtractorMOG *) filter->mog2)) (*((Mat *) filter->
+ img_input_as_cvMat), *((Mat *) filter->img_fg_as_cvMat),
+ filter->learning_rate);
+#endif
return (0);
}
@@ -844,9 +862,14 @@
int
finalise_mog (GstSegmentation * filter)
{
- delete (cv::Mat *) filter->img_input_as_cvMat;
- delete (cv::Mat *) filter->img_fg_as_cvMat;
- delete (cv::BackgroundSubtractorMOG *) filter->mog;
- delete (cv::BackgroundSubtractorMOG2 *) filter->mog2;
+ delete (Mat *) filter->img_input_as_cvMat;
+ delete (Mat *) filter->img_fg_as_cvMat;
+#if (CV_MAJOR_VERSION >= 3)
+ filter->mog.release ();
+ filter->mog2.release ();
+#else
+ delete (BackgroundSubtractorMOG *) filter->mog;
+ delete (BackgroundSubtractorMOG2 *) filter->mog2;
+#endif
return (0);
}
diff --git a/ext/opencv/gstsegmentation.h b/ext/opencv/gstsegmentation.h
index 9400853..982e2ba 100644
--- a/ext/opencv/gstsegmentation.h
+++ b/ext/opencv/gstsegmentation.h
@@ -47,7 +47,11 @@
#include <gst/gst.h>
#include <gst/video/gstvideofilter.h>
#include <opencv2/core/core_c.h>
-
+#include <opencv2/video/background_segm.hpp>
+#include <opencv2/core/version.hpp>
+#if (CV_MAJOR_VERSION >= 3)
+ #include <opencv2/bgsegm.hpp>
+#endif
G_BEGIN_DECLS
@@ -107,8 +111,13 @@
CvSeq *contours;
/* for MOG methods */
+#if (CV_MAJOR_VERSION >= 3)
+ cv::Ptr<cv::BackgroundSubtractor> mog; /* cv::BackgroundSubtractorMOG */
+ cv::Ptr<cv::BackgroundSubtractorMOG2> mog2; /* cv::BackgroundSubtractorMOG2 */
+#else
void *mog; /* cv::BackgroundSubtractorMOG */
void *mog2; /* cv::BackgroundSubtractorMOG2 */
+#endif
void *img_input_as_cvMat; /* cv::Mat */
void *img_fg_as_cvMat; /* cv::Mat */
double learning_rate;
diff --git a/ext/opencv/gstskindetect.cpp b/ext/opencv/gstskindetect.cpp
index aade23c..e2fcb59 100644
--- a/ext/opencv/gstskindetect.cpp
+++ b/ext/opencv/gstskindetect.cpp
@@ -60,7 +60,6 @@
#include "gstskindetect.h"
#include <opencv2/imgproc/imgproc_c.h>
-#include <opencv2/legacy/compat.hpp>
GST_DEBUG_CATEGORY_STATIC (gst_skin_detect_debug);
#define GST_CAT_DEFAULT gst_skin_detect_debug
@@ -163,10 +162,8 @@
"Performs non-parametric skin detection on input",
"Miguel Casas-Sanchez <miguelecasassanchez@gmail.com>");
- gst_element_class_add_pad_template (element_class,
- gst_static_pad_template_get (&src_factory));
- gst_element_class_add_pad_template (element_class,
- gst_static_pad_template_get (&sink_factory));
+ gst_element_class_add_static_pad_template (element_class, &src_factory);
+ gst_element_class_add_static_pad_template (element_class, &sink_factory);
basesrc_class->stop = gst_skin_detect_stop;
gstopencvbasefilter_class->cv_set_caps = gst_skin_detect_set_caps;
@@ -341,7 +338,7 @@
cvCvtColor (filter->cvSkinPixels1, filter->cvRGB, CV_GRAY2RGB);
} else if (RGB == filter->method) {
- cvCvtPixToPlane (filter->cvRGB, filter->cvR, filter->cvG, filter->cvB, 0); /* Extract the 3 color components. */
+ cvSplit (filter->cvRGB, filter->cvR, filter->cvG, filter->cvB, 0); /* Extract the 3 color components. */
cvAdd (filter->cvR, filter->cvG, filter->cvAll, NULL);
cvAdd (filter->cvB, filter->cvAll, filter->cvAll, NULL); /* All = R + G + B */
cvDiv (filter->cvR, filter->cvAll, filter->cvRp, 1.0); /* R' = R / ( R + G + B) */
diff --git a/ext/opencv/gsttemplatematch.cpp b/ext/opencv/gsttemplatematch.cpp
index 1223066..f39208d 100644
--- a/ext/opencv/gsttemplatematch.cpp
+++ b/ext/opencv/gsttemplatematch.cpp
@@ -147,10 +147,8 @@
"Performs template matching on videos and images, providing detected positions via bus messages.",
"Noam Lewis <jones.noamle@gmail.com>");
- gst_element_class_add_pad_template (element_class,
- gst_static_pad_template_get (&src_factory));
- gst_element_class_add_pad_template (element_class,
- gst_static_pad_template_get (&sink_factory));
+ gst_element_class_add_static_pad_template (element_class, &src_factory);
+ gst_element_class_add_static_pad_template (element_class, &sink_factory);
}
/* initialize the new element
diff --git a/ext/opencv/gsttextoverlay.cpp b/ext/opencv/gsttextoverlay.cpp
index 7025b36..e3dc518 100644
--- a/ext/opencv/gsttextoverlay.cpp
+++ b/ext/opencv/gsttextoverlay.cpp
@@ -211,10 +211,8 @@
"Filter/Effect/Video",
"Write text on the top of video", "sreerenj<bsreerenj@gmail.com>");
- gst_element_class_add_pad_template (element_class,
- gst_static_pad_template_get (&src_factory));
- gst_element_class_add_pad_template (element_class,
- gst_static_pad_template_get (&sink_factory));
+ gst_element_class_add_static_pad_template (element_class, &src_factory);
+ gst_element_class_add_static_pad_template (element_class, &sink_factory);
}
diff --git a/ext/opencv/gsttextoverlay.h b/ext/opencv/gsttextoverlay.h
index 65a7d75..13d09fa 100644
--- a/ext/opencv/gsttextoverlay.h
+++ b/ext/opencv/gsttextoverlay.h
@@ -48,6 +48,9 @@
#include <gstopencvvideofilter.h>
#include <opencv2/core/core_c.h>
+#if (CV_MAJOR_VERSION >= 3)
+#include <opencv2/imgproc/imgproc_c.h>
+#endif
G_BEGIN_DECLS
/* #defines don't like whitespacey bits */
diff --git a/ext/openexr/Makefile.in b/ext/openexr/Makefile.in
index e215e01..5ff93fc 100644
--- a/ext/openexr/Makefile.in
+++ b/ext/openexr/Makefile.in
@@ -322,6 +322,8 @@
DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
DSYMUTIL = @DSYMUTIL@
DTLS_CFLAGS = @DTLS_CFLAGS@
DTLS_LIBS = @DTLS_LIBS@
@@ -537,6 +539,8 @@
LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
LIPO = @LIPO@
LN_S = @LN_S@
LOCALEDIR = @LOCALEDIR@
@@ -663,8 +667,6 @@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
SNDIO_LIBS = @SNDIO_LIBS@
@@ -709,6 +711,8 @@
WAYLAND_LIBS = @WAYLAND_LIBS@
WEBP_CFLAGS = @WEBP_CFLAGS@
WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
WGET = @WGET@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
diff --git a/ext/openexr/gstopenexrdec.cpp b/ext/openexr/gstopenexrdec.cpp
index a334b0a..8ee4598 100644
--- a/ext/openexr/gstopenexrdec.cpp
+++ b/ext/openexr/gstopenexrdec.cpp
@@ -122,10 +122,8 @@
element_class = (GstElementClass *) klass;
video_decoder_class = (GstVideoDecoderClass *) klass;
- gst_element_class_add_pad_template (element_class,
- gst_static_pad_template_get (&gst_openexr_dec_src_template));
- gst_element_class_add_pad_template (element_class,
- gst_static_pad_template_get (&gst_openexr_dec_sink_template));
+ gst_element_class_add_static_pad_template (element_class, &gst_openexr_dec_src_template);
+ gst_element_class_add_static_pad_template (element_class, &gst_openexr_dec_sink_template);
gst_element_class_set_static_metadata (element_class,
"OpenEXR decoder",
diff --git a/ext/openh264/Makefile.in b/ext/openh264/Makefile.in
index 6d37604..bc3844c 100644
--- a/ext/openh264/Makefile.in
+++ b/ext/openh264/Makefile.in
@@ -322,6 +322,8 @@
DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
DSYMUTIL = @DSYMUTIL@
DTLS_CFLAGS = @DTLS_CFLAGS@
DTLS_LIBS = @DTLS_LIBS@
@@ -537,6 +539,8 @@
LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
LIPO = @LIPO@
LN_S = @LN_S@
LOCALEDIR = @LOCALEDIR@
@@ -663,8 +667,6 @@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
SNDIO_LIBS = @SNDIO_LIBS@
@@ -709,6 +711,8 @@
WAYLAND_LIBS = @WAYLAND_LIBS@
WEBP_CFLAGS = @WEBP_CFLAGS@
WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
WGET = @WGET@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
diff --git a/ext/openh264/gstopenh264dec.cpp b/ext/openh264/gstopenh264dec.cpp
index 6333fe4..57d2fb5 100644
--- a/ext/openh264/gstopenh264dec.cpp
+++ b/ext/openh264/gstopenh264dec.cpp
@@ -27,32 +27,16 @@
#include "config.h"
#endif
-#include <wels/codec_api.h>
-#include <wels/codec_app_def.h>
-#include <wels/codec_def.h>
-
#include "gstopenh264dec.h"
#include <gst/gst.h>
#include <gst/video/video.h>
#include <gst/video/gstvideodecoder.h>
#include <string.h> /* for memcpy */
-
-#define GST_OPENH264DEC_GET_PRIVATE(obj) (G_TYPE_INSTANCE_GET_PRIVATE ( \
- (obj), GST_TYPE_OPENH264DEC, \
- GstOpenh264DecPrivate))
-
GST_DEBUG_CATEGORY_STATIC (gst_openh264dec_debug_category);
#define GST_CAT_DEFAULT gst_openh264dec_debug_category
/* prototypes */
-
-
-static void gst_openh264dec_set_property (GObject * object,
- guint property_id, const GValue * value, GParamSpec * pspec);
-static void gst_openh264dec_get_property (GObject * object, guint property_id,
- GValue * value, GParamSpec * pspec);
-
static gboolean gst_openh264dec_start (GstVideoDecoder * decoder);
static gboolean gst_openh264dec_stop (GstVideoDecoder * decoder);
@@ -66,19 +50,6 @@
static gboolean gst_openh264dec_decide_allocation (GstVideoDecoder * decoder,
GstQuery * query);
-enum
-{
- PROP_0,
- N_PROPERTIES
-};
-
-struct _GstOpenh264DecPrivate
-{
- ISVCDecoder *decoder;
- GstVideoCodecState *input_state;
- guint width, height;
-};
-
/* pad templates */
static GstStaticPadTemplate gst_openh264dec_sink_template =
@@ -86,7 +57,8 @@
GST_PAD_SINK,
GST_PAD_ALWAYS,
GST_STATIC_CAPS
- ("video/x-h264, stream-format=(string)byte-stream, alignment=(string)au,profile=(string){constrained-baseline,baseline}"));
+ ("video/x-h264, stream-format=(string)byte-stream, alignment=(string)au, "
+ "profile=(string){ constrained-baseline, baseline}"));
static GstStaticPadTemplate gst_openh264dec_src_template =
GST_STATIC_PAD_TEMPLATE ("src",
@@ -104,23 +76,16 @@
static void
gst_openh264dec_class_init (GstOpenh264DecClass * klass)
{
- GObjectClass *gobject_class = G_OBJECT_CLASS (klass);
GstVideoDecoderClass *video_decoder_class = GST_VIDEO_DECODER_CLASS (klass);
- g_type_class_add_private (klass, sizeof (GstOpenh264DecPrivate));
-
- /* Setting up pads and setting metadata should be moved to
- base_class_init if you intend to subclass this class. */
- gst_element_class_add_pad_template (GST_ELEMENT_CLASS (klass),
- gst_static_pad_template_get (&gst_openh264dec_sink_template));
- gst_element_class_add_pad_template (GST_ELEMENT_CLASS (klass),
- gst_static_pad_template_get (&gst_openh264dec_src_template));
+ gst_element_class_add_static_pad_template (GST_ELEMENT_CLASS (klass),
+ &gst_openh264dec_sink_template);
+ gst_element_class_add_static_pad_template (GST_ELEMENT_CLASS (klass),
+ &gst_openh264dec_src_template);
gst_element_class_set_static_metadata (GST_ELEMENT_CLASS (klass),
"OpenH264 video decoder", "Decoder/Video", "OpenH264 video decoder",
"Ericsson AB, http://www.ericsson.com");
- gobject_class->set_property = gst_openh264dec_set_property;
- gobject_class->get_property = gst_openh264dec_get_property;
video_decoder_class->start = GST_DEBUG_FUNCPTR (gst_openh264dec_start);
video_decoder_class->stop = GST_DEBUG_FUNCPTR (gst_openh264dec_stop);
@@ -138,43 +103,12 @@
static void
gst_openh264dec_init (GstOpenh264Dec * openh264dec)
{
- openh264dec->priv = GST_OPENH264DEC_GET_PRIVATE (openh264dec);
- openh264dec->priv->decoder = NULL;
+ openh264dec->decoder = NULL;
gst_video_decoder_set_packetized (GST_VIDEO_DECODER (openh264dec), TRUE);
gst_video_decoder_set_needs_format (GST_VIDEO_DECODER (openh264dec), TRUE);
}
-void
-gst_openh264dec_set_property (GObject * object, guint property_id,
- const GValue * value, GParamSpec * pspec)
-{
- GstOpenh264Dec *openh264dec = GST_OPENH264DEC (object);
-
- GST_DEBUG_OBJECT (openh264dec, "set_property");
-
- switch (property_id) {
- default:
- G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
- break;
- }
-}
-
-void
-gst_openh264dec_get_property (GObject * object, guint property_id,
- GValue * value, GParamSpec * pspec)
-{
- GstOpenh264Dec *openh264dec = GST_OPENH264DEC (object);
-
- GST_DEBUG_OBJECT (openh264dec, "get_property");
-
- switch (property_id) {
- default:
- G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
- break;
- }
-}
-
static gboolean
gst_openh264dec_start (GstVideoDecoder * decoder)
{
@@ -182,19 +116,19 @@
gint ret;
SDecodingParam dec_param = { 0 };
- if (openh264dec->priv->decoder != NULL) {
- openh264dec->priv->decoder->Uninitialize ();
- WelsDestroyDecoder (openh264dec->priv->decoder);
- openh264dec->priv->decoder = NULL;
+ if (openh264dec->decoder != NULL) {
+ openh264dec->decoder->Uninitialize ();
+ WelsDestroyDecoder (openh264dec->decoder);
+ openh264dec->decoder = NULL;
}
- WelsCreateDecoder (&(openh264dec->priv->decoder));
+ WelsCreateDecoder (&(openh264dec->decoder));
dec_param.uiTargetDqLayer = 255;
dec_param.eEcActiveIdc = ERROR_CON_FRAME_COPY;
dec_param.eOutputColorFormat = videoFormatI420;
dec_param.sVideoProperty.eVideoBsType = VIDEO_BITSTREAM_AVC;
- ret = openh264dec->priv->decoder->Initialize (&dec_param);
+ ret = openh264dec->decoder->Initialize (&dec_param);
GST_DEBUG_OBJECT (openh264dec,
"openh264_dec_start called, openh264dec %sinitialized OK!",
@@ -208,17 +142,17 @@
{
GstOpenh264Dec *openh264dec = GST_OPENH264DEC (decoder);
- if (openh264dec->priv->decoder) {
- openh264dec->priv->decoder->Uninitialize ();
- WelsDestroyDecoder (openh264dec->priv->decoder);
- openh264dec->priv->decoder = NULL;
+ if (openh264dec->decoder) {
+ openh264dec->decoder->Uninitialize ();
+ WelsDestroyDecoder (openh264dec->decoder);
+ openh264dec->decoder = NULL;
}
- if (openh264dec->priv->input_state) {
- gst_video_codec_state_unref (openh264dec->priv->input_state);
- openh264dec->priv->input_state = NULL;
+ if (openh264dec->input_state) {
+ gst_video_codec_state_unref (openh264dec->input_state);
+ openh264dec->input_state = NULL;
}
- openh264dec->priv->width = openh264dec->priv->height = 0;
+ openh264dec->width = openh264dec->height = 0;
return TRUE;
}
@@ -229,14 +163,13 @@
{
GstOpenh264Dec *openh264dec = GST_OPENH264DEC (decoder);
- GST_DEBUG_OBJECT (openh264dec,
- "openh264_dec_set_format called, caps: %" GST_PTR_FORMAT, state->caps);
+ GST_DEBUG_OBJECT (openh264dec, "input caps: %" GST_PTR_FORMAT, state->caps);
- if (openh264dec->priv->input_state) {
- gst_video_codec_state_unref (openh264dec->priv->input_state);
- openh264dec->priv->input_state = NULL;
+ if (openh264dec->input_state) {
+ gst_video_codec_state_unref (openh264dec->input_state);
+ openh264dec->input_state = NULL;
}
- openh264dec->priv->input_state = gst_video_codec_state_ref (state);
+ openh264dec->input_state = gst_video_codec_state_ref (state);
return TRUE;
}
@@ -280,7 +213,7 @@
memset (&dst_buf_info, 0, sizeof (SBufferInfo));
ret =
- openh264dec->priv->decoder->DecodeFrame2 (map_info.data, map_info.size,
+ openh264dec->decoder->DecodeFrame2 (map_info.data, map_info.size,
yuvdata, &dst_buf_info);
if (ret == dsNoParamSets) {
@@ -303,9 +236,7 @@
frame = NULL;
} else {
memset (&dst_buf_info, 0, sizeof (SBufferInfo));
- ret =
- openh264dec->priv->decoder->DecodeFrame2 (NULL, 0, yuvdata,
- &dst_buf_info);
+ ret = openh264dec->decoder->DecodeFrame2 (NULL, 0, yuvdata, &dst_buf_info);
if (ret != dsErrorFree) {
gst_video_codec_frame_unref (frame);
return GST_FLOW_EOS;
@@ -332,13 +263,13 @@
actual_height = dst_buf_info.UsrData.sSystemBuffer.iHeight;
if (!gst_pad_has_current_caps (GST_VIDEO_DECODER_SRC_PAD (openh264dec))
- || actual_width != openh264dec->priv->width
- || actual_height != openh264dec->priv->height) {
+ || actual_width != openh264dec->width
+ || actual_height != openh264dec->height) {
state =
gst_video_decoder_set_output_state (decoder, GST_VIDEO_FORMAT_I420,
- actual_width, actual_height, openh264dec->priv->input_state);
- openh264dec->priv->width = actual_width;
- openh264dec->priv->height = actual_height;
+ actual_width, actual_height, openh264dec->input_state);
+ openh264dec->width = actual_width;
+ openh264dec->height = actual_height;
if (!gst_video_decoder_negotiate (decoder)) {
GST_ERROR_OBJECT (openh264dec,
@@ -395,7 +326,7 @@
GST_DEBUG_OBJECT (openh264dec, "finish");
/* Decoder not negotiated yet */
- if (openh264dec->priv->width == 0)
+ if (openh264dec->width == 0)
return GST_FLOW_OK;
/* Drain all pending frames */
diff --git a/ext/openh264/gstopenh264dec.h b/ext/openh264/gstopenh264dec.h
index 3d56ab4..7d045b8 100644
--- a/ext/openh264/gstopenh264dec.h
+++ b/ext/openh264/gstopenh264dec.h
@@ -33,7 +33,12 @@
#include <gst/video/video.h>
#include <gst/video/gstvideodecoder.h>
+#include <wels/codec_api.h>
+#include <wels/codec_app_def.h>
+#include <wels/codec_def.h>
+
G_BEGIN_DECLS
+
#define GST_TYPE_OPENH264DEC (gst_openh264dec_get_type())
#define GST_OPENH264DEC(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj),GST_TYPE_OPENH264DEC,GstOpenh264Dec))
#define GST_OPENH264DEC_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass),GST_TYPE_OPENH264DEC,GstOpenh264DecClass))
@@ -42,14 +47,15 @@
typedef struct _GstOpenh264Dec GstOpenh264Dec;
typedef struct _GstOpenh264DecClass GstOpenh264DecClass;
-typedef struct _GstOpenh264DecPrivate GstOpenh264DecPrivate;
struct _GstOpenh264Dec
{
- GstVideoDecoder base_openh264dec;
+ GstVideoDecoder base_openh264dec;
- /*< private >*/
- GstOpenh264DecPrivate *priv;
+ /*< private >*/
+ ISVCDecoder *decoder;
+ GstVideoCodecState *input_state;
+ guint width, height;
};
struct _GstOpenh264DecClass
diff --git a/ext/openh264/gstopenh264enc.cpp b/ext/openh264/gstopenh264enc.cpp
index 4461ae2..de4a70d 100644
--- a/ext/openh264/gstopenh264enc.cpp
+++ b/ext/openh264/gstopenh264enc.cpp
@@ -35,14 +35,6 @@
#include <gst/video/gstvideoencoder.h>
#include <string.h>
-#include <wels/codec_api.h>
-#include <wels/codec_app_def.h>
-#include <wels/codec_def.h>
-#include <wels/codec_ver.h>
-
-#define GST_OPENH264ENC_GET_PRIVATE(obj) \
- (G_TYPE_INSTANCE_GET_PRIVATE((obj), GST_TYPE_OPENH264ENC, GstOpenh264EncPrivate))
-
GST_DEBUG_CATEGORY_STATIC (gst_openh264enc_debug_category);
#define GST_CAT_DEFAULT gst_openh264enc_debug_category
@@ -75,7 +67,8 @@
static const GEnumValue rc_modes_types[] = {
{RC_QUALITY_MODE, "Quality mode", "quality"},
{RC_BITRATE_MODE, "Bitrate mode", "bitrate"},
- {RC_BUFFERBASED_MODE, "No bitrate control, just using buffer status", "buffer"},
+ {RC_BUFFERBASED_MODE, "No bitrate control, just using buffer status",
+ "buffer"},
{RC_OFF_MODE, "Rate control off mode", "off"},
{0, NULL, NULL},
};
@@ -86,13 +79,6 @@
return rc_modes_type;
}
-typedef enum _GstOpenh264encDeblockingMode
-{
- GST_OPENH264_DEBLOCKING_ON = 0,
- GST_OPENH264_DEBLOCKING_OFF = 1,
- GST_OPENH264_DEBLOCKING_NOT_SLICE_BOUNDARIES = 2
-} GstOpenh264encDeblockingMode;
-
#define GST_TYPE_OPENH264ENC_DEBLOCKING_MODE (gst_openh264enc_deblocking_mode_get_type ())
static GType
gst_openh264enc_deblocking_mode_get_type (void)
@@ -106,9 +92,9 @@
};
static gsize id = 0;
- if (g_once_init_enter (& id)) {
+ if (g_once_init_enter (&id)) {
GType _id = g_enum_register_static ("GstOpenh264encDeblockingModes", types);
- g_once_init_leave (& id, _id);
+ g_once_init_leave (&id, _id);
}
return (GType) id;
@@ -119,15 +105,15 @@
gst_openh264enc_slice_mode_get_type (void)
{
static const GEnumValue types[] = {
- {SM_FIXEDSLCNUM_SLICE, "num-slices slices", "n-slices"},
+ {SM_FIXEDSLCNUM_SLICE, "Fixed number of slices", "n-slices"},
{SM_AUTO_SLICE, "Number of slices equal to number of threads", "auto"},
{0, NULL, NULL},
};
static gsize id = 0;
- if (g_once_init_enter (& id)) {
+ if (g_once_init_enter (&id)) {
GType _id = g_enum_register_static ("GstOpenh264encSliceModes", types);
- g_once_init_leave (& id, _id);
+ g_once_init_leave (&id, _id);
}
return (GType) id;
@@ -145,9 +131,9 @@
};
static gsize id = 0;
- if (g_once_init_enter (& id)) {
+ if (g_once_init_enter (&id)) {
GType _id = g_enum_register_static ("GstOpenh264encComplexity", types);
- g_once_init_leave (& id, _id);
+ g_once_init_leave (&id, _id);
}
return (GType) id;
@@ -176,9 +162,9 @@
#define DEFAULT_BITRATE (128000)
+#define DEFAULT_MAX_BITRATE (UNSPECIFIED_BIT_RATE)
#define DEFAULT_GOP_SIZE (90)
#define DEFAULT_MAX_SLICE_SIZE (1500000)
-#define DROP_BITRATE 20000
#define START_FRAMERATE 30
#define DEFAULT_USAGE_TYPE CAMERA_VIDEO_REAL_TIME
#define DEFAULT_RATE_CONTROL RC_QUALITY_MODE
@@ -198,6 +184,7 @@
PROP_0,
PROP_USAGE_TYPE,
PROP_BITRATE,
+ PROP_MAX_BITRATE,
PROP_GOP_SIZE,
PROP_MAX_SLICE_SIZE,
PROP_RATE_CONTROL,
@@ -214,32 +201,6 @@
N_PROPERTIES
};
-struct _GstOpenh264EncPrivate
-{
- ISVCEncoder *encoder;
- EUsageType usage_type;
- guint gop_size;
- RC_MODES rate_control;
- guint max_slice_size;
- guint bitrate;
- guint framerate;
- guint multi_thread;
- gboolean enable_denoise;
- gboolean enable_frame_skip;
- GstVideoCodecState *input_state;
- guint32 drop_bitrate;
- guint64 time_per_frame;
- guint64 frame_count;
- guint64 previous_timestamp;
- GstOpenh264encDeblockingMode deblocking_mode;
- gboolean background_detection;
- gboolean adaptive_quantization;
- gboolean scene_change_detection;
- SliceModeEnum slice_mode;
- guint num_slices;
- ECOMPLEXITY_MODE complexity;
-};
-
/* pad templates */
static GstStaticPadTemplate gst_openh264enc_sink_template =
@@ -254,7 +215,7 @@
GST_PAD_SRC,
GST_PAD_ALWAYS,
GST_STATIC_CAPS
- ("video/x-h264, stream-format=(string)\"avc\", alignment=(string)\"au\", profile=(string)\"baseline\"")
+ ("video/x-h264, stream-format=(string)\"byte-stream\", alignment=(string)\"au\", profile=(string)\"baseline\"")
);
/* class initialization */
@@ -271,14 +232,12 @@
GObjectClass *gobject_class = G_OBJECT_CLASS (klass);
GstVideoEncoderClass *video_encoder_class = GST_VIDEO_ENCODER_CLASS (klass);
- g_type_class_add_private (klass, sizeof (GstOpenh264EncPrivate));
-
/* Setting up pads and setting metadata should be moved to
base_class_init if you intend to subclass this class. */
- gst_element_class_add_pad_template (GST_ELEMENT_CLASS (klass),
- gst_static_pad_template_get (&gst_openh264enc_src_template));
- gst_element_class_add_pad_template (GST_ELEMENT_CLASS (klass),
- gst_static_pad_template_get (&gst_openh264enc_sink_template));
+ gst_element_class_add_static_pad_template (GST_ELEMENT_CLASS (klass),
+ &gst_openh264enc_src_template);
+ gst_element_class_add_static_pad_template (GST_ELEMENT_CLASS (klass),
+ &gst_openh264enc_sink_template);
gst_element_class_set_static_metadata (GST_ELEMENT_CLASS (klass),
"OpenH264 video encoder", "Encoder/Video", "OpenH264 video encoder",
@@ -332,6 +291,12 @@
0, G_MAXUINT, DEFAULT_BITRATE,
(GParamFlags) (G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)));
+ g_object_class_install_property (gobject_class, PROP_MAX_BITRATE,
+ g_param_spec_uint ("max-bitrate", "Max Bitrate",
+ "Maximum Bitrate (in bits per second)",
+ 0, G_MAXUINT, DEFAULT_MAX_BITRATE,
+ (GParamFlags) (G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)));
+
g_object_class_install_property (gobject_class, PROP_GOP_SIZE,
g_param_spec_uint ("gop-size", "GOP size",
"Number of frames between intra frames",
@@ -378,37 +343,36 @@
(GParamFlags) (G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)));
g_object_class_install_property (G_OBJECT_CLASS (klass), PROP_COMPLEXITY,
- g_param_spec_enum ("complexity", "Complexity / quality / speed tradeoff", "Complexity",
- GST_TYPE_OPENH264ENC_COMPLEXITY, DEFAULT_COMPLEXITY,
+ g_param_spec_enum ("complexity", "Complexity / quality / speed tradeoff",
+ "Complexity", GST_TYPE_OPENH264ENC_COMPLEXITY, DEFAULT_COMPLEXITY,
(GParamFlags) (G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)));
}
static void
gst_openh264enc_init (GstOpenh264Enc * openh264enc)
{
- openh264enc->priv = GST_OPENH264ENC_GET_PRIVATE (openh264enc);
- openh264enc->priv->gop_size = DEFAULT_GOP_SIZE;
- openh264enc->priv->usage_type = DEFAULT_USAGE_TYPE;
- openh264enc->priv->rate_control = DEFAULT_RATE_CONTROL;
- openh264enc->priv->multi_thread = DEFAULT_MULTI_THREAD;
- openh264enc->priv->max_slice_size = DEFAULT_MAX_SLICE_SIZE;
- openh264enc->priv->bitrate = DEFAULT_BITRATE;
- openh264enc->priv->framerate = START_FRAMERATE;
- openh264enc->priv->input_state = NULL;
- openh264enc->priv->time_per_frame = GST_SECOND / openh264enc->priv->framerate;
- openh264enc->priv->frame_count = 0;
- openh264enc->priv->previous_timestamp = 0;
- openh264enc->priv->drop_bitrate = DROP_BITRATE;
- openh264enc->priv->enable_denoise = DEFAULT_ENABLE_DENOISE;
- openh264enc->priv->enable_frame_skip = DEFAULT_ENABLE_FRAME_SKIP;
- openh264enc->priv->deblocking_mode = DEFAULT_DEBLOCKING_MODE;
- openh264enc->priv->background_detection = DEFAULT_BACKGROUND_DETECTION;
- openh264enc->priv->adaptive_quantization = DEFAULT_ADAPTIVE_QUANTIZATION;
- openh264enc->priv->scene_change_detection = DEFAULT_SCENE_CHANGE_DETECTION;
- openh264enc->priv->slice_mode = DEFAULT_SLICE_MODE;
- openh264enc->priv->num_slices = DEFAULT_NUM_SLICES;
- openh264enc->priv->encoder = NULL;
- openh264enc->priv->complexity = DEFAULT_COMPLEXITY;
+ openh264enc->gop_size = DEFAULT_GOP_SIZE;
+ openh264enc->usage_type = DEFAULT_USAGE_TYPE;
+ openh264enc->rate_control = DEFAULT_RATE_CONTROL;
+ openh264enc->multi_thread = DEFAULT_MULTI_THREAD;
+ openh264enc->max_slice_size = DEFAULT_MAX_SLICE_SIZE;
+ openh264enc->bitrate = DEFAULT_BITRATE;
+ openh264enc->max_bitrate = DEFAULT_MAX_BITRATE;
+ openh264enc->framerate = START_FRAMERATE;
+ openh264enc->input_state = NULL;
+ openh264enc->time_per_frame = GST_SECOND / openh264enc->framerate;
+ openh264enc->frame_count = 0;
+ openh264enc->previous_timestamp = 0;
+ openh264enc->enable_denoise = DEFAULT_ENABLE_DENOISE;
+ openh264enc->enable_frame_skip = DEFAULT_ENABLE_FRAME_SKIP;
+ openh264enc->deblocking_mode = DEFAULT_DEBLOCKING_MODE;
+ openh264enc->background_detection = DEFAULT_BACKGROUND_DETECTION;
+ openh264enc->adaptive_quantization = DEFAULT_ADAPTIVE_QUANTIZATION;
+ openh264enc->scene_change_detection = DEFAULT_SCENE_CHANGE_DETECTION;
+ openh264enc->slice_mode = DEFAULT_SLICE_MODE;
+ openh264enc->num_slices = DEFAULT_NUM_SLICES;
+ openh264enc->encoder = NULL;
+ openh264enc->complexity = DEFAULT_COMPLEXITY;
gst_openh264enc_set_usage_type (openh264enc, CAMERA_VIDEO_REAL_TIME);
gst_openh264enc_set_rate_control (openh264enc, RC_QUALITY_MODE);
}
@@ -418,10 +382,10 @@
{
switch (usage_type) {
case CAMERA_VIDEO_REAL_TIME:
- openh264enc->priv->usage_type = CAMERA_VIDEO_REAL_TIME;
+ openh264enc->usage_type = CAMERA_VIDEO_REAL_TIME;
break;
case SCREEN_CONTENT_REAL_TIME:
- openh264enc->priv->usage_type = SCREEN_CONTENT_REAL_TIME;
+ openh264enc->usage_type = SCREEN_CONTENT_REAL_TIME;
break;
default:
g_assert_not_reached ();
@@ -433,16 +397,16 @@
{
switch (rc_mode) {
case RC_QUALITY_MODE:
- openh264enc->priv->rate_control = RC_QUALITY_MODE;
+ openh264enc->rate_control = RC_QUALITY_MODE;
break;
case RC_BITRATE_MODE:
- openh264enc->priv->rate_control = RC_BITRATE_MODE;
+ openh264enc->rate_control = RC_BITRATE_MODE;
break;
case RC_BUFFERBASED_MODE:
- openh264enc->priv->rate_control = RC_BUFFERBASED_MODE;
+ openh264enc->rate_control = RC_BUFFERBASED_MODE;
break;
case RC_OFF_MODE:
- openh264enc->priv->rate_control = RC_OFF_MODE;
+ openh264enc->rate_control = RC_OFF_MODE;
break;
default:
g_assert_not_reached ();
@@ -459,11 +423,15 @@
switch (property_id) {
case PROP_BITRATE:
- openh264enc->priv->bitrate = g_value_get_uint (value);
+ openh264enc->bitrate = g_value_get_uint (value);
+ break;
+
+ case PROP_MAX_BITRATE:
+ openh264enc->max_bitrate = g_value_get_uint (value);
break;
case PROP_MULTI_THREAD:
- openh264enc->priv->multi_thread = g_value_get_uint (value);
+ openh264enc->multi_thread = g_value_get_uint (value);
break;
case PROP_USAGE_TYPE:
@@ -471,11 +439,11 @@
break;
case PROP_ENABLE_DENOISE:
- openh264enc->priv->enable_denoise = g_value_get_boolean (value);
+ openh264enc->enable_denoise = g_value_get_boolean (value);
break;
case PROP_ENABLE_FRAME_SKIP:
- openh264enc->priv->enable_frame_skip = g_value_get_boolean (value);
+ openh264enc->enable_frame_skip = g_value_get_boolean (value);
break;
case PROP_RATE_CONTROL:
@@ -483,40 +451,40 @@
break;
case PROP_GOP_SIZE:
- openh264enc->priv->gop_size = g_value_get_uint (value);
+ openh264enc->gop_size = g_value_get_uint (value);
break;
case PROP_MAX_SLICE_SIZE:
- openh264enc->priv->max_slice_size = g_value_get_uint (value);
+ openh264enc->max_slice_size = g_value_get_uint (value);
break;
case PROP_DEBLOCKING_MODE:
- openh264enc->priv->deblocking_mode =
+ openh264enc->deblocking_mode =
(GstOpenh264encDeblockingMode) g_value_get_enum (value);
break;
case PROP_BACKGROUND_DETECTION:
- openh264enc->priv->background_detection = g_value_get_boolean (value);
+ openh264enc->background_detection = g_value_get_boolean (value);
break;
case PROP_ADAPTIVE_QUANTIZATION:
- openh264enc->priv->adaptive_quantization = g_value_get_boolean (value);
+ openh264enc->adaptive_quantization = g_value_get_boolean (value);
break;
case PROP_SCENE_CHANGE_DETECTION:
- openh264enc->priv->scene_change_detection = g_value_get_boolean (value);
+ openh264enc->scene_change_detection = g_value_get_boolean (value);
break;
case PROP_SLICE_MODE:
- openh264enc->priv->slice_mode = (SliceModeEnum) g_value_get_enum (value);
+ openh264enc->slice_mode = (SliceModeEnum) g_value_get_enum (value);
break;
case PROP_NUM_SLICES:
- openh264enc->priv->num_slices = g_value_get_uint (value);
+ openh264enc->num_slices = g_value_get_uint (value);
break;
case PROP_COMPLEXITY:
- openh264enc->priv->complexity = (ECOMPLEXITY_MODE) g_value_get_enum (value);
+ openh264enc->complexity = (ECOMPLEXITY_MODE) g_value_get_enum (value);
break;
default:
@@ -535,63 +503,67 @@
switch (property_id) {
case PROP_USAGE_TYPE:
- g_value_set_enum (value, openh264enc->priv->usage_type);
+ g_value_set_enum (value, openh264enc->usage_type);
break;
case PROP_RATE_CONTROL:
- g_value_set_enum (value, openh264enc->priv->rate_control);
+ g_value_set_enum (value, openh264enc->rate_control);
break;
case PROP_BITRATE:
- g_value_set_uint (value, openh264enc->priv->bitrate);
+ g_value_set_uint (value, openh264enc->bitrate);
+ break;
+
+ case PROP_MAX_BITRATE:
+ g_value_set_uint (value, openh264enc->max_bitrate);
break;
case PROP_ENABLE_DENOISE:
- g_value_set_boolean (value, openh264enc->priv->enable_denoise);
+ g_value_set_boolean (value, openh264enc->enable_denoise);
break;
case PROP_ENABLE_FRAME_SKIP:
- g_value_set_boolean (value, openh264enc->priv->enable_frame_skip);
+ g_value_set_boolean (value, openh264enc->enable_frame_skip);
break;
case PROP_MULTI_THREAD:
- g_value_set_uint (value, openh264enc->priv->multi_thread);
+ g_value_set_uint (value, openh264enc->multi_thread);
break;
case PROP_GOP_SIZE:
- g_value_set_uint (value, openh264enc->priv->gop_size);
+ g_value_set_uint (value, openh264enc->gop_size);
break;
case PROP_MAX_SLICE_SIZE:
- g_value_set_uint (value, openh264enc->priv->max_slice_size);
+ g_value_set_uint (value, openh264enc->max_slice_size);
break;
case PROP_DEBLOCKING_MODE:
- g_value_set_enum (value, openh264enc->priv->deblocking_mode);
+ g_value_set_enum (value, openh264enc->deblocking_mode);
break;
case PROP_BACKGROUND_DETECTION:
- g_value_set_boolean (value, openh264enc->priv->background_detection);
+ g_value_set_boolean (value, openh264enc->background_detection);
break;
case PROP_ADAPTIVE_QUANTIZATION:
- g_value_set_boolean (value, openh264enc->priv->adaptive_quantization);
+ g_value_set_boolean (value, openh264enc->adaptive_quantization);
break;
case PROP_SCENE_CHANGE_DETECTION:
- g_value_set_boolean (value, openh264enc->priv->scene_change_detection);
+ g_value_set_boolean (value, openh264enc->scene_change_detection);
break;
case PROP_SLICE_MODE:
- g_value_set_enum (value, openh264enc->priv->slice_mode);
+ g_value_set_enum (value, openh264enc->slice_mode);
break;
case PROP_NUM_SLICES:
- g_value_set_uint (value, openh264enc->priv->num_slices);
+ g_value_set_uint (value, openh264enc->num_slices);
break;
case PROP_COMPLEXITY:
- g_value_set_enum (value, openh264enc->priv->complexity);
+ g_value_set_enum (value, openh264enc->complexity);
break;
default:
@@ -609,10 +581,10 @@
/* clean up object here */
- if (openh264enc->priv->input_state) {
- gst_video_codec_state_unref (openh264enc->priv->input_state);
+ if (openh264enc->input_state) {
+ gst_video_codec_state_unref (openh264enc->input_state);
}
- openh264enc->priv->input_state = NULL;
+ openh264enc->input_state = NULL;
G_OBJECT_CLASS (gst_openh264enc_parent_class)->finalize (object);
}
@@ -633,17 +605,17 @@
openh264enc = GST_OPENH264ENC (encoder);
- if (openh264enc->priv->encoder != NULL) {
- openh264enc->priv->encoder->Uninitialize ();
- WelsDestroySVCEncoder (openh264enc->priv->encoder);
- openh264enc->priv->encoder = NULL;
+ if (openh264enc->encoder != NULL) {
+ openh264enc->encoder->Uninitialize ();
+ WelsDestroySVCEncoder (openh264enc->encoder);
+ openh264enc->encoder = NULL;
}
- openh264enc->priv->encoder = NULL;
+ openh264enc->encoder = NULL;
- if (openh264enc->priv->input_state) {
- gst_video_codec_state_unref (openh264enc->priv->input_state);
+ if (openh264enc->input_state) {
+ gst_video_codec_state_unref (openh264enc->input_state);
}
- openh264enc->priv->input_state = NULL;
+ openh264enc->input_state = NULL;
GST_DEBUG_OBJECT (openh264enc, "openh264_enc_stop called");
@@ -656,22 +628,13 @@
GstVideoCodecState * state)
{
GstOpenh264Enc *openh264enc = GST_OPENH264ENC (encoder);
- GstOpenh264EncPrivate *priv = openh264enc->priv;
gchar *debug_caps;
- SFrameBSInfo bsInfo;
guint width, height, fps_n, fps_d;
SEncParamExt enc_params;
gint ret;
- guchar *nal_sps_data = NULL;
- gint nal_sps_length = 0;
- guchar *nal_pps_data = NULL;
- gint nal_pps_length = 0;
- guchar *sps_tmp_buf;
- guchar *codec_data_tmp_buf;
- GstBuffer *codec_data;
GstCaps *outcaps;
GstVideoCodecState *output_state;
- openh264enc->priv->frame_count = 0;
+ openh264enc->frame_count = 0;
int video_format = videoFormatI420;
debug_caps = gst_caps_to_string (state->caps);
@@ -681,125 +644,84 @@
gst_openh264enc_stop (encoder);
- if (priv->input_state) {
- gst_video_codec_state_unref (priv->input_state);
+ if (openh264enc->input_state) {
+ gst_video_codec_state_unref (openh264enc->input_state);
}
- priv->input_state = gst_video_codec_state_ref (state);
+ openh264enc->input_state = gst_video_codec_state_ref (state);
width = GST_VIDEO_INFO_WIDTH (&state->info);
height = GST_VIDEO_INFO_HEIGHT (&state->info);
fps_n = GST_VIDEO_INFO_FPS_N (&state->info);
fps_d = GST_VIDEO_INFO_FPS_D (&state->info);
- if (priv->encoder != NULL) {
- priv->encoder->Uninitialize ();
- WelsDestroySVCEncoder (priv->encoder);
- priv->encoder = NULL;
+ if (openh264enc->encoder != NULL) {
+ openh264enc->encoder->Uninitialize ();
+ WelsDestroySVCEncoder (openh264enc->encoder);
+ openh264enc->encoder = NULL;
}
- WelsCreateSVCEncoder (&(priv->encoder));
+ WelsCreateSVCEncoder (&openh264enc->encoder);
unsigned int uiTraceLevel = WELS_LOG_ERROR;
- priv->encoder->SetOption(ENCODER_OPTION_TRACE_LEVEL, &uiTraceLevel);
+ openh264enc->encoder->SetOption (ENCODER_OPTION_TRACE_LEVEL, &uiTraceLevel);
- priv->encoder->GetDefaultParams (&enc_params);
+ openh264enc->encoder->GetDefaultParams (&enc_params);
- enc_params.iUsageType = openh264enc->priv->usage_type;
+ enc_params.iUsageType = openh264enc->usage_type;
enc_params.iPicWidth = width;
enc_params.iPicHeight = height;
- enc_params.iTargetBitrate = openh264enc->priv->bitrate;
- enc_params.iRCMode = RC_QUALITY_MODE;
+ enc_params.iTargetBitrate = openh264enc->bitrate;
+ enc_params.iMaxBitrate = openh264enc->max_bitrate;
+ enc_params.iRCMode = openh264enc->rate_control;
enc_params.iTemporalLayerNum = 1;
enc_params.iSpatialLayerNum = 1;
enc_params.iLtrMarkPeriod = 30;
- enc_params.iMultipleThreadIdc = openh264enc->priv->multi_thread;
- enc_params.bEnableDenoise = openh264enc->priv->enable_denoise;
- enc_params.iComplexityMode = priv->complexity;
- enc_params.uiIntraPeriod = priv->gop_size;
- enc_params.bEnableBackgroundDetection =
- openh264enc->priv->background_detection;
- enc_params.bEnableAdaptiveQuant = openh264enc->priv->adaptive_quantization;
- enc_params.bEnableSceneChangeDetect =
- openh264enc->priv->scene_change_detection;
- enc_params.bEnableFrameSkip = openh264enc->priv->enable_frame_skip;
+ enc_params.iMultipleThreadIdc = openh264enc->multi_thread;
+ enc_params.bEnableDenoise = openh264enc->enable_denoise;
+ enc_params.iComplexityMode = openh264enc->complexity;
+ enc_params.uiIntraPeriod = openh264enc->gop_size;
+ enc_params.bEnableBackgroundDetection = openh264enc->background_detection;
+ enc_params.bEnableAdaptiveQuant = openh264enc->adaptive_quantization;
+ enc_params.bEnableSceneChangeDetect = openh264enc->scene_change_detection;
+ enc_params.bEnableFrameSkip = openh264enc->enable_frame_skip;
enc_params.bEnableLongTermReference = 0;
#if OPENH264_MINOR >= 4
enc_params.eSpsPpsIdStrategy = CONSTANT_ID;
#else
- enc_params.bEnableSpsPpsIdAddition = 1;
+ enc_params.bEnableSpsPpsIdAddition = 0;
#endif
enc_params.bPrefixNalAddingCtrl = 0;
enc_params.fMaxFrameRate = fps_n * 1.0 / fps_d;
- enc_params.iLoopFilterDisableIdc = openh264enc->priv->deblocking_mode;
+ enc_params.iLoopFilterDisableIdc = openh264enc->deblocking_mode;
enc_params.sSpatialLayers[0].uiProfileIdc = PRO_BASELINE;
- enc_params.sSpatialLayers[0].iVideoWidth = width;
- enc_params.sSpatialLayers[0].iVideoHeight = height;
+ enc_params.sSpatialLayers[0].iVideoWidth = enc_params.iPicWidth;
+ enc_params.sSpatialLayers[0].iVideoHeight = enc_params.iPicHeight;
enc_params.sSpatialLayers[0].fFrameRate = fps_n * 1.0 / fps_d;
- enc_params.sSpatialLayers[0].iSpatialBitrate = openh264enc->priv->bitrate;
- enc_params.sSpatialLayers[0].sSliceCfg.uiSliceMode =
- openh264enc->priv->slice_mode;
- enc_params.sSpatialLayers[0].sSliceCfg.sSliceArgument.uiSliceNum =
- openh264enc->priv->num_slices;
+ enc_params.sSpatialLayers[0].iSpatialBitrate = enc_params.iTargetBitrate;
+ enc_params.sSpatialLayers[0].iMaxSpatialBitrate = enc_params.iMaxBitrate;
- priv->framerate = (1 + fps_n / fps_d);
+ if (openh264enc->slice_mode == SM_FIXEDSLCNUM_SLICE) {
+ if (openh264enc->num_slices == 1)
+ enc_params.sSpatialLayers[0].sSliceCfg.uiSliceMode = SM_SINGLE_SLICE;
+ else
+ enc_params.sSpatialLayers[0].sSliceCfg.uiSliceMode = SM_FIXEDSLCNUM_SLICE;
+ enc_params.sSpatialLayers[0].sSliceCfg.sSliceArgument.uiSliceNum = openh264enc->num_slices;
+ } else {
+ enc_params.sSpatialLayers[0].sSliceCfg.uiSliceMode = openh264enc->slice_mode;
+ }
- ret = priv->encoder->InitializeExt (&enc_params);
+ openh264enc->framerate = (1 + fps_n / fps_d);
+
+ ret = openh264enc->encoder->InitializeExt (&enc_params);
if (ret != cmResultSuccess) {
GST_ERROR_OBJECT (openh264enc, "failed to initialize encoder");
return FALSE;
}
- priv->encoder->SetOption(ENCODER_OPTION_DATAFORMAT, &video_format);
-
- memset (&bsInfo, 0, sizeof (SFrameBSInfo));
-
- ret = priv->encoder->EncodeParameterSets (&bsInfo);
-
- nal_sps_data = bsInfo.sLayerInfo[0].pBsBuf + 4;
- nal_sps_length = bsInfo.sLayerInfo[0].pNalLengthInByte[0] - 4;
-
- nal_pps_data = bsInfo.sLayerInfo[0].pBsBuf + nal_sps_length + 8;
- nal_pps_length = bsInfo.sLayerInfo[0].pNalLengthInByte[1] - 4;
-
- if (ret != cmResultSuccess) {
- GST_ELEMENT_ERROR (openh264enc, STREAM, ENCODE,
- ("Could not create headers"), ("Could not create SPS"));
- return FALSE;
- }
-
- sps_tmp_buf = (guchar *) (g_memdup (nal_sps_data, nal_sps_length));
-
- codec_data_tmp_buf =
- (guchar *) g_malloc (5 + 3 + nal_sps_length + 3 + nal_pps_length);
- codec_data_tmp_buf[0] = 1; /* version 1 */ ;
- codec_data_tmp_buf[1] = sps_tmp_buf[1]; /* profile */
- codec_data_tmp_buf[2] = sps_tmp_buf[2]; /* profile constraints */
- codec_data_tmp_buf[3] = sps_tmp_buf[3]; /* level */
- codec_data_tmp_buf[4] = 1; /* NAL length marker length minus one */
- codec_data_tmp_buf[5] = 1; /* Number of SPS */
- GST_WRITE_UINT16_BE (codec_data_tmp_buf + 6, nal_sps_length);
- memcpy (codec_data_tmp_buf + 8, sps_tmp_buf, nal_sps_length);
-
- g_free (sps_tmp_buf);
-
- codec_data_tmp_buf[8 + nal_sps_length] = 1; /* Number of PPS */
- GST_WRITE_UINT16_BE (codec_data_tmp_buf + 8 + nal_sps_length + 1,
- nal_pps_length);
- memcpy (codec_data_tmp_buf + 8 + nal_sps_length + 3, nal_pps_data,
- nal_pps_length);
-
- GST_DEBUG_OBJECT (openh264enc, "Got SPS of size %d and PPS of size %d",
- nal_sps_length, nal_pps_length);
-
- codec_data =
- gst_buffer_new_wrapped (codec_data_tmp_buf,
- 5 + 3 + nal_sps_length + 3 + nal_pps_length);
+ openh264enc->encoder->SetOption (ENCODER_OPTION_DATAFORMAT, &video_format);
outcaps =
gst_caps_copy (gst_static_pad_template_get_caps
(&gst_openh264enc_src_template));
- gst_caps_set_simple (outcaps, "codec_data", GST_TYPE_BUFFER, codec_data,
- NULL);
- gst_buffer_unref (codec_data);
output_state = gst_video_encoder_set_output_state (encoder, outcaps, state);
gst_video_codec_state_unref (output_state);
@@ -828,7 +750,9 @@
gint ret;
SFrameBSInfo frame_info;
gfloat fps;
- GstVideoEncoder *base_encoder = GST_VIDEO_ENCODER (openh264enc);
+ GstMapInfo map;
+ gint i, j;
+ gsize buf_length = 0;
if (frame) {
src_pic = new SSourcePicture;
@@ -840,38 +764,28 @@
}
//fill default src_pic
src_pic->iColorFormat = videoFormatI420;
- src_pic->uiTimeStamp = 0;
+ src_pic->uiTimeStamp = frame->pts / GST_MSECOND;
}
- openh264enc->priv->frame_count++;
+ openh264enc->frame_count++;
if (frame) {
- if (G_UNLIKELY (openh264enc->priv->frame_count == 1)) {
- openh264enc->priv->time_per_frame =
- (GST_NSECOND / openh264enc->priv->framerate);
- openh264enc->priv->previous_timestamp = frame->pts;
+ if (G_UNLIKELY (openh264enc->frame_count == 1)) {
+ openh264enc->time_per_frame = (GST_SECOND / openh264enc->framerate);
+ openh264enc->previous_timestamp = frame->pts;
} else {
- openh264enc->priv->time_per_frame =
- openh264enc->priv->time_per_frame * 0.8 + (frame->pts -
- openh264enc->priv->previous_timestamp) * 0.2;
- openh264enc->priv->previous_timestamp = frame->pts;
- if (openh264enc->priv->frame_count % 10 == 0) {
- fps = GST_SECOND / (gdouble) openh264enc->priv->time_per_frame;
- openh264enc->priv->encoder->SetOption (ENCODER_OPTION_FRAME_RATE, &fps);
+ openh264enc->time_per_frame =
+ openh264enc->time_per_frame * 0.8 + (frame->pts -
+ openh264enc->previous_timestamp) * 0.2;
+ openh264enc->previous_timestamp = frame->pts;
+ if (openh264enc->frame_count % 10 == 0) {
+ fps = GST_SECOND / (gdouble) openh264enc->time_per_frame;
+ openh264enc->encoder->SetOption (ENCODER_OPTION_FRAME_RATE, &fps);
}
}
}
- if (openh264enc->priv->bitrate <= openh264enc->priv->drop_bitrate) {
- GST_LOG_OBJECT (openh264enc, "Dropped frame due to too low bitrate");
- if (frame) {
- gst_video_encoder_finish_frame (encoder, frame);
- delete src_pic;
- }
- return GST_FLOW_OK;
- }
-
if (frame) {
- gst_video_frame_map (&video_frame, &openh264enc->priv->input_state->info,
+ gst_video_frame_map (&video_frame, &openh264enc->input_state->info,
frame->input_buffer, GST_MAP_READ);
src_pic->iPicWidth = GST_VIDEO_FRAME_WIDTH (&video_frame);
src_pic->iPicHeight = GST_VIDEO_FRAME_HEIGHT (&video_frame);
@@ -884,14 +798,14 @@
force_keyframe = GST_VIDEO_CODEC_FRAME_IS_FORCE_KEYFRAME (frame);
if (force_keyframe) {
- openh264enc->priv->encoder->ForceIntraFrame (true);
+ openh264enc->encoder->ForceIntraFrame (true);
GST_DEBUG_OBJECT (openh264enc,
"Got force key unit event, next frame coded as intra picture");
}
}
memset (&frame_info, 0, sizeof (SFrameBSInfo));
- ret = openh264enc->priv->encoder->EncodeFrame (src_pic, &frame_info);
+ ret = openh264enc->encoder->EncodeFrame (src_pic, &frame_info);
if (ret != cmResultSuccess) {
if (frame) {
gst_video_frame_unmap (&video_frame);
@@ -908,7 +822,7 @@
if (videoFrameTypeSkip == frame_info.eFrameType) {
if (frame) {
gst_video_frame_unmap (&video_frame);
- gst_video_encoder_finish_frame (base_encoder, frame);
+ gst_video_encoder_finish_frame (encoder, frame);
delete src_pic;
}
@@ -926,7 +840,7 @@
/* FIXME: openh264 has no way for us to get a connection
* between the input and output frames, we just have to
* guess based on the input */
- frame = gst_video_encoder_get_oldest_frame (base_encoder);
+ frame = gst_video_encoder_get_oldest_frame (encoder);
if (!frame) {
GST_ELEMENT_ERROR (openh264enc, STREAM, ENCODE,
("Could not encode frame"), ("openh264enc returned %d", ret));
@@ -934,59 +848,34 @@
return GST_FLOW_ERROR;
}
- SLayerBSInfo *bs_info = &frame_info.sLayerInfo[0];
- gint nal_size = bs_info->pNalLengthInByte[0] - 4;
- guchar *nal_sps_data, *nal_pps_data;
- gint nal_sps_length, nal_pps_length, idr_length, tmp_buf_length;
-
if (videoFrameTypeIDR == frame_info.eFrameType) {
- GstMapInfo map;
-
- /* sps */
- nal_sps_data = frame_info.sLayerInfo[0].pBsBuf + 4;
- nal_sps_length = frame_info.sLayerInfo[0].pNalLengthInByte[0] - 4;
- /* pps */
- nal_pps_data = nal_sps_data + frame_info.sLayerInfo[0].pNalLengthInByte[0];
- nal_pps_length = frame_info.sLayerInfo[0].pNalLengthInByte[1] - 4;
- /* idr */
- bs_info = &frame_info.sLayerInfo[1];
- idr_length = bs_info->pNalLengthInByte[0] - 4;
-
- tmp_buf_length = nal_sps_length + 2 + nal_pps_length + 2 + idr_length + 2;
- frame->output_buffer =
- gst_video_encoder_allocate_output_buffer (encoder, tmp_buf_length);
- gst_buffer_map (frame->output_buffer, &map, GST_MAP_WRITE);
-
- GST_WRITE_UINT16_BE (map.data, nal_sps_length);
- memcpy (map.data + 2, nal_sps_data, nal_sps_length);
-
- GST_WRITE_UINT16_BE (map.data + nal_sps_length + 2, nal_pps_length);
- memcpy (map.data + nal_sps_length + 2 + 2, nal_pps_data, nal_pps_length);
-
- GST_WRITE_UINT16_BE (map.data + nal_sps_length + 2 + nal_pps_length + 2,
- idr_length);
- memcpy (map.data + nal_sps_length + 2 + nal_pps_length + 2 + 2,
- bs_info->pBsBuf + 4, idr_length);
-
- gst_buffer_unmap (frame->output_buffer, &map);
-
GST_VIDEO_CODEC_FRAME_SET_SYNC_POINT (frame);
} else {
- GstMapInfo map;
-
- tmp_buf_length = nal_size + 2;
- frame->output_buffer =
- gst_video_encoder_allocate_output_buffer (encoder, tmp_buf_length);
- gst_buffer_map (frame->output_buffer, &map, GST_MAP_WRITE);
-
- GST_WRITE_UINT16_BE (map.data, nal_size);
- memcpy (map.data + 2, bs_info->pBsBuf + 4, nal_size);
-
- gst_buffer_unmap (frame->output_buffer, &map);
-
GST_VIDEO_CODEC_FRAME_UNSET_SYNC_POINT (frame);
}
+ for (i = 0; i < frame_info.iLayerNum; i++) {
+ for (j = 0; j < frame_info.sLayerInfo[i].iNalCount; j++) {
+ buf_length += frame_info.sLayerInfo[i].pNalLengthInByte[j];
+ }
+ }
+
+ frame->output_buffer =
+ gst_video_encoder_allocate_output_buffer (encoder, buf_length);
+ gst_buffer_map (frame->output_buffer, &map, GST_MAP_WRITE);
+
+ buf_length = 0;
+ for (i = 0; i < frame_info.iLayerNum; i++) {
+ gsize layer_size = 0;
+ for (j = 0; j < frame_info.sLayerInfo[i].iNalCount; j++) {
+ layer_size += frame_info.sLayerInfo[i].pNalLengthInByte[j];
+ }
+ memcpy (map.data + buf_length, frame_info.sLayerInfo[i].pBsBuf, layer_size);
+ buf_length += layer_size;
+ }
+
+ gst_buffer_unmap (frame->output_buffer, &map);
+
GST_LOG_OBJECT (openh264enc, "openh264 picture %scoded OK!",
(ret != cmResultSuccess) ? "NOT " : "");
@@ -998,7 +887,7 @@
{
GstOpenh264Enc *openh264enc = GST_OPENH264ENC (encoder);
- if (openh264enc->priv->frame_count == 0)
+ if (openh264enc->frame_count == 0)
return GST_FLOW_OK;
/* Drain encoder */
diff --git a/ext/openh264/gstopenh264enc.h b/ext/openh264/gstopenh264enc.h
index 009210a..4bd0eb7 100644
--- a/ext/openh264/gstopenh264enc.h
+++ b/ext/openh264/gstopenh264enc.h
@@ -33,7 +33,20 @@
#include <gst/video/video.h>
#include <gst/video/gstvideoencoder.h>
+#include <wels/codec_api.h>
+#include <wels/codec_app_def.h>
+#include <wels/codec_def.h>
+#include <wels/codec_ver.h>
+
G_BEGIN_DECLS
+
+typedef enum _GstOpenh264encDeblockingMode
+{
+ GST_OPENH264_DEBLOCKING_ON = 0,
+ GST_OPENH264_DEBLOCKING_OFF = 1,
+ GST_OPENH264_DEBLOCKING_NOT_SLICE_BOUNDARIES = 2
+} GstOpenh264encDeblockingMode;
+
#define GST_TYPE_OPENH264ENC (gst_openh264enc_get_type())
#define GST_OPENH264ENC(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj),GST_TYPE_OPENH264ENC,GstOpenh264Enc))
#define GST_OPENH264ENC_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass),GST_TYPE_OPENH264ENC,GstOpenh264EncClass))
@@ -42,14 +55,34 @@
typedef struct _GstOpenh264Enc GstOpenh264Enc;
typedef struct _GstOpenh264EncClass GstOpenh264EncClass;
-typedef struct _GstOpenh264EncPrivate GstOpenh264EncPrivate;
struct _GstOpenh264Enc
{
- GstVideoEncoder base_openh264enc;
+ GstVideoEncoder base_openh264enc;
- /*< private >*/
- GstOpenh264EncPrivate *priv;
+ /*< private >*/
+ ISVCEncoder *encoder;
+ EUsageType usage_type;
+ guint gop_size;
+ RC_MODES rate_control;
+ guint max_slice_size;
+ guint bitrate;
+ guint max_bitrate;
+ guint framerate;
+ guint multi_thread;
+ gboolean enable_denoise;
+ gboolean enable_frame_skip;
+ GstVideoCodecState *input_state;
+ guint64 time_per_frame;
+ guint64 frame_count;
+ guint64 previous_timestamp;
+ GstOpenh264encDeblockingMode deblocking_mode;
+ gboolean background_detection;
+ gboolean adaptive_quantization;
+ gboolean scene_change_detection;
+ SliceModeEnum slice_mode;
+ guint num_slices;
+ ECOMPLEXITY_MODE complexity;
};
struct _GstOpenh264EncClass
diff --git a/ext/openjpeg/Makefile.am b/ext/openjpeg/Makefile.am
index c3376f1..eb684d3 100644
--- a/ext/openjpeg/Makefile.am
+++ b/ext/openjpeg/Makefile.am
@@ -1,9 +1,10 @@
plugin_LTLIBRARIES = libgstopenjpeg.la
libgstopenjpeg_la_SOURCES = gstopenjpegdec.c gstopenjpegenc.c gstopenjpeg.c
-libgstopenjpeg_la_CFLAGS = \
+libgstopenjpeg_la_CFLAGS = $(GST_PLUGINS_BAD_CFLAGS) \
$(GST_PLUGINS_BASE_CFLAGS) $(GST_CFLAGS) $(OPENJPEG_CFLAGS)
libgstopenjpeg_la_LIBADD = \
+ $(top_builddir)/gst-libs/gst/codecparsers/libgstcodecparsers-$(GST_API_VERSION).la \
$(GST_PLUGINS_BASE_LIBS) -lgstvideo-$(GST_API_VERSION) \
$(GST_LIBS) $(OPENJPEG_LIBS)
libgstopenjpeg_la_LDFLAGS = $(GST_PLUGIN_LDFLAGS)
diff --git a/ext/openjpeg/Makefile.in b/ext/openjpeg/Makefile.in
index 70e93f1..7afdf60 100644
--- a/ext/openjpeg/Makefile.in
+++ b/ext/openjpeg/Makefile.in
@@ -163,8 +163,9 @@
am__installdirs = "$(DESTDIR)$(plugindir)"
LTLIBRARIES = $(plugin_LTLIBRARIES)
am__DEPENDENCIES_1 =
-libgstopenjpeg_la_DEPENDENCIES = $(am__DEPENDENCIES_1) \
- $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1)
+libgstopenjpeg_la_DEPENDENCIES = $(top_builddir)/gst-libs/gst/codecparsers/libgstcodecparsers-$(GST_API_VERSION).la \
+ $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \
+ $(am__DEPENDENCIES_1)
am_libgstopenjpeg_la_OBJECTS = libgstopenjpeg_la-gstopenjpegdec.lo \
libgstopenjpeg_la-gstopenjpegenc.lo \
libgstopenjpeg_la-gstopenjpeg.lo
@@ -304,6 +305,8 @@
DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
DSYMUTIL = @DSYMUTIL@
DTLS_CFLAGS = @DTLS_CFLAGS@
DTLS_LIBS = @DTLS_LIBS@
@@ -519,6 +522,8 @@
LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
LIPO = @LIPO@
LN_S = @LN_S@
LOCALEDIR = @LOCALEDIR@
@@ -645,8 +650,6 @@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
SNDIO_LIBS = @SNDIO_LIBS@
@@ -691,6 +694,8 @@
WAYLAND_LIBS = @WAYLAND_LIBS@
WEBP_CFLAGS = @WEBP_CFLAGS@
WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
WGET = @WGET@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
@@ -781,10 +786,11 @@
wayland_scanner = @wayland_scanner@
plugin_LTLIBRARIES = libgstopenjpeg.la
libgstopenjpeg_la_SOURCES = gstopenjpegdec.c gstopenjpegenc.c gstopenjpeg.c
-libgstopenjpeg_la_CFLAGS = \
+libgstopenjpeg_la_CFLAGS = $(GST_PLUGINS_BAD_CFLAGS) \
$(GST_PLUGINS_BASE_CFLAGS) $(GST_CFLAGS) $(OPENJPEG_CFLAGS)
libgstopenjpeg_la_LIBADD = \
+ $(top_builddir)/gst-libs/gst/codecparsers/libgstcodecparsers-$(GST_API_VERSION).la \
$(GST_PLUGINS_BASE_LIBS) -lgstvideo-$(GST_API_VERSION) \
$(GST_LIBS) $(OPENJPEG_LIBS)
diff --git a/ext/openjpeg/gstopenjpegdec.c b/ext/openjpeg/gstopenjpegdec.c
index 5c6a228..075bd12 100644
--- a/ext/openjpeg/gstopenjpegdec.c
+++ b/ext/openjpeg/gstopenjpegdec.c
@@ -26,6 +26,7 @@
#include "gstopenjpegdec.h"
+
#include <string.h>
GST_DEBUG_CATEGORY_STATIC (gst_openjpeg_dec_debug);
@@ -53,9 +54,8 @@
GST_PAD_SINK,
GST_PAD_ALWAYS,
GST_STATIC_CAPS ("image/x-j2c, "
- "colorspace = (string) { sRGB, sYUV, GRAY }; "
- "image/x-jpc, "
- "colorspace = (string) { sRGB, sYUV, GRAY }; " "image/jp2")
+ GST_JPEG2000_SAMPLING_LIST "; "
+ "image/x-jpc, " GST_JPEG2000_SAMPLING_LIST "; " "image/jp2")
);
static GstStaticPadTemplate gst_openjpeg_dec_src_template =
@@ -79,10 +79,10 @@
element_class = (GstElementClass *) klass;
video_decoder_class = (GstVideoDecoderClass *) klass;
- gst_element_class_add_pad_template (element_class,
- gst_static_pad_template_get (&gst_openjpeg_dec_src_template));
- gst_element_class_add_pad_template (element_class,
- gst_static_pad_template_get (&gst_openjpeg_dec_sink_template));
+ gst_element_class_add_static_pad_template (element_class,
+ &gst_openjpeg_dec_src_template);
+ gst_element_class_add_static_pad_template (element_class,
+ &gst_openjpeg_dec_sink_template);
gst_element_class_set_static_metadata (element_class,
"OpenJPEG JPEG2000 decoder",
@@ -116,6 +116,7 @@
#ifdef HAVE_OPENJPEG_1
self->params.cp_limit_decoding = NO_LIMITATION;
#endif
+ self->sampling = GST_JPEG2000_SAMPLING_NONE;
}
static gboolean
@@ -156,7 +157,6 @@
{
GstOpenJPEGDec *self = GST_OPENJPEG_DEC (decoder);
GstStructure *s;
- const gchar *color_space;
GST_DEBUG_OBJECT (self, "Setting format: %" GST_PTR_FORMAT, state->caps);
@@ -177,14 +177,16 @@
g_return_val_if_reached (FALSE);
}
- if ((color_space = gst_structure_get_string (s, "colorspace"))) {
- if (g_str_equal (color_space, "sRGB"))
- self->color_space = OPJ_CLRSPC_SRGB;
- else if (g_str_equal (color_space, "GRAY"))
- self->color_space = OPJ_CLRSPC_GRAY;
- else if (g_str_equal (color_space, "sYUV"))
- self->color_space = OPJ_CLRSPC_SYCC;
- }
+
+ self->sampling =
+ gst_jpeg2000_sampling_from_string (gst_structure_get_string (s,
+ "sampling"));
+ if (gst_jpeg2000_sampling_is_rgb (self->sampling))
+ self->color_space = OPJ_CLRSPC_SRGB;
+ else if (gst_jpeg2000_sampling_is_mono (self->sampling))
+ self->color_space = OPJ_CLRSPC_GRAY;
+ else if (gst_jpeg2000_sampling_is_yuv (self->sampling))
+ self->color_space = OPJ_CLRSPC_SYCC;
self->ncomps = 0;
gst_structure_get_int (s, "num-components", &self->ncomps);
@@ -196,6 +198,13 @@
return TRUE;
}
+static gboolean
+reverse_rgb_channels (GstJPEG2000Sampling sampling)
+{
+ return sampling == GST_JPEG2000_SAMPLING_BGR
+ || sampling == GST_JPEG2000_SAMPLING_BGRA;
+}
+
static void
fill_frame_packed8_4 (GstVideoFrame * frame, opj_image_t * image)
{
@@ -675,7 +684,10 @@
if (get_highest_prec (image) == 8) {
self->fill_frame = fill_frame_packed8_4;
- format = GST_VIDEO_FORMAT_ARGB;
+ format =
+ reverse_rgb_channels (self->sampling) ? GST_VIDEO_FORMAT_BGRA :
+ GST_VIDEO_FORMAT_RGBA;
+
} else if (get_highest_prec (image) <= 16) {
self->fill_frame = fill_frame_packed16_4;
format = GST_VIDEO_FORMAT_ARGB64;
@@ -693,7 +705,9 @@
if (get_highest_prec (image) == 8) {
self->fill_frame = fill_frame_packed8_3;
- format = GST_VIDEO_FORMAT_ARGB;
+ format =
+ reverse_rgb_channels (self->sampling) ? GST_VIDEO_FORMAT_BGR :
+ GST_VIDEO_FORMAT_RGB;
} else if (get_highest_prec (image) <= 16) {
self->fill_frame = fill_frame_packed16_3;
format = GST_VIDEO_FORMAT_ARGB64;
diff --git a/ext/openjpeg/gstopenjpegdec.h b/ext/openjpeg/gstopenjpegdec.h
index 0e6e6af..4b4c6cf 100644
--- a/ext/openjpeg/gstopenjpegdec.h
+++ b/ext/openjpeg/gstopenjpegdec.h
@@ -24,6 +24,7 @@
#include <gst/gst.h>
#include <gst/video/video.h>
+#include <gst/codecparsers/gstjpeg2000sampling.h>
#include "gstopenjpeg.h"
@@ -54,6 +55,7 @@
OPJ_CODEC_FORMAT codec_format;
gboolean is_jp2c;
OPJ_COLOR_SPACE color_space;
+ GstJPEG2000Sampling sampling;
gint ncomps;
void (*fill_frame) (GstVideoFrame *frame, opj_image_t * image);
diff --git a/ext/openjpeg/gstopenjpegenc.c b/ext/openjpeg/gstopenjpegenc.c
index 27f3ee5..2d47779 100644
--- a/ext/openjpeg/gstopenjpegenc.c
+++ b/ext/openjpeg/gstopenjpegenc.c
@@ -25,6 +25,7 @@
#endif
#include "gstopenjpegenc.h"
+#include <gst/codecparsers/gstjpeg2000sampling.h>
#include <string.h>
@@ -115,12 +116,14 @@
"width = (int) [1, MAX], "
"height = (int) [1, MAX], "
"num-components = (int) [1, 4], "
- "colorspace = (string) { sRGB, sYUV, GRAY }; "
+ GST_JPEG2000_SAMPLING_LIST ","
+ GST_JPEG2000_COLORSPACE_LIST "; "
"image/x-jpc, "
"width = (int) [1, MAX], "
"height = (int) [1, MAX], "
"num-components = (int) [1, 4], "
- "colorspace = (string) { sRGB, sYUV, GRAY }; "
+ GST_JPEG2000_SAMPLING_LIST ","
+ GST_JPEG2000_COLORSPACE_LIST "; "
"image/jp2, " "width = (int) [1, MAX], " "height = (int) [1, MAX]")
);
@@ -177,10 +180,10 @@
"Tile Height", 0, G_MAXINT, DEFAULT_TILE_HEIGHT,
G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
- gst_element_class_add_pad_template (element_class,
- gst_static_pad_template_get (&gst_openjpeg_enc_src_template));
- gst_element_class_add_pad_template (element_class,
- gst_static_pad_template_get (&gst_openjpeg_enc_sink_template));
+ gst_element_class_add_static_pad_template (element_class,
+ &gst_openjpeg_enc_src_template);
+ gst_element_class_add_static_pad_template (element_class,
+ &gst_openjpeg_enc_sink_template);
gst_element_class_set_static_metadata (element_class,
"OpenJPEG JPEG2000 encoder",
@@ -557,7 +560,8 @@
GstOpenJPEGEnc *self = GST_OPENJPEG_ENC (encoder);
GstCaps *allowed_caps, *caps;
GstStructure *s;
- const gchar *colorspace;
+ const gchar *colorspace = NULL;
+ GstJPEG2000Sampling sampling = GST_JPEG2000_SAMPLING_NONE;
gint ncomps;
GST_DEBUG_OBJECT (self, "Setting format: %" GST_PTR_FORMAT, state->caps);
@@ -588,6 +592,7 @@
ncomps = 4;
break;
case GST_VIDEO_FORMAT_ARGB:
+ case GST_VIDEO_FORMAT_AYUV:
self->fill_image = fill_image_packed8_4;
ncomps = 4;
break;
@@ -608,10 +613,6 @@
self->fill_image = fill_image_planar16_3;
ncomps = 3;
break;
- case GST_VIDEO_FORMAT_AYUV:
- self->fill_image = fill_image_packed8_3;
- ncomps = 3;
- break;
case GST_VIDEO_FORMAT_Y444:
case GST_VIDEO_FORMAT_Y42B:
case GST_VIDEO_FORMAT_I420:
@@ -633,18 +634,71 @@
g_assert_not_reached ();
}
- if ((state->info.finfo->flags & GST_VIDEO_FORMAT_FLAG_YUV))
+
+ /* sampling */
+ /* note: encoder re-orders channels so that alpha channel is encoded as the last channel */
+ switch (state->info.finfo->format) {
+ case GST_VIDEO_FORMAT_ARGB64:
+ case GST_VIDEO_FORMAT_ARGB:
+ sampling = GST_JPEG2000_SAMPLING_RGBA;
+ break;
+ case GST_VIDEO_FORMAT_AYUV64:
+ case GST_VIDEO_FORMAT_AYUV:
+ sampling = GST_JPEG2000_SAMPLING_YBRA4444_EXT;
+ break;
+ case GST_VIDEO_FORMAT_xRGB:
+ sampling = GST_JPEG2000_COLORSPACE_RGB;
+ break;
+ case GST_VIDEO_FORMAT_Y444_10LE:
+ case GST_VIDEO_FORMAT_Y444_10BE:
+ case GST_VIDEO_FORMAT_Y444:
+ sampling = GST_JPEG2000_SAMPLING_YBR444;
+ break;
+
+ case GST_VIDEO_FORMAT_I422_10LE:
+ case GST_VIDEO_FORMAT_I422_10BE:
+ case GST_VIDEO_FORMAT_Y42B:
+ sampling = GST_JPEG2000_SAMPLING_YBR422;
+ break;
+ case GST_VIDEO_FORMAT_YUV9:
+ sampling = GST_JPEG2000_SAMPLING_YBR410;
+ break;
+ case GST_VIDEO_FORMAT_I420_10LE:
+ case GST_VIDEO_FORMAT_I420_10BE:
+ case GST_VIDEO_FORMAT_I420:
+ sampling = GST_JPEG2000_SAMPLING_YBR420;
+ break;
+ case GST_VIDEO_FORMAT_GRAY8:
+ case GST_VIDEO_FORMAT_GRAY16_LE:
+ case GST_VIDEO_FORMAT_GRAY16_BE:
+ sampling = GST_JPEG2000_SAMPLING_GRAYSCALE;
+ break;
+ default:
+ break;
+ }
+
+
+
+ if ((state->info.finfo->flags & GST_VIDEO_FORMAT_FLAG_YUV)) {
colorspace = "sYUV";
- else if ((state->info.finfo->flags & GST_VIDEO_FORMAT_FLAG_RGB))
+ } else if ((state->info.finfo->flags & GST_VIDEO_FORMAT_FLAG_RGB)) {
colorspace = "sRGB";
- else if ((state->info.finfo->flags & GST_VIDEO_FORMAT_FLAG_GRAY))
+ } else if ((state->info.finfo->flags & GST_VIDEO_FORMAT_FLAG_GRAY)) {
colorspace = "GRAY";
- else
+ } else
g_return_val_if_reached (FALSE);
- caps = gst_caps_new_simple (gst_structure_get_name (s),
- "colorspace", G_TYPE_STRING, colorspace,
- "num-components", G_TYPE_INT, ncomps, NULL);
+ if (sampling != GST_JPEG2000_SAMPLING_NONE) {
+ caps = gst_caps_new_simple (gst_structure_get_name (s),
+ "colorspace", G_TYPE_STRING, colorspace,
+ "sampling", G_TYPE_STRING, gst_jpeg2000_sampling_to_string (sampling),
+ "num-components", G_TYPE_INT, ncomps, NULL);
+ } else {
+ caps = gst_caps_new_simple (gst_structure_get_name (s),
+ "colorspace", G_TYPE_STRING, colorspace,
+ "num-components", G_TYPE_INT, ncomps, NULL);
+
+ }
gst_caps_unref (allowed_caps);
if (self->output_state)
diff --git a/ext/openni2/Makefile.in b/ext/openni2/Makefile.in
index f4b7f9c..db433b5 100644
--- a/ext/openni2/Makefile.in
+++ b/ext/openni2/Makefile.in
@@ -303,6 +303,8 @@
DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
DSYMUTIL = @DSYMUTIL@
DTLS_CFLAGS = @DTLS_CFLAGS@
DTLS_LIBS = @DTLS_LIBS@
@@ -518,6 +520,8 @@
LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
LIPO = @LIPO@
LN_S = @LN_S@
LOCALEDIR = @LOCALEDIR@
@@ -644,8 +648,6 @@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
SNDIO_LIBS = @SNDIO_LIBS@
@@ -690,6 +692,8 @@
WAYLAND_LIBS = @WAYLAND_LIBS@
WEBP_CFLAGS = @WEBP_CFLAGS@
WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
WGET = @WGET@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
diff --git a/ext/openni2/gstopenni2src.cpp b/ext/openni2/gstopenni2src.cpp
index f12e0b7..88e6a16 100644
--- a/ext/openni2/gstopenni2src.cpp
+++ b/ext/openni2/gstopenni2src.cpp
@@ -153,8 +153,7 @@
basesrc_class->decide_allocation =
GST_DEBUG_FUNCPTR (gst_openni2src_decide_allocation);
- gst_element_class_add_pad_template (element_class,
- gst_static_pad_template_get (&srctemplate));
+ gst_element_class_add_static_pad_template (element_class, &srctemplate);
gst_element_class_set_static_metadata (element_class, "Openni2 client source",
"Source/Video",
diff --git a/ext/opus/Makefile.in b/ext/opus/Makefile.in
index 3dc6aa4..56aefd9 100644
--- a/ext/opus/Makefile.in
+++ b/ext/opus/Makefile.in
@@ -305,6 +305,8 @@
DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
DSYMUTIL = @DSYMUTIL@
DTLS_CFLAGS = @DTLS_CFLAGS@
DTLS_LIBS = @DTLS_LIBS@
@@ -520,6 +522,8 @@
LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
LIPO = @LIPO@
LN_S = @LN_S@
LOCALEDIR = @LOCALEDIR@
@@ -646,8 +650,6 @@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
SNDIO_LIBS = @SNDIO_LIBS@
@@ -692,6 +694,8 @@
WAYLAND_LIBS = @WAYLAND_LIBS@
WEBP_CFLAGS = @WEBP_CFLAGS@
WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
WGET = @WGET@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
diff --git a/ext/opus/gstopusparse.c b/ext/opus/gstopusparse.c
index ea3252e..56e8bb8 100644
--- a/ext/opus/gstopusparse.c
+++ b/ext/opus/gstopusparse.c
@@ -87,13 +87,12 @@
bpclass->stop = GST_DEBUG_FUNCPTR (gst_opus_parse_stop);
bpclass->handle_frame = GST_DEBUG_FUNCPTR (gst_opus_parse_handle_frame);
- gst_element_class_add_pad_template (element_class,
- gst_static_pad_template_get (&opus_parse_src_factory));
- gst_element_class_add_pad_template (element_class,
- gst_static_pad_template_get (&opus_parse_sink_factory));
+ gst_element_class_add_static_pad_template (element_class,
+ &opus_parse_src_factory);
+ gst_element_class_add_static_pad_template (element_class,
+ &opus_parse_sink_factory);
gst_element_class_set_static_metadata (element_class, "Opus audio parser",
- "Codec/Parser/Audio",
- "parses opus audio streams",
+ "Codec/Parser/Audio", "parses opus audio streams",
"Vincent Penquerc'h <vincent.penquerch@collabora.co.uk>");
GST_DEBUG_CATEGORY_INIT (opusparse_debug, "opusparse", 0,
diff --git a/ext/qt/Makefile.in b/ext/qt/Makefile.in
index f0ec9d4..51dacc6 100644
--- a/ext/qt/Makefile.in
+++ b/ext/qt/Makefile.in
@@ -328,6 +328,8 @@
DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
DSYMUTIL = @DSYMUTIL@
DTLS_CFLAGS = @DTLS_CFLAGS@
DTLS_LIBS = @DTLS_LIBS@
@@ -543,6 +545,8 @@
LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
LIPO = @LIPO@
LN_S = @LN_S@
LOCALEDIR = @LOCALEDIR@
@@ -669,8 +673,6 @@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
SNDIO_LIBS = @SNDIO_LIBS@
@@ -715,6 +717,8 @@
WAYLAND_LIBS = @WAYLAND_LIBS@
WEBP_CFLAGS = @WEBP_CFLAGS@
WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
WGET = @WGET@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
diff --git a/ext/qt/gstqtsink.cc b/ext/qt/gstqtsink.cc
index df44a7d..62a5373 100644
--- a/ext/qt/gstqtsink.cc
+++ b/ext/qt/gstqtsink.cc
@@ -126,8 +126,7 @@
G_MAXINT, 1, 1, 1,
(GParamFlags) (G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)));
- gst_element_class_add_pad_template (gstelement_class,
- gst_static_pad_template_get (&gst_qt_sink_template));
+ gst_element_class_add_static_pad_template (gstelement_class, &gst_qt_sink_template);
gobject_class->finalize = gst_qt_sink_finalize;
diff --git a/ext/qt/qtitem.cc b/ext/qt/qtitem.cc
index e1f91e7..c306c6d 100644
--- a/ext/qt/qtitem.cc
+++ b/ext/qt/qtitem.cc
@@ -40,10 +40,11 @@
#endif
#if GST_GL_HAVE_WINDOW_WAYLAND && GST_GL_HAVE_PLATFORM_EGL && defined (HAVE_QT_WAYLAND)
+#include <qpa/qplatformnativeinterface.h>
#include <gst/gl/wayland/gstgldisplay_wayland.h>
#endif
-#if GST_GL_HAVE_WINDOW_ANDROID && GST_GL_HAVE_PLATFORM_EGL && defined (HAVE_QT_ANDROID)
+#if GST_GL_HAVE_PLATFORM_EGL && defined (HAVE_QT_EGLFS)
#include <gst/gl/egl/gstgldisplay_egl.h>
#include <gst/gl/egl/gstglcontext_egl.h>
#endif
@@ -142,15 +143,33 @@
g_mutex_init (&this->priv->lock);
+ GST_INFO ("QGuiApplication::instance()->platformName() %s", app->platformName().toUtf8().data());
+
#if GST_GL_HAVE_WINDOW_X11 && defined (HAVE_QT_X11)
if (QString::fromUtf8 ("xcb") == app->platformName())
this->priv->display = (GstGLDisplay *)
gst_gl_display_x11_new_with_display (QX11Info::display ());
#endif
-#if GST_GL_HAVE_WINDOW_ANDROID && GST_GL_HAVE_PLATFORM_EGL && defined (HAVE_QT_ANDROID)
+#if GST_GL_HAVE_WINDOW_WAYLAND && GST_GL_HAVE_PLATFORM_EGL && defined (HAVE_QT_WAYLAND)
+ if (QString::fromUtf8 ("wayland") == app->platformName()
+ || QString::fromUtf8 ("wayland-egl") == app->platformName()){
+ struct wl_display * wayland_display;
+ QPlatformNativeInterface *native =
+ QGuiApplication::platformNativeInterface();
+ wayland_display = (struct wl_display *)
+ native->nativeResourceForWindow("display", NULL);
+ this->priv->display = (GstGLDisplay *)
+ gst_gl_display_wayland_new_with_display (wayland_display);
+ }
+#endif
+#if GST_GL_HAVE_PLATFORM_EGL && GST_GL_HAVE_WINDOW_ANDROID
if (QString::fromUtf8 ("android") == app->platformName())
this->priv->display = (GstGLDisplay *) gst_gl_display_egl_new ();
+#elif GST_GL_HAVE_PLATFORM_EGL && defined (HAVE_QT_EGLFS)
+ if (QString::fromUtf8("eglfs") == app->platformName())
+ this->priv->display = (GstGLDisplay *) gst_gl_display_egl_new ();
#endif
+
#if GST_GL_HAVE_WINDOW_COCOA && GST_GL_HAVE_PLATFORM_COCOA && defined (HAVE_QT_MAC)
if (QString::fromUtf8 ("cocoa") == app->platformName())
this->priv->display = (GstGLDisplay *) gst_gl_display_cocoa_new ();
@@ -159,6 +178,10 @@
if (QString::fromUtf8 ("ios") == app->platformName())
this->priv->display = gst_gl_display_new ();
#endif
+#if GST_GL_HAVE_WINDOW_WIN32 && GST_GL_HAVE_PLATFORM_WGL && defined (HAVE_QT_WIN32)
+ if (QString::fromUtf8 ("windows") == app->platformName())
+ this->priv->display = gst_gl_display_new ();
+#endif
if (!this->priv->display)
this->priv->display = gst_gl_display_new ();
@@ -197,9 +220,9 @@
}
void
-QtGLVideoItem::setForceAspectRatio(bool far)
+QtGLVideoItem::setForceAspectRatio(bool force_aspect_ratio)
{
- this->priv->force_aspect_ratio = far;
+ this->priv->force_aspect_ratio = !!force_aspect_ratio;
}
bool
@@ -295,7 +318,7 @@
void
QtGLVideoItem::onSceneGraphInitialized ()
{
- GstGLPlatform platform;
+ GstGLPlatform platform = (GstGLPlatform) 0;
GstGLAPI gl_api;
guintptr gl_handle;
@@ -314,58 +337,37 @@
#if GST_GL_HAVE_WINDOW_X11 && defined (HAVE_QT_X11)
if (GST_IS_GL_DISPLAY_X11 (this->priv->display)) {
platform = GST_GL_PLATFORM_GLX;
- gl_api = gst_gl_context_get_current_gl_api (platform, NULL, NULL);
- gl_handle = gst_gl_context_get_current_gl_context (platform);
- if (gl_handle)
- this->priv->other_context =
- gst_gl_context_new_wrapped (this->priv->display, gl_handle,
- platform, gl_api);
}
#endif
#if GST_GL_HAVE_WINDOW_WAYLAND && defined (HAVE_QT_WAYLAND)
if (GST_IS_GL_DISPLAY_WAYLAND (this->priv->display)) {
platform = GST_GL_PLATFORM_EGL;
- gl_api = gst_gl_context_get_current_gl_api (platform, NULL, NULL);
- gl_handle = gst_gl_context_get_current_gl_context (platform);
- if (gl_handle)
- this->priv->other_context =
- gst_gl_context_new_wrapped (this->priv->display, gl_handle,
- platform, gl_api);
}
#endif
-#if GST_GL_HAVE_WINDOW_ANDROID && GST_GL_HAVE_PLATFORM_EGL && defined (HAVE_QT_ANDROID)
+#if GST_GL_HAVE_PLATFORM_EGL && defined (HAVE_QT_EGLFS)
if (GST_IS_GL_DISPLAY_EGL (this->priv->display)) {
platform = GST_GL_PLATFORM_EGL;
- gl_api = gst_gl_context_get_current_gl_api (platform, NULL, NULL);
- gl_handle = gst_gl_context_get_current_gl_context (platform);
- if (gl_handle)
- this->priv->other_context =
- gst_gl_context_new_wrapped (this->priv->display, gl_handle,
- platform, gl_api);
}
#endif
+ if (platform == 0 && this->priv->display) {
#if GST_GL_HAVE_WINDOW_COCOA && GST_GL_HAVE_PLATFORM_COCOA && defined (HAVE_QT_MAC)
- if (this->priv->display) {
platform = GST_GL_PLATFORM_CGL;
- gl_api = gst_gl_context_get_current_gl_api (platform, NULL, NULL);
- gl_handle = gst_gl_context_get_current_gl_context (platform);
- if (gl_handle)
- this->priv->other_context =
- gst_gl_context_new_wrapped (this->priv->display, gl_handle,
- platform, gl_api);
- }
-#endif
-#if GST_GL_HAVE_WINDOW_EAGL && GST_GL_HAVE_PLATFORM_EAGL && defined (HAVE_QT_IOS)
- if (this->priv->display) {
+#elif GST_GL_HAVE_WINDOW_EAGL && GST_GL_HAVE_PLATFORM_EAGL && defined (HAVE_QT_IOS)
platform = GST_GL_PLATFORM_EAGL;
- gl_api = gst_gl_context_get_current_gl_api (platform, NULL, NULL);
- gl_handle = gst_gl_context_get_current_gl_context (platform);
- if (gl_handle)
- this->priv->other_context =
- gst_gl_context_new_wrapped (this->priv->display, gl_handle,
- platform, gl_api);
- }
+#elif GST_GL_HAVE_WINDOW_WIN32 && GST_GL_HAVE_PLATFORM_WGL && defined (HAVE_QT_WIN32)
+ platform = GST_GL_PLATFORM_WGL;
+#else
+ GST_ERROR ("Unknown platform");
+ return;
#endif
+ }
+
+ gl_api = gst_gl_context_get_current_gl_api (platform, NULL, NULL);
+ gl_handle = gst_gl_context_get_current_gl_context (platform);
+ if (gl_handle)
+ this->priv->other_context =
+ gst_gl_context_new_wrapped (this->priv->display, gl_handle,
+ platform, gl_api);
(void) platform;
(void) gl_api;
@@ -381,6 +383,36 @@
this->priv->other_context = NULL;
} else {
gst_gl_display_filter_gl_api (this->priv->display, gst_gl_context_get_gl_api (this->priv->other_context));
+#if GST_GL_HAVE_WINDOW_WIN32 && GST_GL_HAVE_PLATFORM_WGL && defined (HAVE_QT_WIN32)
+ if (!wglGetProcAddress ("wglCreateContextAttribsARB")) {
+ GstGLWindow *window;
+ HDC device;
+
+ /* If there's no wglCreateContextAttribsARB() support, then we would fallback to
+ * wglShareLists() which will fail with ERROR_BUSY (0xaa) if either of the GL
+ * contexts are current in any other thread.
+ *
+ * The workaround here is to temporarily disable Qt's GL context while we
+ * set up our own.
+ */
+ this->priv->context = gst_gl_context_new (this->priv->display);
+ window = gst_gl_context_get_window (this->priv->context);
+ device = (HDC) gst_gl_window_get_display (window);
+
+ wglMakeCurrent (device, 0);
+ gst_object_unref (window);
+ if (!gst_gl_context_create (this->priv->context, this->priv->other_context, &error)) {
+ GST_ERROR ("%p failed to create shared GL context: %s", this, error->message);
+ g_object_unref (this->priv->context);
+ this->priv->context = NULL;
+ g_object_unref (this->priv->other_context);
+ this->priv->other_context = NULL;
+ wglMakeCurrent (device, (HGLRC) gl_handle);
+ return;
+ }
+ wglMakeCurrent (device, (HGLRC) gl_handle);
+ }
+#endif
gst_gl_context_activate (this->priv->other_context, FALSE);
m_openGlContextInitialized = true;
}
@@ -399,6 +431,8 @@
gboolean
qt_item_init_winsys (QtGLVideoItem * widget)
{
+ GError *error = NULL;
+
g_return_val_if_fail (widget != NULL, FALSE);
g_mutex_lock (&widget->priv->lock);
@@ -431,8 +465,12 @@
return FALSE;
}
- gst_gl_context_create (widget->priv->context, widget->priv->other_context,
- NULL);
+ if (!gst_gl_context_create (widget->priv->context, widget->priv->other_context,
+ &error)) {
+ GST_ERROR ("%s", error->message);
+ g_mutex_unlock (&widget->priv->lock);
+ return FALSE;
+ }
g_mutex_unlock (&widget->priv->lock);
return TRUE;
diff --git a/ext/resindvd/Makefile.in b/ext/resindvd/Makefile.in
index e8a9acd..cf8d7f7 100644
--- a/ext/resindvd/Makefile.in
+++ b/ext/resindvd/Makefile.in
@@ -312,6 +312,8 @@
DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
DSYMUTIL = @DSYMUTIL@
DTLS_CFLAGS = @DTLS_CFLAGS@
DTLS_LIBS = @DTLS_LIBS@
@@ -527,6 +529,8 @@
LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
LIPO = @LIPO@
LN_S = @LN_S@
LOCALEDIR = @LOCALEDIR@
@@ -653,8 +657,6 @@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
SNDIO_LIBS = @SNDIO_LIBS@
@@ -699,6 +701,8 @@
WAYLAND_LIBS = @WAYLAND_LIBS@
WEBP_CFLAGS = @WEBP_CFLAGS@
WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
WGET = @WGET@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
diff --git a/ext/resindvd/resindvdbin.c b/ext/resindvd/resindvdbin.c
index 107f9d6..ce2bd1c 100644
--- a/ext/resindvd/resindvdbin.c
+++ b/ext/resindvd/resindvdbin.c
@@ -117,12 +117,12 @@
g_param_spec_string ("device", "Device", "DVD device location",
NULL, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
- gst_element_class_add_pad_template (element_class,
- gst_static_pad_template_get (&video_src_template));
- gst_element_class_add_pad_template (element_class,
- gst_static_pad_template_get (&audio_src_template));
- gst_element_class_add_pad_template (element_class,
- gst_static_pad_template_get (&subpicture_src_template));
+ gst_element_class_add_static_pad_template (element_class,
+ &video_src_template);
+ gst_element_class_add_static_pad_template (element_class,
+ &audio_src_template);
+ gst_element_class_add_static_pad_template (element_class,
+ &subpicture_src_template);
element_class->change_state = GST_DEBUG_FUNCPTR (rsn_dvdbin_change_state);
diff --git a/ext/resindvd/resindvdsrc.c b/ext/resindvd/resindvdsrc.c
index 505302b..ab89be7 100644
--- a/ext/resindvd/resindvdsrc.c
+++ b/ext/resindvd/resindvdsrc.c
@@ -231,8 +231,7 @@
"Skip straight to the DVD menu on start", DEFAULT_FASTSTART,
G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
- gst_element_class_add_pad_template (gstelement_class,
- gst_static_pad_template_get (&src_factory));
+ gst_element_class_add_static_pad_template (gstelement_class, &src_factory);
gst_element_class_set_static_metadata (gstelement_class, "Resin DVD Src",
"Source/DVD", "DVD source element", "Jan Schmidt <thaytan@noraisin.net>");
}
diff --git a/ext/resindvd/rsndec.c b/ext/resindvd/rsndec.c
index 3403d9a..02d3eb6 100644
--- a/ext/resindvd/rsndec.c
+++ b/ext/resindvd/rsndec.c
@@ -405,10 +405,10 @@
GstElementClass *element_class = GST_ELEMENT_CLASS (klass);
RsnDecClass *dec_class = RSN_DEC_CLASS (klass);
- gst_element_class_add_pad_template (element_class,
- gst_static_pad_template_get (&audio_src_template));
- gst_element_class_add_pad_template (element_class,
- gst_static_pad_template_get (&audio_sink_template));
+ gst_element_class_add_static_pad_template (element_class,
+ &audio_src_template);
+ gst_element_class_add_static_pad_template (element_class,
+ &audio_sink_template);
gst_element_class_set_static_metadata (element_class, "RsnAudioDec",
"Audio/Decoder",
@@ -455,10 +455,10 @@
GstElementClass *element_class = GST_ELEMENT_CLASS (klass);
RsnDecClass *dec_class = RSN_DEC_CLASS (klass);
- gst_element_class_add_pad_template (element_class,
- gst_static_pad_template_get (&video_src_template));
- gst_element_class_add_pad_template (element_class,
- gst_static_pad_template_get (&video_sink_template));
+ gst_element_class_add_static_pad_template (element_class,
+ &video_src_template);
+ gst_element_class_add_static_pad_template (element_class,
+ &video_sink_template);
gst_element_class_set_static_metadata (element_class, "RsnVideoDec",
"Video/Decoder",
diff --git a/ext/resindvd/rsninputselector.c b/ext/resindvd/rsninputselector.c
index 75d8724..3849baf 100644
--- a/ext/resindvd/rsninputselector.c
+++ b/ext/resindvd/rsninputselector.c
@@ -1236,10 +1236,10 @@
"Julien Moutte <julien@moutte.net>, "
"Jan Schmidt <thaytan@mad.scientist.com>, "
"Wim Taymans <wim.taymans@gmail.com>");
- gst_element_class_add_pad_template (gstelement_class,
- gst_static_pad_template_get (&gst_input_selector_sink_factory));
- gst_element_class_add_pad_template (gstelement_class,
- gst_static_pad_template_get (&gst_input_selector_src_factory));
+ gst_element_class_add_static_pad_template (gstelement_class,
+ &gst_input_selector_sink_factory);
+ gst_element_class_add_static_pad_template (gstelement_class,
+ &gst_input_selector_src_factory);
gstelement_class->request_new_pad = gst_input_selector_request_new_pad;
gstelement_class->release_pad = gst_input_selector_release_pad;
diff --git a/ext/resindvd/rsnparsetter.c b/ext/resindvd/rsnparsetter.c
index a714658..294e513 100644
--- a/ext/resindvd/rsnparsetter.c
+++ b/ext/resindvd/rsnparsetter.c
@@ -55,10 +55,8 @@
gobject_class->finalize = rsn_parsetter_finalize;
- gst_element_class_add_pad_template (element_class,
- gst_static_pad_template_get (&src_factory));
- gst_element_class_add_pad_template (element_class,
- gst_static_pad_template_get (&sink_factory));
+ gst_element_class_add_static_pad_template (element_class, &src_factory);
+ gst_element_class_add_static_pad_template (element_class, &sink_factory);
gst_element_class_set_static_metadata (element_class,
"Resin Aspect Ratio Setter", "Filter/Video",
diff --git a/ext/rsvg/Makefile.in b/ext/rsvg/Makefile.in
index 6224b10..b1f55d7 100644
--- a/ext/rsvg/Makefile.in
+++ b/ext/rsvg/Makefile.in
@@ -304,6 +304,8 @@
DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
DSYMUTIL = @DSYMUTIL@
DTLS_CFLAGS = @DTLS_CFLAGS@
DTLS_LIBS = @DTLS_LIBS@
@@ -519,6 +521,8 @@
LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
LIPO = @LIPO@
LN_S = @LN_S@
LOCALEDIR = @LOCALEDIR@
@@ -645,8 +649,6 @@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
SNDIO_LIBS = @SNDIO_LIBS@
@@ -691,6 +693,8 @@
WAYLAND_LIBS = @WAYLAND_LIBS@
WEBP_CFLAGS = @WEBP_CFLAGS@
WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
WGET = @WGET@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
diff --git a/ext/rsvg/gstrsvgdec.c b/ext/rsvg/gstrsvgdec.c
index d87c6ca..5d5fc8e 100644
--- a/ext/rsvg/gstrsvgdec.c
+++ b/ext/rsvg/gstrsvgdec.c
@@ -86,10 +86,8 @@
"Uses librsvg to decode SVG images",
"Sebastian Dröge <sebastian.droege@collabora.co.uk>");
- gst_element_class_add_pad_template (element_class,
- gst_static_pad_template_get (&sink_factory));
- gst_element_class_add_pad_template (element_class,
- gst_static_pad_template_get (&src_factory));
+ gst_element_class_add_static_pad_template (element_class, &sink_factory);
+ gst_element_class_add_static_pad_template (element_class, &src_factory);
gobject_class->finalize = gst_rsvg_dec_finalize;
video_decoder_class->stop = GST_DEBUG_FUNCPTR (gst_rsvg_dec_stop);
diff --git a/ext/rsvg/gstrsvgoverlay.c b/ext/rsvg/gstrsvgoverlay.c
index 69f99ad..b467dc8 100644
--- a/ext/rsvg/gstrsvgoverlay.c
+++ b/ext/rsvg/gstrsvgoverlay.c
@@ -451,12 +451,11 @@
GstVideoFilterClass *videofilter_class = GST_VIDEO_FILTER_CLASS (klass);
GstElementClass *element_class = GST_ELEMENT_CLASS (klass);
- gst_element_class_add_pad_template (element_class,
- gst_static_pad_template_get (&src_template));
- gst_element_class_add_pad_template (element_class,
- gst_static_pad_template_get (&video_sink_template));
- gst_element_class_add_pad_template (element_class,
- gst_static_pad_template_get (&data_sink_template));
+ gst_element_class_add_static_pad_template (element_class, &src_template);
+ gst_element_class_add_static_pad_template (element_class,
+ &video_sink_template);
+ gst_element_class_add_static_pad_template (element_class,
+ &data_sink_template);
gst_element_class_set_static_metadata (element_class, "RSVG overlay",
"Filter/Editor/Video",
diff --git a/ext/rtmp/Makefile.in b/ext/rtmp/Makefile.in
index 2061823..979cdb4 100644
--- a/ext/rtmp/Makefile.in
+++ b/ext/rtmp/Makefile.in
@@ -304,6 +304,8 @@
DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
DSYMUTIL = @DSYMUTIL@
DTLS_CFLAGS = @DTLS_CFLAGS@
DTLS_LIBS = @DTLS_LIBS@
@@ -519,6 +521,8 @@
LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
LIPO = @LIPO@
LN_S = @LN_S@
LOCALEDIR = @LOCALEDIR@
@@ -645,8 +649,6 @@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
SNDIO_LIBS = @SNDIO_LIBS@
@@ -691,6 +693,8 @@
WAYLAND_LIBS = @WAYLAND_LIBS@
WEBP_CFLAGS = @WEBP_CFLAGS@
WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
WGET = @WGET@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
diff --git a/ext/rtmp/gstrtmpsink.c b/ext/rtmp/gstrtmpsink.c
index 781f3bf..1815d9c 100644
--- a/ext/rtmp/gstrtmpsink.c
+++ b/ext/rtmp/gstrtmpsink.c
@@ -109,8 +109,7 @@
"Sink/Network", "Sends FLV content to a server via RTMP",
"Jan Schmidt <thaytan@noraisin.net>");
- gst_element_class_add_pad_template (gstelement_class,
- gst_static_pad_template_get (&sink_template));
+ gst_element_class_add_static_pad_template (gstelement_class, &sink_template);
gstbasesink_class->start = GST_DEBUG_FUNCPTR (gst_rtmp_sink_start);
gstbasesink_class->stop = GST_DEBUG_FUNCPTR (gst_rtmp_sink_stop);
diff --git a/ext/rtmp/gstrtmpsrc.c b/ext/rtmp/gstrtmpsrc.c
index 02cbec1..db620cc 100644
--- a/ext/rtmp/gstrtmpsrc.c
+++ b/ext/rtmp/gstrtmpsrc.c
@@ -68,7 +68,8 @@
enum
{
PROP_0,
- PROP_LOCATION
+ PROP_LOCATION,
+ PROP_TIMEOUT
#if 0
PROP_SWF_URL,
PROP_PAGE_URL
@@ -76,6 +77,7 @@
};
#define DEFAULT_LOCATION NULL
+#define DEFAULT_TIMEOUT 120
static void gst_rtmp_src_uri_handler_init (gpointer g_iface,
gpointer iface_data);
@@ -125,8 +127,13 @@
"Location of the RTMP url to read",
DEFAULT_LOCATION, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
- gst_element_class_add_pad_template (gstelement_class,
- gst_static_pad_template_get (&srctemplate));
+ g_object_class_install_property (gobject_class, PROP_TIMEOUT,
+ g_param_spec_int ("timeout", "RTMP Timeout",
+ "Time without receiving any data from the server to wait before to timeout the session",
+ 0, G_MAXINT,
+ DEFAULT_TIMEOUT, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
+
+ gst_element_class_add_static_pad_template (gstelement_class, &srctemplate);
gst_element_class_set_static_metadata (gstelement_class,
"RTMP Source",
@@ -161,6 +168,7 @@
rtmpsrc->cur_offset = 0;
rtmpsrc->last_timestamp = 0;
+ rtmpsrc->timeout = DEFAULT_TIMEOUT;
gst_base_src_set_format (GST_BASE_SRC (rtmpsrc), GST_FORMAT_TIME);
}
@@ -272,6 +280,10 @@
g_value_get_string (value), NULL);
break;
}
+ case PROP_TIMEOUT:{
+ src->timeout = g_value_get_int (value);
+ break;
+ }
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
break;
@@ -290,6 +302,9 @@
case PROP_LOCATION:
g_value_set_string (value, src->uri);
break;
+ case PROP_TIMEOUT:
+ g_value_set_int (value, src->timeout);
+ break;
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
break;
@@ -309,7 +324,6 @@
guint8 *data;
guint todo;
gsize bsize;
- int read;
int size;
src = GST_RTMP_SRC (pushsrc);
@@ -327,20 +341,19 @@
return GST_FLOW_ERROR;
}
- bsize = todo = size;
+ todo = size;
gst_buffer_map (buf, &map, GST_MAP_WRITE);
data = map.data;
- read = bsize = 0;
+ bsize = 0;
while (todo > 0) {
- read = RTMP_Read (src->rtmp, (char *) data, todo);
+ int read = RTMP_Read (src->rtmp, (char *) data, todo);
- if (G_UNLIKELY (read == 0 && todo == size)) {
+ if (G_UNLIKELY (read == 0 && todo == size))
goto eos;
- } else if (G_UNLIKELY (read == 0)) {
- todo = 0;
+
+ if (G_UNLIKELY (read == 0))
break;
- }
if (G_UNLIKELY (read < 0))
goto read_failed;
@@ -575,13 +588,13 @@
src->discont = TRUE;
src->rtmp = RTMP_Alloc ();
-
if (!src->rtmp) {
GST_ERROR_OBJECT (src, "Could not allocate librtmp's RTMP context");
goto error;
}
RTMP_Init (src->rtmp);
+ src->rtmp->Link.timeout = src->timeout;
if (!RTMP_SetupURL (src->rtmp, src->uri)) {
GST_ELEMENT_ERROR (src, RESOURCE, OPEN_READ, (NULL),
("Failed to setup URL '%s'", src->uri));
diff --git a/ext/rtmp/gstrtmpsrc.h b/ext/rtmp/gstrtmpsrc.h
index fa6da17..60ebcb2 100644
--- a/ext/rtmp/gstrtmpsrc.h
+++ b/ext/rtmp/gstrtmpsrc.h
@@ -63,7 +63,7 @@
gchar *page_url;
RTMP *rtmp;
-
+ int timeout;
gint64 cur_offset;
GstClockTime last_timestamp;
gboolean seekable;
diff --git a/ext/sbc/Makefile.in b/ext/sbc/Makefile.in
index c840ea4..e33c2b1 100644
--- a/ext/sbc/Makefile.in
+++ b/ext/sbc/Makefile.in
@@ -304,6 +304,8 @@
DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
DSYMUTIL = @DSYMUTIL@
DTLS_CFLAGS = @DTLS_CFLAGS@
DTLS_LIBS = @DTLS_LIBS@
@@ -519,6 +521,8 @@
LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
LIPO = @LIPO@
LN_S = @LN_S@
LOCALEDIR = @LOCALEDIR@
@@ -645,8 +649,6 @@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
SNDIO_LIBS = @SNDIO_LIBS@
@@ -691,6 +693,8 @@
WAYLAND_LIBS = @WAYLAND_LIBS@
WEBP_CFLAGS = @WEBP_CFLAGS@
WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
WGET = @WGET@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
diff --git a/ext/sbc/gstsbcdec.c b/ext/sbc/gstsbcdec.c
index 086fe1f..5019e83 100644
--- a/ext/sbc/gstsbcdec.c
+++ b/ext/sbc/gstsbcdec.c
@@ -165,7 +165,8 @@
} else if (strcmp (channel_mode, "stereo") == 0) {
dec->frame_len = 4 + (subbands * 2) / 2 + ((blocks * bitpool) + 7) / 8;
} else if (strcmp (channel_mode, "joint") == 0) {
- dec->frame_len = 4 + (subbands * 2) / 2 + ((subbands + blocks * bitpool) + 7) / 8;
+ dec->frame_len =
+ 4 + (subbands * 2) / 2 + ((subbands + blocks * bitpool) + 7) / 8;
} else {
return FALSE;
}
@@ -219,11 +220,10 @@
audio_decoder_class->handle_frame =
GST_DEBUG_FUNCPTR (gst_sbc_dec_handle_frame);
- gst_element_class_add_pad_template (element_class,
- gst_static_pad_template_get (&sbc_dec_sink_factory));
-
- gst_element_class_add_pad_template (element_class,
- gst_static_pad_template_get (&sbc_dec_src_factory));
+ gst_element_class_add_static_pad_template (element_class,
+ &sbc_dec_sink_factory);
+ gst_element_class_add_static_pad_template (element_class,
+ &sbc_dec_src_factory);
gst_element_class_set_static_metadata (element_class,
"Bluetooth SBC audio decoder", "Codec/Decoder/Audio",
diff --git a/ext/sbc/gstsbcenc.c b/ext/sbc/gstsbcenc.c
index 02ca1be..71aca07 100644
--- a/ext/sbc/gstsbcenc.c
+++ b/ext/sbc/gstsbcenc.c
@@ -346,11 +346,10 @@
encoder_class->set_format = GST_DEBUG_FUNCPTR (gst_sbc_enc_set_format);
encoder_class->handle_frame = GST_DEBUG_FUNCPTR (gst_sbc_enc_handle_frame);
- gst_element_class_add_pad_template (element_class,
- gst_static_pad_template_get (&sbc_enc_sink_factory));
-
- gst_element_class_add_pad_template (element_class,
- gst_static_pad_template_get (&sbc_enc_src_factory));
+ gst_element_class_add_static_pad_template (element_class,
+ &sbc_enc_sink_factory);
+ gst_element_class_add_static_pad_template (element_class,
+ &sbc_enc_src_factory);
gst_element_class_set_static_metadata (element_class,
"Bluetooth SBC audio encoder", "Codec/Encoder/Audio",
diff --git a/ext/schroedinger/Makefile.in b/ext/schroedinger/Makefile.in
index 5b3f0a6..87d2751 100644
--- a/ext/schroedinger/Makefile.in
+++ b/ext/schroedinger/Makefile.in
@@ -305,6 +305,8 @@
DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
DSYMUTIL = @DSYMUTIL@
DTLS_CFLAGS = @DTLS_CFLAGS@
DTLS_LIBS = @DTLS_LIBS@
@@ -520,6 +522,8 @@
LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
LIPO = @LIPO@
LN_S = @LN_S@
LOCALEDIR = @LOCALEDIR@
@@ -646,8 +650,6 @@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
SNDIO_LIBS = @SNDIO_LIBS@
@@ -692,6 +694,8 @@
WAYLAND_LIBS = @WAYLAND_LIBS@
WEBP_CFLAGS = @WEBP_CFLAGS@
WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
WGET = @WGET@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
diff --git a/ext/schroedinger/gstschrodec.c b/ext/schroedinger/gstschrodec.c
index 6ac6ae9..359a594 100644
--- a/ext/schroedinger/gstschrodec.c
+++ b/ext/schroedinger/gstschrodec.c
@@ -128,10 +128,10 @@
gobject_class->finalize = gst_schro_dec_finalize;
- gst_element_class_add_pad_template (element_class,
- gst_static_pad_template_get (&gst_schro_dec_src_template));
- gst_element_class_add_pad_template (element_class,
- gst_static_pad_template_get (&gst_schro_dec_sink_template));
+ gst_element_class_add_static_pad_template (element_class,
+ &gst_schro_dec_src_template);
+ gst_element_class_add_static_pad_template (element_class,
+ &gst_schro_dec_sink_template);
gst_element_class_set_static_metadata (element_class, "Dirac Decoder",
"Codec/Decoder/Video",
diff --git a/ext/schroedinger/gstschroenc.c b/ext/schroedinger/gstschroenc.c
index 6cd761f..22ccc5e 100644
--- a/ext/schroedinger/gstschroenc.c
+++ b/ext/schroedinger/gstschroenc.c
@@ -214,10 +214,10 @@
}
}
- gst_element_class_add_pad_template (element_class,
- gst_static_pad_template_get (&gst_schro_enc_src_template));
- gst_element_class_add_pad_template (element_class,
- gst_static_pad_template_get (&gst_schro_enc_sink_template));
+ gst_element_class_add_static_pad_template (element_class,
+ &gst_schro_enc_src_template);
+ gst_element_class_add_static_pad_template (element_class,
+ &gst_schro_enc_sink_template);
gst_element_class_set_static_metadata (element_class, "Dirac Encoder",
"Codec/Encoder/Video",
diff --git a/ext/sdl/Makefile.in b/ext/sdl/Makefile.in
index 3c5ffda..ecf052d 100644
--- a/ext/sdl/Makefile.in
+++ b/ext/sdl/Makefile.in
@@ -303,6 +303,8 @@
DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
DSYMUTIL = @DSYMUTIL@
DTLS_CFLAGS = @DTLS_CFLAGS@
DTLS_LIBS = @DTLS_LIBS@
@@ -518,6 +520,8 @@
LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
LIPO = @LIPO@
LN_S = @LN_S@
LOCALEDIR = @LOCALEDIR@
@@ -644,8 +648,6 @@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
SNDIO_LIBS = @SNDIO_LIBS@
@@ -690,6 +692,8 @@
WAYLAND_LIBS = @WAYLAND_LIBS@
WEBP_CFLAGS = @WEBP_CFLAGS@
WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
WGET = @WGET@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
diff --git a/ext/sdl/sdlaudiosink.c b/ext/sdl/sdlaudiosink.c
index 87dd730..ff03782 100644
--- a/ext/sdl/sdlaudiosink.c
+++ b/ext/sdl/sdlaudiosink.c
@@ -151,8 +151,8 @@
"Output to a sound card via SDLAUDIO",
"Edgard Lima <edgard.lima@indt.org.br>");
- gst_element_class_add_pad_template (element_class,
- gst_static_pad_template_get (&sdlaudiosink_sink_factory));
+ gst_element_class_add_static_pad_template (element_class,
+ &sdlaudiosink_sink_factory);
}
static void
diff --git a/ext/smoothstreaming/Makefile.in b/ext/smoothstreaming/Makefile.in
index 5e2ebef..57a4b40 100644
--- a/ext/smoothstreaming/Makefile.in
+++ b/ext/smoothstreaming/Makefile.in
@@ -308,6 +308,8 @@
DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
DSYMUTIL = @DSYMUTIL@
DTLS_CFLAGS = @DTLS_CFLAGS@
DTLS_LIBS = @DTLS_LIBS@
@@ -523,6 +525,8 @@
LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
LIPO = @LIPO@
LN_S = @LN_S@
LOCALEDIR = @LOCALEDIR@
@@ -649,8 +653,6 @@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
SNDIO_LIBS = @SNDIO_LIBS@
@@ -695,6 +697,8 @@
WAYLAND_LIBS = @WAYLAND_LIBS@
WEBP_CFLAGS = @WEBP_CFLAGS@
WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
WGET = @WGET@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
diff --git a/ext/smoothstreaming/gstmssdemux.c b/ext/smoothstreaming/gstmssdemux.c
index c975e17..27725ca 100644
--- a/ext/smoothstreaming/gstmssdemux.c
+++ b/ext/smoothstreaming/gstmssdemux.c
@@ -150,12 +150,12 @@
gstelement_class = (GstElementClass *) klass;
gstadaptivedemux_class = (GstAdaptiveDemuxClass *) klass;
- gst_element_class_add_pad_template (gstelement_class,
- gst_static_pad_template_get (&gst_mss_demux_sink_template));
- gst_element_class_add_pad_template (gstelement_class,
- gst_static_pad_template_get (&gst_mss_demux_videosrc_template));
- gst_element_class_add_pad_template (gstelement_class,
- gst_static_pad_template_get (&gst_mss_demux_audiosrc_template));
+ gst_element_class_add_static_pad_template (gstelement_class,
+ &gst_mss_demux_sink_template);
+ gst_element_class_add_static_pad_template (gstelement_class,
+ &gst_mss_demux_videosrc_template);
+ gst_element_class_add_static_pad_template (gstelement_class,
+ &gst_mss_demux_audiosrc_template);
gst_element_class_set_static_metadata (gstelement_class,
"Smooth Streaming demuxer", "Codec/Demuxer/Adaptive",
"Parse and demultiplex a Smooth Streaming manifest into audio and video "
diff --git a/ext/smoothstreaming/gstmssmanifest.c b/ext/smoothstreaming/gstmssmanifest.c
index 02e559c..1b72e8d 100644
--- a/ext/smoothstreaming/gstmssmanifest.c
+++ b/ext/smoothstreaming/gstmssmanifest.c
@@ -569,8 +569,13 @@
parseres = gst_h264_parse_sps (&nalu, &sps_struct, TRUE);
if (parseres == GST_H264_PARSER_OK) {
+ gint fps_num, fps_den;
+
+ /* MSS apparently only supports non-interlaced/progressive H.264 content */
+ gst_h264_video_calculate_framerate (&sps_struct, 0, 0, &fps_num, &fps_den);
+
gst_caps_set_simple (caps, "framerate", GST_TYPE_FRACTION,
- sps_struct.fps_num, sps_struct.fps_den, NULL);
+ fps_num, fps_den, NULL);
}
buffer = _make_h264_codec_data (sps, pps);
diff --git a/ext/sndfile/Makefile.in b/ext/sndfile/Makefile.in
index a6706d2..252a5e0 100644
--- a/ext/sndfile/Makefile.in
+++ b/ext/sndfile/Makefile.in
@@ -304,6 +304,8 @@
DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
DSYMUTIL = @DSYMUTIL@
DTLS_CFLAGS = @DTLS_CFLAGS@
DTLS_LIBS = @DTLS_LIBS@
@@ -519,6 +521,8 @@
LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
LIPO = @LIPO@
LN_S = @LN_S@
LOCALEDIR = @LOCALEDIR@
@@ -645,8 +649,6 @@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
SNDIO_LIBS = @SNDIO_LIBS@
@@ -691,6 +693,8 @@
WAYLAND_LIBS = @WAYLAND_LIBS@
WEBP_CFLAGS = @WEBP_CFLAGS@
WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
WGET = @WGET@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
diff --git a/ext/sndfile/gstsfdec.c b/ext/sndfile/gstsfdec.c
index d854dba..24a0e2d 100644
--- a/ext/sndfile/gstsfdec.c
+++ b/ext/sndfile/gstsfdec.c
@@ -157,8 +157,8 @@
"Read audio streams using libsndfile",
"Stefan Sauer <ensonic@user.sf.net>");
- gst_element_class_add_pad_template (gstelement_class,
- gst_static_pad_template_get (&sf_dec_src_factory));
+ gst_element_class_add_static_pad_template (gstelement_class,
+ &sf_dec_src_factory);
gst_element_class_add_pad_template (gstelement_class,
gst_pad_template_new ("sink", GST_PAD_SINK, GST_PAD_ALWAYS,
diff --git a/ext/sndio/Makefile.in b/ext/sndio/Makefile.in
index f161778..75982bd 100644
--- a/ext/sndio/Makefile.in
+++ b/ext/sndio/Makefile.in
@@ -303,6 +303,8 @@
DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
DSYMUTIL = @DSYMUTIL@
DTLS_CFLAGS = @DTLS_CFLAGS@
DTLS_LIBS = @DTLS_LIBS@
@@ -518,6 +520,8 @@
LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
LIPO = @LIPO@
LN_S = @LN_S@
LOCALEDIR = @LOCALEDIR@
@@ -644,8 +648,6 @@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
SNDIO_LIBS = @SNDIO_LIBS@
@@ -690,6 +692,8 @@
WAYLAND_LIBS = @WAYLAND_LIBS@
WEBP_CFLAGS = @WEBP_CFLAGS@
WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
WGET = @WGET@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
diff --git a/ext/sndio/sndiosink.c b/ext/sndio/sndiosink.c
index 1eab800..c9d0f71 100644
--- a/ext/sndio/sndiosink.c
+++ b/ext/sndio/sndiosink.c
@@ -95,8 +95,8 @@
"Sink/Audio",
"Plays audio through sndio", "Jacob Meuser <jakemsr@sdf.lonestar.org>");
- gst_element_class_add_pad_template (element_class,
- gst_static_pad_template_get (&sndio_sink_factory));
+ gst_element_class_add_static_pad_template (element_class,
+ &sndio_sink_factory);
}
static void
diff --git a/ext/sndio/sndiosrc.c b/ext/sndio/sndiosrc.c
index 6800c7d..5721f42 100644
--- a/ext/sndio/sndiosrc.c
+++ b/ext/sndio/sndiosrc.c
@@ -93,8 +93,7 @@
"Source/Audio",
"Records audio through sndio", "Jacob Meuser <jakemsr@sdf.lonestar.org>");
- gst_element_class_add_pad_template (element_class,
- gst_static_pad_template_get (&sndio_src_factory));
+ gst_element_class_add_static_pad_template (element_class, &sndio_src_factory);
}
static void
diff --git a/ext/soundtouch/Makefile.in b/ext/soundtouch/Makefile.in
index 59b8e07..eedfe4c 100644
--- a/ext/soundtouch/Makefile.in
+++ b/ext/soundtouch/Makefile.in
@@ -323,6 +323,8 @@
DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
DSYMUTIL = @DSYMUTIL@
DTLS_CFLAGS = @DTLS_CFLAGS@
DTLS_LIBS = @DTLS_LIBS@
@@ -538,6 +540,8 @@
LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
LIPO = @LIPO@
LN_S = @LN_S@
LOCALEDIR = @LOCALEDIR@
@@ -664,8 +668,6 @@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
SNDIO_LIBS = @SNDIO_LIBS@
@@ -710,6 +712,8 @@
WAYLAND_LIBS = @WAYLAND_LIBS@
WEBP_CFLAGS = @WEBP_CFLAGS@
WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
WGET = @WGET@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
diff --git a/ext/soundtouch/gstpitch.cc b/ext/soundtouch/gstpitch.cc
index 2f33adf..b41e665 100644
--- a/ext/soundtouch/gstpitch.cc
+++ b/ext/soundtouch/gstpitch.cc
@@ -163,10 +163,8 @@
element_class->change_state = GST_DEBUG_FUNCPTR (gst_pitch_change_state);
- gst_element_class_add_pad_template (element_class,
- gst_static_pad_template_get (&gst_pitch_src_template));
- gst_element_class_add_pad_template (element_class,
- gst_static_pad_template_get (&gst_pitch_sink_template));
+ gst_element_class_add_static_pad_template (element_class, &gst_pitch_src_template);
+ gst_element_class_add_static_pad_template (element_class, &gst_pitch_sink_template);
gst_element_class_set_static_metadata (element_class, "Pitch controller",
"Filter/Effect/Audio", "Control the pitch of an audio stream",
diff --git a/ext/spandsp/Makefile.in b/ext/spandsp/Makefile.in
index 22460b9..771d592 100644
--- a/ext/spandsp/Makefile.in
+++ b/ext/spandsp/Makefile.in
@@ -306,6 +306,8 @@
DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
DSYMUTIL = @DSYMUTIL@
DTLS_CFLAGS = @DTLS_CFLAGS@
DTLS_LIBS = @DTLS_LIBS@
@@ -521,6 +523,8 @@
LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
LIPO = @LIPO@
LN_S = @LN_S@
LOCALEDIR = @LOCALEDIR@
@@ -647,8 +651,6 @@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
SNDIO_LIBS = @SNDIO_LIBS@
@@ -693,6 +695,8 @@
WAYLAND_LIBS = @WAYLAND_LIBS@
WEBP_CFLAGS = @WEBP_CFLAGS@
WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
WGET = @WGET@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
diff --git a/ext/spandsp/gstdtmfdetect.c b/ext/spandsp/gstdtmfdetect.c
index 41966e4..362edb4 100644
--- a/ext/spandsp/gstdtmfdetect.c
+++ b/ext/spandsp/gstdtmfdetect.c
@@ -124,10 +124,8 @@
gobject_class->finalize = gst_dtmf_detect_finalize;
- gst_element_class_add_pad_template (gstelement_class,
- gst_static_pad_template_get (&srctemplate));
- gst_element_class_add_pad_template (gstelement_class,
- gst_static_pad_template_get (&sinktemplate));
+ gst_element_class_add_static_pad_template (gstelement_class, &srctemplate);
+ gst_element_class_add_static_pad_template (gstelement_class, &sinktemplate);
gst_element_class_set_static_metadata (gstelement_class,
"DTMF detector element", "Filter/Analyzer/Audio",
diff --git a/ext/spandsp/gstspanplc.c b/ext/spandsp/gstspanplc.c
index d3ff53f..06e1090 100644
--- a/ext/spandsp/gstspanplc.c
+++ b/ext/spandsp/gstspanplc.c
@@ -73,10 +73,8 @@
GObjectClass *gobject_class = (GObjectClass *) klass;
GstElementClass *gstelement_class = (GstElementClass *) klass;
- gst_element_class_add_pad_template (gstelement_class,
- gst_static_pad_template_get (&src_factory));
- gst_element_class_add_pad_template (gstelement_class,
- gst_static_pad_template_get (&sink_factory));
+ gst_element_class_add_static_pad_template (gstelement_class, &src_factory);
+ gst_element_class_add_static_pad_template (gstelement_class, &sink_factory);
gst_element_class_set_static_metadata (gstelement_class, "SpanDSP PLC",
"Filter/Effect/Audio",
diff --git a/ext/spandsp/gsttonegeneratesrc.c b/ext/spandsp/gsttonegeneratesrc.c
index 2b0cae7..c806799 100644
--- a/ext/spandsp/gsttonegeneratesrc.c
+++ b/ext/spandsp/gsttonegeneratesrc.c
@@ -142,8 +142,8 @@
"Whether to repeat specified tone indefinitly", DEFAULT_REPEAT,
G_PARAM_READWRITE));
- gst_element_class_add_pad_template (gstelement_class,
- gst_static_pad_template_get (&gst_tone_generate_src_src_template));
+ gst_element_class_add_static_pad_template (gstelement_class,
+ &gst_tone_generate_src_src_template);
gst_element_class_set_static_metadata (gstelement_class,
"Telephony Tone Generator source", "Source/Audio",
diff --git a/ext/spc/Makefile.in b/ext/spc/Makefile.in
index 288fc6e..c47a0cf 100644
--- a/ext/spc/Makefile.in
+++ b/ext/spc/Makefile.in
@@ -302,6 +302,8 @@
DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
DSYMUTIL = @DSYMUTIL@
DTLS_CFLAGS = @DTLS_CFLAGS@
DTLS_LIBS = @DTLS_LIBS@
@@ -517,6 +519,8 @@
LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
LIPO = @LIPO@
LN_S = @LN_S@
LOCALEDIR = @LOCALEDIR@
@@ -643,8 +647,6 @@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
SNDIO_LIBS = @SNDIO_LIBS@
@@ -689,6 +691,8 @@
WAYLAND_LIBS = @WAYLAND_LIBS@
WEBP_CFLAGS = @WEBP_CFLAGS@
WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
WGET = @WGET@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
diff --git a/ext/spc/gstspc.c b/ext/spc/gstspc.c
index d975185..d0f0393 100644
--- a/ext/spc/gstspc.c
+++ b/ext/spc/gstspc.c
@@ -81,10 +81,8 @@
"Uses OpenSPC to emulate an SPC processor",
"Chris Lee <clee@kde.org>, Brian Koropoff <bkoropoff@gmail.com>");
- gst_element_class_add_pad_template (element_class,
- gst_static_pad_template_get (&sink_factory));
- gst_element_class_add_pad_template (element_class,
- gst_static_pad_template_get (&src_factory));
+ gst_element_class_add_static_pad_template (element_class, &sink_factory);
+ gst_element_class_add_static_pad_template (element_class, &src_factory);
element_class->change_state = GST_DEBUG_FUNCPTR (gst_spc_dec_change_state);
gobject_class->dispose = gst_spc_dec_dispose;
diff --git a/ext/srtp/Makefile.in b/ext/srtp/Makefile.in
index fd26fe2..6acddc5 100644
--- a/ext/srtp/Makefile.in
+++ b/ext/srtp/Makefile.in
@@ -312,6 +312,8 @@
DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
DSYMUTIL = @DSYMUTIL@
DTLS_CFLAGS = @DTLS_CFLAGS@
DTLS_LIBS = @DTLS_LIBS@
@@ -527,6 +529,8 @@
LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
LIPO = @LIPO@
LN_S = @LN_S@
LOCALEDIR = @LOCALEDIR@
@@ -653,8 +657,6 @@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
SNDIO_LIBS = @SNDIO_LIBS@
@@ -699,6 +701,8 @@
WAYLAND_LIBS = @WAYLAND_LIBS@
WEBP_CFLAGS = @WEBP_CFLAGS@
WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
WGET = @WGET@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
diff --git a/ext/srtp/gstsrtpdec.c b/ext/srtp/gstsrtpdec.c
index 0120d92..b97094a 100644
--- a/ext/srtp/gstsrtpdec.c
+++ b/ext/srtp/gstsrtpdec.c
@@ -248,14 +248,14 @@
gobject_class->set_property = gst_srtp_dec_set_property;
gobject_class->get_property = gst_srtp_dec_get_property;
- gst_element_class_add_pad_template (gstelement_class,
- gst_static_pad_template_get (&rtp_src_template));
- gst_element_class_add_pad_template (gstelement_class,
- gst_static_pad_template_get (&rtp_sink_template));
- gst_element_class_add_pad_template (gstelement_class,
- gst_static_pad_template_get (&rtcp_src_template));
- gst_element_class_add_pad_template (gstelement_class,
- gst_static_pad_template_get (&rtcp_sink_template));
+ gst_element_class_add_static_pad_template (gstelement_class,
+ &rtp_src_template);
+ gst_element_class_add_static_pad_template (gstelement_class,
+ &rtp_sink_template);
+ gst_element_class_add_static_pad_template (gstelement_class,
+ &rtcp_src_template);
+ gst_element_class_add_static_pad_template (gstelement_class,
+ &rtcp_sink_template);
gst_element_class_set_static_metadata (gstelement_class, "SRTP decoder",
"Filter/Network/SRTP",
diff --git a/ext/srtp/gstsrtpenc.c b/ext/srtp/gstsrtpenc.c
index eb00886..7f46a4f 100644
--- a/ext/srtp/gstsrtpenc.c
+++ b/ext/srtp/gstsrtpenc.c
@@ -159,7 +159,8 @@
PROP_RTCP_AUTH,
PROP_RANDOM_KEY,
PROP_REPLAY_WINDOW_SIZE,
- PROP_ALLOW_REPEAT_TX
+ PROP_ALLOW_REPEAT_TX,
+ PROP_STATS
};
typedef struct ProcessBufferItData
@@ -246,27 +247,6 @@
static void gst_srtp_enc_release_pad (GstElement * element, GstPad * pad);
-static guint32
-gst_srtp_enc_get_rollover_counter (GstSrtpEnc * filter, guint32 ssrc)
-{
- guint32 roc = 0;
- srtp_stream_t stream;
-
- GST_OBJECT_LOCK (filter);
-
- GST_DEBUG_OBJECT (filter, "retrieving SRTP Rollover Counter, ssrc: %u", ssrc);
-
- if (filter->session) {
- stream = srtp_get_stream (filter->session, htonl (ssrc));
- if (stream)
- roc = stream->rtp_rdbx.index >> 16;
- }
-
- GST_OBJECT_UNLOCK (filter);
-
- return roc;
-}
-
/* initialize the srtpenc's class
*/
static void
@@ -278,14 +258,14 @@
gobject_class = (GObjectClass *) klass;
gstelement_class = (GstElementClass *) klass;
- gst_element_class_add_pad_template (gstelement_class,
- gst_static_pad_template_get (&rtp_src_template));
- gst_element_class_add_pad_template (gstelement_class,
- gst_static_pad_template_get (&rtp_sink_template));
- gst_element_class_add_pad_template (gstelement_class,
- gst_static_pad_template_get (&rtcp_src_template));
- gst_element_class_add_pad_template (gstelement_class,
- gst_static_pad_template_get (&rtcp_sink_template));
+ gst_element_class_add_static_pad_template (gstelement_class,
+ &rtp_src_template);
+ gst_element_class_add_static_pad_template (gstelement_class,
+ &rtp_sink_template);
+ gst_element_class_add_static_pad_template (gstelement_class,
+ &rtcp_src_template);
+ gst_element_class_add_static_pad_template (gstelement_class,
+ &rtcp_sink_template);
gst_element_class_set_static_metadata (gstelement_class, "SRTP encoder",
"Filter/Network/SRTP",
@@ -342,6 +322,9 @@
"(Note that such repeated transmissions must have the same RTP payload, "
"or a severe security weakness is introduced!)",
DEFAULT_ALLOW_REPEAT_TX, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
+ g_object_class_install_property (gobject_class, PROP_STATS,
+ g_param_spec_boxed ("stats", "Statistics", "Various statistics",
+ GST_TYPE_STRUCTURE, G_PARAM_READABLE | G_PARAM_STATIC_STRINGS));
/**
* GstSrtpEnc::soft-limit:
@@ -354,22 +337,6 @@
gst_srtp_enc_signals[SIGNAL_SOFT_LIMIT] =
g_signal_new ("soft-limit", G_TYPE_FROM_CLASS (klass),
G_SIGNAL_RUN_LAST, 0, NULL, NULL, NULL, G_TYPE_NONE, 0);
-
- /**
- * GstSrtpEnc::get-rollover-counter:
- * @gstsrtpenc: the element on which the signal is emitted
- * @ssrc: The unique SSRC of the stream
- *
- * Request the SRTP rollover counter for the stream with @ssrc.
- */
- gst_srtp_enc_signals[SIGNAL_GET_ROLLOVER_COUNTER] =
- g_signal_new ("get-rollover-counter", G_TYPE_FROM_CLASS (klass),
- G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION, G_STRUCT_OFFSET (GstSrtpEncClass,
- get_rollover_counter), NULL, NULL, g_cclosure_marshal_generic,
- G_TYPE_UINT, 1, G_TYPE_UINT);
-
- klass->get_rollover_counter =
- GST_DEBUG_FUNCPTR (gst_srtp_enc_get_rollover_counter);
}
@@ -633,6 +600,41 @@
G_OBJECT_CLASS (gst_srtp_enc_parent_class)->dispose (object);
}
+static GstStructure *
+gst_srtp_enc_create_stats (GstSrtpEnc * filter)
+{
+ GstStructure *s;
+ GValue va = G_VALUE_INIT;
+ GValue v = G_VALUE_INIT;
+
+ s = gst_structure_new_empty ("application/x-srtp-encoder-stats");
+
+ g_value_init (&va, GST_TYPE_ARRAY);
+ g_value_init (&v, GST_TYPE_STRUCTURE);
+
+ if (filter->session) {
+ srtp_stream_t stream = filter->session->stream_list;
+ while (stream) {
+ GstStructure *ss;
+ guint32 ssrc = GUINT32_FROM_BE (stream->ssrc);
+ guint32 roc = stream->rtp_rdbx.index >> 16;
+
+ ss = gst_structure_new ("application/x-srtp-stream",
+ "ssrc", G_TYPE_UINT, ssrc, "roc", G_TYPE_UINT, roc, NULL);
+
+ g_value_take_boxed (&v, ss);
+ gst_value_array_append_value (&va, &v);
+
+ stream = stream->next;
+ }
+ }
+
+ gst_structure_take_value (s, "streams", &va);
+ g_value_unset (&v);
+
+ return s;
+}
+
static void
gst_srtp_enc_set_property (GObject * object, guint prop_id,
const GValue * value, GParamSpec * pspec)
@@ -724,6 +726,9 @@
case PROP_ALLOW_REPEAT_TX:
g_value_set_boolean (value, filter->allow_repeat_tx);
break;
+ case PROP_STATS:
+ g_value_take_boxed (value, gst_srtp_enc_create_stats (filter));
+ break;
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
break;
diff --git a/ext/srtp/gstsrtpenc.h b/ext/srtp/gstsrtpenc.h
index 843af18..842c56f 100644
--- a/ext/srtp/gstsrtpenc.h
+++ b/ext/srtp/gstsrtpenc.h
@@ -89,9 +89,6 @@
struct _GstSrtpEncClass
{
GstElementClass parent_class;
-
- /* action signals */
- guint32 (*get_rollover_counter) (GstSrtpEnc *encoder, guint32 ssrc);
};
GType gst_srtp_enc_get_type (void);
diff --git a/ext/teletextdec/Makefile.in b/ext/teletextdec/Makefile.in
index 8de3342..6554ff7 100644
--- a/ext/teletextdec/Makefile.in
+++ b/ext/teletextdec/Makefile.in
@@ -303,6 +303,8 @@
DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
DSYMUTIL = @DSYMUTIL@
DTLS_CFLAGS = @DTLS_CFLAGS@
DTLS_LIBS = @DTLS_LIBS@
@@ -518,6 +520,8 @@
LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
LIPO = @LIPO@
LN_S = @LN_S@
LOCALEDIR = @LOCALEDIR@
@@ -644,8 +648,6 @@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
SNDIO_LIBS = @SNDIO_LIBS@
@@ -690,6 +692,8 @@
WAYLAND_LIBS = @WAYLAND_LIBS@
WEBP_CFLAGS = @WEBP_CFLAGS@
WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
WGET = @WGET@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
diff --git a/ext/teletextdec/gstteletextdec.c b/ext/teletextdec/gstteletextdec.c
index 91b73c2..5909a76 100644
--- a/ext/teletextdec/gstteletextdec.c
+++ b/ext/teletextdec/gstteletextdec.c
@@ -231,10 +231,8 @@
"Sebastian Pölsterl <sebp@k-d-w.org>, "
"Andoni Morales Alastruey <ylatuya@gmail.com>");
- gst_element_class_add_pad_template (gstelement_class,
- gst_static_pad_template_get (&src_template));
- gst_element_class_add_pad_template (gstelement_class,
- gst_static_pad_template_get (&sink_template));
+ gst_element_class_add_static_pad_template (gstelement_class, &src_template);
+ gst_element_class_add_static_pad_template (gstelement_class, &sink_template);
}
/* initialize the new element
@@ -659,12 +657,13 @@
gst_teletextdec_negotiate_caps (GstTeletextDec * teletext, guint width,
guint height)
{
- guint i, caps_size;
gboolean rv = FALSE;
-
/* get the peer's caps filtered by our own ones. */
GstCaps *ourcaps = gst_pad_query_caps (teletext->srcpad, NULL);
GstCaps *peercaps = gst_pad_peer_query_caps (teletext->srcpad, ourcaps);
+ GstStructure *caps_struct;
+ const gchar *caps_name, *caps_fmt;
+
gst_caps_unref (ourcaps);
if (gst_caps_is_empty (peercaps)) {
@@ -673,33 +672,26 @@
/* make them writable in case we need to fixate them (video/x-raw). */
peercaps = gst_caps_make_writable (peercaps);
- caps_size = gst_caps_get_size (peercaps);
+ caps_struct = gst_caps_get_structure (peercaps, 0);
+ caps_name = gst_structure_get_name (caps_struct);
+ caps_fmt = gst_structure_get_string (caps_struct, "format");
- for (i = 0; i < caps_size; i++) {
- GstStructure *caps_struct = gst_caps_get_structure (peercaps, i);
- const gchar *caps_name = gst_structure_get_name (caps_struct);
- const gchar *caps_fmt = gst_structure_get_string (caps_struct, "format");
-
- if (g_strcmp0 (caps_name, "video/x-raw") == 0) {
- teletext->width = width;
- teletext->height = height;
- teletext->export_func = gst_teletextdec_export_rgba_page;
- gst_structure_set (caps_struct,
- "width", G_TYPE_INT, width,
- "height", G_TYPE_INT, height,
- "framerate", GST_TYPE_FRACTION, 0, 1, NULL);
- break;
- } else if ((g_strcmp0 (caps_name, "text/x-raw") == 0) &&
- (g_strcmp0 (caps_fmt, "utf-8") == 0)) {
- teletext->export_func = gst_teletextdec_export_text_page;
- break;
- } else if ((g_strcmp0 (caps_name, "text/x-raw") == 0) &&
- (g_strcmp0 (caps_fmt, "pango-markup") == 0)) {
- teletext->export_func = gst_teletextdec_export_pango_page;
- break;
- } else {
- goto beach;
- }
+ if (!g_strcmp0 (caps_name, "video/x-raw")) {
+ teletext->width = width;
+ teletext->height = height;
+ teletext->export_func = gst_teletextdec_export_rgba_page;
+ gst_structure_set (caps_struct,
+ "width", G_TYPE_INT, width,
+ "height", G_TYPE_INT, height,
+ "framerate", GST_TYPE_FRACTION, 0, 1, NULL);
+ } else if (!g_strcmp0 (caps_name, "text/x-raw") &&
+ !g_strcmp0 (caps_fmt, "utf-8")) {
+ teletext->export_func = gst_teletextdec_export_text_page;
+ } else if (!g_strcmp0 (caps_name, "text/x-raw") &&
+ !g_strcmp0 (caps_fmt, "pango-markup")) {
+ teletext->export_func = gst_teletextdec_export_pango_page;
+ } else {
+ goto beach;
}
if (!gst_pad_push_event (teletext->srcpad, gst_event_new_caps (peercaps))) {
diff --git a/ext/timidity/Makefile.in b/ext/timidity/Makefile.in
index 2f94f9f..3bb93aa 100644
--- a/ext/timidity/Makefile.in
+++ b/ext/timidity/Makefile.in
@@ -321,6 +321,8 @@
DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
DSYMUTIL = @DSYMUTIL@
DTLS_CFLAGS = @DTLS_CFLAGS@
DTLS_LIBS = @DTLS_LIBS@
@@ -536,6 +538,8 @@
LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
LIPO = @LIPO@
LN_S = @LN_S@
LOCALEDIR = @LOCALEDIR@
@@ -662,8 +666,6 @@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
SNDIO_LIBS = @SNDIO_LIBS@
@@ -708,6 +710,8 @@
WAYLAND_LIBS = @WAYLAND_LIBS@
WEBP_CFLAGS = @WEBP_CFLAGS@
WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
WGET = @WGET@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
diff --git a/ext/timidity/gsttimidity.c b/ext/timidity/gsttimidity.c
index 418a5fe..f7af843 100644
--- a/ext/timidity/gsttimidity.c
+++ b/ext/timidity/gsttimidity.c
@@ -95,10 +95,8 @@
{
GstElementClass *element_class = GST_ELEMENT_CLASS (gclass);
- gst_element_class_add_pad_template (element_class,
- gst_static_pad_template_get (&src_factory));
- gst_element_class_add_pad_template (element_class,
- gst_static_pad_template_get (&sink_factory));
+ gst_element_class_add_static_pad_template (element_class, &src_factory);
+ gst_element_class_add_static_pad_template (element_class, &sink_factory);
gst_element_class_set_static_metadata (element_class, "Timidity",
"Codec/Decoder/Audio",
"Midi Synthesizer Element", "Wouter Paesen <wouter@blue-gate.be>");
diff --git a/ext/timidity/gstwildmidi.c b/ext/timidity/gstwildmidi.c
index 42b40d4..3e82ca2 100644
--- a/ext/timidity/gstwildmidi.c
+++ b/ext/timidity/gstwildmidi.c
@@ -239,10 +239,8 @@
"High Quality", DEFAULT_HIGH_QUALITY,
G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
- gst_element_class_add_pad_template (gstelement_class,
- gst_static_pad_template_get (&src_factory));
- gst_element_class_add_pad_template (gstelement_class,
- gst_static_pad_template_get (&sink_factory));
+ gst_element_class_add_static_pad_template (gstelement_class, &src_factory);
+ gst_element_class_add_static_pad_template (gstelement_class, &sink_factory);
gst_element_class_set_static_metadata (gstelement_class, "WildMidi",
"Codec/Decoder/Audio",
"Midi Synthesizer Element", "Wouter Paesen <wouter@blue-gate.be>");
diff --git a/ext/voaacenc/Makefile.in b/ext/voaacenc/Makefile.in
index 8638438..8c2d679 100644
--- a/ext/voaacenc/Makefile.in
+++ b/ext/voaacenc/Makefile.in
@@ -304,6 +304,8 @@
DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
DSYMUTIL = @DSYMUTIL@
DTLS_CFLAGS = @DTLS_CFLAGS@
DTLS_LIBS = @DTLS_LIBS@
@@ -519,6 +521,8 @@
LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
LIPO = @LIPO@
LN_S = @LN_S@
LOCALEDIR = @LOCALEDIR@
@@ -645,8 +649,6 @@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
SNDIO_LIBS = @SNDIO_LIBS@
@@ -691,6 +693,8 @@
WAYLAND_LIBS = @WAYLAND_LIBS@
WEBP_CFLAGS = @WEBP_CFLAGS@
WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
WGET = @WGET@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
diff --git a/ext/voaacenc/gstvoaacenc.c b/ext/voaacenc/gstvoaacenc.c
index 315f373..674c481 100644
--- a/ext/voaacenc/gstvoaacenc.c
+++ b/ext/voaacenc/gstvoaacenc.c
@@ -163,10 +163,8 @@
0, G_MAXINT, VOAAC_ENC_DEFAULT_BITRATE,
G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
- gst_element_class_add_pad_template (element_class,
- gst_static_pad_template_get (&sink_template));
- gst_element_class_add_pad_template (element_class,
- gst_static_pad_template_get (&src_template));
+ gst_element_class_add_static_pad_template (element_class, &sink_template);
+ gst_element_class_add_static_pad_template (element_class, &src_template);
gst_element_class_set_static_metadata (element_class, "AAC audio encoder",
"Codec/Encoder/Audio", "AAC audio encoder", "Kan Hu <kan.hu@linaro.org>");
diff --git a/ext/voamrwbenc/Makefile.in b/ext/voamrwbenc/Makefile.in
index 30b2dd2..45801d3 100644
--- a/ext/voamrwbenc/Makefile.in
+++ b/ext/voamrwbenc/Makefile.in
@@ -305,6 +305,8 @@
DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
DSYMUTIL = @DSYMUTIL@
DTLS_CFLAGS = @DTLS_CFLAGS@
DTLS_LIBS = @DTLS_LIBS@
@@ -520,6 +522,8 @@
LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
LIPO = @LIPO@
LN_S = @LN_S@
LOCALEDIR = @LOCALEDIR@
@@ -646,8 +650,6 @@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
SNDIO_LIBS = @SNDIO_LIBS@
@@ -692,6 +694,8 @@
WAYLAND_LIBS = @WAYLAND_LIBS@
WEBP_CFLAGS = @WEBP_CFLAGS@
WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
WGET = @WGET@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
diff --git a/ext/voamrwbenc/gstvoamrwbenc.c b/ext/voamrwbenc/gstvoamrwbenc.c
index ae09f06..f744958 100644
--- a/ext/voamrwbenc/gstvoamrwbenc.c
+++ b/ext/voamrwbenc/gstvoamrwbenc.c
@@ -162,10 +162,8 @@
object_class->set_property = gst_voamrwbenc_set_property;
object_class->get_property = gst_voamrwbenc_get_property;
- gst_element_class_add_pad_template (element_class,
- gst_static_pad_template_get (&sink_template));
- gst_element_class_add_pad_template (element_class,
- gst_static_pad_template_get (&src_template));
+ gst_element_class_add_static_pad_template (element_class, &sink_template);
+ gst_element_class_add_static_pad_template (element_class, &src_template);
gst_element_class_set_static_metadata (element_class, "AMR-WB audio encoder",
"Codec/Encoder/Audio",
diff --git a/ext/vulkan/Makefile.am b/ext/vulkan/Makefile.am
index ac3ac08..1b19e19 100644
--- a/ext/vulkan/Makefile.am
+++ b/ext/vulkan/Makefile.am
@@ -1,7 +1,7 @@
plugin_LTLIBRARIES = libgstvulkan.la
SUBDIRS =
-DIST_SUBDIRS = xcb
+DIST_SUBDIRS = xcb wayland
DISTCLEANFILES = vkconfig.h
libgstvulkan_la_SOURCES = \
@@ -63,6 +63,11 @@
libgstvulkan_la_LIBADD += xcb/libgstvulkan-xcb.la
endif
+if USE_WAYLAND
+SUBDIRS += wayland
+libgstvulkan_la_LIBADD += wayland/libgstvulkan-wayland.la
+endif
+
libgstvulkan_la_LDFLAGS = $(GST_PLUGIN_LDFLAGS)
libgstvulkan_la_LIBTOOLFLAGS = $(GST_PLUGIN_LIBTOOLFLAGS)
diff --git a/ext/vulkan/Makefile.in b/ext/vulkan/Makefile.in
index 010c758..7478972 100644
--- a/ext/vulkan/Makefile.in
+++ b/ext/vulkan/Makefile.in
@@ -92,6 +92,8 @@
target_triplet = @target@
@USE_XCB_TRUE@am__append_1 = xcb
@USE_XCB_TRUE@am__append_2 = xcb/libgstvulkan-xcb.la
+@USE_WAYLAND_TRUE@am__append_3 = wayland
+@USE_WAYLAND_TRUE@am__append_4 = wayland/libgstvulkan-wayland.la
subdir = ext/vulkan
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
am__aclocal_m4_deps = $(top_srcdir)/common/m4/as-ac-expand.m4 \
@@ -166,7 +168,8 @@
LTLIBRARIES = $(plugin_LTLIBRARIES)
am__DEPENDENCIES_1 =
libgstvulkan_la_DEPENDENCIES = $(am__DEPENDENCIES_1) \
- $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) $(am__append_2)
+ $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) $(am__append_2) \
+ $(am__append_4)
am_libgstvulkan_la_OBJECTS = libgstvulkan_la-gstvulkan.lo \
libgstvulkan_la-vkdevice.lo libgstvulkan_la-vkdisplay.lo \
libgstvulkan_la-vkerror.lo libgstvulkan_la-vkbuffermemory.lo \
@@ -353,6 +356,8 @@
DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
DSYMUTIL = @DSYMUTIL@
DTLS_CFLAGS = @DTLS_CFLAGS@
DTLS_LIBS = @DTLS_LIBS@
@@ -568,6 +573,8 @@
LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
LIPO = @LIPO@
LN_S = @LN_S@
LOCALEDIR = @LOCALEDIR@
@@ -694,8 +701,6 @@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
SNDIO_LIBS = @SNDIO_LIBS@
@@ -740,6 +745,8 @@
WAYLAND_LIBS = @WAYLAND_LIBS@
WEBP_CFLAGS = @WEBP_CFLAGS@
WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
WGET = @WGET@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
@@ -829,8 +836,8 @@
top_srcdir = @top_srcdir@
wayland_scanner = @wayland_scanner@
plugin_LTLIBRARIES = libgstvulkan.la
-SUBDIRS = $(am__append_1)
-DIST_SUBDIRS = xcb
+SUBDIRS = $(am__append_1) $(am__append_3)
+DIST_SUBDIRS = xcb wayland
DISTCLEANFILES = vkconfig.h
libgstvulkan_la_SOURCES = \
gstvulkan.c \
@@ -881,7 +888,8 @@
$(VULKAN_CFLAGS)
libgstvulkan_la_LIBADD = $(GST_BASE_LIBS) $(GST_PLUGINS_BASE_LIBS) \
- -lgstvideo-$(GST_API_VERSION) $(VULKAN_LIBS) $(am__append_2)
+ -lgstvideo-$(GST_API_VERSION) $(VULKAN_LIBS) $(am__append_2) \
+ $(am__append_4)
libgstvulkan_la_LDFLAGS = $(GST_PLUGIN_LDFLAGS)
libgstvulkan_la_LIBTOOLFLAGS = $(GST_PLUGIN_LIBTOOLFLAGS)
all: all-recursive
diff --git a/ext/vulkan/vkapi.h b/ext/vulkan/vkapi.h
index 525a6c0..e9c23aa 100644
--- a/ext/vulkan/vkapi.h
+++ b/ext/vulkan/vkapi.h
@@ -34,6 +34,12 @@
#endif
#endif
+#if GST_VULKAN_HAVE_WINDOW_WAYLAND
+#ifndef VK_USE_PLATFORM_WAYLAND_KHR
+#define VK_USE_PLATFORM_WAYLAND_KHR
+#endif
+#endif
+
#include <vulkan/vulkan.h>
#endif /* _VK_H_ */
diff --git a/ext/vulkan/vkconfig.h b/ext/vulkan/vkconfig.h
index 4ae6df9..f381cdd 100644
--- a/ext/vulkan/vkconfig.h
+++ b/ext/vulkan/vkconfig.h
@@ -11,7 +11,8 @@
G_BEGIN_DECLS
- #define GST_VULKAN_HAVE_WINDOW_XCB 1
+#define GST_VULKAN_HAVE_WINDOW_XCB 1
+#define GST_VULKAN_HAVE_WINDOW_WAYLAND 1
G_END_DECLS
diff --git a/ext/vulkan/vkdevice.c b/ext/vulkan/vkdevice.c
index 5825391..5c2b279 100644
--- a/ext/vulkan/vkdevice.c
+++ b/ext/vulkan/vkdevice.c
@@ -143,10 +143,14 @@
vkGetPhysicalDeviceProperties (gpu, &props);
- GST_INFO_OBJECT (device, "device name %s type %s api version %u, "
- "driver version %u vendor ID 0x%x, device ID 0x%x", props.deviceName,
- _device_type_to_string (props.deviceType), props.apiVersion,
- props.driverVersion, props.vendorID, props.deviceID);
+ GST_INFO_OBJECT (device, "device name %s type %s api version %u.%u.%u, "
+ "driver version %u.%u.%u vendor ID 0x%x, device ID 0x%x",
+ props.deviceName, _device_type_to_string (props.deviceType),
+ VK_VERSION_MAJOR (props.apiVersion), VK_VERSION_MINOR (props.apiVersion),
+ VK_VERSION_PATCH (props.apiVersion),
+ VK_VERSION_MAJOR (props.driverVersion),
+ VK_VERSION_MINOR (props.driverVersion),
+ VK_VERSION_PATCH (props.driverVersion), props.vendorID, props.deviceID);
return TRUE;
}
@@ -289,8 +293,13 @@
device_info.pNext = NULL;
device_info.queueCreateInfoCount = 1;
device_info.pQueueCreateInfos = &queue_info;
+#if 0
device_info.enabledLayerCount = enabled_layer_count;
device_info.ppEnabledLayerNames = (const char *const *) enabled_layers;
+#else
+ device_info.enabledLayerCount = 0;
+ device_info.ppEnabledLayerNames = NULL;
+#endif
device_info.enabledExtensionCount = enabled_extension_count;
device_info.ppEnabledExtensionNames = (const char *const *) extension_names;
device_info.pEnabledFeatures = NULL;
diff --git a/ext/vulkan/vkdisplay.c b/ext/vulkan/vkdisplay.c
index a066821..096f251 100644
--- a/ext/vulkan/vkdisplay.c
+++ b/ext/vulkan/vkdisplay.c
@@ -33,6 +33,9 @@
#if GST_VULKAN_HAVE_WINDOW_XCB
#include "xcb/vkdisplay_xcb.h"
#endif
+#if GST_VULKAN_HAVE_WINDOW_WAYLAND
+#include "wayland/vkdisplay_wayland.h"
+#endif
GST_DEBUG_CATEGORY_STATIC (GST_CAT_CONTEXT);
#define GST_CAT_DEFAULT gst_vulkan_display_debug
@@ -142,11 +145,6 @@
GstVulkanDisplay *display = GST_VULKAN_DISPLAY (object);
g_mutex_lock (&display->priv->thread_lock);
- if (display->main_context && display->event_source) {
- g_source_destroy (display->event_source);
- g_source_unref (display->event_source);
- }
- display->event_source = NULL;
if (display->main_loop)
g_main_loop_quit (display->main_loop);
@@ -159,6 +157,12 @@
display->priv->event_thread = NULL;
g_mutex_unlock (&display->priv->thread_lock);
+ if (display->main_context && display->event_source) {
+ g_source_destroy (display->event_source);
+ g_source_unref (display->event_source);
+ }
+ display->event_source = NULL;
+
if (display->instance) {
gst_object_unref (display->instance);
}
@@ -179,6 +183,11 @@
display = GST_VULKAN_DISPLAY (gst_vulkan_display_xcb_new (NULL));
}
#endif
+#if GST_VULKAN_HAVE_WINDOW_WAYLAND
+ if (!display && type & GST_VULKAN_DISPLAY_TYPE_WAYLAND) {
+ display = GST_VULKAN_DISPLAY (gst_vulkan_display_wayland_new (NULL));
+ }
+#endif
if (display)
display->instance = gst_object_ref (instance);
@@ -387,6 +396,9 @@
#if GST_VULKAN_HAVE_WINDOW_XCB
CHOOSE_WINSYS (xcb, XCB);
#endif
+#if GST_VULKAN_HAVE_WINDOW_WAYLAND
+ CHOOSE_WINSYS (wayland, WAYLAND);
+#endif
#undef CHOOSE_WINSYS
@@ -408,6 +420,9 @@
if (type & GST_VULKAN_DISPLAY_TYPE_XCB)
return VK_KHR_XCB_SURFACE_EXTENSION_NAME;
+ if (type & GST_VULKAN_DISPLAY_TYPE_WAYLAND)
+ return VK_KHR_WAYLAND_SURFACE_EXTENSION_NAME;
+
return NULL;
}
diff --git a/ext/vulkan/vkinstance.c b/ext/vulkan/vkinstance.c
index 0e48a17..d61458e 100644
--- a/ext/vulkan/vkinstance.c
+++ b/ext/vulkan/vkinstance.c
@@ -299,8 +299,13 @@
inst_info.sType = VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO;
inst_info.pNext = NULL;
inst_info.pApplicationInfo = &app;
+#if 0
inst_info.enabledLayerCount = enabled_layer_count;
inst_info.ppEnabledLayerNames = (const char *const *) enabled_layers;
+#else
+ inst_info.enabledLayerCount = 0;
+ inst_info.ppEnabledLayerNames = NULL;
+#endif
inst_info.enabledExtensionCount = enabled_extension_count;
inst_info.ppEnabledExtensionNames = (const char *const *) extension_names;
diff --git a/ext/vulkan/vksink.c b/ext/vulkan/vksink.c
index cb8530d..586d286 100644
--- a/ext/vulkan/vksink.c
+++ b/ext/vulkan/vksink.c
@@ -125,8 +125,8 @@
"Sink/Video", "A videosink based on OpenGL",
"Matthew Waters <matthew@centricular.com>");
- gst_element_class_add_pad_template (element_class,
- gst_static_pad_template_get (&gst_vulkan_sink_template));
+ gst_element_class_add_static_pad_template (element_class,
+ &gst_vulkan_sink_template);
gobject_class->finalize = gst_vulkan_sink_finalize;
diff --git a/ext/vulkan/vkswapper.c b/ext/vulkan/vkswapper.c
index 3ad50cd..d528f0b 100644
--- a/ext/vulkan/vkswapper.c
+++ b/ext/vulkan/vkswapper.c
@@ -93,12 +93,16 @@
switch (format) {
/* double check endianess */
case VK_FORMAT_R8G8B8A8_UNORM:
+ case VK_FORMAT_R8G8B8A8_SRGB:
return GST_VIDEO_FORMAT_RGBA;
case VK_FORMAT_R8G8B8_UNORM:
+ case VK_FORMAT_R8G8B8_SRGB:
return GST_VIDEO_FORMAT_RGB;
case VK_FORMAT_B8G8R8A8_UNORM:
+ case VK_FORMAT_B8G8R8A8_SRGB:
return GST_VIDEO_FORMAT_BGRA;
case VK_FORMAT_B8G8R8_UNORM:
+ case VK_FORMAT_B8G8R8_SRGB:
return GST_VIDEO_FORMAT_BGR;
default:
return GST_VIDEO_FORMAT_UNKNOWN;
@@ -106,17 +110,33 @@
}
static VkFormat
-_vk_format_from_video_format (GstVideoFormat v_format)
+_vk_format_from_video_info (GstVideoInfo * v_info)
{
- switch (v_format) {
+ switch (GST_VIDEO_INFO_FORMAT (v_info)) {
case GST_VIDEO_FORMAT_RGBA:
- return VK_FORMAT_R8G8B8A8_UNORM;
+ if (GST_VIDEO_INFO_COLORIMETRY (v_info).transfer ==
+ GST_VIDEO_TRANSFER_SRGB)
+ return VK_FORMAT_R8G8B8A8_SRGB;
+ else
+ return VK_FORMAT_R8G8B8A8_UNORM;
case GST_VIDEO_FORMAT_RGB:
- return VK_FORMAT_R8G8B8_UNORM;
+ if (GST_VIDEO_INFO_COLORIMETRY (v_info).transfer ==
+ GST_VIDEO_TRANSFER_SRGB)
+ return VK_FORMAT_R8G8B8_SRGB;
+ else
+ return VK_FORMAT_R8G8B8_UNORM;
case GST_VIDEO_FORMAT_BGRA:
- return VK_FORMAT_B8G8R8A8_UNORM;
+ if (GST_VIDEO_INFO_COLORIMETRY (v_info).transfer ==
+ GST_VIDEO_TRANSFER_SRGB)
+ return VK_FORMAT_B8G8R8A8_SRGB;
+ else
+ return VK_FORMAT_B8G8R8A8_UNORM;
case GST_VIDEO_FORMAT_BGR:
- return VK_FORMAT_B8G8R8_UNORM;
+ if (GST_VIDEO_INFO_COLORIMETRY (v_info).transfer ==
+ GST_VIDEO_TRANSFER_SRGB)
+ return VK_FORMAT_B8G8R8_SRGB;
+ else
+ return VK_FORMAT_B8G8R8_UNORM;
default:
return VK_FORMAT_UNDEFINED;
}
@@ -434,6 +454,7 @@
gst_structure_set_value (s, "format", &list);
g_value_unset (&list);
}
+
{
guint32 max_dim = swapper->device->gpu_props.limits.maxImageDimension2D;
@@ -531,11 +552,13 @@
{
VkSubmitInfo submit_info = { 0, };
+ VkPipelineStageFlags stages = VK_PIPELINE_STAGE_BOTTOM_OF_PIPE_BIT;
submit_info.sType = VK_STRUCTURE_TYPE_SUBMIT_INFO;
submit_info.pNext = NULL;
submit_info.waitSemaphoreCount = 0;
submit_info.pWaitSemaphores = NULL;
+ submit_info.pWaitDstStageMask = &stages;
submit_info.commandBufferCount = 1;
submit_info.pCommandBuffers = &cmd;
submit_info.signalSemaphoreCount = 0;
@@ -629,8 +652,7 @@
preTransform = swapper->surf_props.currentTransform;
}
- format =
- _vk_format_from_video_format (GST_VIDEO_INFO_FORMAT (&swapper->v_info));
+ format = _vk_format_from_video_info (&swapper->v_info);
color_space = _vk_color_space_from_video_info (&swapper->v_info);
if ((swapper->surf_props.supportedCompositeAlpha &
@@ -777,7 +799,6 @@
struct cmd_data
{
VkCommandBuffer cmd;
- VkFence fence;
GDestroyNotify notify;
gpointer data;
};
@@ -867,10 +888,6 @@
cmd_data->cmd = cmd;
cmd_data->notify = NULL;
- if (!_new_fence (swapper->device, &cmd_data->fence, error)) {
- return FALSE;
- }
-
return TRUE;
}
@@ -878,7 +895,8 @@
_render_buffer_unlocked (GstVulkanSwapper * swapper,
GstBuffer * buffer, GError ** error)
{
- VkSemaphore semaphore = { 0, };
+ VkSemaphore acquire_semaphore = { 0, };
+ VkSemaphore present_semaphore = { 0, };
VkSemaphoreCreateInfo semaphore_info = { 0, };
VkPresentInfoKHR present;
struct cmd_data cmd_data = { 0, };
@@ -905,18 +923,18 @@
reacquire:
err = vkCreateSemaphore (swapper->device->device, &semaphore_info,
- NULL, &semaphore);
+ NULL, &acquire_semaphore);
if (gst_vulkan_error_to_g_error (err, error, "vkCreateSemaphore") < 0)
goto error;
err =
swapper->AcquireNextImageKHR (swapper->device->device,
- swapper->swap_chain, -1, semaphore, VK_NULL_HANDLE, &swap_idx);
+ swapper->swap_chain, -1, acquire_semaphore, VK_NULL_HANDLE, &swap_idx);
/* TODO: Deal with the VK_SUBOPTIMAL_KHR and VK_ERROR_OUT_OF_DATE_KHR */
if (err == VK_ERROR_OUT_OF_DATE_KHR) {
GST_DEBUG_OBJECT (swapper, "out of date frame acquired");
- vkDestroySemaphore (swapper->device->device, semaphore, NULL);
+ vkDestroySemaphore (swapper->device->device, acquire_semaphore, NULL);
if (!_swapchain_resize (swapper, error))
goto error;
goto reacquire;
@@ -928,36 +946,45 @@
if (!_build_render_buffer_cmd (swapper, swap_idx, buffer, &cmd_data, error))
goto error;
+ err = vkCreateSemaphore (swapper->device->device, &semaphore_info,
+ NULL, &present_semaphore);
+ if (gst_vulkan_error_to_g_error (err, error, "vkCreateSemaphore") < 0)
+ goto error;
+
{
VkSubmitInfo submit_info = { 0, };
+ VkPipelineStageFlags stages = VK_PIPELINE_STAGE_BOTTOM_OF_PIPE_BIT;
submit_info.sType = VK_STRUCTURE_TYPE_SUBMIT_INFO;
submit_info.pNext = NULL;
submit_info.waitSemaphoreCount = 1;
- submit_info.pWaitSemaphores = &semaphore;
+ submit_info.pWaitSemaphores = &acquire_semaphore;
+ submit_info.pWaitDstStageMask = &stages;
submit_info.commandBufferCount = 1;
submit_info.pCommandBuffers = &cmd_data.cmd;
- submit_info.signalSemaphoreCount = 0;
- submit_info.pSignalSemaphores = NULL;
+ submit_info.signalSemaphoreCount = 1;
+ submit_info.pSignalSemaphores = &present_semaphore;
- err =
- vkQueueSubmit (swapper->queue->queue, 1, &submit_info, cmd_data.fence);
+ err = vkQueueSubmit (swapper->queue->queue, 1, &submit_info, NULL);
if (gst_vulkan_error_to_g_error (err, error, "vkQueueSubmit") < 0) {
- return FALSE;
+ goto error;
}
}
present.sType = VK_STRUCTURE_TYPE_PRESENT_INFO_KHR;
present.pNext = NULL;
- present.waitSemaphoreCount = 0;
- present.pWaitSemaphores = NULL;
+ present.waitSemaphoreCount = 1;
+ present.pWaitSemaphores = &present_semaphore;
present.swapchainCount = 1;
present.pSwapchains = &swapper->swap_chain;
present.pImageIndices = &swap_idx;
present.pResults = &present_err;
err = swapper->QueuePresentKHR (swapper->queue->queue, &present);
- if (err == VK_ERROR_OUT_OF_DATE_KHR) {
+ if (gst_vulkan_error_to_g_error (err, error, "vkQueuePresentKHR") < 0)
+ goto error;
+
+ if (present_err == VK_ERROR_OUT_OF_DATE_KHR) {
GST_DEBUG_OBJECT (swapper, "out of date frame submitted");
if (!_swapchain_resize (swapper, error))
@@ -965,30 +992,30 @@
} else if (gst_vulkan_error_to_g_error (err, error, "vkQueuePresentKHR") < 0)
goto error;
- err = vkWaitForFences (swapper->device->device, 1, &cmd_data.fence, TRUE, -1);
- if (gst_vulkan_error_to_g_error (err, error, "vkWaitForFences") < 0)
+ err = vkDeviceWaitIdle (swapper->device->device);
+ if (gst_vulkan_error_to_g_error (err, error, "vkDeviceWaitIdle") < 0)
goto error;
- if (semaphore)
- vkDestroySemaphore (swapper->device->device, semaphore, NULL);
+ if (acquire_semaphore)
+ vkDestroySemaphore (swapper->device->device, acquire_semaphore, NULL);
+ if (present_semaphore)
+ vkDestroySemaphore (swapper->device->device, present_semaphore, NULL);
if (cmd_data.cmd)
vkFreeCommandBuffers (swapper->device->device, swapper->device->cmd_pool,
1, &cmd_data.cmd);
- if (cmd_data.fence)
- vkDestroyFence (swapper->device->device, cmd_data.fence, NULL);
if (cmd_data.notify)
cmd_data.notify (cmd_data.data);
return TRUE;
error:
{
- if (semaphore)
- vkDestroySemaphore (swapper->device->device, semaphore, NULL);
+ if (acquire_semaphore)
+ vkDestroySemaphore (swapper->device->device, acquire_semaphore, NULL);
+ if (present_semaphore)
+ vkDestroySemaphore (swapper->device->device, present_semaphore, NULL);
if (cmd_data.cmd)
vkFreeCommandBuffers (swapper->device->device, swapper->device->cmd_pool,
1, &cmd_data.cmd);
- if (cmd_data.fence)
- vkDestroyFence (swapper->device->device, cmd_data.fence, NULL);
if (cmd_data.notify)
cmd_data.notify (cmd_data.data);
return FALSE;
diff --git a/ext/vulkan/vkupload.c b/ext/vulkan/vkupload.c
index 95c36cf..c0f0a97 100644
--- a/ext/vulkan/vkupload.c
+++ b/ext/vulkan/vkupload.c
@@ -787,6 +787,7 @@
gst_vulkan_upload_prepare_output_buffer (GstBaseTransform * bt,
GstBuffer * inbuf, GstBuffer ** outbuf)
{
+ GstBaseTransformClass *bclass = GST_BASE_TRANSFORM_GET_CLASS (bt);
GstVulkanUpload *vk_upload = GST_VULKAN_UPLOAD (bt);
GstFlowReturn ret;
@@ -818,6 +819,12 @@
}
} while (FALSE);
+ if (ret == GST_FLOW_OK) {
+ /* basetransform doesn't unref if they're the same */
+ if (inbuf != *outbuf)
+ bclass->copy_metadata (bt, inbuf, *outbuf);
+ }
+
return ret;
}
diff --git a/ext/vulkan/vkwindow.c b/ext/vulkan/vkwindow.c
index caa3c47..56b3e60 100644
--- a/ext/vulkan/vkwindow.c
+++ b/ext/vulkan/vkwindow.c
@@ -43,6 +43,9 @@
#if GST_VULKAN_HAVE_WINDOW_XCB
#include "xcb/vkwindow_xcb.h"
#endif
+#if GST_VULKAN_HAVE_WINDOW_WAYLAND
+#include "wayland/vkwindow_wayland.h"
+#endif
#define GST_CAT_DEFAULT gst_vulkan_window_debug
GST_DEBUG_CATEGORY (GST_CAT_DEFAULT);
@@ -183,6 +186,10 @@
if (!window && (!user_choice || g_strstr_len (user_choice, 3, "xcb")))
window = GST_VULKAN_WINDOW (gst_vulkan_window_xcb_new (display));
#endif
+#if GST_VULKAN_HAVE_WINDOW_WAYLAND
+ if (!window && (!user_choice || g_strstr_len (user_choice, 7, "wayland")))
+ window = GST_VULKAN_WINDOW (gst_vulkan_window_wayland_new (display));
+#endif
if (!window) {
/* subclass returned a NULL window */
GST_WARNING ("Could not create window. user specified %s, creating dummy"
diff --git a/ext/vulkan/wayland/Makefile.am b/ext/vulkan/wayland/Makefile.am
new file mode 100644
index 0000000..f92d85e
--- /dev/null
+++ b/ext/vulkan/wayland/Makefile.am
@@ -0,0 +1,29 @@
+## Process this file with automake to produce Makefile.in
+
+noinst_LTLIBRARIES = libgstvulkan-wayland.la
+
+libgstvulkan_wayland_la_SOURCES = \
+ vkdisplay_wayland.c \
+ vkwindow_wayland.c \
+ wayland_event_source.c
+
+noinst_HEADERS = \
+ vkdisplay_wayland.h \
+ vkwindow_wayland.h \
+ wayland_event_source.h
+
+libgstvulkan_wayland_la_CFLAGS = \
+ -I$(top_srcdir)/gst-libs \
+ -I$(top_srcdir)/ext/vulkan \
+ -I$(top_builddir)/gst-libs \
+ $(GST_PLUGINS_BASE_CFLAGS) \
+ $(GST_BASE_CFLAGS) \
+ $(GST_CFLAGS) \
+ $(WAYLAND_CFLAGS)
+
+libgstvulkan_wayland_la_LIBADD = \
+ $(WAYLAND_LIBS)
+
+libgstvulkan_wayland_la_LDFLAGS = \
+ $(GST_LIB_LDFLAGS) \
+ $(GST_ALL_LDFLAGS)
diff --git a/tests/examples/gl/gtk/gtkvideooverlay/Makefile.in b/ext/vulkan/wayland/Makefile.in
similarity index 76%
copy from tests/examples/gl/gtk/gtkvideooverlay/Makefile.in
copy to ext/vulkan/wayland/Makefile.in
index aef9ed4..a08f213 100644
--- a/tests/examples/gl/gtk/gtkvideooverlay/Makefile.in
+++ b/ext/vulkan/wayland/Makefile.in
@@ -14,6 +14,7 @@
@SET_MAKE@
+
VPATH = @srcdir@
am__is_gnu_make = { \
if test -z '$(MAKELEVEL)'; then \
@@ -89,8 +90,7 @@
build_triplet = @build@
host_triplet = @host@
target_triplet = @target@
-noinst_PROGRAMS = gtkvideooverlay$(EXEEXT)
-subdir = tests/examples/gl/gtk/gtkvideooverlay
+subdir = ext/vulkan/wayland
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
am__aclocal_m4_deps = $(top_srcdir)/common/m4/as-ac-expand.m4 \
$(top_srcdir)/common/m4/as-auto-alt.m4 \
@@ -127,27 +127,29 @@
$(top_srcdir)/m4/progtest.m4 $(top_srcdir)/configure.ac
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
$(ACLOCAL_M4)
-DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
+DIST_COMMON = $(srcdir)/Makefile.am $(noinst_HEADERS) \
+ $(am__DIST_COMMON)
mkinstalldirs = $(install_sh) -d
CONFIG_HEADER = $(top_builddir)/config.h
CONFIG_CLEAN_FILES =
CONFIG_CLEAN_VPATH_FILES =
-PROGRAMS = $(noinst_PROGRAMS)
-am_gtkvideooverlay_OBJECTS = gtkvideooverlay-main.$(OBJEXT)
-gtkvideooverlay_OBJECTS = $(am_gtkvideooverlay_OBJECTS)
+LTLIBRARIES = $(noinst_LTLIBRARIES)
am__DEPENDENCIES_1 =
-gtkvideooverlay_DEPENDENCIES = ../libgstgtkhelper.la \
- $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \
- $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \
- $(am__DEPENDENCIES_1)
+libgstvulkan_wayland_la_DEPENDENCIES = $(am__DEPENDENCIES_1)
+am_libgstvulkan_wayland_la_OBJECTS = \
+ libgstvulkan_wayland_la-vkdisplay_wayland.lo \
+ libgstvulkan_wayland_la-vkwindow_wayland.lo \
+ libgstvulkan_wayland_la-wayland_event_source.lo
+libgstvulkan_wayland_la_OBJECTS = \
+ $(am_libgstvulkan_wayland_la_OBJECTS)
AM_V_lt = $(am__v_lt_@AM_V@)
am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@)
am__v_lt_0 = --silent
am__v_lt_1 =
-gtkvideooverlay_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \
- $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \
- $(gtkvideooverlay_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) \
- $(LDFLAGS) -o $@
+libgstvulkan_wayland_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \
+ $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \
+ $(libgstvulkan_wayland_la_CFLAGS) $(CFLAGS) \
+ $(libgstvulkan_wayland_la_LDFLAGS) $(LDFLAGS) -o $@
AM_V_P = $(am__v_P_@AM_V@)
am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
am__v_P_0 = false
@@ -164,31 +166,32 @@
depcomp = $(SHELL) $(top_srcdir)/depcomp
am__depfiles_maybe = depfiles
am__mv = mv -f
-CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
- $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS)
-LTCXXCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \
- $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) \
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+ $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \
$(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
- $(AM_CXXFLAGS) $(CXXFLAGS)
-AM_V_CXX = $(am__v_CXX_@AM_V@)
-am__v_CXX_ = $(am__v_CXX_@AM_DEFAULT_V@)
-am__v_CXX_0 = @echo " CXX " $@;
-am__v_CXX_1 =
-CXXLD = $(CXX)
-CXXLINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \
- $(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \
- $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
-AM_V_CXXLD = $(am__v_CXXLD_@AM_V@)
-am__v_CXXLD_ = $(am__v_CXXLD_@AM_DEFAULT_V@)
-am__v_CXXLD_0 = @echo " CXXLD " $@;
-am__v_CXXLD_1 =
-SOURCES = $(gtkvideooverlay_SOURCES)
-DIST_SOURCES = $(gtkvideooverlay_SOURCES)
+ $(AM_CFLAGS) $(CFLAGS)
+AM_V_CC = $(am__v_CC_@AM_V@)
+am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@)
+am__v_CC_0 = @echo " CC " $@;
+am__v_CC_1 =
+CCLD = $(CC)
+LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
+ $(AM_LDFLAGS) $(LDFLAGS) -o $@
+AM_V_CCLD = $(am__v_CCLD_@AM_V@)
+am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@)
+am__v_CCLD_0 = @echo " CCLD " $@;
+am__v_CCLD_1 =
+SOURCES = $(libgstvulkan_wayland_la_SOURCES)
+DIST_SOURCES = $(libgstvulkan_wayland_la_SOURCES)
am__can_run_installinfo = \
case $$AM_UPDATE_INFO_DIR in \
n|no|NO) false;; \
*) (install-info --version) >/dev/null 2>&1;; \
esac
+HEADERS = $(noinst_HEADERS)
am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
# Read a list of newline-separated strings from the standard input,
# and print each of them once, without duplicates. Input order is
@@ -274,6 +277,8 @@
DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
DSYMUTIL = @DSYMUTIL@
DTLS_CFLAGS = @DTLS_CFLAGS@
DTLS_LIBS = @DTLS_LIBS@
@@ -489,6 +494,8 @@
LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
LIPO = @LIPO@
LN_S = @LN_S@
LOCALEDIR = @LOCALEDIR@
@@ -615,8 +622,6 @@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
SNDIO_LIBS = @SNDIO_LIBS@
@@ -661,6 +666,8 @@
WAYLAND_LIBS = @WAYLAND_LIBS@
WEBP_CFLAGS = @WEBP_CFLAGS@
WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
WGET = @WGET@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
@@ -749,19 +756,37 @@
top_builddir = @top_builddir@
top_srcdir = @top_srcdir@
wayland_scanner = @wayland_scanner@
-gtkvideooverlay_SOURCES = main.cpp
-gtkvideooverlay_CXXFLAGS = -I$(top_srcdir)/gst-libs -I$(top_builddir)/gst-libs \
- $(GST_PLUGINS_BASE_CFLAGS) $(GST_CXXFLAGS) \
- $(GL_CFLAGS) $(GTK3_CFLAGS) $(X11_CFLAGS)
+noinst_LTLIBRARIES = libgstvulkan-wayland.la
+libgstvulkan_wayland_la_SOURCES = \
+ vkdisplay_wayland.c \
+ vkwindow_wayland.c \
+ wayland_event_source.c
-gtkvideooverlay_LDADD = ../libgstgtkhelper.la \
- $(GTK3_LIBS) $(GST_PLUGINS_BASE_LIBS) $(GST_LIBS) \
- $(GL_LIBS) -lgstvideo-$(GST_API_VERSION) $(X11_LIBS)
+noinst_HEADERS = \
+ vkdisplay_wayland.h \
+ vkwindow_wayland.h \
+ wayland_event_source.h
+
+libgstvulkan_wayland_la_CFLAGS = \
+ -I$(top_srcdir)/gst-libs \
+ -I$(top_srcdir)/ext/vulkan \
+ -I$(top_builddir)/gst-libs \
+ $(GST_PLUGINS_BASE_CFLAGS) \
+ $(GST_BASE_CFLAGS) \
+ $(GST_CFLAGS) \
+ $(WAYLAND_CFLAGS)
+
+libgstvulkan_wayland_la_LIBADD = \
+ $(WAYLAND_LIBS)
+
+libgstvulkan_wayland_la_LDFLAGS = \
+ $(GST_LIB_LDFLAGS) \
+ $(GST_ALL_LDFLAGS)
all: all-am
.SUFFIXES:
-.SUFFIXES: .cpp .lo .o .obj
+.SUFFIXES: .c .lo .o .obj
$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps)
@for dep in $?; do \
case '$(am__configure_deps)' in \
@@ -771,9 +796,9 @@
exit 1;; \
esac; \
done; \
- echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu tests/examples/gl/gtk/gtkvideooverlay/Makefile'; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu ext/vulkan/wayland/Makefile'; \
$(am__cd) $(top_srcdir) && \
- $(AUTOMAKE) --gnu tests/examples/gl/gtk/gtkvideooverlay/Makefile
+ $(AUTOMAKE) --gnu ext/vulkan/wayland/Makefile
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
@case '$?' in \
*config.status*) \
@@ -792,18 +817,19 @@
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
$(am__aclocal_m4_deps):
-clean-noinstPROGRAMS:
- @list='$(noinst_PROGRAMS)'; test -n "$$list" || exit 0; \
- echo " rm -f" $$list; \
- rm -f $$list || exit $$?; \
- test -n "$(EXEEXT)" || exit 0; \
- list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \
- echo " rm -f" $$list; \
- rm -f $$list
+clean-noinstLTLIBRARIES:
+ -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES)
+ @list='$(noinst_LTLIBRARIES)'; \
+ locs=`for p in $$list; do echo $$p; done | \
+ sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \
+ sort -u`; \
+ test -z "$$locs" || { \
+ echo rm -f $${locs}; \
+ rm -f $${locs}; \
+ }
-gtkvideooverlay$(EXEEXT): $(gtkvideooverlay_OBJECTS) $(gtkvideooverlay_DEPENDENCIES) $(EXTRA_gtkvideooverlay_DEPENDENCIES)
- @rm -f gtkvideooverlay$(EXEEXT)
- $(AM_V_CXXLD)$(gtkvideooverlay_LINK) $(gtkvideooverlay_OBJECTS) $(gtkvideooverlay_LDADD) $(LIBS)
+libgstvulkan-wayland.la: $(libgstvulkan_wayland_la_OBJECTS) $(libgstvulkan_wayland_la_DEPENDENCIES) $(EXTRA_libgstvulkan_wayland_la_DEPENDENCIES)
+ $(AM_V_CCLD)$(libgstvulkan_wayland_la_LINK) $(libgstvulkan_wayland_la_OBJECTS) $(libgstvulkan_wayland_la_LIBADD) $(LIBS)
mostlyclean-compile:
-rm -f *.$(OBJEXT)
@@ -811,45 +837,54 @@
distclean-compile:
-rm -f *.tab.c
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gtkvideooverlay-main.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstvulkan_wayland_la-vkdisplay_wayland.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstvulkan_wayland_la-vkwindow_wayland.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstvulkan_wayland_la-wayland_event_source.Plo@am__quote@
-.cpp.o:
-@am__fastdepCXX_TRUE@ $(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\
-@am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\
-@am__fastdepCXX_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ $<
+.c.o:
+@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\
+@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\
+@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $<
-.cpp.obj:
-@am__fastdepCXX_TRUE@ $(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\
-@am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\
-@am__fastdepCXX_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
+.c.obj:
+@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\
+@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\
+@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
-.cpp.lo:
-@am__fastdepCXX_TRUE@ $(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\
-@am__fastdepCXX_TRUE@ $(LTCXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\
-@am__fastdepCXX_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Plo
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LTCXXCOMPILE) -c -o $@ $<
+.c.lo:
+@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\
+@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\
+@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $<
-gtkvideooverlay-main.o: main.cpp
-@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gtkvideooverlay_CXXFLAGS) $(CXXFLAGS) -MT gtkvideooverlay-main.o -MD -MP -MF $(DEPDIR)/gtkvideooverlay-main.Tpo -c -o gtkvideooverlay-main.o `test -f 'main.cpp' || echo '$(srcdir)/'`main.cpp
-@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/gtkvideooverlay-main.Tpo $(DEPDIR)/gtkvideooverlay-main.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='main.cpp' object='gtkvideooverlay-main.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gtkvideooverlay_CXXFLAGS) $(CXXFLAGS) -c -o gtkvideooverlay-main.o `test -f 'main.cpp' || echo '$(srcdir)/'`main.cpp
+libgstvulkan_wayland_la-vkdisplay_wayland.lo: vkdisplay_wayland.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstvulkan_wayland_la_CFLAGS) $(CFLAGS) -MT libgstvulkan_wayland_la-vkdisplay_wayland.lo -MD -MP -MF $(DEPDIR)/libgstvulkan_wayland_la-vkdisplay_wayland.Tpo -c -o libgstvulkan_wayland_la-vkdisplay_wayland.lo `test -f 'vkdisplay_wayland.c' || echo '$(srcdir)/'`vkdisplay_wayland.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgstvulkan_wayland_la-vkdisplay_wayland.Tpo $(DEPDIR)/libgstvulkan_wayland_la-vkdisplay_wayland.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='vkdisplay_wayland.c' object='libgstvulkan_wayland_la-vkdisplay_wayland.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 $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstvulkan_wayland_la_CFLAGS) $(CFLAGS) -c -o libgstvulkan_wayland_la-vkdisplay_wayland.lo `test -f 'vkdisplay_wayland.c' || echo '$(srcdir)/'`vkdisplay_wayland.c
-gtkvideooverlay-main.obj: main.cpp
-@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gtkvideooverlay_CXXFLAGS) $(CXXFLAGS) -MT gtkvideooverlay-main.obj -MD -MP -MF $(DEPDIR)/gtkvideooverlay-main.Tpo -c -o gtkvideooverlay-main.obj `if test -f 'main.cpp'; then $(CYGPATH_W) 'main.cpp'; else $(CYGPATH_W) '$(srcdir)/main.cpp'; fi`
-@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/gtkvideooverlay-main.Tpo $(DEPDIR)/gtkvideooverlay-main.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='main.cpp' object='gtkvideooverlay-main.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gtkvideooverlay_CXXFLAGS) $(CXXFLAGS) -c -o gtkvideooverlay-main.obj `if test -f 'main.cpp'; then $(CYGPATH_W) 'main.cpp'; else $(CYGPATH_W) '$(srcdir)/main.cpp'; fi`
+libgstvulkan_wayland_la-vkwindow_wayland.lo: vkwindow_wayland.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstvulkan_wayland_la_CFLAGS) $(CFLAGS) -MT libgstvulkan_wayland_la-vkwindow_wayland.lo -MD -MP -MF $(DEPDIR)/libgstvulkan_wayland_la-vkwindow_wayland.Tpo -c -o libgstvulkan_wayland_la-vkwindow_wayland.lo `test -f 'vkwindow_wayland.c' || echo '$(srcdir)/'`vkwindow_wayland.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgstvulkan_wayland_la-vkwindow_wayland.Tpo $(DEPDIR)/libgstvulkan_wayland_la-vkwindow_wayland.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='vkwindow_wayland.c' object='libgstvulkan_wayland_la-vkwindow_wayland.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 $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstvulkan_wayland_la_CFLAGS) $(CFLAGS) -c -o libgstvulkan_wayland_la-vkwindow_wayland.lo `test -f 'vkwindow_wayland.c' || echo '$(srcdir)/'`vkwindow_wayland.c
+
+libgstvulkan_wayland_la-wayland_event_source.lo: wayland_event_source.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstvulkan_wayland_la_CFLAGS) $(CFLAGS) -MT libgstvulkan_wayland_la-wayland_event_source.lo -MD -MP -MF $(DEPDIR)/libgstvulkan_wayland_la-wayland_event_source.Tpo -c -o libgstvulkan_wayland_la-wayland_event_source.lo `test -f 'wayland_event_source.c' || echo '$(srcdir)/'`wayland_event_source.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgstvulkan_wayland_la-wayland_event_source.Tpo $(DEPDIR)/libgstvulkan_wayland_la-wayland_event_source.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='wayland_event_source.c' object='libgstvulkan_wayland_la-wayland_event_source.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 $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstvulkan_wayland_la_CFLAGS) $(CFLAGS) -c -o libgstvulkan_wayland_la-wayland_event_source.lo `test -f 'wayland_event_source.c' || echo '$(srcdir)/'`wayland_event_source.c
mostlyclean-libtool:
-rm -f *.lo
@@ -941,7 +976,7 @@
done
check-am: all-am
check: check-am
-all-am: Makefile $(PROGRAMS)
+all-am: Makefile $(LTLIBRARIES) $(HEADERS)
installdirs:
install: install-am
install-exec: install-exec-am
@@ -975,7 +1010,7 @@
@echo "it deletes files that may require special tools to rebuild."
clean: clean-am
-clean-am: clean-generic clean-libtool clean-noinstPROGRAMS \
+clean-am: clean-generic clean-libtool clean-noinstLTLIBRARIES \
mostlyclean-am
distclean: distclean-am
@@ -1047,7 +1082,7 @@
.MAKE: install-am install-strip
.PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \
- clean-libtool clean-noinstPROGRAMS cscopelist-am ctags \
+ clean-libtool clean-noinstLTLIBRARIES cscopelist-am ctags \
ctags-am distclean distclean-compile distclean-generic \
distclean-libtool distclean-tags distdir dvi dvi-am html \
html-am info info-am install install-am install-data \
diff --git a/ext/vulkan/wayland/vkdisplay_wayland.c b/ext/vulkan/wayland/vkdisplay_wayland.c
new file mode 100644
index 0000000..686d671
--- /dev/null
+++ b/ext/vulkan/wayland/vkdisplay_wayland.c
@@ -0,0 +1,189 @@
+/*
+ * GStreamer
+ * Copyright (C) 2016 Matthew Waters <matthew@centricular.com>
+ *
+ * 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.
+ */
+
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#include "wayland/vkdisplay_wayland.h"
+#include "wayland_event_source.h"
+
+GST_DEBUG_CATEGORY_STATIC (gst_vulkan_display_wayland_debug);
+#define GST_CAT_DEFAULT gst_vulkan_display_wayland_debug
+
+G_DEFINE_TYPE_WITH_CODE (GstVulkanDisplayWayland, gst_vulkan_display_wayland,
+ GST_TYPE_VULKAN_DISPLAY, GST_DEBUG_CATEGORY_INIT (GST_CAT_DEFAULT,
+ "vulkandisplaywayland", 0, "Vulkan Wayland Display");
+ );
+
+static void gst_vulkan_display_wayland_finalize (GObject * object);
+static gpointer gst_vulkan_display_wayland_get_handle (GstVulkanDisplay *
+ display);
+
+static void
+registry_handle_global (void *data, struct wl_registry *registry,
+ uint32_t name, const char *interface, uint32_t version)
+{
+ GstVulkanDisplayWayland *display = data;
+
+ GST_TRACE_OBJECT (display, "registry_handle_global with registry %p, "
+ "interface %s, version %u", registry, interface, version);
+
+ if (g_strcmp0 (interface, "wl_compositor") == 0) {
+ display->compositor =
+ wl_registry_bind (registry, name, &wl_compositor_interface, 1);
+ } else if (g_strcmp0 (interface, "wl_subcompositor") == 0) {
+ display->subcompositor =
+ wl_registry_bind (registry, name, &wl_subcompositor_interface, 1);
+ } else if (g_strcmp0 (interface, "wl_shell") == 0) {
+ display->shell = wl_registry_bind (registry, name, &wl_shell_interface, 1);
+ }
+}
+
+static const struct wl_registry_listener registry_listener = {
+ registry_handle_global
+};
+
+static void
+_connect_listeners (GstVulkanDisplayWayland * display)
+{
+ display->registry = wl_display_get_registry (display->display);
+ wl_registry_add_listener (display->registry, ®istry_listener, display);
+
+ wl_display_roundtrip (display->display);
+}
+
+static void
+gst_vulkan_display_wayland_class_init (GstVulkanDisplayWaylandClass * klass)
+{
+ GST_VULKAN_DISPLAY_CLASS (klass)->get_handle =
+ GST_DEBUG_FUNCPTR (gst_vulkan_display_wayland_get_handle);
+
+ G_OBJECT_CLASS (klass)->finalize = gst_vulkan_display_wayland_finalize;
+}
+
+static void
+gst_vulkan_display_wayland_init (GstVulkanDisplayWayland * display_wayland)
+{
+ GstVulkanDisplay *display = (GstVulkanDisplay *) display_wayland;
+
+ display->type = GST_VULKAN_DISPLAY_TYPE_WAYLAND;
+ display_wayland->foreign_display = FALSE;
+}
+
+static void
+gst_vulkan_display_wayland_finalize (GObject * object)
+{
+ GstVulkanDisplayWayland *display_wayland =
+ GST_VULKAN_DISPLAY_WAYLAND (object);
+
+ if (!display_wayland->foreign_display && display_wayland->display) {
+ wl_display_flush (display_wayland->display);
+ wl_display_disconnect (display_wayland->display);
+ }
+
+ G_OBJECT_CLASS (gst_vulkan_display_wayland_parent_class)->finalize (object);
+}
+
+/**
+ * gst_vulkan_display_wayland_new:
+ * @name: (allow-none): a display name
+ *
+ * Create a new #GstVulkanDisplayWayland from the wayland display name. See wl_display_connect()
+ * for details on what is a valid name.
+ *
+ * Returns: (transfer full): a new #GstVulkanDisplayWayland or %NULL
+ */
+GstVulkanDisplayWayland *
+gst_vulkan_display_wayland_new (const gchar * name)
+{
+ GstVulkanDisplayWayland *ret;
+
+ ret = g_object_new (GST_TYPE_VULKAN_DISPLAY_WAYLAND, NULL);
+ ret->display = wl_display_connect (name);
+
+ if (!ret->display) {
+ GST_ERROR ("Failed to open Wayland display connection with name, \'%s\'",
+ name);
+ return NULL;
+ }
+
+ /* connecting the listeners after attaching the event source will race with
+ * the source and the source may eat an event that we're waiting for and
+ * deadlock */
+ _connect_listeners (ret);
+
+ GST_VULKAN_DISPLAY (ret)->event_source =
+ wayland_event_source_new (ret->display, NULL);
+ g_source_attach (GST_VULKAN_DISPLAY (ret)->event_source,
+ GST_VULKAN_DISPLAY (ret)->main_context);
+
+ return ret;
+}
+
+/**
+ * gst_vulkan_display_wayland_new_with_display:
+ * @display: an existing, wayland display
+ *
+ * Creates a new display connection from a wl_display Display.
+ *
+ * Returns: (transfer full): a new #GstVulkanDisplayWayland
+ */
+GstVulkanDisplayWayland *
+gst_vulkan_display_wayland_new_with_display (struct wl_display * display)
+{
+ GstVulkanDisplayWayland *ret;
+
+ g_return_val_if_fail (display != NULL, NULL);
+
+ ret = g_object_new (GST_TYPE_VULKAN_DISPLAY_WAYLAND, NULL);
+
+ ret->display = display;
+ ret->foreign_display = TRUE;
+
+ _connect_listeners (ret);
+
+ return ret;
+}
+
+static gpointer
+gst_vulkan_display_wayland_get_handle (GstVulkanDisplay * display)
+{
+ return GST_VULKAN_DISPLAY_WAYLAND (display)->display;
+}
+
+static gboolean
+_roundtrip_async (gpointer data)
+{
+ GstVulkanDisplayWayland *display = data;
+
+ wl_display_roundtrip (display->display);
+
+ return G_SOURCE_REMOVE;
+}
+
+void
+gst_vulkan_display_wayland_roundtrip_async (GstVulkanDisplayWayland * display)
+{
+ g_return_if_fail (GST_IS_VULKAN_DISPLAY_WAYLAND (display));
+
+ g_main_context_invoke (GST_VULKAN_DISPLAY (display)->main_context,
+ (GSourceFunc) _roundtrip_async, display);
+}
diff --git a/ext/vulkan/wayland/vkdisplay_wayland.h b/ext/vulkan/wayland/vkdisplay_wayland.h
new file mode 100644
index 0000000..44c1340
--- /dev/null
+++ b/ext/vulkan/wayland/vkdisplay_wayland.h
@@ -0,0 +1,78 @@
+/*
+ * GStreamer
+ * Copyright (C) 2016 Matthew Waters <matthew@centricular.com>
+ *
+ * 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.
+ */
+
+#ifndef __GST_VK_DISPLAY_WAYLAND_H__
+#define __GST_VK_DISPLAY_WAYLAND_H__
+
+#include <gst/gst.h>
+
+#include <wayland-client.h>
+
+#include <vk.h>
+
+G_BEGIN_DECLS
+
+GType gst_vulkan_display_wayland_get_type (void);
+
+#define GST_TYPE_VULKAN_DISPLAY_WAYLAND (gst_vulkan_display_wayland_get_type())
+#define GST_VULKAN_DISPLAY_WAYLAND(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj),GST_TYPE_VULKAN_DISPLAY_WAYLAND,GstVulkanDisplayWayland))
+#define GST_VULKAN_DISPLAY_WAYLAND_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass), GST_TYPE_VULKAN_DISPLAY_WAYLAND,GstVulkanDisplayWaylandClass))
+#define GST_IS_VULKAN_DISPLAY_WAYLAND(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj),GST_TYPE_VULKAN_DISPLAY_WAYLAND))
+#define GST_IS_VULKAN_DISPLAY_WAYLAND_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE((klass), GST_TYPE_VULKAN_DISPLAY_WAYLAND))
+#define GST_VULKAN_DISPLAY_WAYLAND_CAST(obj) ((GstVulkanDisplayWayland*)(obj))
+
+typedef struct _GstVulkanDisplayWayland GstVulkanDisplayWayland;
+typedef struct _GstVulkanDisplayWaylandClass GstVulkanDisplayWaylandClass;
+
+/**
+ * GstVulkanDisplayWayland:
+ *
+ * the contents of a #GstVulkanDisplayWayland are private and should only be accessed
+ * through the provided API
+ */
+struct _GstVulkanDisplayWayland
+{
+ GstVulkanDisplay parent;
+
+ struct wl_display *display;
+ struct wl_registry *registry;
+ struct wl_compositor *compositor;
+ struct wl_subcompositor *subcompositor;
+ struct wl_shell *shell;
+
+ /* <private> */
+ gboolean foreign_display;
+};
+
+struct _GstVulkanDisplayWaylandClass
+{
+ GstVulkanDisplayClass object_class;
+};
+
+#define GST_VULKAN_DISPLAY_WAYLAND_DISPLAY(display_) (GST_VULKAN_DISPLAY_WAYLAND (display_)->display)
+
+GstVulkanDisplayWayland *gst_vulkan_display_wayland_new (const gchar * name);
+GstVulkanDisplayWayland *gst_vulkan_display_wayland_new_with_display (struct wl_display *display);
+
+void gst_vulkan_display_wayland_roundtrip_async (GstVulkanDisplayWayland * display);
+
+G_END_DECLS
+
+#endif /* __GST_VULKAN_DISPLAY_WAYLAND_H__ */
diff --git a/ext/vulkan/wayland/vkwindow_wayland.c b/ext/vulkan/wayland/vkwindow_wayland.c
new file mode 100644
index 0000000..dc99027
--- /dev/null
+++ b/ext/vulkan/wayland/vkwindow_wayland.c
@@ -0,0 +1,285 @@
+/*
+ * GStreamer
+ * Copyright (C) 2016 Matthew Waters <matthew@centricular.com>
+ *
+ * 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.
+ */
+
+#define GLIB_DISABLE_DEPRECATION_WARNINGS
+
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#include <linux/input.h>
+
+#include "wayland_event_source.h"
+
+#include "vkdisplay_wayland.h"
+#include "vkwindow_wayland.h"
+
+#define GST_CAT_DEFAULT gst_vulkan_window_wayland_debug
+GST_DEBUG_CATEGORY_STATIC (GST_CAT_DEFAULT);
+
+#define gst_vulkan_window_wayland_parent_class parent_class
+G_DEFINE_TYPE (GstVulkanWindowWayland, gst_vulkan_window_wayland,
+ GST_TYPE_VULKAN_WINDOW)
+
+ static void gst_vulkan_window_wayland_close (GstVulkanWindow * window);
+ static gboolean gst_vulkan_window_wayland_open (GstVulkanWindow * window,
+ GError ** error);
+ static VkSurfaceKHR gst_vulkan_window_wayland_get_surface (GstVulkanWindow
+ * window, GError ** error);
+ static gboolean
+ gst_vulkan_window_wayland_get_presentation_support (GstVulkanWindow *
+ window, GstVulkanDevice * device, guint32 queue_family_idx);
+
+ static void
+ handle_ping (void *data, struct wl_shell_surface *shell_surface,
+ uint32_t serial)
+{
+ GstVulkanWindowWayland *window_wl = data;
+
+ GST_TRACE_OBJECT (window_wl, "ping received serial %u", serial);
+
+ wl_shell_surface_pong (shell_surface, serial);
+}
+
+/*
+static void window_resize (GstVulkanWindowWayland * window_wl, guint width,
+ guint height);*/
+
+static void
+handle_configure (void *data, struct wl_shell_surface *shell_surface,
+ uint32_t edges, int32_t width, int32_t height)
+{
+ GstVulkanWindowWayland *window_wl = data;
+
+ GST_DEBUG_OBJECT (window_wl, "configure event on surface %p, %ix%i",
+ shell_surface, width, height);
+
+ /*window_resize (window_wl, width, height); */
+}
+
+static void
+handle_popup_done (void *data, struct wl_shell_surface *shell_surface)
+{
+}
+
+static const struct wl_shell_surface_listener shell_surface_listener = {
+ handle_ping,
+ handle_configure,
+ handle_popup_done
+};
+
+static void
+destroy_surfaces (GstVulkanWindowWayland * window_wl)
+{
+ GST_DEBUG_OBJECT (window_wl, "destroying created surfaces");
+
+ if (window_wl->shell_surface) {
+ wl_shell_surface_destroy (window_wl->shell_surface);
+ window_wl->shell_surface = NULL;
+ }
+ if (window_wl->surface) {
+ wl_surface_destroy (window_wl->surface);
+ window_wl->surface = NULL;
+ }
+}
+
+static void
+create_surfaces (GstVulkanWindowWayland * window_wl)
+{
+ GstVulkanDisplayWayland *display =
+ GST_VULKAN_DISPLAY_WAYLAND (GST_VULKAN_WINDOW (window_wl)->display);
+ gint width, height;
+
+ if (!window_wl->surface) {
+ window_wl->surface = wl_compositor_create_surface (display->compositor);
+ if (window_wl->queue)
+ wl_proxy_set_queue ((struct wl_proxy *) window_wl->surface,
+ window_wl->queue);
+ }
+
+ if (!window_wl->shell_surface) {
+ window_wl->shell_surface =
+ wl_shell_get_shell_surface (display->shell, window_wl->surface);
+ if (window_wl->queue)
+ wl_proxy_set_queue ((struct wl_proxy *) window_wl->shell_surface,
+ window_wl->queue);
+
+ wl_shell_surface_add_listener (window_wl->shell_surface,
+ &shell_surface_listener, window_wl);
+
+ wl_shell_surface_set_title (window_wl->shell_surface, "Vulkan Renderer");
+ wl_shell_surface_set_toplevel (window_wl->shell_surface);
+ GST_DEBUG_OBJECT (window_wl, "Successfully created shell surface %p",
+ window_wl->shell_surface);
+ }
+
+ if (window_wl->window_width > 0)
+ width = window_wl->window_width;
+ else
+ width = 320;
+ window_wl->window_width = width;
+
+ if (window_wl->window_height > 0)
+ height = window_wl->window_height;
+ else
+ height = 240;
+ window_wl->window_height = height;
+}
+
+static void
+gst_vulkan_window_wayland_class_init (GstVulkanWindowWaylandClass * klass)
+{
+ GstVulkanWindowClass *window_class = (GstVulkanWindowClass *) klass;
+
+ window_class->close = GST_DEBUG_FUNCPTR (gst_vulkan_window_wayland_close);
+ window_class->open = GST_DEBUG_FUNCPTR (gst_vulkan_window_wayland_open);
+ window_class->get_surface =
+ GST_DEBUG_FUNCPTR (gst_vulkan_window_wayland_get_surface);
+ window_class->get_presentation_support =
+ GST_DEBUG_FUNCPTR (gst_vulkan_window_wayland_get_presentation_support);
+}
+
+static void
+gst_vulkan_window_wayland_init (GstVulkanWindowWayland * window)
+{
+}
+
+GstVulkanWindowWayland *
+gst_vulkan_window_wayland_new (GstVulkanDisplay * display)
+{
+ if ((gst_vulkan_display_get_handle_type (display) &
+ GST_VULKAN_DISPLAY_TYPE_WAYLAND)
+ == 0)
+ /* we require a wayland display to create wayland surfaces */
+ return NULL;
+
+ GST_DEBUG ("creating Wayland window");
+
+ return g_object_new (GST_TYPE_VULKAN_WINDOW_WAYLAND, NULL);
+}
+
+static void
+gst_vulkan_window_wayland_close (GstVulkanWindow * window)
+{
+ GstVulkanWindowWayland *window_wl;
+
+ window_wl = GST_VULKAN_WINDOW_WAYLAND (window);
+
+ destroy_surfaces (window_wl);
+
+ g_source_destroy (window_wl->wl_source);
+ g_source_unref (window_wl->wl_source);
+ window_wl->wl_source = NULL;
+
+ GST_VULKAN_WINDOW_CLASS (parent_class)->close (window);
+}
+
+static gboolean
+gst_vulkan_window_wayland_open (GstVulkanWindow * window, GError ** error)
+{
+ GstVulkanDisplayWayland *display;
+ GstVulkanWindowWayland *window_wl = GST_VULKAN_WINDOW_WAYLAND (window);
+
+ if (!GST_IS_VULKAN_DISPLAY_WAYLAND (window->display)) {
+ g_set_error (error, GST_VULKAN_WINDOW_ERROR,
+ GST_VULKAN_WINDOW_ERROR_RESOURCE_UNAVAILABLE,
+ "Failed to retrieve Wayland display (wrong type?)");
+ return FALSE;
+ }
+ display = GST_VULKAN_DISPLAY_WAYLAND (window->display);
+
+ if (!display->display) {
+ g_set_error (error, GST_VULKAN_WINDOW_ERROR,
+ GST_VULKAN_WINDOW_ERROR_RESOURCE_UNAVAILABLE,
+ "Failed to retrieve Wayland display");
+ return FALSE;
+ }
+
+ window_wl->queue = NULL;
+
+ if (!GST_VULKAN_WINDOW_CLASS (parent_class)->open (window, error))
+ return FALSE;
+
+ create_surfaces (window_wl);
+
+ gst_vulkan_display_wayland_roundtrip_async (display);
+
+ return TRUE;
+}
+
+static VkSurfaceKHR
+gst_vulkan_window_wayland_get_surface (GstVulkanWindow * window,
+ GError ** error)
+{
+ GstVulkanWindowWayland *window_wl = GST_VULKAN_WINDOW_WAYLAND (window);
+ VkWaylandSurfaceCreateInfoKHR info = { 0, };
+ VkSurfaceKHR ret;
+ VkResult err;
+
+ info.sType = VK_STRUCTURE_TYPE_WAYLAND_SURFACE_CREATE_INFO_KHR;
+ info.pNext = NULL;
+ info.flags = 0;
+ info.display = GST_VULKAN_DISPLAY_WAYLAND_DISPLAY (window->display);
+ info.surface = window_wl->surface;
+
+ if (!window_wl->CreateWaylandSurface)
+ window_wl->CreateWaylandSurface =
+ gst_vulkan_instance_get_proc_address (window->display->instance,
+ "vkCreateWaylandSurfaceKHR");
+ if (!window_wl->CreateWaylandSurface) {
+ g_set_error_literal (error, GST_VULKAN_ERROR, VK_ERROR_FEATURE_NOT_PRESENT,
+ "Could not retrieve \"vkCreateWaylandSurfaceKHR\" function pointer");
+ return NULL;
+ }
+
+ err =
+ window_wl->CreateWaylandSurface (window->display->instance->instance,
+ &info, NULL, &ret);
+ if (gst_vulkan_error_to_g_error (err, error, "vkCreateWaylandSurfaceKHR") < 0)
+ return NULL;
+
+ return ret;
+}
+
+static gboolean
+gst_vulkan_window_wayland_get_presentation_support (GstVulkanWindow * window,
+ GstVulkanDevice * device, guint32 queue_family_idx)
+{
+ GstVulkanWindowWayland *window_wl = GST_VULKAN_WINDOW_WAYLAND (window);
+ VkPhysicalDevice gpu;
+
+ if (!window_wl->GetPhysicalDeviceWaylandPresentationSupport)
+ window_wl->GetPhysicalDeviceWaylandPresentationSupport =
+ gst_vulkan_instance_get_proc_address (window->display->instance,
+ "vkGetPhysicalDeviceWaylandPresentationSupportKHR");
+ if (!window_wl->GetPhysicalDeviceWaylandPresentationSupport) {
+ GST_WARNING_OBJECT (window, "Could not retrieve "
+ "\"vkGetPhysicalDeviceWaylandPresentationSupportKHR\" "
+ "function pointer");
+ return FALSE;
+ }
+
+ gpu = gst_vulkan_device_get_physical_device (device);
+ if (window_wl->GetPhysicalDeviceWaylandPresentationSupport (gpu,
+ queue_family_idx,
+ GST_VULKAN_DISPLAY_WAYLAND_DISPLAY (window->display)))
+ return TRUE;
+ return FALSE;
+}
diff --git a/ext/vulkan/wayland/vkwindow_wayland.h b/ext/vulkan/wayland/vkwindow_wayland.h
new file mode 100644
index 0000000..3d181f8
--- /dev/null
+++ b/ext/vulkan/wayland/vkwindow_wayland.h
@@ -0,0 +1,74 @@
+/*
+ * GStreamer
+ * Copyright (C) 2016 Matthew Waters <matthew@centricular.com>
+ *
+ * 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.
+ */
+
+#ifndef __GST_VK_WINDOW_WAYLAND_H__
+#define __GST_VK_WINDOW_WAYLAND_H__
+
+#include <wayland-client.h>
+#include <wayland-cursor.h>
+
+#include <vk.h>
+
+G_BEGIN_DECLS
+
+#define GST_TYPE_VULKAN_WINDOW_WAYLAND (gst_vulkan_window_wayland_get_type())
+#define GST_VULKAN_WINDOW_WAYLAND(o) (G_TYPE_CHECK_INSTANCE_CAST((o), GST_TYPE_VULKAN_WINDOW_WAYLAND, GstVulkanWindowWayland))
+#define GST_VULKAN_WINDOW_WAYLAND_CLASS(k) (G_TYPE_CHECK_CLASS((k), GST_TYPE_VULKAN_WINDOW_WAYLAND, GstVulkanWindowWaylandClass))
+#define GST_IS_VULKAN_WINDOW_WAYLAND(o) (G_TYPE_CHECK_INSTANCE_TYPE((o), GST_TYPE_VULKAN_WINDOW_WAYLAND))
+#define GST_IS_VULKAN_WINDOW_WAYLAND_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE((k), GST_TYPE_VULKAN_WINDOW_WAYLAND))
+#define GST_VULKAN_WINDOW_WAYLAND_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS((o), GST_TYPE_VULKAN_WINDOW_WAYLAND, GstVulkanWindowWaylandClass))
+
+typedef struct _GstVulkanWindowWayland GstVulkanWindowWayland;
+typedef struct _GstVulkanWindowWaylandClass GstVulkanWindowWaylandClass;
+
+struct _GstVulkanWindowWayland {
+ /*< private >*/
+ GstVulkanWindow parent;
+
+ PFN_vkCreateWaylandSurfaceKHR CreateWaylandSurface;
+ PFN_vkGetPhysicalDeviceWaylandPresentationSupportKHR GetPhysicalDeviceWaylandPresentationSupport;
+
+ struct wl_event_queue *queue;
+ struct wl_surface *surface;
+ struct wl_shell_surface *shell_surface;
+ struct wl_callback *callback;
+
+ int window_width, window_height;
+
+ GSource *wl_source;
+
+ gpointer _reserved[GST_PADDING];
+};
+
+struct _GstVulkanWindowWaylandClass {
+ /*< private >*/
+ GstVulkanWindowClass parent_class;
+
+ /*< private >*/
+ gpointer _reserved[GST_PADDING];
+};
+
+GType gst_vulkan_window_wayland_get_type (void);
+
+GstVulkanWindowWayland * gst_vulkan_window_wayland_new (GstVulkanDisplay * display);
+
+G_END_DECLS
+
+#endif /* __GST_GL_WINDOW_X11_H__ */
diff --git a/ext/vulkan/wayland/wayland_event_source.c b/ext/vulkan/wayland/wayland_event_source.c
new file mode 100644
index 0000000..e1ae1ef
--- /dev/null
+++ b/ext/vulkan/wayland/wayland_event_source.c
@@ -0,0 +1,205 @@
+/*
+ * GStreamer
+ * Copyright (C) 2010 Intel Corporation.
+ * Copyright (C) 2012 Matthew Waters <ystreet00@gmail.com>
+ * Copyright (C) 2016 Matthew Waters <matthew@centricular.com>
+ *
+ * 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.
+ *
+ * Authors:
+ * Matthew Allum
+ * Robert Bragg
+ * Kristian Høgsberg
+ */
+
+/* code originally from clutter's wayland backend found here
+ * http://git.gnome.org/browse/clutter/tree/clutter/wayland/clutter-event-wayland.c
+ */
+
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#include <stdint.h>
+#include <stdlib.h>
+#include <wayland-client.h>
+
+#include "wayland_event_source.h"
+
+static void
+sync_callback (void *data, struct wl_callback *callback, uint32_t serial)
+{
+ gboolean *done = data;
+
+ *done = TRUE;
+ wl_callback_destroy (callback);
+}
+
+static const struct wl_callback_listener sync_listener = {
+ sync_callback
+};
+
+/* only thread safe iff called on the same thread @queue is being dispatched on */
+gint
+gst_vulkan_wl_display_roundtrip_queue (struct wl_display *display,
+ struct wl_event_queue *queue)
+{
+ struct wl_callback *callback;
+ gboolean done = FALSE;
+ gint ret = 0;
+
+ if (queue) {
+ /* creating a wl_proxy and setting the queue is racy with the dispatching
+ * of the default queue */
+ while (wl_display_prepare_read_queue (display, queue) != 0) {
+ if ((ret = wl_display_dispatch_queue_pending (display, queue)) < 0)
+ return ret;
+ }
+ }
+ if (!(callback = wl_display_sync (display))) {
+ return -1;
+ }
+ wl_callback_add_listener (callback, &sync_listener, &done);
+ if (queue) {
+ wl_proxy_set_queue ((struct wl_proxy *) callback, queue);
+ wl_display_cancel_read (display);
+ while (!done && ret >= 0)
+ ret = wl_display_dispatch_queue (display, queue);
+ } else {
+ while (!done && ret >= 0)
+ ret = wl_display_dispatch (display);
+ }
+
+ if (ret == -1 && !done)
+ wl_callback_destroy (callback);
+
+ return ret;
+}
+
+typedef struct _WaylandEventSource
+{
+ GSource source;
+ GPollFD pfd;
+ uint32_t mask;
+ struct wl_display *display;
+ struct wl_event_queue *queue;
+ gboolean reading;
+} WaylandEventSource;
+
+static gboolean
+wayland_event_source_prepare (GSource * base, gint * timeout)
+{
+ WaylandEventSource *source = (WaylandEventSource *) base;
+
+ *timeout = -1;
+
+ /* we may be called multiple times for prepare */
+ if (source->reading)
+ wl_display_cancel_read (source->display);
+
+ if (source->queue) {
+ while (wl_display_prepare_read_queue (source->display, source->queue) != 0) {
+ if (wl_display_dispatch_queue_pending (source->display,
+ source->queue) < 0) {
+ g_critical ("Failed to dispatch pending events\n");
+ }
+ }
+ } else {
+ while (wl_display_prepare_read (source->display) != 0) {
+ if (wl_display_dispatch_pending (source->display) < 0) {
+ g_critical ("Failed to dispatch pending events\n");
+ }
+ }
+ }
+ source->reading = TRUE;
+
+ /* FIXME: this may return EAGAIN if the fd is full */
+ if (wl_display_flush (source->display) < 0)
+ g_critical ("Failed to flush Wayland connection\n");
+
+ return FALSE;
+}
+
+static gboolean
+wayland_event_source_check (GSource * base)
+{
+ WaylandEventSource *source = (WaylandEventSource *) base;
+ gboolean retval;
+
+ retval = source->pfd.revents;
+
+ if (source->pfd.revents & G_IO_IN) {
+ wl_display_read_events (source->display);
+ } else {
+ wl_display_cancel_read (source->display);
+ }
+ source->reading = FALSE;
+
+ return retval;
+}
+
+static gboolean
+wayland_event_source_dispatch (GSource * base,
+ GSourceFunc callback, gpointer data)
+{
+ WaylandEventSource *source = (WaylandEventSource *) base;
+
+ if (source->queue)
+ wl_display_dispatch_queue_pending (source->display, source->queue);
+ else
+ wl_display_dispatch_pending (source->display);
+ source->pfd.revents = 0;
+
+ if (callback)
+ callback (data);
+
+ return TRUE;
+}
+
+static void
+wayland_event_source_finalize (GSource * base)
+{
+ WaylandEventSource *source = (WaylandEventSource *) base;
+
+ if (source->reading) {
+ wl_display_cancel_read (source->display);
+ }
+ source->reading = FALSE;
+}
+
+static GSourceFuncs wayland_event_source_funcs = {
+ wayland_event_source_prepare,
+ wayland_event_source_check,
+ wayland_event_source_dispatch,
+ wayland_event_source_finalize
+};
+
+GSource *
+wayland_event_source_new (struct wl_display *display,
+ struct wl_event_queue *queue)
+{
+ WaylandEventSource *source;
+
+ source = (WaylandEventSource *)
+ g_source_new (&wayland_event_source_funcs, sizeof (WaylandEventSource));
+ source->display = display;
+ source->queue = queue;
+ source->pfd.fd = wl_display_get_fd (display);
+ source->pfd.events = G_IO_IN | G_IO_ERR;
+ g_source_add_poll (&source->source, &source->pfd);
+
+ return &source->source;
+}
diff --git a/ext/vulkan/wayland/wayland_event_source.h b/ext/vulkan/wayland/wayland_event_source.h
new file mode 100644
index 0000000..25ffe7b
--- /dev/null
+++ b/ext/vulkan/wayland/wayland_event_source.h
@@ -0,0 +1,34 @@
+/*
+ * GStreamer
+ * Copyright (C) 2016 Matthew Waters <matthew@centricular.com>
+ *
+ * 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.
+ */
+
+#ifndef __WAYLAND_EVENT_SOURCE_H__
+#define __WAYLAND_EVENT_SOURCE_H__
+
+#include <glib-object.h>
+
+#include <wayland-client.h>
+
+GSource * wayland_event_source_new (struct wl_display *display,
+ struct wl_event_queue *queue);
+
+G_GNUC_INTERNAL gint gst_vulkan_wl_display_roundtrip_queue (struct wl_display *display,
+ struct wl_event_queue *queue);
+
+#endif /* __WAYLAND_EVENT_SOURCE_H__ */
diff --git a/ext/vulkan/xcb/Makefile.in b/ext/vulkan/xcb/Makefile.in
index 672fed9..0d12c0e 100644
--- a/ext/vulkan/xcb/Makefile.in
+++ b/ext/vulkan/xcb/Makefile.in
@@ -275,6 +275,8 @@
DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
DSYMUTIL = @DSYMUTIL@
DTLS_CFLAGS = @DTLS_CFLAGS@
DTLS_LIBS = @DTLS_LIBS@
@@ -490,6 +492,8 @@
LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
LIPO = @LIPO@
LN_S = @LN_S@
LOCALEDIR = @LOCALEDIR@
@@ -616,8 +620,6 @@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
SNDIO_LIBS = @SNDIO_LIBS@
@@ -662,6 +664,8 @@
WAYLAND_LIBS = @WAYLAND_LIBS@
WEBP_CFLAGS = @WEBP_CFLAGS@
WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
WGET = @WGET@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
diff --git a/ext/vulkan/xcb/vkwindow_xcb.c b/ext/vulkan/xcb/vkwindow_xcb.c
index 6369a1d..d08c0bf 100644
--- a/ext/vulkan/xcb/vkwindow_xcb.c
+++ b/ext/vulkan/xcb/vkwindow_xcb.c
@@ -206,6 +206,7 @@
static VkSurfaceKHR
gst_vulkan_window_xcb_get_surface (GstVulkanWindow * window, GError ** error)
{
+ GstVulkanWindowXCB *window_xcb = GST_VULKAN_WINDOW_XCB (window);
VkXcbSurfaceCreateInfoKHR info = { 0, };
VkSurfaceKHR ret;
VkResult err;
@@ -216,9 +217,19 @@
info.connection = GST_VULKAN_DISPLAY_XCB_CONNECTION (window->display);
info.window = GST_VULKAN_WINDOW_XCB (window)->win_id;
+ if (!window_xcb->CreateXcbSurface)
+ window_xcb->CreateXcbSurface =
+ gst_vulkan_instance_get_proc_address (window->display->instance,
+ "vkCreateXcbSurfaceKHR");
+ if (!window_xcb->CreateXcbSurface) {
+ g_set_error_literal (error, GST_VULKAN_ERROR, VK_ERROR_FEATURE_NOT_PRESENT,
+ "Could not retrieve \"vkCreateXcbSurfaceKHR\" function pointer");
+ return NULL;
+ }
+
err =
- vkCreateXcbSurfaceKHR (window->display->instance->instance, &info, NULL,
- &ret);
+ window_xcb->CreateXcbSurface (window->display->instance->instance, &info,
+ NULL, &ret);
if (gst_vulkan_error_to_g_error (err, error, "vkCreateXcbSurfaceKHR") < 0)
return NULL;
@@ -229,14 +240,25 @@
gst_vulkan_window_xcb_get_presentation_support (GstVulkanWindow * window,
GstVulkanDevice * device, guint32 queue_family_idx)
{
+ GstVulkanWindowXCB *window_xcb = GST_VULKAN_WINDOW_XCB (window);
VkPhysicalDevice gpu;
xcb_screen_t *screen;
screen = GST_VULKAN_DISPLAY_XCB_SCREEN (window->display);
+ if (!window_xcb->GetPhysicalDeviceXcbPresentationSupport)
+ window_xcb->GetPhysicalDeviceXcbPresentationSupport =
+ gst_vulkan_instance_get_proc_address (window->display->instance,
+ "vkGetPhysicalDeviceXcbPresentationSupportKHR");
+ if (!window_xcb->GetPhysicalDeviceXcbPresentationSupport) {
+ GST_WARNING_OBJECT (window, "Could not retrieve "
+ "\"vkGetPhysicalDeviceXcbPresentationSupportKHR\" " "function pointer");
+ return FALSE;
+ }
+
gpu = gst_vulkan_device_get_physical_device (device);
- if (vkGetPhysicalDeviceXcbPresentationSupportKHR (gpu, queue_family_idx,
- GST_VULKAN_DISPLAY_XCB_CONNECTION (window->display),
+ if (window_xcb->GetPhysicalDeviceXcbPresentationSupport (gpu,
+ queue_family_idx, GST_VULKAN_DISPLAY_XCB_CONNECTION (window->display),
screen->root_visual))
return TRUE;
return FALSE;
diff --git a/ext/vulkan/xcb/vkwindow_xcb.h b/ext/vulkan/xcb/vkwindow_xcb.h
index 517a488..db012bb 100644
--- a/ext/vulkan/xcb/vkwindow_xcb.h
+++ b/ext/vulkan/xcb/vkwindow_xcb.h
@@ -53,6 +53,9 @@
gint visible :1;
+ PFN_vkCreateXcbSurfaceKHR CreateXcbSurface;
+ PFN_vkGetPhysicalDeviceXcbPresentationSupportKHR GetPhysicalDeviceXcbPresentationSupport;
+
/*< private >*/
GstVulkanWindowXCBPrivate *priv;
diff --git a/ext/wayland/Makefile.in b/ext/wayland/Makefile.in
index d5b31b9..1b2f9ab 100644
--- a/ext/wayland/Makefile.in
+++ b/ext/wayland/Makefile.in
@@ -310,6 +310,8 @@
DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
DSYMUTIL = @DSYMUTIL@
DTLS_CFLAGS = @DTLS_CFLAGS@
DTLS_LIBS = @DTLS_LIBS@
@@ -525,6 +527,8 @@
LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
LIPO = @LIPO@
LN_S = @LN_S@
LOCALEDIR = @LOCALEDIR@
@@ -651,8 +655,6 @@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
SNDIO_LIBS = @SNDIO_LIBS@
@@ -697,6 +699,8 @@
WAYLAND_LIBS = @WAYLAND_LIBS@
WEBP_CFLAGS = @WEBP_CFLAGS@
WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
WGET = @WGET@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
diff --git a/ext/wayland/gstwaylandsink.c b/ext/wayland/gstwaylandsink.c
index f4f34a8..5d59525 100644
--- a/ext/wayland/gstwaylandsink.c
+++ b/ext/wayland/gstwaylandsink.c
@@ -133,8 +133,7 @@
gobject_class->get_property = gst_wayland_sink_get_property;
gobject_class->finalize = GST_DEBUG_FUNCPTR (gst_wayland_sink_finalize);
- gst_element_class_add_pad_template (gstelement_class,
- gst_static_pad_template_get (&sink_template));
+ gst_element_class_add_static_pad_template (gstelement_class, &sink_template);
gst_element_class_set_static_metadata (gstelement_class,
"wayland video sink", "Sink/Video",
diff --git a/ext/webp/Makefile.in b/ext/webp/Makefile.in
index 9f1343b..9e6bf0c 100644
--- a/ext/webp/Makefile.in
+++ b/ext/webp/Makefile.in
@@ -304,6 +304,8 @@
DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
DSYMUTIL = @DSYMUTIL@
DTLS_CFLAGS = @DTLS_CFLAGS@
DTLS_LIBS = @DTLS_LIBS@
@@ -519,6 +521,8 @@
LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
LIPO = @LIPO@
LN_S = @LN_S@
LOCALEDIR = @LOCALEDIR@
@@ -645,8 +649,6 @@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
SNDIO_LIBS = @SNDIO_LIBS@
@@ -691,6 +693,8 @@
WAYLAND_LIBS = @WAYLAND_LIBS@
WEBP_CFLAGS = @WEBP_CFLAGS@
WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
WGET = @WGET@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
diff --git a/ext/webp/gstwebpdec.c b/ext/webp/gstwebpdec.c
index f582cc8..85bb5bf 100644
--- a/ext/webp/gstwebpdec.c
+++ b/ext/webp/gstwebpdec.c
@@ -96,13 +96,12 @@
gobject_class->set_property = gst_webp_dec_set_property;
gobject_class->get_property = gst_webp_dec_get_property;
- gst_element_class_add_pad_template (element_class,
- gst_static_pad_template_get (&gst_webp_dec_src_pad_template));
- gst_element_class_add_pad_template (element_class,
- gst_static_pad_template_get (&gst_webp_dec_sink_pad_template));
+ gst_element_class_add_static_pad_template (element_class,
+ &gst_webp_dec_src_pad_template);
+ gst_element_class_add_static_pad_template (element_class,
+ &gst_webp_dec_sink_pad_template);
gst_element_class_set_static_metadata (element_class, "WebP image decoder",
- "Codec/Decoder/Image",
- "Decode images from WebP format",
+ "Codec/Decoder/Image", "Decode images from WebP format",
"Sreerenj Balachandran <sreerenj.balachandrn@intel.com>");
g_object_class_install_property (gobject_class, PROP_BYPASS_FILTERING,
diff --git a/ext/webp/gstwebpenc.c b/ext/webp/gstwebpenc.c
index 75891ea..4d912a8 100644
--- a/ext/webp/gstwebpenc.c
+++ b/ext/webp/gstwebpenc.c
@@ -123,13 +123,12 @@
gobject_class->set_property = gst_webp_enc_set_property;
gobject_class->get_property = gst_webp_enc_get_property;
- gst_element_class_add_pad_template (element_class,
- gst_static_pad_template_get (&webp_enc_sink_factory));
- gst_element_class_add_pad_template (element_class,
- gst_static_pad_template_get (&webp_enc_src_factory));
+ gst_element_class_add_static_pad_template (element_class,
+ &webp_enc_sink_factory);
+ gst_element_class_add_static_pad_template (element_class,
+ &webp_enc_src_factory);
gst_element_class_set_static_metadata (element_class, "WEBP image encoder",
- "Codec/Encoder/Image",
- "Encode images in WEBP format",
+ "Codec/Encoder/Image", "Encode images in WEBP format",
"Sreerenj Balachandran <sreerenjb@gnome.org>");
venc_class->start = gst_webp_enc_start;
diff --git a/ext/webrtcdsp/Makefile.am b/ext/webrtcdsp/Makefile.am
new file mode 100644
index 0000000..63ebb45
--- /dev/null
+++ b/ext/webrtcdsp/Makefile.am
@@ -0,0 +1,17 @@
+plugin_LTLIBRARIES = libgstwebrtcdsp.la
+
+libgstwebrtcdsp_la_SOURCES = gstwebrtcdsp.cpp gstwebrtcechoprobe.cpp
+libgstwebrtcdsp_la_CXXFLAGS = \
+ -std=c++11 \
+ $(GST_CXXFLAGS) \
+ $(GST_BASE_CFLAGS) \
+ $(GST_PLUGINS_BASE_CFLAGS) \
+ $(WEBRTCDSP_CFLAGS)
+libgstwebrtcdsp_la_LIBADD = \
+ -lgstaudio-$(GST_API_VERSION) \
+ $(GST_LIBS) $(GST_BASE_LIBS) \
+ $(GST_PLUGINS_BASE_LIBS) \
+ $(WEBRTCDSP_LIBS)
+libgstwebrtcdsp_la_LDFLAGS = $(GST_PLUGIN_LDFLAGS)
+
+noinst_HEADERS = gstwebrtcdsp.h gstwebrtcechoprobe.h
diff --git a/tests/examples/gl/gtk/gtkvideooverlay/Makefile.in b/ext/webrtcdsp/Makefile.in
similarity index 80%
rename from tests/examples/gl/gtk/gtkvideooverlay/Makefile.in
rename to ext/webrtcdsp/Makefile.in
index aef9ed4..d027023 100644
--- a/tests/examples/gl/gtk/gtkvideooverlay/Makefile.in
+++ b/ext/webrtcdsp/Makefile.in
@@ -14,6 +14,7 @@
@SET_MAKE@
+
VPATH = @srcdir@
am__is_gnu_make = { \
if test -z '$(MAKELEVEL)'; then \
@@ -89,8 +90,7 @@
build_triplet = @build@
host_triplet = @host@
target_triplet = @target@
-noinst_PROGRAMS = gtkvideooverlay$(EXEEXT)
-subdir = tests/examples/gl/gtk/gtkvideooverlay
+subdir = ext/webrtcdsp
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
am__aclocal_m4_deps = $(top_srcdir)/common/m4/as-ac-expand.m4 \
$(top_srcdir)/common/m4/as-auto-alt.m4 \
@@ -127,27 +127,56 @@
$(top_srcdir)/m4/progtest.m4 $(top_srcdir)/configure.ac
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
$(ACLOCAL_M4)
-DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
+DIST_COMMON = $(srcdir)/Makefile.am $(noinst_HEADERS) \
+ $(am__DIST_COMMON)
mkinstalldirs = $(install_sh) -d
CONFIG_HEADER = $(top_builddir)/config.h
CONFIG_CLEAN_FILES =
CONFIG_CLEAN_VPATH_FILES =
-PROGRAMS = $(noinst_PROGRAMS)
-am_gtkvideooverlay_OBJECTS = gtkvideooverlay-main.$(OBJEXT)
-gtkvideooverlay_OBJECTS = $(am_gtkvideooverlay_OBJECTS)
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+ *) f=$$p;; \
+ esac;
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+ for p in $$list; do echo "$$p $$p"; done | \
+ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+ if (++n[$$2] == $(am__install_max)) \
+ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+ END { for (dir in files) print dir, files[dir] }'
+am__base_list = \
+ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__uninstall_files_from_dir = { \
+ test -z "$$files" \
+ || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
+ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
+ $(am__cd) "$$dir" && rm -f $$files; }; \
+ }
+am__installdirs = "$(DESTDIR)$(plugindir)"
+LTLIBRARIES = $(plugin_LTLIBRARIES)
am__DEPENDENCIES_1 =
-gtkvideooverlay_DEPENDENCIES = ../libgstgtkhelper.la \
- $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \
+libgstwebrtcdsp_la_DEPENDENCIES = $(am__DEPENDENCIES_1) \
$(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \
$(am__DEPENDENCIES_1)
+am_libgstwebrtcdsp_la_OBJECTS = libgstwebrtcdsp_la-gstwebrtcdsp.lo \
+ libgstwebrtcdsp_la-gstwebrtcechoprobe.lo
+libgstwebrtcdsp_la_OBJECTS = $(am_libgstwebrtcdsp_la_OBJECTS)
AM_V_lt = $(am__v_lt_@AM_V@)
am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@)
am__v_lt_0 = --silent
am__v_lt_1 =
-gtkvideooverlay_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \
+libgstwebrtcdsp_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \
$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \
- $(gtkvideooverlay_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) \
- $(LDFLAGS) -o $@
+ $(libgstwebrtcdsp_la_CXXFLAGS) $(CXXFLAGS) \
+ $(libgstwebrtcdsp_la_LDFLAGS) $(LDFLAGS) -o $@
AM_V_P = $(am__v_P_@AM_V@)
am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
am__v_P_0 = false
@@ -182,13 +211,14 @@
am__v_CXXLD_ = $(am__v_CXXLD_@AM_DEFAULT_V@)
am__v_CXXLD_0 = @echo " CXXLD " $@;
am__v_CXXLD_1 =
-SOURCES = $(gtkvideooverlay_SOURCES)
-DIST_SOURCES = $(gtkvideooverlay_SOURCES)
+SOURCES = $(libgstwebrtcdsp_la_SOURCES)
+DIST_SOURCES = $(libgstwebrtcdsp_la_SOURCES)
am__can_run_installinfo = \
case $$AM_UPDATE_INFO_DIR in \
n|no|NO) false;; \
*) (install-info --version) >/dev/null 2>&1;; \
esac
+HEADERS = $(noinst_HEADERS)
am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
# Read a list of newline-separated strings from the standard input,
# and print each of them once, without duplicates. Input order is
@@ -274,6 +304,8 @@
DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
DSYMUTIL = @DSYMUTIL@
DTLS_CFLAGS = @DTLS_CFLAGS@
DTLS_LIBS = @DTLS_LIBS@
@@ -489,6 +521,8 @@
LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
LIPO = @LIPO@
LN_S = @LN_S@
LOCALEDIR = @LOCALEDIR@
@@ -615,8 +649,6 @@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
SNDIO_LIBS = @SNDIO_LIBS@
@@ -661,6 +693,8 @@
WAYLAND_LIBS = @WAYLAND_LIBS@
WEBP_CFLAGS = @WEBP_CFLAGS@
WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
WGET = @WGET@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
@@ -749,15 +783,23 @@
top_builddir = @top_builddir@
top_srcdir = @top_srcdir@
wayland_scanner = @wayland_scanner@
-gtkvideooverlay_SOURCES = main.cpp
-gtkvideooverlay_CXXFLAGS = -I$(top_srcdir)/gst-libs -I$(top_builddir)/gst-libs \
- $(GST_PLUGINS_BASE_CFLAGS) $(GST_CXXFLAGS) \
- $(GL_CFLAGS) $(GTK3_CFLAGS) $(X11_CFLAGS)
+plugin_LTLIBRARIES = libgstwebrtcdsp.la
+libgstwebrtcdsp_la_SOURCES = gstwebrtcdsp.cpp gstwebrtcechoprobe.cpp
+libgstwebrtcdsp_la_CXXFLAGS = \
+ -std=c++11 \
+ $(GST_CXXFLAGS) \
+ $(GST_BASE_CFLAGS) \
+ $(GST_PLUGINS_BASE_CFLAGS) \
+ $(WEBRTCDSP_CFLAGS)
-gtkvideooverlay_LDADD = ../libgstgtkhelper.la \
- $(GTK3_LIBS) $(GST_PLUGINS_BASE_LIBS) $(GST_LIBS) \
- $(GL_LIBS) -lgstvideo-$(GST_API_VERSION) $(X11_LIBS)
+libgstwebrtcdsp_la_LIBADD = \
+ -lgstaudio-$(GST_API_VERSION) \
+ $(GST_LIBS) $(GST_BASE_LIBS) \
+ $(GST_PLUGINS_BASE_LIBS) \
+ $(WEBRTCDSP_LIBS)
+libgstwebrtcdsp_la_LDFLAGS = $(GST_PLUGIN_LDFLAGS)
+noinst_HEADERS = gstwebrtcdsp.h gstwebrtcechoprobe.h
all: all-am
.SUFFIXES:
@@ -771,9 +813,9 @@
exit 1;; \
esac; \
done; \
- echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu tests/examples/gl/gtk/gtkvideooverlay/Makefile'; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu ext/webrtcdsp/Makefile'; \
$(am__cd) $(top_srcdir) && \
- $(AUTOMAKE) --gnu tests/examples/gl/gtk/gtkvideooverlay/Makefile
+ $(AUTOMAKE) --gnu ext/webrtcdsp/Makefile
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
@case '$?' in \
*config.status*) \
@@ -792,18 +834,43 @@
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
$(am__aclocal_m4_deps):
-clean-noinstPROGRAMS:
- @list='$(noinst_PROGRAMS)'; test -n "$$list" || exit 0; \
- echo " rm -f" $$list; \
- rm -f $$list || exit $$?; \
- test -n "$(EXEEXT)" || exit 0; \
- list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \
- echo " rm -f" $$list; \
- rm -f $$list
+install-pluginLTLIBRARIES: $(plugin_LTLIBRARIES)
+ @$(NORMAL_INSTALL)
+ @list='$(plugin_LTLIBRARIES)'; test -n "$(plugindir)" || list=; \
+ list2=; for p in $$list; do \
+ if test -f $$p; then \
+ list2="$$list2 $$p"; \
+ else :; fi; \
+ done; \
+ test -z "$$list2" || { \
+ echo " $(MKDIR_P) '$(DESTDIR)$(plugindir)'"; \
+ $(MKDIR_P) "$(DESTDIR)$(plugindir)" || exit 1; \
+ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(plugindir)'"; \
+ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(plugindir)"; \
+ }
-gtkvideooverlay$(EXEEXT): $(gtkvideooverlay_OBJECTS) $(gtkvideooverlay_DEPENDENCIES) $(EXTRA_gtkvideooverlay_DEPENDENCIES)
- @rm -f gtkvideooverlay$(EXEEXT)
- $(AM_V_CXXLD)$(gtkvideooverlay_LINK) $(gtkvideooverlay_OBJECTS) $(gtkvideooverlay_LDADD) $(LIBS)
+uninstall-pluginLTLIBRARIES:
+ @$(NORMAL_UNINSTALL)
+ @list='$(plugin_LTLIBRARIES)'; test -n "$(plugindir)" || list=; \
+ for p in $$list; do \
+ $(am__strip_dir) \
+ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(plugindir)/$$f'"; \
+ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(plugindir)/$$f"; \
+ done
+
+clean-pluginLTLIBRARIES:
+ -test -z "$(plugin_LTLIBRARIES)" || rm -f $(plugin_LTLIBRARIES)
+ @list='$(plugin_LTLIBRARIES)'; \
+ locs=`for p in $$list; do echo $$p; done | \
+ sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \
+ sort -u`; \
+ test -z "$$locs" || { \
+ echo rm -f $${locs}; \
+ rm -f $${locs}; \
+ }
+
+libgstwebrtcdsp.la: $(libgstwebrtcdsp_la_OBJECTS) $(libgstwebrtcdsp_la_DEPENDENCIES) $(EXTRA_libgstwebrtcdsp_la_DEPENDENCIES)
+ $(AM_V_CXXLD)$(libgstwebrtcdsp_la_LINK) -rpath $(plugindir) $(libgstwebrtcdsp_la_OBJECTS) $(libgstwebrtcdsp_la_LIBADD) $(LIBS)
mostlyclean-compile:
-rm -f *.$(OBJEXT)
@@ -811,7 +878,8 @@
distclean-compile:
-rm -f *.tab.c
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gtkvideooverlay-main.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstwebrtcdsp_la-gstwebrtcdsp.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstwebrtcdsp_la-gstwebrtcechoprobe.Plo@am__quote@
.cpp.o:
@am__fastdepCXX_TRUE@ $(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\
@@ -837,19 +905,19 @@
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LTCXXCOMPILE) -c -o $@ $<
-gtkvideooverlay-main.o: main.cpp
-@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gtkvideooverlay_CXXFLAGS) $(CXXFLAGS) -MT gtkvideooverlay-main.o -MD -MP -MF $(DEPDIR)/gtkvideooverlay-main.Tpo -c -o gtkvideooverlay-main.o `test -f 'main.cpp' || echo '$(srcdir)/'`main.cpp
-@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/gtkvideooverlay-main.Tpo $(DEPDIR)/gtkvideooverlay-main.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='main.cpp' object='gtkvideooverlay-main.o' libtool=no @AMDEPBACKSLASH@
+libgstwebrtcdsp_la-gstwebrtcdsp.lo: gstwebrtcdsp.cpp
+@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstwebrtcdsp_la_CXXFLAGS) $(CXXFLAGS) -MT libgstwebrtcdsp_la-gstwebrtcdsp.lo -MD -MP -MF $(DEPDIR)/libgstwebrtcdsp_la-gstwebrtcdsp.Tpo -c -o libgstwebrtcdsp_la-gstwebrtcdsp.lo `test -f 'gstwebrtcdsp.cpp' || echo '$(srcdir)/'`gstwebrtcdsp.cpp
+@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgstwebrtcdsp_la-gstwebrtcdsp.Tpo $(DEPDIR)/libgstwebrtcdsp_la-gstwebrtcdsp.Plo
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='gstwebrtcdsp.cpp' object='libgstwebrtcdsp_la-gstwebrtcdsp.lo' libtool=yes @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gtkvideooverlay_CXXFLAGS) $(CXXFLAGS) -c -o gtkvideooverlay-main.o `test -f 'main.cpp' || echo '$(srcdir)/'`main.cpp
+@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstwebrtcdsp_la_CXXFLAGS) $(CXXFLAGS) -c -o libgstwebrtcdsp_la-gstwebrtcdsp.lo `test -f 'gstwebrtcdsp.cpp' || echo '$(srcdir)/'`gstwebrtcdsp.cpp
-gtkvideooverlay-main.obj: main.cpp
-@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gtkvideooverlay_CXXFLAGS) $(CXXFLAGS) -MT gtkvideooverlay-main.obj -MD -MP -MF $(DEPDIR)/gtkvideooverlay-main.Tpo -c -o gtkvideooverlay-main.obj `if test -f 'main.cpp'; then $(CYGPATH_W) 'main.cpp'; else $(CYGPATH_W) '$(srcdir)/main.cpp'; fi`
-@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/gtkvideooverlay-main.Tpo $(DEPDIR)/gtkvideooverlay-main.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='main.cpp' object='gtkvideooverlay-main.obj' libtool=no @AMDEPBACKSLASH@
+libgstwebrtcdsp_la-gstwebrtcechoprobe.lo: gstwebrtcechoprobe.cpp
+@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstwebrtcdsp_la_CXXFLAGS) $(CXXFLAGS) -MT libgstwebrtcdsp_la-gstwebrtcechoprobe.lo -MD -MP -MF $(DEPDIR)/libgstwebrtcdsp_la-gstwebrtcechoprobe.Tpo -c -o libgstwebrtcdsp_la-gstwebrtcechoprobe.lo `test -f 'gstwebrtcechoprobe.cpp' || echo '$(srcdir)/'`gstwebrtcechoprobe.cpp
+@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgstwebrtcdsp_la-gstwebrtcechoprobe.Tpo $(DEPDIR)/libgstwebrtcdsp_la-gstwebrtcechoprobe.Plo
+@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='gstwebrtcechoprobe.cpp' object='libgstwebrtcdsp_la-gstwebrtcechoprobe.lo' libtool=yes @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gtkvideooverlay_CXXFLAGS) $(CXXFLAGS) -c -o gtkvideooverlay-main.obj `if test -f 'main.cpp'; then $(CYGPATH_W) 'main.cpp'; else $(CYGPATH_W) '$(srcdir)/main.cpp'; fi`
+@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstwebrtcdsp_la_CXXFLAGS) $(CXXFLAGS) -c -o libgstwebrtcdsp_la-gstwebrtcechoprobe.lo `test -f 'gstwebrtcechoprobe.cpp' || echo '$(srcdir)/'`gstwebrtcechoprobe.cpp
mostlyclean-libtool:
-rm -f *.lo
@@ -941,8 +1009,11 @@
done
check-am: all-am
check: check-am
-all-am: Makefile $(PROGRAMS)
+all-am: Makefile $(LTLIBRARIES) $(HEADERS)
installdirs:
+ for dir in "$(DESTDIR)$(plugindir)"; do \
+ test -z "$$dir" || $(MKDIR_P) "$$dir"; \
+ done
install: install-am
install-exec: install-exec-am
install-data: install-data-am
@@ -975,7 +1046,7 @@
@echo "it deletes files that may require special tools to rebuild."
clean: clean-am
-clean-am: clean-generic clean-libtool clean-noinstPROGRAMS \
+clean-am: clean-generic clean-libtool clean-pluginLTLIBRARIES \
mostlyclean-am
distclean: distclean-am
@@ -996,7 +1067,7 @@
info-am:
-install-data-am:
+install-data-am: install-pluginLTLIBRARIES
install-dvi: install-dvi-am
@@ -1042,23 +1113,24 @@
ps-am:
-uninstall-am:
+uninstall-am: uninstall-pluginLTLIBRARIES
.MAKE: install-am install-strip
.PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \
- clean-libtool clean-noinstPROGRAMS cscopelist-am ctags \
+ clean-libtool clean-pluginLTLIBRARIES cscopelist-am ctags \
ctags-am distclean distclean-compile distclean-generic \
distclean-libtool distclean-tags distdir dvi dvi-am html \
html-am info info-am install install-am install-data \
install-data-am install-dvi install-dvi-am install-exec \
install-exec-am install-html install-html-am install-info \
install-info-am install-man install-pdf install-pdf-am \
- install-ps install-ps-am install-strip installcheck \
- installcheck-am installdirs maintainer-clean \
- maintainer-clean-generic mostlyclean mostlyclean-compile \
- mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
- tags tags-am uninstall uninstall-am
+ install-pluginLTLIBRARIES install-ps install-ps-am \
+ install-strip installcheck installcheck-am installdirs \
+ maintainer-clean maintainer-clean-generic mostlyclean \
+ mostlyclean-compile mostlyclean-generic mostlyclean-libtool \
+ pdf pdf-am ps ps-am tags tags-am uninstall uninstall-am \
+ uninstall-pluginLTLIBRARIES
.PRECIOUS: Makefile
diff --git a/ext/webrtcdsp/gstwebrtcdsp.cpp b/ext/webrtcdsp/gstwebrtcdsp.cpp
new file mode 100644
index 0000000..f64b623
--- /dev/null
+++ b/ext/webrtcdsp/gstwebrtcdsp.cpp
@@ -0,0 +1,788 @@
+/*
+ * WebRTC Audio Processing Elements
+ *
+ * Copyright 2016 Collabora Ltd
+ * @author: Nicolas Dufresne <nicolas.dufresne@collabora.com>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 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
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ *
+ */
+
+/**
+ * SECTION:element-webrtcdsp
+ * @short_description: Audio Filter using WebRTC Audio Processing library
+ *
+ * A voice enhancement filter based on WebRTC Audio Processing library. This
+ * library provides a whide variety of enhancement algorithms. This element
+ * tries to enable as much as possible. The currently enabled enhancements are
+ * High Pass Filter, Echo Canceller, Noise Suppression, Automatic Gain Control,
+ * and some extended filters.
+ *
+ * While webrtcdsp element can be used alone, there is an exception for the
+ * echo canceller. The audio canceller need to be aware of the far end streams
+ * that are played to loud speakers. For this, you must place a webrtcechoprobe
+ * element at that far end. Note that the sample rate must match between
+ * webrtcdsp and the webrtechoprobe. Though, the number of channels can differ.
+ * The probe is found by the DSP element using it's object name. By default,
+ * webrtcdsp looks for webrtcechoprobe0, which means it just work if you have
+ * a single probe and DSP.
+ *
+ * The probe can only be used within the same top level GstPipeline.
+ * Additonally, to simplify the code, the probe element must be created
+ * before the DSP sink pad is activated. It does not need to be in any
+ * particular state and does not even need to be added to the pipeline yet.
+ *
+ * # Example launch line
+ *
+ * As a conveniance, the echo canceller can be tested using an echo loop. In
+ * this configuration, one would expect a single echo to be heard.
+ *
+ * |[
+ * gst-launch-1.0 pulsesrc ! webrtcdsp ! webrtcechoprobe ! pulsesink
+ * ]|
+ *
+ * In real environment, you'll place the probe before the playback, but only
+ * process the far end streams. The DSP should be placed as close as possible
+ * to the audio capture. The following pipeline is astracted and does not
+ * represent a real pipeline.
+ *
+ * |[
+ * gst-launch-1.0 far-end-src ! audio/x-raw,rate=48000 ! webrtcechoprobe ! pulsesink \
+ * pulsesrc ! audio/x-raw,rate=48000 ! webrtcdsp ! far-end-sink
+ * ]|
+ */
+
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#include "gstwebrtcdsp.h"
+#include "gstwebrtcechoprobe.h"
+
+#include <webrtc/modules/audio_processing/include/audio_processing.h>
+#include <webrtc/modules/interface/module_common_types.h>
+#include <webrtc/system_wrappers/include/trace.h>
+
+GST_DEBUG_CATEGORY (webrtc_dsp_debug);
+#define GST_CAT_DEFAULT (webrtc_dsp_debug)
+
+static GstStaticPadTemplate gst_webrtc_dsp_sink_template =
+GST_STATIC_PAD_TEMPLATE ("sink",
+ GST_PAD_SINK,
+ GST_PAD_ALWAYS,
+ GST_STATIC_CAPS ("audio/x-raw, "
+ "format = (string) " GST_AUDIO_NE (S16) ", "
+ "layout = (string) interleaved, "
+ "rate = (int) { 48000, 32000, 16000, 8000 }, "
+ "channels = (int) [1, MAX]")
+ );
+
+static GstStaticPadTemplate gst_webrtc_dsp_src_template =
+GST_STATIC_PAD_TEMPLATE ("src",
+ GST_PAD_SRC,
+ GST_PAD_ALWAYS,
+ GST_STATIC_CAPS ("audio/x-raw, "
+ "format = (string) " GST_AUDIO_NE (S16) ", "
+ "layout = (string) interleaved, "
+ "rate = (int) { 48000, 32000, 16000, 8000 }, "
+ "channels = (int) [1, MAX]")
+ );
+
+typedef webrtc::EchoCancellation::SuppressionLevel GstWebrtcEchoSuppressionLevel;
+#define GST_TYPE_WEBRTC_ECHO_SUPPRESSION_LEVEL \
+ (gst_webrtc_echo_suppression_level_get_type ())
+static GType
+gst_webrtc_echo_suppression_level_get_type (void)
+{
+ static GType suppression_level_type = 0;
+ static const GEnumValue level_types[] = {
+ {webrtc::EchoCancellation::kLowSuppression, "Low Suppression", "low"},
+ {webrtc::EchoCancellation::kModerateSuppression,
+ "Moderate Suppression", "moderate"},
+ {webrtc::EchoCancellation::kHighSuppression, "high Suppression", "high"},
+ {0, NULL, NULL}
+ };
+
+ if (!suppression_level_type) {
+ suppression_level_type =
+ g_enum_register_static ("GstWebrtcEchoSuppressionLevel", level_types);
+ }
+ return suppression_level_type;
+}
+
+typedef webrtc::NoiseSuppression::Level GstWebrtcNoiseSuppressionLevel;
+#define GST_TYPE_WEBRTC_NOISE_SUPPRESSION_LEVEL \
+ (gst_webrtc_noise_suppression_level_get_type ())
+static GType
+gst_webrtc_noise_suppression_level_get_type (void)
+{
+ static GType suppression_level_type = 0;
+ static const GEnumValue level_types[] = {
+ {webrtc::NoiseSuppression::kLow, "Low Suppression", "low"},
+ {webrtc::NoiseSuppression::kModerate, "Moderate Suppression", "moderate"},
+ {webrtc::NoiseSuppression::kHigh, "High Suppression", "high"},
+ {webrtc::NoiseSuppression::kVeryHigh, "Very High Suppression",
+ "very-high"},
+ {0, NULL, NULL}
+ };
+
+ if (!suppression_level_type) {
+ suppression_level_type =
+ g_enum_register_static ("GstWebrtcNoiseSuppressionLevel", level_types);
+ }
+ return suppression_level_type;
+}
+
+enum
+{
+ PROP_0,
+ PROP_PROBE,
+ PROP_HIGH_PASS_FILTER,
+ PROP_ECHO_CANCEL,
+ PROP_ECHO_SUPPRESSION_LEVEL,
+ PROP_NOISE_SUPPRESSION,
+ PROP_NOISE_SUPPRESSION_LEVEL,
+ PROP_GAIN_CONTROL,
+ PROP_EXPERIMENTAL_AGC,
+ PROP_EXTENDED_FILTER
+};
+
+/**
+ * GstWebrtcDSP:
+ *
+ * The adder object structure.
+ */
+struct _GstWebrtcDsp
+{
+ GstAudioFilter element;
+
+ /* Protected by the object lock */
+ GstAudioInfo info;
+ guint period_size;
+
+ /* Protected by the stream lock */
+ GstAdapter *adapter;
+ webrtc::AudioProcessing * apm;
+
+ /* Protected by the object lock */
+ gchar *probe_name;
+ GstWebrtcEchoProbe *probe;
+
+ /* Properties */
+ gboolean high_pass_filter;
+ gboolean echo_cancel;
+ webrtc::EchoCancellation::SuppressionLevel echo_suppression_level;
+ gboolean noise_suppression;
+ webrtc::NoiseSuppression::Level noise_suppression_level;
+ gboolean gain_control;
+ gboolean experimental_agc;
+ gboolean extended_filter;
+};
+
+G_DEFINE_TYPE (GstWebrtcDsp, gst_webrtc_dsp, GST_TYPE_AUDIO_FILTER);
+
+static const gchar *
+webrtc_error_to_string (gint err)
+{
+ const gchar *str = "unkown error";
+
+ switch (err) {
+ case webrtc::AudioProcessing::kNoError:
+ str = "success";
+ break;
+ case webrtc::AudioProcessing::kUnspecifiedError:
+ str = "unspecified error";
+ break;
+ case webrtc::AudioProcessing::kCreationFailedError:
+ str = "creating failed";
+ break;
+ case webrtc::AudioProcessing::kUnsupportedComponentError:
+ str = "unsupported component";
+ break;
+ case webrtc::AudioProcessing::kUnsupportedFunctionError:
+ str = "unsupported function";
+ break;
+ case webrtc::AudioProcessing::kNullPointerError:
+ str = "null pointer";
+ break;
+ case webrtc::AudioProcessing::kBadParameterError:
+ str = "bad parameter";
+ break;
+ case webrtc::AudioProcessing::kBadSampleRateError:
+ str = "bad sample rate";
+ break;
+ case webrtc::AudioProcessing::kBadDataLengthError:
+ str = "bad data length";
+ break;
+ case webrtc::AudioProcessing::kBadNumberChannelsError:
+ str = "bad number of channels";
+ break;
+ case webrtc::AudioProcessing::kFileError:
+ str = "file IO error";
+ break;
+ case webrtc::AudioProcessing::kStreamParameterNotSetError:
+ str = "stream parameter not set";
+ break;
+ case webrtc::AudioProcessing::kNotEnabledError:
+ str = "not enabled";
+ break;
+ default:
+ break;
+ }
+
+ return str;
+}
+
+static GstBuffer *
+gst_webrtc_dsp_take_buffer (GstWebrtcDsp * self)
+{
+ GstBuffer *buffer;
+ GstClockTime timestamp;
+ guint64 distance;
+
+ timestamp = gst_adapter_prev_pts (self->adapter, &distance);
+ timestamp += gst_util_uint64_scale_int (distance / self->info.bpf,
+ GST_SECOND, self->info.rate);
+
+ buffer = gst_adapter_take_buffer (self->adapter, self->period_size);
+
+ GST_BUFFER_PTS (buffer) = timestamp;
+ GST_BUFFER_DURATION (buffer) = 10 * GST_MSECOND;
+
+ if (gst_adapter_pts_at_discont (self->adapter) == timestamp && distance == 0) {
+ GST_BUFFER_FLAG_SET (buffer, GST_BUFFER_FLAG_DISCONT);
+ } else
+ GST_BUFFER_FLAG_UNSET (buffer, GST_BUFFER_FLAG_DISCONT);
+
+ return buffer;
+}
+
+static GstFlowReturn
+gst_webrtc_dsp_analyze_reverse_stream (GstWebrtcDsp * self,
+ GstClockTime rec_time)
+{
+ GstWebrtcEchoProbe *probe = NULL;
+ webrtc::AudioProcessing * apm;
+ webrtc::AudioFrame frame;
+ GstFlowReturn ret = GST_FLOW_OK;
+ gint err, delay;
+
+ GST_OBJECT_LOCK (self);
+ if (self->echo_cancel)
+ probe = GST_WEBRTC_ECHO_PROBE (g_object_ref (self->probe));
+ GST_OBJECT_UNLOCK (self);
+
+ /* If echo cancellation is disabled */
+ if (!probe)
+ return GST_FLOW_OK;
+
+ apm = self->apm;
+
+ delay = gst_webrtc_echo_probe_read (probe, rec_time, (gpointer) &frame);
+
+ apm->set_stream_delay_ms (delay);
+
+ if (delay < 0)
+ goto done;
+
+ if (frame.sample_rate_hz_ != self->info.rate) {
+ GST_ELEMENT_ERROR (self, STREAM, FORMAT,
+ ("Echo Probe has rate %i , while the DSP is running at rate %i,"
+ " use a caps filter to ensure those are the same.",
+ frame.sample_rate_hz_, self->info.rate), (NULL));
+ ret = GST_FLOW_ERROR;
+ goto done;
+ }
+
+ if ((err = apm->AnalyzeReverseStream (&frame)) < 0)
+ GST_WARNING_OBJECT (self, "Reverse stream analyses failed: %s.",
+ webrtc_error_to_string (err));
+
+done:
+ gst_object_unref (probe);
+
+ return ret;
+}
+
+static GstFlowReturn
+gst_webrtc_dsp_process_stream (GstWebrtcDsp * self,
+ GstBuffer * buffer)
+{
+ GstMapInfo info;
+ webrtc::AudioProcessing * apm = self->apm;
+ webrtc::AudioFrame frame;
+ gint err;
+
+ frame.num_channels_ = self->info.channels;
+ frame.sample_rate_hz_ = self->info.rate;
+ frame.samples_per_channel_ = self->period_size / self->info.bpf;
+
+ if (!gst_buffer_map (buffer, &info, (GstMapFlags) GST_MAP_READWRITE)) {
+ gst_buffer_unref (buffer);
+ return GST_FLOW_ERROR;
+ }
+
+ memcpy (frame.data_, info.data, self->period_size);
+
+ if ((err = apm->ProcessStream (&frame)) < 0) {
+ GST_WARNING_OBJECT (self, "Failed to filter the audio: %s.",
+ webrtc_error_to_string (err));
+ } else {
+ memcpy (info.data, frame.data_, self->period_size);
+ }
+
+ gst_buffer_unmap (buffer, &info);
+
+ return GST_FLOW_OK;
+}
+
+static GstFlowReturn
+gst_webrtc_dsp_submit_input_buffer (GstBaseTransform * btrans,
+ gboolean is_discont, GstBuffer * buffer)
+{
+ GstWebrtcDsp *self = GST_WEBRTC_DSP (btrans);
+
+ buffer = gst_buffer_make_writable (buffer);
+ GST_BUFFER_PTS (buffer) = gst_segment_to_running_time (&btrans->segment,
+ GST_FORMAT_TIME, GST_BUFFER_PTS (buffer));
+
+ if (is_discont) {
+ GST_DEBUG_OBJECT (self,
+ "Received discont, clearing adapter.");
+ gst_adapter_clear (self->adapter);
+ }
+
+ gst_adapter_push (self->adapter, buffer);
+
+ return GST_FLOW_OK;
+}
+
+static GstFlowReturn
+gst_webrtc_dsp_generate_output (GstBaseTransform * btrans, GstBuffer ** outbuf)
+{
+ GstWebrtcDsp *self = GST_WEBRTC_DSP (btrans);
+ GstFlowReturn ret;
+
+ if (gst_adapter_available (self->adapter) < self->period_size) {
+ *outbuf = NULL;
+ return GST_FLOW_OK;
+ }
+
+ *outbuf = gst_webrtc_dsp_take_buffer (self);
+ ret = gst_webrtc_dsp_analyze_reverse_stream (self, GST_BUFFER_PTS (*outbuf));
+
+ if (ret == GST_FLOW_OK)
+ ret = gst_webrtc_dsp_process_stream (self, *outbuf);
+
+ return ret;
+}
+
+static gboolean
+gst_webrtc_dsp_start (GstBaseTransform * btrans)
+{
+ GstWebrtcDsp *self = GST_WEBRTC_DSP (btrans);
+ webrtc::Config config;
+
+ GST_OBJECT_LOCK (self);
+
+ config.Set < webrtc::ExtendedFilter >
+ (new webrtc::ExtendedFilter (self->extended_filter));
+ config.Set < webrtc::ExperimentalAgc >
+ (new webrtc::ExperimentalAgc (self->experimental_agc));
+
+ /* TODO Intelligibility enhancer, Beamforming, etc. */
+
+ self->apm = webrtc::AudioProcessing::Create (config);
+
+ if (self->echo_cancel) {
+ self->probe = gst_webrtc_acquire_echo_probe (self->probe_name);
+
+ if (self->probe == NULL) {
+ GST_OBJECT_UNLOCK (self);
+ GST_ELEMENT_ERROR (self, RESOURCE, NOT_FOUND,
+ ("No echo probe with name %s found.", self->probe_name), (NULL));
+ return FALSE;
+ }
+ }
+
+ GST_OBJECT_UNLOCK (self);
+
+ return TRUE;
+}
+
+static gboolean
+gst_webrtc_dsp_setup (GstAudioFilter * filter, const GstAudioInfo * info)
+{
+ GstWebrtcDsp *self = GST_WEBRTC_DSP (filter);
+ webrtc::AudioProcessing * apm;
+ webrtc::ProcessingConfig pconfig;
+ GstAudioInfo probe_info = *info;
+ gint err = 0;
+
+ GST_LOG_OBJECT (self, "setting format to %s with %i Hz and %i channels",
+ info->finfo->description, info->rate, info->channels);
+
+ GST_OBJECT_LOCK (self);
+
+ gst_adapter_clear (self->adapter);
+ self->info = *info;
+ apm = self->apm;
+
+ /* WebRTC library works with 10ms buffers, compute once this size */
+ self->period_size = info->bpf * info->rate / 100;
+
+ if ((webrtc::AudioFrame::kMaxDataSizeSamples * 2) < self->period_size)
+ goto period_too_big;
+
+ if (self->probe) {
+ GST_WEBRTC_ECHO_PROBE_LOCK (self->probe);
+
+ if (self->probe->info.rate != 0) {
+ if (self->probe->info.rate != info->rate)
+ goto probe_has_wrong_rate;
+ probe_info = self->probe->info;
+ }
+
+ GST_WEBRTC_ECHO_PROBE_UNLOCK (self->probe);
+ }
+
+ /* input stream */
+ pconfig.streams[webrtc::ProcessingConfig::kInputStream] =
+ webrtc::StreamConfig (info->rate, info->channels, false);
+ /* output stream */
+ pconfig.streams[webrtc::ProcessingConfig::kOutputStream] =
+ webrtc::StreamConfig (info->rate, info->channels, false);
+ /* reverse input stream */
+ pconfig.streams[webrtc::ProcessingConfig::kReverseInputStream] =
+ webrtc::StreamConfig (probe_info.rate, probe_info.channels, false);
+ /* reverse output stream */
+ pconfig.streams[webrtc::ProcessingConfig::kReverseOutputStream] =
+ webrtc::StreamConfig (probe_info.rate, probe_info.channels, false);
+
+ if ((err = apm->Initialize (pconfig)) < 0)
+ goto initialize_failed;
+
+ /* Setup Filters */
+ if (self->high_pass_filter) {
+ GST_DEBUG_OBJECT (self, "Enabling High Pass filter");
+ apm->high_pass_filter ()->Enable (true);
+ }
+
+ if (self->echo_cancel) {
+ GST_DEBUG_OBJECT (self, "Enabling Echo Cancellation");
+ apm->echo_cancellation ()->enable_drift_compensation (false);
+ apm->echo_cancellation ()
+ ->set_suppression_level (self->echo_suppression_level);
+ apm->echo_cancellation ()->Enable (true);
+ }
+
+ if (self->noise_suppression) {
+ GST_DEBUG_OBJECT (self, "Enabling Noise Suppression");
+ apm->noise_suppression ()->set_level (self->noise_suppression_level);
+ apm->noise_suppression ()->Enable (true);
+ }
+
+ if (self->gain_control) {
+ GST_DEBUG_OBJECT (self, "Enabling Digital Gain Control");
+ apm->gain_control ()->set_mode (webrtc::GainControl::kAdaptiveDigital);
+ apm->gain_control ()->Enable (true);
+ }
+
+ GST_OBJECT_UNLOCK (self);
+
+ return TRUE;
+
+period_too_big:
+ GST_OBJECT_UNLOCK (self);
+ GST_WARNING_OBJECT (self, "webrtcdsp format produce too big period "
+ "(maximum is %" G_GSIZE_FORMAT " samples and we have %u samples), "
+ "reduce the number of channels or the rate.",
+ webrtc::AudioFrame::kMaxDataSizeSamples, self->period_size / 2);
+ return FALSE;
+
+probe_has_wrong_rate:
+ GST_WEBRTC_ECHO_PROBE_UNLOCK (self->probe);
+ GST_OBJECT_UNLOCK (self);
+ GST_ELEMENT_ERROR (self, STREAM, FORMAT,
+ ("Echo Probe has rate %i , while the DSP is running at rate %i,"
+ " use a caps filter to ensure those are the same.",
+ probe_info.rate, info->rate), (NULL));
+ return FALSE;
+
+initialize_failed:
+ GST_OBJECT_UNLOCK (self);
+ GST_ELEMENT_ERROR (self, LIBRARY, INIT,
+ ("Failed to initialize WebRTC Audio Processing library"),
+ ("webrtc::AudioProcessing::Initialize() failed: %s",
+ webrtc_error_to_string (err)));
+ return FALSE;
+}
+
+static gboolean
+gst_webrtc_dsp_stop (GstBaseTransform * btrans)
+{
+ GstWebrtcDsp *self = GST_WEBRTC_DSP (btrans);
+
+ GST_OBJECT_LOCK (self);
+
+ gst_adapter_clear (self->adapter);
+
+ if (self->probe) {
+ gst_webrtc_release_echo_probe (self->probe);
+ self->probe = NULL;
+ }
+
+ delete self->apm;
+ self->apm = NULL;
+
+ GST_OBJECT_UNLOCK (self);
+
+ return TRUE;
+}
+
+static void
+gst_webrtc_dsp_set_property (GObject * object,
+ guint prop_id, const GValue * value, GParamSpec * pspec)
+{
+ GstWebrtcDsp *self = GST_WEBRTC_DSP (object);
+
+ GST_OBJECT_LOCK (self);
+ switch (prop_id) {
+ case PROP_PROBE:
+ g_free (self->probe_name);
+ self->probe_name = g_value_dup_string (value);
+ break;
+ case PROP_HIGH_PASS_FILTER:
+ self->high_pass_filter = g_value_get_boolean (value);
+ break;
+ case PROP_ECHO_CANCEL:
+ self->echo_cancel = g_value_get_boolean (value);
+ break;
+ case PROP_ECHO_SUPPRESSION_LEVEL:
+ self->echo_suppression_level =
+ (GstWebrtcEchoSuppressionLevel) g_value_get_enum (value);
+ break;
+ case PROP_NOISE_SUPPRESSION:
+ self->noise_suppression = g_value_get_boolean (value);
+ break;
+ case PROP_NOISE_SUPPRESSION_LEVEL:
+ self->noise_suppression_level =
+ (GstWebrtcNoiseSuppressionLevel) g_value_get_enum (value);
+ break;
+ case PROP_GAIN_CONTROL:
+ self->gain_control = g_value_get_boolean (value);
+ break;
+ case PROP_EXPERIMENTAL_AGC:
+ self->experimental_agc = g_value_get_boolean (value);
+ break;
+ case PROP_EXTENDED_FILTER:
+ self->extended_filter = g_value_get_boolean (value);
+ break;
+ default:
+ G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+ break;
+ }
+ GST_OBJECT_UNLOCK (self);
+}
+
+static void
+gst_webrtc_dsp_get_property (GObject * object,
+ guint prop_id, GValue * value, GParamSpec * pspec)
+{
+ GstWebrtcDsp *self = GST_WEBRTC_DSP (object);
+
+ GST_OBJECT_LOCK (self);
+ switch (prop_id) {
+ case PROP_PROBE:
+ g_value_set_string (value, self->probe_name);
+ break;
+ case PROP_HIGH_PASS_FILTER:
+ g_value_set_boolean (value, self->high_pass_filter);
+ break;
+ case PROP_ECHO_CANCEL:
+ g_value_set_boolean (value, self->echo_cancel);
+ break;
+ case PROP_ECHO_SUPPRESSION_LEVEL:
+ g_value_set_enum (value, self->echo_suppression_level);
+ break;
+ case PROP_NOISE_SUPPRESSION:
+ g_value_set_boolean (value, self->noise_suppression);
+ break;
+ case PROP_NOISE_SUPPRESSION_LEVEL:
+ g_value_set_enum (value, self->noise_suppression_level);
+ break;
+ case PROP_GAIN_CONTROL:
+ g_value_set_boolean (value, self->gain_control);
+ break;
+ case PROP_EXPERIMENTAL_AGC:
+ g_value_set_boolean (value, self->experimental_agc);
+ break;
+ case PROP_EXTENDED_FILTER:
+ g_value_set_boolean (value, self->extended_filter);
+ break;
+ default:
+ G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+ break;
+ }
+ GST_OBJECT_UNLOCK (self);
+}
+
+
+static void
+gst_webrtc_dsp_finalize (GObject * object)
+{
+ GstWebrtcDsp *self = GST_WEBRTC_DSP (object);
+
+ gst_object_unref (self->adapter);
+ g_free (self->probe_name);
+
+ G_OBJECT_CLASS (gst_webrtc_dsp_parent_class)->finalize (object);
+}
+
+static void
+gst_webrtc_dsp_init (GstWebrtcDsp * self)
+{
+ self->adapter = gst_adapter_new ();
+ gst_audio_info_init (&self->info);
+}
+
+static void
+gst_webrtc_dsp_class_init (GstWebrtcDspClass * klass)
+{
+ GObjectClass *gobject_class = G_OBJECT_CLASS (klass);
+ GstElementClass *element_class = GST_ELEMENT_CLASS (klass);
+ GstBaseTransformClass *btrans_class = GST_BASE_TRANSFORM_CLASS (klass);
+ GstAudioFilterClass *audiofilter_class = GST_AUDIO_FILTER_CLASS (klass);
+
+ gobject_class->finalize = GST_DEBUG_FUNCPTR (gst_webrtc_dsp_finalize);
+ gobject_class->set_property = GST_DEBUG_FUNCPTR (gst_webrtc_dsp_set_property);
+ gobject_class->get_property = GST_DEBUG_FUNCPTR (gst_webrtc_dsp_get_property);
+
+ btrans_class->passthrough_on_same_caps = FALSE;
+ btrans_class->start = GST_DEBUG_FUNCPTR (gst_webrtc_dsp_start);
+ btrans_class->stop = GST_DEBUG_FUNCPTR (gst_webrtc_dsp_stop);
+ btrans_class->submit_input_buffer =
+ GST_DEBUG_FUNCPTR (gst_webrtc_dsp_submit_input_buffer);
+ btrans_class->generate_output =
+ GST_DEBUG_FUNCPTR (gst_webrtc_dsp_generate_output);
+
+ audiofilter_class->setup = GST_DEBUG_FUNCPTR (gst_webrtc_dsp_setup);
+
+ gst_element_class_add_static_pad_template (element_class,
+ &gst_webrtc_dsp_src_template);
+ gst_element_class_add_static_pad_template (element_class,
+ &gst_webrtc_dsp_sink_template);
+ gst_element_class_set_static_metadata (element_class,
+ "Voice Processor (AGC, AEC, filters, etc.)",
+ "Generic/Audio",
+ "Pre-processes voice with WebRTC Audio Processing Library",
+ "Nicolas Dufresne <nicolas.dufresne@collabora.com>");
+
+ g_object_class_install_property (gobject_class,
+ PROP_PROBE,
+ g_param_spec_string ("probe", "Echo Probe",
+ "The name of the webrtcechoprobe element that record the audio being "
+ "played through loud speakers. Must be set before PAUSED state.",
+ "webrtcechoprobe0",
+ (GParamFlags) (G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS |
+ G_PARAM_CONSTRUCT)));
+
+ g_object_class_install_property (gobject_class,
+ PROP_HIGH_PASS_FILTER,
+ g_param_spec_boolean ("high-pass-filter", "High Pass Filter",
+ "Enable or disable high pass filtering", TRUE,
+ (GParamFlags) (G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS |
+ G_PARAM_CONSTRUCT)));
+
+ g_object_class_install_property (gobject_class,
+ PROP_ECHO_CANCEL,
+ g_param_spec_boolean ("echo-cancel", "Echo Cancel",
+ "Enable or disable echo canceller, note that it will be disabled if "
+ "no webrtcechoprobe has been found", TRUE,
+ (GParamFlags) (G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS |
+ G_PARAM_CONSTRUCT)));
+
+ g_object_class_install_property (gobject_class,
+ PROP_ECHO_SUPPRESSION_LEVEL,
+ g_param_spec_enum ("echo-suppression-level", "Echo Suppression Level",
+ "Controls the aggressiveness of the suppressor. A higher level "
+ "trades off double-talk performance for increased echo suppression.",
+ GST_TYPE_WEBRTC_ECHO_SUPPRESSION_LEVEL,
+ webrtc::EchoCancellation::kModerateSuppression,
+ (GParamFlags) (G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS |
+ G_PARAM_CONSTRUCT)));
+
+ g_object_class_install_property (gobject_class,
+ PROP_NOISE_SUPPRESSION,
+ g_param_spec_boolean ("noise-suppression", "Noise Suppression",
+ "Enable or disable noise suppression", TRUE,
+ (GParamFlags) (G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS |
+ G_PARAM_CONSTRUCT)));
+
+ g_object_class_install_property (gobject_class,
+ PROP_NOISE_SUPPRESSION_LEVEL,
+ g_param_spec_enum ("noise-suppression-level", "Noise Suppression Level",
+ "Controls the aggressiveness of the suppression. Increasing the "
+ "level will reduce the noise level at the expense of a higher "
+ "speech distortion.", GST_TYPE_WEBRTC_NOISE_SUPPRESSION_LEVEL,
+ webrtc::EchoCancellation::kModerateSuppression,
+ (GParamFlags) (G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS |
+ G_PARAM_CONSTRUCT)));
+
+ g_object_class_install_property (gobject_class,
+ PROP_GAIN_CONTROL,
+ g_param_spec_boolean ("gain-control", "Gain Control",
+ "Enable or disable automatic digital gain control",
+ TRUE, (GParamFlags) (G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS |
+ G_PARAM_CONSTRUCT)));
+
+ g_object_class_install_property (gobject_class,
+ PROP_EXPERIMENTAL_AGC,
+ g_param_spec_boolean ("experimental-agc", "Experimental AGC",
+ "Enable or disable experimental automatic gain control.",
+ FALSE, (GParamFlags) (G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS |
+ G_PARAM_CONSTRUCT)));
+
+ g_object_class_install_property (gobject_class,
+ PROP_EXTENDED_FILTER,
+ g_param_spec_boolean ("extended-filter", "Extended Filter",
+ "Enable or disable the extended filter.",
+ TRUE, (GParamFlags) (G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS |
+ G_PARAM_CONSTRUCT)));
+}
+
+static gboolean
+plugin_init (GstPlugin * plugin)
+{
+ GST_DEBUG_CATEGORY_INIT
+ (webrtc_dsp_debug, "webrtcdsp", 0, "libwebrtcdsp wrapping elements");
+
+ if (!gst_element_register (plugin, "webrtcdsp", GST_RANK_NONE,
+ GST_TYPE_WEBRTC_DSP)) {
+ return FALSE;
+ }
+ if (!gst_element_register (plugin, "webrtcechoprobe", GST_RANK_NONE,
+ GST_TYPE_WEBRTC_ECHO_PROBE)) {
+ return FALSE;
+ }
+
+ return TRUE;
+}
+
+GST_PLUGIN_DEFINE (GST_VERSION_MAJOR,
+ GST_VERSION_MINOR,
+ webrtcdsp,
+ "Voice pre-processing using WebRTC Audio Processing Library",
+ plugin_init, VERSION, "LGPL", "WebRTCDsp", "http://git.collabora.com")
diff --git a/ext/webrtcdsp/gstwebrtcdsp.h b/ext/webrtcdsp/gstwebrtcdsp.h
new file mode 100644
index 0000000..a2519df
--- /dev/null
+++ b/ext/webrtcdsp/gstwebrtcdsp.h
@@ -0,0 +1,52 @@
+/*
+ * WebRTC Audio Processing Elements
+ *
+ * Copyright 2016 Collabora Ltd
+ * @author: Nicolas Dufresne <nicolas.dufresne@collabora.com>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 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
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ *
+ */
+
+#ifndef __GST_WEBRTC_DSP_H__
+#define __GST_WEBRTC_DSP_H__
+
+#include <gst/gst.h>
+#include <gst/base/gstadapter.h>
+#include <gst/base/gstbasetransform.h>
+#include <gst/audio/audio.h>
+
+G_BEGIN_DECLS
+
+#define GST_TYPE_WEBRTC_DSP (gst_webrtc_dsp_get_type())
+#define GST_WEBRTC_DSP(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj),GST_TYPE_WEBRTC_DSP,GstWebrtcDsp))
+#define GST_IS_WEBRTC_DSP(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj),GST_TYPE_WEBRTC_DSP))
+#define GST_WEBRTC_DSP_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass) ,GST_TYPE_WEBRTC_DSP,GstWebrtcDspClass))
+#define GST_IS_WEBRTC_DSP_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE((klass) ,GST_TYPE_WEBRTC_DSP))
+#define GST_WEBRTC_DSP_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS((obj) ,GST_TYPE_WEBRTC_DSP,GstWebrtcDspClass))
+
+typedef struct _GstWebrtcDsp GstWebrtcDsp;
+typedef struct _GstWebrtcDspClass GstWebrtcDspClass;
+
+struct _GstWebrtcDspClass
+{
+ GstAudioFilterClass parent_class;
+};
+
+GType gst_webrtc_dsp_get_type (void);
+
+G_END_DECLS
+
+#endif /* __GST_WEBRTC_DSP_H__ */
diff --git a/ext/webrtcdsp/gstwebrtcechoprobe.cpp b/ext/webrtcdsp/gstwebrtcechoprobe.cpp
new file mode 100644
index 0000000..ebc35c1
--- /dev/null
+++ b/ext/webrtcdsp/gstwebrtcechoprobe.cpp
@@ -0,0 +1,336 @@
+/*
+ * WebRTC Audio Processing Elements
+ *
+ * Copyright 2016 Collabora Ltd
+ * @author: Nicolas Dufresne <nicolas.dufresne@collabora.com>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 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
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ *
+ */
+
+/**
+ * SECTION:element-webrtcechoprobe
+ *
+ * This echo probe is to be used with the webrtcdsp element. See #gst-plugins-bad-plugins-webrtcdsp
+ * documentation for more details.
+ */
+
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#include "gstwebrtcechoprobe.h"
+
+#include <webrtc/modules/interface/module_common_types.h>
+#include <gst/audio/audio.h>
+
+GST_DEBUG_CATEGORY_EXTERN (webrtc_dsp_debug);
+#define GST_CAT_DEFAULT (webrtc_dsp_debug)
+
+#define MAX_ADAPTER_SIZE (1*1024*1024)
+
+static GstStaticPadTemplate gst_webrtc_echo_probe_sink_template =
+GST_STATIC_PAD_TEMPLATE ("sink",
+ GST_PAD_SINK,
+ GST_PAD_ALWAYS,
+ GST_STATIC_CAPS ("audio/x-raw, "
+ "format = (string) " GST_AUDIO_NE (S16) ", "
+ "layout = (string) interleaved, "
+ "rate = (int) { 48000, 32000, 16000, 8000 }, "
+ "channels = (int) [1, MAX]")
+ );
+
+static GstStaticPadTemplate gst_webrtc_echo_probe_src_template =
+GST_STATIC_PAD_TEMPLATE ("src",
+ GST_PAD_SRC,
+ GST_PAD_ALWAYS,
+ GST_STATIC_CAPS ("audio/x-raw, "
+ "format = (string) " GST_AUDIO_NE (S16) ", "
+ "layout = (string) interleaved, "
+ "rate = (int) { 48000, 32000, 16000, 8000 }, "
+ "channels = (int) [1, MAX]")
+ );
+
+G_LOCK_DEFINE_STATIC (gst_aec_probes);
+static GList *gst_aec_probes = NULL;
+
+G_DEFINE_TYPE (GstWebrtcEchoProbe, gst_webrtc_echo_probe,
+ GST_TYPE_AUDIO_FILTER);
+
+static gboolean
+gst_webrtc_echo_probe_setup (GstAudioFilter * filter, const GstAudioInfo * info)
+{
+ GstWebrtcEchoProbe *self = GST_WEBRTC_ECHO_PROBE (filter);
+
+ GST_LOG_OBJECT (self, "setting format to %s with %i Hz and %i channels",
+ info->finfo->description, info->rate, info->channels);
+
+ GST_WEBRTC_ECHO_PROBE_LOCK (self);
+
+ self->info = *info;
+
+ /* WebRTC library works with 10ms buffers, compute once this size */
+ self->period_size = info->bpf * info->rate / 100;
+
+ if ((webrtc::AudioFrame::kMaxDataSizeSamples * 2) < self->period_size)
+ goto period_too_big;
+
+ GST_WEBRTC_ECHO_PROBE_UNLOCK (self);
+
+ return TRUE;
+
+period_too_big:
+ GST_WEBRTC_ECHO_PROBE_UNLOCK (self);
+ GST_WARNING_OBJECT (self, "webrtcdsp format produce too big period "
+ "(maximum is %" G_GSIZE_FORMAT " samples and we have %u samples), "
+ "reduce the number of channels or the rate.",
+ webrtc::AudioFrame::kMaxDataSizeSamples, self->period_size / 2);
+ return FALSE;
+}
+
+static gboolean
+gst_webrtc_echo_probe_stop (GstBaseTransform * btrans)
+{
+ GstWebrtcEchoProbe *self = GST_WEBRTC_ECHO_PROBE (btrans);
+
+ GST_WEBRTC_ECHO_PROBE_LOCK (self);
+ gst_adapter_clear (self->adapter);
+ GST_WEBRTC_ECHO_PROBE_UNLOCK (self);
+
+ return TRUE;
+}
+
+static gboolean
+gst_webrtc_echo_probe_src_event (GstBaseTransform * btrans, GstEvent * event)
+{
+ GstBaseTransformClass *klass;
+ GstWebrtcEchoProbe *self = GST_WEBRTC_ECHO_PROBE (btrans);
+ GstClockTime latency;
+ GstClockTime upstream_latency = 0;
+ GstQuery *query;
+
+ klass = GST_BASE_TRANSFORM_CLASS (gst_webrtc_echo_probe_parent_class);
+
+ switch (GST_EVENT_TYPE (event)) {
+ case GST_EVENT_LATENCY:
+ gst_event_parse_latency (event, &latency);
+ query = gst_query_new_latency ();
+
+ if (gst_pad_query (btrans->srcpad, query)) {
+ gst_query_parse_latency (query, NULL, &upstream_latency, NULL);
+
+ if (!GST_CLOCK_TIME_IS_VALID (upstream_latency))
+ upstream_latency = 0;
+ }
+
+ GST_WEBRTC_ECHO_PROBE_LOCK (self);
+ self->latency = latency;
+ self->delay = upstream_latency / GST_MSECOND;
+ GST_WEBRTC_ECHO_PROBE_UNLOCK (self);
+
+ GST_DEBUG_OBJECT (self, "We have a latency of %" GST_TIME_FORMAT
+ " and delay of %ims", GST_TIME_ARGS (latency),
+ (gint) (upstream_latency / GST_MSECOND));
+ break;
+ default:
+ break;
+ }
+
+ return klass->src_event (btrans, event);
+}
+
+static GstFlowReturn
+gst_webrtc_echo_probe_transform_ip (GstBaseTransform * btrans,
+ GstBuffer * buffer)
+{
+ GstWebrtcEchoProbe *self = GST_WEBRTC_ECHO_PROBE (btrans);
+ GstBuffer *newbuf = NULL;
+
+ GST_WEBRTC_ECHO_PROBE_LOCK (self);
+ newbuf = gst_buffer_copy (buffer);
+ /* Moves the buffer timestamp to be in Running time */
+ GST_BUFFER_PTS (newbuf) = gst_segment_to_running_time (&btrans->segment,
+ GST_FORMAT_TIME, GST_BUFFER_PTS (buffer));
+ gst_adapter_push (self->adapter, newbuf);
+
+ if (gst_adapter_available (self->adapter) > MAX_ADAPTER_SIZE)
+ gst_adapter_flush (self->adapter,
+ gst_adapter_available (self->adapter) - MAX_ADAPTER_SIZE);
+ GST_WEBRTC_ECHO_PROBE_UNLOCK (self);
+
+ return GST_FLOW_OK;
+}
+
+static void
+gst_webrtc_echo_probe_finalize (GObject * object)
+{
+ GstWebrtcEchoProbe *self = GST_WEBRTC_ECHO_PROBE (object);
+
+ G_LOCK (gst_aec_probes);
+ gst_aec_probes = g_list_remove (gst_aec_probes, self);
+ G_UNLOCK (gst_aec_probes);
+
+ gst_object_unref (self->adapter);
+ self->adapter = NULL;
+
+ G_OBJECT_CLASS (gst_webrtc_echo_probe_parent_class)->finalize (object);
+}
+
+static void
+gst_webrtc_echo_probe_init (GstWebrtcEchoProbe * self)
+{
+ self->adapter = gst_adapter_new ();
+ gst_audio_info_init (&self->info);
+ g_mutex_init (&self->lock);
+
+ self->latency = GST_CLOCK_TIME_NONE;
+
+ G_LOCK (gst_aec_probes);
+ gst_aec_probes = g_list_prepend (gst_aec_probes, self);
+ G_UNLOCK (gst_aec_probes);
+}
+
+static void
+gst_webrtc_echo_probe_class_init (GstWebrtcEchoProbeClass * klass)
+{
+ GObjectClass *gobject_class = G_OBJECT_CLASS (klass);
+ GstElementClass *element_class = GST_ELEMENT_CLASS (klass);
+ GstBaseTransformClass *btrans_class = GST_BASE_TRANSFORM_CLASS (klass);
+ GstAudioFilterClass *audiofilter_class = GST_AUDIO_FILTER_CLASS (klass);
+
+ gobject_class->finalize = gst_webrtc_echo_probe_finalize;
+
+ btrans_class->passthrough_on_same_caps = TRUE;
+ btrans_class->src_event = GST_DEBUG_FUNCPTR (gst_webrtc_echo_probe_src_event);
+ btrans_class->transform_ip =
+ GST_DEBUG_FUNCPTR (gst_webrtc_echo_probe_transform_ip);
+ btrans_class->stop = GST_DEBUG_FUNCPTR (gst_webrtc_echo_probe_stop);
+
+ audiofilter_class->setup = GST_DEBUG_FUNCPTR (gst_webrtc_echo_probe_setup);
+
+ gst_element_class_add_static_pad_template (element_class,
+ &gst_webrtc_echo_probe_src_template);
+ gst_element_class_add_static_pad_template (element_class,
+ &gst_webrtc_echo_probe_sink_template);
+
+ gst_element_class_set_static_metadata (element_class,
+ "Accoustic Echo Canceller probe",
+ "Generic/Audio",
+ "Gathers playback buffers for webrtcdsp",
+ "Nicolas Dufresne <nicolas.dufrsesne@collabora.com>");
+}
+
+
+GstWebrtcEchoProbe *
+gst_webrtc_acquire_echo_probe (const gchar * name)
+{
+ GstWebrtcEchoProbe *ret = NULL;
+ GList *l;
+
+ G_LOCK (gst_aec_probes);
+ for (l = gst_aec_probes; l; l = l->next) {
+ GstWebrtcEchoProbe *probe = GST_WEBRTC_ECHO_PROBE (l->data);
+
+ GST_WEBRTC_ECHO_PROBE_LOCK (probe);
+ if (!probe->acquired && g_strcmp0 (GST_OBJECT_NAME (probe), name) == 0) {
+ probe->acquired = TRUE;
+ ret = GST_WEBRTC_ECHO_PROBE (gst_object_ref (probe));
+ GST_WEBRTC_ECHO_PROBE_UNLOCK (probe);
+ break;
+ }
+ GST_WEBRTC_ECHO_PROBE_UNLOCK (probe);
+ }
+ G_UNLOCK (gst_aec_probes);
+
+ return ret;
+}
+
+void
+gst_webrtc_release_echo_probe (GstWebrtcEchoProbe * probe)
+{
+ GST_WEBRTC_ECHO_PROBE_LOCK (probe);
+ probe->acquired = FALSE;
+ GST_WEBRTC_ECHO_PROBE_UNLOCK (probe);
+ gst_object_unref (probe);
+}
+
+gint
+gst_webrtc_echo_probe_read (GstWebrtcEchoProbe * self, GstClockTime rec_time,
+ gpointer _frame)
+{
+ webrtc::AudioFrame * frame = (webrtc::AudioFrame *) _frame;
+ GstClockTimeDiff diff;
+ gsize avail, skip, offset, size;
+ gint delay = -1;
+
+ GST_WEBRTC_ECHO_PROBE_LOCK (self);
+
+ if (!GST_CLOCK_TIME_IS_VALID (self->latency))
+ goto done;
+
+ if (gst_adapter_available (self->adapter) == 0) {
+ diff = G_MAXINT64;
+ } else {
+ GstClockTime play_time;
+ guint64 distance;
+
+ play_time = gst_adapter_prev_pts (self->adapter, &distance);
+
+ if (GST_CLOCK_TIME_IS_VALID (play_time)) {
+ play_time += gst_util_uint64_scale_int (distance / self->info.bpf,
+ GST_SECOND, self->info.rate);
+ play_time += self->latency;
+
+ diff = GST_CLOCK_DIFF (rec_time, play_time) / GST_MSECOND;
+ } else {
+ /* We have no timestamp, assume perfect delay */
+ diff = self->delay;
+ }
+ }
+
+ avail = gst_adapter_available (self->adapter);
+
+ if (diff > self->delay) {
+ skip = (diff - self->delay) * self->info.rate / 1000 * self->info.bpf;
+ skip = MIN (self->period_size, skip);
+ offset = 0;
+ } else {
+ skip = 0;
+ offset = (self->delay - diff) * self->info.rate / 1000 * self->info.bpf;
+ offset = MIN (avail, offset);
+ }
+
+ size = MIN (avail - offset, self->period_size - skip);
+
+ if (size < self->period_size)
+ memset (frame->data_, 0, self->period_size);
+
+ if (size) {
+ gst_adapter_copy (self->adapter, (guint8 *) frame->data_ + skip,
+ offset, size);
+ gst_adapter_flush (self->adapter, offset + size);
+ }
+
+ frame->num_channels_ = self->info.channels;
+ frame->sample_rate_hz_ = self->info.rate;
+ frame->samples_per_channel_ = self->period_size / self->info.bpf;
+
+ delay = self->delay;
+
+done:
+ GST_WEBRTC_ECHO_PROBE_UNLOCK (self);
+
+ return delay;
+}
diff --git a/ext/webrtcdsp/gstwebrtcechoprobe.h b/ext/webrtcdsp/gstwebrtcechoprobe.h
new file mode 100644
index 0000000..7c8a240
--- /dev/null
+++ b/ext/webrtcdsp/gstwebrtcechoprobe.h
@@ -0,0 +1,88 @@
+/*
+ * WebRTC Audio Processing Elements
+ *
+ * Copyright 2016 Collabora Ltd
+ * @author: Nicolas Dufresne <nicolas.dufresne@collabora.com>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 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
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ *
+ */
+
+#ifndef __GST_WEBRTC_ECHO_PROBE_H__
+#define __GST_WEBRTC_ECHO_PROBE_H__
+
+#include <gst/gst.h>
+#include <gst/base/gstadapter.h>
+#include <gst/base/gstbasetransform.h>
+#include <gst/audio/audio.h>
+
+G_BEGIN_DECLS
+
+#define GST_TYPE_WEBRTC_ECHO_PROBE (gst_webrtc_echo_probe_get_type())
+#define GST_WEBRTC_ECHO_PROBE(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj),GST_TYPE_WEBRTC_ECHO_PROBE,GstWebrtcEchoProbe))
+#define GST_IS_WEBRTC_ECHO_PROBE(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj),GST_TYPE_WEBRTC_ECHO_PROBE))
+#define GST_WEBRTC_ECHO_PROBE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass) ,GST_TYPE_WEBRTC_ECHO_PROBE,GstWebrtcEchoProbeClass))
+#define GST_IS_WEBRTC_ECHO_PROBE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE((klass) ,GST_TYPE_WEBRTC_ECHO_PROBE))
+#define GST_WEBRTC_ECHO_PROBE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS((obj) ,GST_TYPE_WEBRTC_ECHO_PROBE,GstWebrtcEchoProbeClass))
+
+#define GST_WEBRTC_ECHO_PROBE_LOCK(obj) g_mutex_lock (&GST_WEBRTC_ECHO_PROBE (obj)->lock)
+#define GST_WEBRTC_ECHO_PROBE_UNLOCK(obj) g_mutex_unlock (&GST_WEBRTC_ECHO_PROBE (obj)->lock)
+
+typedef struct _GstWebrtcEchoProbe GstWebrtcEchoProbe;
+typedef struct _GstWebrtcEchoProbeClass GstWebrtcEchoProbeClass;
+
+/**
+ * GstWebrtcEchoProbe:
+ *
+ * The adder object structure.
+ */
+struct _GstWebrtcEchoProbe
+{
+ GstAudioFilter parent;
+
+ /* This lock is required as the DSP may need to lock itself using it's
+ * object lock and also lock the probe. The natural order for the DSP is
+ * to lock the DSP and then the echo probe. If we where using the probe
+ * object lock, we'd be racing with GstBin which will lock sink to src,
+ * and may accidently reverse the order. */
+ GMutex lock;
+
+ /* Protected by the lock */
+ GstAudioInfo info;
+ guint period_size;
+ GstClockTime latency;
+ gint delay;
+
+ GstSegment segment;
+ GstAdapter *adapter;
+
+ /* Private */
+ gboolean acquired;
+};
+
+struct _GstWebrtcEchoProbeClass
+{
+ GstAudioFilterClass parent_class;
+};
+
+GType gst_webrtc_echo_probe_get_type (void);
+
+GstWebrtcEchoProbe *gst_webrtc_acquire_echo_probe (const gchar * name);
+void gst_webrtc_release_echo_probe (GstWebrtcEchoProbe * probe);
+gint gst_webrtc_echo_probe_read (GstWebrtcEchoProbe * self,
+ GstClockTime rec_time, gpointer frame);
+
+G_END_DECLS
+#endif /* __GST_WEBRTC_ECHO_PROBE_H__ */
diff --git a/ext/x265/Makefile.in b/ext/x265/Makefile.in
index a4a2314..21806e9 100644
--- a/ext/x265/Makefile.in
+++ b/ext/x265/Makefile.in
@@ -302,6 +302,8 @@
DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
DSYMUTIL = @DSYMUTIL@
DTLS_CFLAGS = @DTLS_CFLAGS@
DTLS_LIBS = @DTLS_LIBS@
@@ -517,6 +519,8 @@
LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
LIPO = @LIPO@
LN_S = @LN_S@
LOCALEDIR = @LOCALEDIR@
@@ -643,8 +647,6 @@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
SNDIO_LIBS = @SNDIO_LIBS@
@@ -689,6 +691,8 @@
WAYLAND_LIBS = @WAYLAND_LIBS@
WEBP_CFLAGS = @WEBP_CFLAGS@
WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
WGET = @WGET@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
diff --git a/ext/x265/gstx265enc.c b/ext/x265/gstx265enc.c
index 99fc522..d0e0c08 100644
--- a/ext/x265/gstx265enc.c
+++ b/ext/x265/gstx265enc.c
@@ -403,10 +403,8 @@
"x265enc", "Codec/Encoder/Video", "H265 Encoder",
"Thijs Vermeir <thijs.vermeir@barco.com>");
- gst_element_class_add_pad_template (element_class,
- gst_static_pad_template_get (&sink_factory));
- gst_element_class_add_pad_template (element_class,
- gst_static_pad_template_get (&src_factory));
+ gst_element_class_add_static_pad_template (element_class, &sink_factory);
+ gst_element_class_add_static_pad_template (element_class, &src_factory);
}
/* initialize the new element
diff --git a/ext/xvid/Makefile.in b/ext/xvid/Makefile.in
index 7c86a9f..837a093 100644
--- a/ext/xvid/Makefile.in
+++ b/ext/xvid/Makefile.in
@@ -303,6 +303,8 @@
DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
DSYMUTIL = @DSYMUTIL@
DTLS_CFLAGS = @DTLS_CFLAGS@
DTLS_LIBS = @DTLS_LIBS@
@@ -518,6 +520,8 @@
LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
LIPO = @LIPO@
LN_S = @LN_S@
LOCALEDIR = @LOCALEDIR@
@@ -644,8 +648,6 @@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
SNDIO_LIBS = @SNDIO_LIBS@
@@ -690,6 +692,8 @@
WAYLAND_LIBS = @WAYLAND_LIBS@
WEBP_CFLAGS = @WEBP_CFLAGS@
WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
WGET = @WGET@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
diff --git a/ext/xvid/gstxviddec.c b/ext/xvid/gstxviddec.c
index 7e20ad5..b49cf2f 100644
--- a/ext/xvid/gstxviddec.c
+++ b/ext/xvid/gstxviddec.c
@@ -100,10 +100,8 @@
{
GstElementClass *element_class = GST_ELEMENT_CLASS (klass);
- gst_element_class_add_pad_template (element_class,
- gst_static_pad_template_get (&sink_template));
- gst_element_class_add_pad_template (element_class,
- gst_static_pad_template_get (&src_template));
+ gst_element_class_add_static_pad_template (element_class, &sink_template);
+ gst_element_class_add_static_pad_template (element_class, &src_template);
gst_element_class_set_static_metadata (element_class, "XviD video decoder",
"Codec/Decoder/Video",
diff --git a/ext/xvid/gstxvidenc.c b/ext/xvid/gstxvidenc.c
index c2ecfb8..edf89b7 100644
--- a/ext/xvid/gstxvidenc.c
+++ b/ext/xvid/gstxvidenc.c
@@ -244,10 +244,8 @@
{
GstElementClass *element_class = GST_ELEMENT_CLASS (klass);
- gst_element_class_add_pad_template (element_class,
- gst_static_pad_template_get (&sink_template));
- gst_element_class_add_pad_template (element_class,
- gst_static_pad_template_get (&src_template));
+ gst_element_class_add_static_pad_template (element_class, &sink_template);
+ gst_element_class_add_static_pad_template (element_class, &src_template);
gst_element_class_set_static_metadata (element_class, "XviD video encoder",
"Codec/Encoder/Video",
"XviD encoder based on xvidcore",
diff --git a/ext/zbar/Makefile.in b/ext/zbar/Makefile.in
index 40f9758..a413202 100644
--- a/ext/zbar/Makefile.in
+++ b/ext/zbar/Makefile.in
@@ -303,6 +303,8 @@
DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
DSYMUTIL = @DSYMUTIL@
DTLS_CFLAGS = @DTLS_CFLAGS@
DTLS_LIBS = @DTLS_LIBS@
@@ -518,6 +520,8 @@
LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
LIPO = @LIPO@
LN_S = @LN_S@
LOCALEDIR = @LOCALEDIR@
@@ -644,8 +648,6 @@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
SNDIO_LIBS = @SNDIO_LIBS@
@@ -690,6 +692,8 @@
WAYLAND_LIBS = @WAYLAND_LIBS@
WEBP_CFLAGS = @WEBP_CFLAGS@
WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
WGET = @WGET@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
diff --git a/ext/zbar/gstzbar.c b/ext/zbar/gstzbar.c
index 62fb106..e84f48c 100644
--- a/ext/zbar/gstzbar.c
+++ b/ext/zbar/gstzbar.c
@@ -192,10 +192,10 @@
"Detect bar codes in the video streams",
"Stefan Kost <ensonic@users.sf.net>");
- gst_element_class_add_pad_template (gstelement_class,
- gst_static_pad_template_get (&gst_zbar_sink_template));
- gst_element_class_add_pad_template (gstelement_class,
- gst_static_pad_template_get (&gst_zbar_src_template));
+ gst_element_class_add_static_pad_template (gstelement_class,
+ &gst_zbar_sink_template);
+ gst_element_class_add_static_pad_template (gstelement_class,
+ &gst_zbar_src_template);
trans_class->start = GST_DEBUG_FUNCPTR (gst_zbar_start);
trans_class->stop = GST_DEBUG_FUNCPTR (gst_zbar_stop);
diff --git a/gst-libs/Makefile.in b/gst-libs/Makefile.in
index e6505b3..24b60e2 100644
--- a/gst-libs/Makefile.in
+++ b/gst-libs/Makefile.in
@@ -276,6 +276,8 @@
DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
DSYMUTIL = @DSYMUTIL@
DTLS_CFLAGS = @DTLS_CFLAGS@
DTLS_LIBS = @DTLS_LIBS@
@@ -491,6 +493,8 @@
LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
LIPO = @LIPO@
LN_S = @LN_S@
LOCALEDIR = @LOCALEDIR@
@@ -617,8 +621,6 @@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
SNDIO_LIBS = @SNDIO_LIBS@
@@ -663,6 +665,8 @@
WAYLAND_LIBS = @WAYLAND_LIBS@
WEBP_CFLAGS = @WEBP_CFLAGS@
WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
WGET = @WGET@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
diff --git a/gst-libs/gst/Makefile.in b/gst-libs/gst/Makefile.in
index 77208a1..e81a7d1 100644
--- a/gst-libs/gst/Makefile.in
+++ b/gst-libs/gst/Makefile.in
@@ -278,6 +278,8 @@
DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
DSYMUTIL = @DSYMUTIL@
DTLS_CFLAGS = @DTLS_CFLAGS@
DTLS_LIBS = @DTLS_LIBS@
@@ -493,6 +495,8 @@
LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
LIPO = @LIPO@
LN_S = @LN_S@
LOCALEDIR = @LOCALEDIR@
@@ -619,8 +623,6 @@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
SNDIO_LIBS = @SNDIO_LIBS@
@@ -665,6 +667,8 @@
WAYLAND_LIBS = @WAYLAND_LIBS@
WEBP_CFLAGS = @WEBP_CFLAGS@
WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
WGET = @WGET@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
diff --git a/gst-libs/gst/adaptivedemux/Makefile.in b/gst-libs/gst/adaptivedemux/Makefile.in
index 0777736..aab6883 100644
--- a/gst-libs/gst/adaptivedemux/Makefile.in
+++ b/gst-libs/gst/adaptivedemux/Makefile.in
@@ -306,6 +306,8 @@
DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
DSYMUTIL = @DSYMUTIL@
DTLS_CFLAGS = @DTLS_CFLAGS@
DTLS_LIBS = @DTLS_LIBS@
@@ -521,6 +523,8 @@
LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
LIPO = @LIPO@
LN_S = @LN_S@
LOCALEDIR = @LOCALEDIR@
@@ -647,8 +651,6 @@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
SNDIO_LIBS = @SNDIO_LIBS@
@@ -693,6 +695,8 @@
WAYLAND_LIBS = @WAYLAND_LIBS@
WEBP_CFLAGS = @WEBP_CFLAGS@
WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
WGET = @WGET@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
diff --git a/gst-libs/gst/adaptivedemux/gstadaptivedemux.c b/gst-libs/gst/adaptivedemux/gstadaptivedemux.c
index ba29214..5e967bf 100644
--- a/gst-libs/gst/adaptivedemux/gstadaptivedemux.c
+++ b/gst-libs/gst/adaptivedemux/gstadaptivedemux.c
@@ -157,10 +157,8 @@
PROP_LAST
};
-enum GstAdaptiveDemuxFlowReturn
-{
- GST_ADAPTIVE_DEMUX_FLOW_SWITCH = GST_FLOW_CUSTOM_SUCCESS_2 + 1
-};
+/* Internal, so not using GST_FLOW_CUSTOM_SUCCESS_N */
+#define GST_ADAPTIVE_DEMUX_FLOW_SWITCH (GST_FLOW_CUSTOM_SUCCESS_2 + 1)
struct _GstAdaptiveDemuxPrivate
{
@@ -201,6 +199,15 @@
GMutex segment_lock;
};
+typedef struct _GstAdaptiveDemuxTimer
+{
+ volatile gint ref_count;
+ GCond *cond;
+ GMutex *mutex;
+ GstClockID clock_id;
+ gboolean fired;
+} GstAdaptiveDemuxTimer;
+
static GstBinClass *parent_class = NULL;
static void gst_adaptive_demux_class_init (GstAdaptiveDemuxClass * klass);
static void gst_adaptive_demux_init (GstAdaptiveDemux * dec,
@@ -264,14 +271,18 @@
stream, GstFlowReturn ret, GError * err);
static GstFlowReturn
gst_adaptive_demux_stream_data_received_default (GstAdaptiveDemux * demux,
- GstAdaptiveDemuxStream * stream);
+ GstAdaptiveDemuxStream * stream, GstBuffer * buffer);
static GstFlowReturn
gst_adaptive_demux_stream_finish_fragment_default (GstAdaptiveDemux * demux,
GstAdaptiveDemuxStream * stream);
static GstFlowReturn
gst_adaptive_demux_stream_advance_fragment_unlocked (GstAdaptiveDemux * demux,
GstAdaptiveDemuxStream * stream, GstClockTime duration);
-
+static gboolean
+gst_adaptive_demux_wait_until (GstClock * clock, GCond * cond, GMutex * mutex,
+ GstClockTime end_time);
+static gboolean gst_adaptive_demux_clock_callback (GstClock * clock,
+ GstClockTime time, GstClockID id, gpointer user_data);
/* we can't use G_DEFINE_ABSTRACT_TYPE because we need the klass in the _init
* method to get to the padtemplates */
@@ -400,6 +411,8 @@
GstAdaptiveDemuxClass * klass)
{
GstPadTemplate *pad_template;
+ GstClockType clock_type = GST_CLOCK_TYPE_OTHER;
+ GObjectClass *gobject_class;
GST_DEBUG_OBJECT (demux, "gst_adaptive_demux_init");
@@ -413,6 +426,30 @@
gst_segment_init (&demux->segment, GST_FORMAT_TIME);
+ demux->realtime_clock = gst_system_clock_obtain ();
+ g_assert (demux->realtime_clock != NULL);
+ gobject_class = G_OBJECT_GET_CLASS (demux->realtime_clock);
+ if (g_object_class_find_property (gobject_class, "clock-type")) {
+ g_object_get (demux->realtime_clock, "clock-type", &clock_type, NULL);
+ } else {
+ GST_WARNING_OBJECT (demux,
+ "System clock does not have clock-type property");
+ }
+ if (clock_type == GST_CLOCK_TYPE_REALTIME) {
+ demux->clock_offset = 0;
+ } else {
+ GDateTime *utc_now;
+ GstClockTime rtc_now;
+ GTimeVal gtv;
+
+ utc_now = g_date_time_new_now_utc ();
+ rtc_now = gst_clock_get_time (demux->realtime_clock);
+ g_date_time_to_timeval (utc_now, >v);
+ demux->clock_offset =
+ gtv.tv_sec * G_TIME_SPAN_SECOND + gtv.tv_usec -
+ GST_TIME_AS_USECONDS (rtc_now);
+ g_date_time_unref (utc_now);
+ }
g_rec_mutex_init (&demux->priv->updates_lock);
demux->priv->updates_task =
gst_task_new ((GstTaskFunction) gst_adaptive_demux_updates_loop,
@@ -466,6 +503,10 @@
g_rec_mutex_clear (&demux->priv->manifest_lock);
g_mutex_clear (&demux->priv->api_lock);
g_mutex_clear (&demux->priv->segment_lock);
+ if (demux->realtime_clock) {
+ gst_object_unref (demux->realtime_clock);
+ demux->realtime_clock = NULL;
+ }
G_OBJECT_CLASS (parent_class)->finalize (object);
}
@@ -838,7 +879,7 @@
stream->pending_caps = NULL;
}
- stream->discont = FALSE;
+ stream->discont = TRUE;
gst_object_ref (pad);
@@ -1074,7 +1115,6 @@
gst_segment_init (&stream->segment, GST_FORMAT_TIME);
g_cond_init (&stream->fragment_download_cond);
g_mutex_init (&stream->fragment_download_lock);
- stream->adapter = gst_adapter_new ();
demux->next_streams = g_list_append (demux->next_streams, stream);
@@ -1176,7 +1216,7 @@
if (stream->pending_caps)
gst_caps_unref (stream->pending_caps);
- g_object_unref (stream->adapter);
+ g_clear_pointer (&stream->pending_tags, gst_tag_list_unref);
g_free (stream);
}
@@ -1217,222 +1257,227 @@
GST_SEEK_FLAG_SNAP_NEAREST))
static gboolean
+gst_adaptive_demux_handle_seek_event (GstAdaptiveDemux * demux, GstPad * pad,
+ GstEvent * event)
+{
+ GstAdaptiveDemuxClass *demux_class = GST_ADAPTIVE_DEMUX_GET_CLASS (demux);
+ gdouble rate;
+ GstFormat format;
+ GstSeekFlags flags;
+ GstSeekType start_type, stop_type;
+ gint64 start, stop;
+ guint32 seqnum;
+ gboolean update;
+ gboolean ret;
+ GstSegment oldsegment;
+ GstAdaptiveDemuxStream *stream = NULL;
+
+ GST_INFO_OBJECT (demux, "Received seek event");
+
+ GST_API_LOCK (demux);
+ GST_MANIFEST_LOCK (demux);
+
+ if (!gst_adaptive_demux_can_seek (demux)) {
+ GST_MANIFEST_UNLOCK (demux);
+ GST_API_UNLOCK (demux);
+ gst_event_unref (event);
+ return FALSE;
+ }
+
+ gst_event_parse_seek (event, &rate, &format, &flags, &start_type, &start,
+ &stop_type, &stop);
+
+ if (format != GST_FORMAT_TIME) {
+ GST_MANIFEST_UNLOCK (demux);
+ GST_API_UNLOCK (demux);
+ gst_event_unref (event);
+ return FALSE;
+ }
+
+ if (gst_adaptive_demux_is_live (demux)) {
+ gint64 range_start, range_stop;
+ if (!gst_adaptive_demux_get_live_seek_range (demux, &range_start,
+ &range_stop)) {
+ GST_MANIFEST_UNLOCK (demux);
+ GST_API_UNLOCK (demux);
+ gst_event_unref (event);
+ return FALSE;
+ }
+ if (start < range_start || start >= range_stop) {
+ GST_MANIFEST_UNLOCK (demux);
+ GST_API_UNLOCK (demux);
+ GST_WARNING_OBJECT (demux, "Seek to invalid position");
+ gst_event_unref (event);
+ return FALSE;
+ }
+ }
+
+ seqnum = gst_event_get_seqnum (event);
+
+ GST_DEBUG_OBJECT (demux, "seek event, %" GST_PTR_FORMAT, event);
+
+ /* have a backup in case seek fails */
+ gst_segment_copy_into (&demux->segment, &oldsegment);
+
+ if (flags & GST_SEEK_FLAG_FLUSH) {
+ GstEvent *fevent;
+
+ GST_DEBUG_OBJECT (demux, "sending flush start");
+ fevent = gst_event_new_flush_start ();
+ gst_event_set_seqnum (fevent, seqnum);
+ gst_adaptive_demux_push_src_event (demux, fevent);
+
+ gst_adaptive_demux_stop_tasks (demux);
+ } else if ((rate > 0 && start_type != GST_SEEK_TYPE_NONE) ||
+ (rate < 0 && stop_type != GST_SEEK_TYPE_NONE)) {
+
+ gst_adaptive_demux_stop_tasks (demux);
+ }
+
+ GST_ADAPTIVE_DEMUX_SEGMENT_LOCK (demux);
+
+ /*
+ * Handle snap seeks as follows:
+ * 1) do the snap seeking on the stream that received
+ * the event
+ * 2) use the final position on this stream to seek
+ * on the other streams to the same position
+ *
+ * We can't snap at all streams at the same time as
+ * they might end in different positions, so just
+ * use the one that received the event as the 'leading'
+ * one to do the snap seek.
+ */
+ if (IS_SNAP_SEEK (flags) && demux_class->stream_seek && (stream =
+ gst_adaptive_demux_find_stream_for_pad (demux, pad))) {
+ GstClockTime ts;
+ GstSeekFlags stream_seek_flags = flags;
+
+ /* snap-seek on the stream that received the event and then
+ * use the resulting position to seek on all streams */
+
+ if (rate >= 0) {
+ if (start_type != GST_SEEK_TYPE_NONE)
+ ts = start;
+ else {
+ ts = stream->segment.position;
+ start_type = GST_SEEK_TYPE_SET;
+ }
+ } else {
+ if (stop_type != GST_SEEK_TYPE_NONE)
+ ts = stop;
+ else {
+ stop_type = GST_SEEK_TYPE_SET;
+ ts = stream->segment.position;
+ }
+ }
+
+ demux_class->stream_seek (stream, rate >= 0, stream_seek_flags, ts, &ts);
+
+ /* replace event with a new one without snaping to seek on all streams */
+ gst_event_unref (event);
+ if (rate >= 0) {
+ start = ts;
+ } else {
+ stop = ts;
+ }
+ event =
+ gst_event_new_seek (rate, format, REMOVE_SNAP_FLAGS (flags),
+ start_type, start, stop_type, stop);
+ GST_DEBUG_OBJECT (demux, "Adapted snap seek to %" GST_PTR_FORMAT, event);
+ }
+ stream = NULL;
+
+ gst_segment_do_seek (&demux->segment, rate, format, flags, start_type,
+ start, stop_type, stop, &update);
+
+ /* FIXME - this seems unatural, do_seek() is updating base when we
+ * only want the start/stop position to change, maybe do_seek() needs
+ * some fixing? */
+ if (!(flags & GST_SEEK_FLAG_FLUSH) && ((rate > 0
+ && start_type == GST_SEEK_TYPE_NONE) || (rate < 0
+ && stop_type == GST_SEEK_TYPE_NONE))) {
+ demux->segment.base = oldsegment.base;
+ }
+
+ GST_DEBUG_OBJECT (demux, "Calling subclass seek: %" GST_PTR_FORMAT, event);
+
+ ret = demux_class->seek (demux, event);
+
+ if (!ret) {
+ /* Is there anything else we can do if it fails? */
+ gst_segment_copy_into (&oldsegment, &demux->segment);
+ } else {
+ demux->priv->segment_seqnum = seqnum;
+ }
+ GST_ADAPTIVE_DEMUX_SEGMENT_UNLOCK (demux);
+
+ if (flags & GST_SEEK_FLAG_FLUSH) {
+ GstEvent *fevent;
+
+ GST_DEBUG_OBJECT (demux, "Sending flush stop on all pad");
+ fevent = gst_event_new_flush_stop (TRUE);
+ gst_event_set_seqnum (fevent, seqnum);
+ gst_adaptive_demux_push_src_event (demux, fevent);
+ }
+
+ if (demux->next_streams) {
+ gst_adaptive_demux_expose_streams (demux, FALSE);
+ } else {
+ GList *iter;
+ GstClockTime period_start =
+ gst_adaptive_demux_get_period_start_time (demux);
+
+ GST_ADAPTIVE_DEMUX_SEGMENT_LOCK (demux);
+ for (iter = demux->streams; iter; iter = g_list_next (iter)) {
+ GstAdaptiveDemuxStream *stream = iter->data;
+ GstEvent *seg_evt;
+ GstClockTime offset;
+
+ /* See comments in gst_adaptive_demux_get_period_start_time() for
+ * an explanation of the segment modifications */
+ stream->segment = demux->segment;
+ offset =
+ gst_adaptive_demux_stream_get_presentation_offset (demux, stream);
+ stream->segment.start += offset - period_start;
+ if (demux->segment.rate > 0 && start_type != GST_SEEK_TYPE_NONE)
+ stream->segment.position = stream->segment.start;
+ else if (demux->segment.rate < 0 && stop_type != GST_SEEK_TYPE_NONE)
+ stream->segment.position = stream->segment.stop;
+ seg_evt = gst_event_new_segment (&stream->segment);
+ gst_event_set_seqnum (seg_evt, demux->priv->segment_seqnum);
+ gst_event_replace (&stream->pending_segment, seg_evt);
+ gst_event_unref (seg_evt);
+ /* Make sure the first buffer after a seek has the discont flag */
+ stream->discont = TRUE;
+ }
+
+ GST_ADAPTIVE_DEMUX_SEGMENT_UNLOCK (demux);
+ }
+
+ /* Restart the demux */
+ gst_adaptive_demux_start_tasks (demux);
+ GST_MANIFEST_UNLOCK (demux);
+ GST_API_UNLOCK (demux);
+ gst_event_unref (event);
+
+ return ret;
+}
+
+static gboolean
gst_adaptive_demux_src_event (GstPad * pad, GstObject * parent,
GstEvent * event)
{
GstAdaptiveDemux *demux;
- GstAdaptiveDemuxClass *demux_class;
demux = GST_ADAPTIVE_DEMUX_CAST (parent);
- demux_class = GST_ADAPTIVE_DEMUX_GET_CLASS (demux);
/* FIXME handle events received on pads that are to be removed */
switch (event->type) {
case GST_EVENT_SEEK:
{
- gdouble rate;
- GstFormat format;
- GstSeekFlags flags;
- GstSeekType start_type, stop_type;
- gint64 start, stop;
- guint32 seqnum;
- gboolean update;
- gboolean ret = TRUE;
- GstSegment oldsegment;
- GstAdaptiveDemuxStream *stream = NULL;
-
- GST_INFO_OBJECT (demux, "Received seek event");
-
- GST_API_LOCK (demux);
- GST_MANIFEST_LOCK (demux);
-
- if (!gst_adaptive_demux_can_seek (demux)) {
- GST_MANIFEST_UNLOCK (demux);
- GST_API_UNLOCK (demux);
- gst_event_unref (event);
- return FALSE;
- }
-
- gst_event_parse_seek (event, &rate, &format, &flags, &start_type, &start,
- &stop_type, &stop);
-
- if (format != GST_FORMAT_TIME) {
- GST_MANIFEST_UNLOCK (demux);
- GST_API_UNLOCK (demux);
- gst_event_unref (event);
- return FALSE;
- }
-
- if (gst_adaptive_demux_is_live (demux)) {
- gint64 range_start, range_stop;
- if (!gst_adaptive_demux_get_live_seek_range (demux, &range_start,
- &range_stop)) {
- GST_MANIFEST_UNLOCK (demux);
- GST_API_UNLOCK (demux);
- gst_event_unref (event);
- return FALSE;
- }
- if (start < range_start || start >= range_stop) {
- GST_MANIFEST_UNLOCK (demux);
- GST_API_UNLOCK (demux);
- GST_WARNING_OBJECT (demux, "Seek to invalid position");
- gst_event_unref (event);
- return FALSE;
- }
- }
-
- seqnum = gst_event_get_seqnum (event);
-
- GST_DEBUG_OBJECT (demux, "seek event, %" GST_PTR_FORMAT, event);
-
- /* have a backup in case seek fails */
- gst_segment_copy_into (&demux->segment, &oldsegment);
-
- if (flags & GST_SEEK_FLAG_FLUSH) {
- GstEvent *fevent;
-
- GST_DEBUG_OBJECT (demux, "sending flush start");
- fevent = gst_event_new_flush_start ();
- gst_event_set_seqnum (fevent, seqnum);
- gst_adaptive_demux_push_src_event (demux, fevent);
-
- gst_adaptive_demux_stop_tasks (demux);
- } else if ((rate > 0 && start_type != GST_SEEK_TYPE_NONE) ||
- (rate < 0 && stop_type != GST_SEEK_TYPE_NONE)) {
-
- gst_adaptive_demux_stop_tasks (demux);
- }
-
- GST_ADAPTIVE_DEMUX_SEGMENT_LOCK (demux);
-
- /*
- * Handle snap seeks as follows:
- * 1) do the snap seeking on the stream that received
- * the event
- * 2) use the final position on this stream to seek
- * on the other streams to the same position
- *
- * We can't snap at all streams at the same time as
- * they might end in different positions, so just
- * use the one that received the event as the 'leading'
- * one to do the snap seek.
- */
- if (IS_SNAP_SEEK (flags) && demux_class->stream_seek && (stream =
- gst_adaptive_demux_find_stream_for_pad (demux, pad))) {
- GstClockTime ts;
- GstSeekFlags stream_seek_flags = flags;
-
- /* snap-seek on the stream that received the event and then
- * use the resulting position to seek on all streams */
-
- if (rate >= 0) {
- if (start_type != GST_SEEK_TYPE_NONE)
- ts = start;
- else {
- ts = stream->segment.position;
- start_type = GST_SEEK_TYPE_SET;
- }
- } else {
- if (stop_type != GST_SEEK_TYPE_NONE)
- ts = stop;
- else {
- stop_type = GST_SEEK_TYPE_SET;
- ts = stream->segment.position;
- }
- }
-
- demux_class->stream_seek (stream, rate >= 0, stream_seek_flags, ts,
- &ts);
-
- /* replace event with a new one without snaping to seek on all streams */
- gst_event_unref (event);
- if (rate >= 0) {
- start = ts;
- } else {
- stop = ts;
- }
- event =
- gst_event_new_seek (rate, format, REMOVE_SNAP_FLAGS (flags),
- start_type, start, stop_type, stop);
- GST_DEBUG_OBJECT (demux, "Adapted snap seek to %" GST_PTR_FORMAT,
- event);
- }
- stream = NULL;
-
- gst_segment_do_seek (&demux->segment, rate, format, flags, start_type,
- start, stop_type, stop, &update);
-
- /* FIXME - this seems unatural, do_seek() is updating base when we
- * only want the start/stop position to change, maybe do_seek() needs
- * some fixing? */
- if (!(flags & GST_SEEK_FLAG_FLUSH) && ((rate > 0
- && start_type == GST_SEEK_TYPE_NONE) || (rate < 0
- && stop_type == GST_SEEK_TYPE_NONE))) {
- demux->segment.base = oldsegment.base;
- }
-
- GST_DEBUG_OBJECT (demux, "Calling subclass seek: %" GST_PTR_FORMAT,
- event);
-
- ret = demux_class->seek (demux, event);
-
- if (!ret) {
- /* Is there anything else we can do if it fails? */
- gst_segment_copy_into (&oldsegment, &demux->segment);
- } else {
- demux->priv->segment_seqnum = seqnum;
- }
- GST_ADAPTIVE_DEMUX_SEGMENT_UNLOCK (demux);
-
- if (flags & GST_SEEK_FLAG_FLUSH) {
- GstEvent *fevent;
-
- GST_DEBUG_OBJECT (demux, "Sending flush stop on all pad");
- fevent = gst_event_new_flush_stop (TRUE);
- gst_event_set_seqnum (fevent, seqnum);
- gst_adaptive_demux_push_src_event (demux, fevent);
- }
-
- if (demux->next_streams) {
- gst_adaptive_demux_expose_streams (demux, FALSE);
- } else {
- GList *iter;
- GstClockTime period_start =
- gst_adaptive_demux_get_period_start_time (demux);
-
- GST_ADAPTIVE_DEMUX_SEGMENT_LOCK (demux);
- for (iter = demux->streams; iter; iter = g_list_next (iter)) {
- GstAdaptiveDemuxStream *stream = iter->data;
- GstEvent *seg_evt;
- GstClockTime offset;
-
- /* See comments in gst_adaptive_demux_get_period_start_time() for
- * an explanation of the segment modifications */
- stream->segment = demux->segment;
- offset =
- gst_adaptive_demux_stream_get_presentation_offset (demux, stream);
- stream->segment.start += offset - period_start;
- if (demux->segment.rate > 0 && start_type != GST_SEEK_TYPE_NONE)
- stream->segment.position = stream->segment.start;
- else if (demux->segment.rate < 0 && stop_type != GST_SEEK_TYPE_NONE)
- stream->segment.position = stream->segment.stop;
- seg_evt = gst_event_new_segment (&stream->segment);
- gst_event_set_seqnum (seg_evt, demux->priv->segment_seqnum);
- gst_event_replace (&stream->pending_segment, seg_evt);
- gst_event_unref (seg_evt);
- }
-
- GST_ADAPTIVE_DEMUX_SEGMENT_UNLOCK (demux);
- }
-
- /* Restart the demux */
- gst_adaptive_demux_start_tasks (demux);
- GST_MANIFEST_UNLOCK (demux);
- GST_API_UNLOCK (demux);
-
- gst_event_unref (event);
- return ret;
+ return gst_adaptive_demux_handle_seek_event (demux, pad, event);
}
case GST_EVENT_RECONFIGURE:{
GstAdaptiveDemuxStream *stream;
@@ -1672,7 +1717,6 @@
stream->download_error_count = 0;
stream->need_header = TRUE;
- gst_adapter_clear (stream->adapter);
}
}
@@ -1969,12 +2013,8 @@
*/
static GstFlowReturn
gst_adaptive_demux_stream_data_received_default (GstAdaptiveDemux * demux,
- GstAdaptiveDemuxStream * stream)
+ GstAdaptiveDemuxStream * stream, GstBuffer * buffer)
{
- GstBuffer *buffer;
-
- buffer = gst_adapter_take_buffer (stream->adapter,
- gst_adapter_available (stream->adapter));
return gst_adaptive_demux_stream_push_buffer (stream, buffer);
}
@@ -2070,15 +2110,14 @@
}
stream->download_total_time +=
- g_get_monotonic_time () - stream->download_chunk_start_time;
+ GST_TIME_AS_USECONDS (gst_adaptive_demux_get_monotonic_time (demux)) -
+ stream->download_chunk_start_time;
stream->download_total_bytes += gst_buffer_get_size (buffer);
- gst_adapter_push (stream->adapter, buffer);
- GST_DEBUG_OBJECT (stream->pad, "Received buffer of size %" G_GSIZE_FORMAT
- ". Now %" G_GSIZE_FORMAT " on adapter", gst_buffer_get_size (buffer),
- gst_adapter_available (stream->adapter));
+ GST_DEBUG_OBJECT (stream->pad, "Received buffer of size %" G_GSIZE_FORMAT,
+ gst_buffer_get_size (buffer));
- ret = klass->data_received (demux, stream);
+ ret = klass->data_received (demux, stream, buffer);
if (ret == GST_FLOW_FLUSHING) {
/* do not make any changes if the stream is cancelled */
@@ -2091,9 +2130,12 @@
g_mutex_unlock (&stream->fragment_download_lock);
}
- stream->download_chunk_start_time = g_get_monotonic_time ();
+ stream->download_chunk_start_time =
+ GST_TIME_AS_USECONDS (gst_adaptive_demux_get_monotonic_time (demux));
if (ret != GST_FLOW_OK) {
+ gboolean finished = FALSE;
+
if (ret < GST_FLOW_EOS) {
GST_ELEMENT_ERROR (demux, STREAM, FAILED, (NULL),
("stream stopped, reason %s", gst_flow_get_name (ret)));
@@ -2105,9 +2147,22 @@
gst_flow_get_name (ret));
}
- gst_adaptive_demux_stream_fragment_download_finish (stream, ret, NULL);
- if (ret == (GstFlowReturn) GST_ADAPTIVE_DEMUX_FLOW_SWITCH)
+ if (ret == (GstFlowReturn) GST_ADAPTIVE_DEMUX_FLOW_SWITCH) {
ret = GST_FLOW_EOS; /* return EOS to make the source stop */
+ } else if (ret == GST_ADAPTIVE_DEMUX_FLOW_END_OF_FRAGMENT) {
+ /* Behaves like an EOS event from upstream */
+ ret = klass->finish_fragment (demux, stream);
+ if (ret == (GstFlowReturn) GST_ADAPTIVE_DEMUX_FLOW_SWITCH) {
+ ret = GST_FLOW_EOS; /* return EOS to make the source stop */
+ } else if (ret != GST_FLOW_OK) {
+ goto error;
+ }
+ finished = TRUE;
+ }
+
+ gst_adaptive_demux_stream_fragment_download_finish (stream, ret, NULL);
+ if (finished)
+ ret = GST_FLOW_EOS;
}
error:
@@ -2463,8 +2518,9 @@
}
if (G_LIKELY (stream->last_ret == GST_FLOW_OK)) {
- stream->download_start_time = g_get_monotonic_time ();
- stream->download_chunk_start_time = g_get_monotonic_time ();
+ stream->download_start_time =
+ GST_TIME_AS_USECONDS (gst_adaptive_demux_get_monotonic_time (demux));
+ stream->download_chunk_start_time = stream->download_start_time;
/* src element is in state READY. Before we start it, we reset
* download_finished
@@ -2668,7 +2724,7 @@
gst_adaptive_demux_stream_download_loop (GstAdaptiveDemuxStream * stream)
{
GstAdaptiveDemux *demux = stream->demux;
- guint64 next_download = g_get_monotonic_time ();
+ GstClockTime next_download = gst_adaptive_demux_get_monotonic_time (demux);
GstFlowReturn ret;
gboolean live;
@@ -2795,6 +2851,7 @@
GST_PTR_FORMAT, seg_event);
gst_pad_push_event (stream->pad, seg_event);
+ stream->discont = TRUE;
stream->restart_download = FALSE;
}
@@ -2810,7 +2867,8 @@
gint64 wait_time =
gst_adaptive_demux_stream_get_fragment_waiting_time (demux, stream);
if (wait_time > 0) {
- gint64 end_time = g_get_monotonic_time () + wait_time / GST_USECOND;
+ GstClockTime end_time =
+ gst_adaptive_demux_get_monotonic_time (demux) + wait_time;
GST_DEBUG_OBJECT (stream->pad, "Download waiting for %" GST_TIME_FORMAT,
GST_TIME_ARGS (wait_time));
@@ -2824,8 +2882,9 @@
stream->last_ret = GST_FLOW_FLUSHING;
goto cancelled;
}
- g_cond_wait_until (&stream->fragment_download_cond,
- &stream->fragment_download_lock, end_time);
+ gst_adaptive_demux_wait_until (demux->realtime_clock,
+ &stream->fragment_download_cond, &stream->fragment_download_lock,
+ end_time);
g_mutex_unlock (&stream->fragment_download_lock);
GST_DEBUG_OBJECT (stream->pad, "Download finished waiting");
@@ -2844,7 +2903,7 @@
stream->last_ret = GST_FLOW_OK;
- next_download = g_get_monotonic_time ();
+ next_download = gst_adaptive_demux_get_monotonic_time (demux);
ret = gst_adaptive_demux_stream_download_fragment (stream);
if (ret == GST_FLOW_FLUSHING) {
@@ -2930,9 +2989,7 @@
}
/* Wait half the fragment duration before retrying */
- next_download +=
- gst_util_uint64_scale
- (stream->fragment.duration, G_USEC_PER_SEC, 2 * GST_SECOND);
+ next_download += stream->fragment.duration / 2;
GST_MANIFEST_UNLOCK (demux);
@@ -2943,8 +3000,9 @@
stream->last_ret = GST_FLOW_FLUSHING;
goto cancelled;
}
- g_cond_wait_until (&stream->fragment_download_cond,
- &stream->fragment_download_lock, next_download);
+ gst_adaptive_demux_wait_until (demux->realtime_clock,
+ &stream->fragment_download_cond, &stream->fragment_download_lock,
+ next_download);
g_mutex_unlock (&stream->fragment_download_lock);
GST_DEBUG_OBJECT (demux, "Retrying now");
@@ -3025,7 +3083,7 @@
static void
gst_adaptive_demux_updates_loop (GstAdaptiveDemux * demux)
{
- gint64 next_update;
+ GstClockTime next_update;
GstAdaptiveDemuxClass *klass = GST_ADAPTIVE_DEMUX_GET_CLASS (demux);
/* Loop for updating of the playlist. This periodically checks if
@@ -3037,8 +3095,9 @@
GST_MANIFEST_LOCK (demux);
- next_update = g_get_monotonic_time () +
- klass->get_manifest_update_interval (demux);
+ next_update =
+ gst_adaptive_demux_get_monotonic_time (demux) +
+ klass->get_manifest_update_interval (demux) * GST_USECOND;
/* Updating playlist only needed for live playlists */
while (gst_adaptive_demux_is_live (demux)) {
@@ -3054,7 +3113,8 @@
g_mutex_unlock (&demux->priv->updates_timed_lock);
goto quit;
}
- g_cond_wait_until (&demux->priv->updates_timed_cond,
+ gst_adaptive_demux_wait_until (demux->realtime_clock,
+ &demux->priv->updates_timed_cond,
&demux->priv->updates_timed_lock, next_update);
g_mutex_unlock (&demux->priv->updates_timed_lock);
@@ -3078,8 +3138,8 @@
demux->priv->update_failed_count++;
if (demux->priv->update_failed_count <= DEFAULT_FAILED_COUNT) {
GST_WARNING_OBJECT (demux, "Could not update the playlist");
- next_update = g_get_monotonic_time () +
- klass->get_manifest_update_interval (demux);
+ next_update = gst_adaptive_demux_get_monotonic_time (demux)
+ + klass->get_manifest_update_interval (demux) * GST_USECOND;
} else {
GST_ELEMENT_ERROR (demux, STREAM, FAILED,
(_("Internal data stream error.")), ("Could not update playlist"));
@@ -3090,8 +3150,9 @@
}
} else {
GST_DEBUG_OBJECT (demux, "Updated playlist successfully");
- next_update = g_get_monotonic_time () +
- klass->get_manifest_update_interval (demux);
+ next_update =
+ gst_adaptive_demux_get_monotonic_time (demux) +
+ klass->get_manifest_update_interval (demux) * GST_USECOND;
/* Wake up download tasks */
g_mutex_lock (&demux->priv->manifest_update_lock);
@@ -3238,13 +3299,12 @@
}
stream->download_start_time = stream->download_chunk_start_time =
- g_get_monotonic_time ();
+ GST_TIME_AS_USECONDS (gst_adaptive_demux_get_monotonic_time (demux));
if (ret == GST_FLOW_OK) {
if (gst_adaptive_demux_stream_select_bitrate (demux, stream,
gst_adaptive_demux_stream_update_current_bitrate (demux, stream))) {
stream->need_header = TRUE;
- gst_adapter_clear (stream->adapter);
ret = (GstFlowReturn) GST_ADAPTIVE_DEMUX_FLOW_SWITCH;
}
@@ -3418,3 +3478,131 @@
gst_adaptive_demux_expose_streams (demux, FALSE);
gst_adaptive_demux_start_tasks (demux);
}
+
+/**
+ * gst_adaptive_demux_get_monotonic_time:
+ * Returns: a monotonically increasing time, using the system realtime clock
+ */
+GstClockTime
+gst_adaptive_demux_get_monotonic_time (GstAdaptiveDemux * demux)
+{
+ g_return_val_if_fail (demux != NULL, GST_CLOCK_TIME_NONE);
+ return gst_clock_get_time (demux->realtime_clock);
+}
+
+/**
+ * gst_adaptive_demux_get_client_now_utc:
+ * @demux: #GstAdaptiveDemux
+ * Returns: the client's estimate of UTC
+ *
+ * Used to find the client's estimate of UTC, using the system realtime clock.
+ */
+GDateTime *
+gst_adaptive_demux_get_client_now_utc (GstAdaptiveDemux * demux)
+{
+ GstClockTime rtc_now;
+ gint64 utc_now;
+ GTimeVal gtv;
+
+ rtc_now = gst_clock_get_time (demux->realtime_clock);
+ utc_now = demux->clock_offset + GST_TIME_AS_USECONDS (rtc_now);
+ gtv.tv_sec = utc_now / G_TIME_SPAN_SECOND;
+ gtv.tv_usec = utc_now % G_TIME_SPAN_SECOND;
+ return g_date_time_new_from_timeval_utc (>v);
+}
+
+static GstAdaptiveDemuxTimer *
+gst_adaptive_demux_timer_new (GCond * cond, GMutex * mutex)
+{
+ GstAdaptiveDemuxTimer *timer;
+
+ timer = g_slice_new (GstAdaptiveDemuxTimer);
+ timer->fired = FALSE;
+ timer->cond = cond;
+ timer->mutex = mutex;
+ timer->ref_count = 1;
+ return timer;
+}
+
+static GstAdaptiveDemuxTimer *
+gst_adaptive_demux_timer_ref (GstAdaptiveDemuxTimer * timer)
+{
+ g_return_val_if_fail (timer != NULL, NULL);
+ g_atomic_int_inc (&timer->ref_count);
+ return timer;
+}
+
+static void
+gst_adaptive_demux_timer_unref (GstAdaptiveDemuxTimer * timer)
+{
+ g_return_if_fail (timer != NULL);
+ if (g_atomic_int_dec_and_test (&timer->ref_count)) {
+ g_slice_free (GstAdaptiveDemuxTimer, timer);
+ }
+}
+
+/* gst_adaptive_demux_wait_until:
+ * A replacement for g_cond_wait_until that uses the clock rather
+ * than system time to control the duration of the sleep. Typically
+ * clock is actually a #GstSystemClock, in which case this function
+ * behaves exactly like g_cond_wait_until. Inside unit tests,
+ * the clock is typically a #GstTestClock, which allows tests to run
+ * in non-realtime.
+ * This function must be called with mutex held.
+ */
+static gboolean
+gst_adaptive_demux_wait_until (GstClock * clock, GCond * cond, GMutex * mutex,
+ GstClockTime end_time)
+{
+ GstAdaptiveDemuxTimer *timer;
+ gboolean fired;
+ GstClockReturn res;
+
+ if (G_UNLIKELY (!GST_CLOCK_TIME_IS_VALID (end_time))) {
+ /* for an invalid time, gst_clock_id_wait_async will try to call
+ * gst_adaptive_demux_clock_callback from the current thread.
+ * It still holds the mutex while doing that, so it will deadlock.
+ * g_cond_wait_until would return immediately with false, so we'll do the same.
+ */
+ return FALSE;
+ }
+ timer = gst_adaptive_demux_timer_new (cond, mutex);
+ timer->clock_id = gst_clock_new_single_shot_id (clock, end_time);
+ res =
+ gst_clock_id_wait_async (timer->clock_id,
+ gst_adaptive_demux_clock_callback, gst_adaptive_demux_timer_ref (timer),
+ (GDestroyNotify) gst_adaptive_demux_timer_unref);
+ /* clock does not support asynchronously wait. Assert and return */
+ if (res == GST_CLOCK_UNSUPPORTED) {
+ gst_clock_id_unref (timer->clock_id);
+ gst_adaptive_demux_timer_unref (timer);
+ g_return_val_if_reached (TRUE);
+ }
+ g_assert (!timer->fired);
+ /* the gst_adaptive_demux_clock_callback() will signal the
+ * cond when the clock's single shot timer fires, or the cond will be
+ * signalled by another thread that wants to cause this wait to finish
+ * early (e.g. to terminate the waiting thread).
+ * There is no need for a while loop here, because that logic is
+ * implemented by the function calling gst_adaptive_demux_wait_until() */
+ g_cond_wait (cond, mutex);
+ fired = timer->fired;
+ if (!fired)
+ gst_clock_id_unschedule (timer->clock_id);
+ gst_clock_id_unref (timer->clock_id);
+ gst_adaptive_demux_timer_unref (timer);
+ return !fired;
+}
+
+static gboolean
+gst_adaptive_demux_clock_callback (GstClock * clock,
+ GstClockTime time, GstClockID id, gpointer user_data)
+{
+ GstAdaptiveDemuxTimer *timer = (GstAdaptiveDemuxTimer *) user_data;
+ g_return_val_if_fail (timer != NULL, FALSE);
+ g_mutex_lock (timer->mutex);
+ timer->fired = TRUE;
+ g_cond_signal (timer->cond);
+ g_mutex_unlock (timer->mutex);
+ return TRUE;
+}
diff --git a/gst-libs/gst/adaptivedemux/gstadaptivedemux.h b/gst-libs/gst/adaptivedemux/gstadaptivedemux.h
index ae2d895..c75309f 100644
--- a/gst-libs/gst/adaptivedemux/gstadaptivedemux.h
+++ b/gst-libs/gst/adaptivedemux/gstadaptivedemux.h
@@ -81,6 +81,8 @@
g_clear_error (&err); \
} G_STMT_END
+#define GST_ADAPTIVE_DEMUX_FLOW_END_OF_FRAGMENT GST_FLOW_CUSTOM_SUCCESS_1
+
typedef struct _GstAdaptiveDemuxStreamFragment GstAdaptiveDemuxStreamFragment;
typedef struct _GstAdaptiveDemuxStream GstAdaptiveDemuxStream;
typedef struct _GstAdaptiveDemux GstAdaptiveDemux;
@@ -120,8 +122,6 @@
GstSegment segment;
- GstAdapter *adapter;
-
GstCaps *pending_caps;
GstEvent *pending_segment;
GstTagList *pending_tags;
@@ -205,6 +205,10 @@
gboolean have_group_id;
guint group_id;
+ /* Realtime clock */
+ GstClock *realtime_clock;
+ gint64 clock_offset; /* offset between realtime_clock and UTC (in usec) */
+
/* < private > */
GstAdaptiveDemuxPrivate *priv;
};
@@ -381,13 +385,14 @@
* data_received:
* @demux: #GstAdaptiveDemux
* @stream: #GstAdaptiveDemuxStream
+ * @buffer: #GstBuffer
*
* Notifies the subclass that a fragment chunk was downloaded. The subclass
- * can look at the data at the adapter and modify/push data as desired.
+ * can look at the data and modify/push data as desired.
*
* Returns: #GST_FLOW_OK if successful, #GST_FLOW_ERROR in case of error.
*/
- GstFlowReturn (*data_received) (GstAdaptiveDemux * demux, GstAdaptiveDemuxStream * stream);
+ GstFlowReturn (*data_received) (GstAdaptiveDemux * demux, GstAdaptiveDemuxStream * stream, GstBuffer * buffer);
/**
* get_live_seek_range:
@@ -450,6 +455,9 @@
void gst_adaptive_demux_stream_queue_event (GstAdaptiveDemuxStream * stream,
GstEvent * event);
+GstClockTime gst_adaptive_demux_get_monotonic_time (GstAdaptiveDemux * demux);
+GDateTime *gst_adaptive_demux_get_client_now_utc (GstAdaptiveDemux * demux);
+
G_END_DECLS
#endif
diff --git a/gst-libs/gst/audio/Makefile.in b/gst-libs/gst/audio/Makefile.in
index d7846bc..e23e3bd 100644
--- a/gst-libs/gst/audio/Makefile.in
+++ b/gst-libs/gst/audio/Makefile.in
@@ -294,6 +294,8 @@
DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
DSYMUTIL = @DSYMUTIL@
DTLS_CFLAGS = @DTLS_CFLAGS@
DTLS_LIBS = @DTLS_LIBS@
@@ -509,6 +511,8 @@
LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
LIPO = @LIPO@
LN_S = @LN_S@
LOCALEDIR = @LOCALEDIR@
@@ -635,8 +639,6 @@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
SNDIO_LIBS = @SNDIO_LIBS@
@@ -681,6 +683,8 @@
WAYLAND_LIBS = @WAYLAND_LIBS@
WEBP_CFLAGS = @WEBP_CFLAGS@
WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
WGET = @WGET@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
diff --git a/gst-libs/gst/audio/gstaudioaggregator.c b/gst-libs/gst/audio/gstaudioaggregator.c
index 5d7e8d6..a09b8a4 100644
--- a/gst-libs/gst/audio/gstaudioaggregator.c
+++ b/gst-libs/gst/audio/gstaudioaggregator.c
@@ -79,12 +79,24 @@
GstAggregator * aggregator);
static void
+gst_audio_aggregator_pad_finalize (GObject * object)
+{
+ GstAudioAggregatorPad *pad = (GstAudioAggregatorPad *) object;
+
+ gst_buffer_replace (&pad->priv->buffer, NULL);
+
+ G_OBJECT_CLASS (gst_audio_aggregator_pad_parent_class)->finalize (object);
+}
+
+static void
gst_audio_aggregator_pad_class_init (GstAudioAggregatorPadClass * klass)
{
+ GObjectClass *gobject_class = (GObjectClass *) klass;
GstAggregatorPadClass *aggpadclass = (GstAggregatorPadClass *) klass;
g_type_class_add_private (klass, sizeof (GstAudioAggregatorPadPrivate));
+ gobject_class->finalize = gst_audio_aggregator_pad_finalize;
aggpadclass->flush = GST_DEBUG_FUNCPTR (gst_audio_aggregator_pad_flush_pad);
}
diff --git a/gst-libs/gst/base/Makefile.in b/gst-libs/gst/base/Makefile.in
index 7117a16..070417b 100644
--- a/gst-libs/gst/base/Makefile.in
+++ b/gst-libs/gst/base/Makefile.in
@@ -288,6 +288,8 @@
DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
DSYMUTIL = @DSYMUTIL@
DTLS_CFLAGS = @DTLS_CFLAGS@
DTLS_LIBS = @DTLS_LIBS@
@@ -503,6 +505,8 @@
LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
LIPO = @LIPO@
LN_S = @LN_S@
LOCALEDIR = @LOCALEDIR@
@@ -629,8 +633,6 @@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
SNDIO_LIBS = @SNDIO_LIBS@
@@ -675,6 +677,8 @@
WAYLAND_LIBS = @WAYLAND_LIBS@
WEBP_CFLAGS = @WEBP_CFLAGS@
WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
WGET = @WGET@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
diff --git a/gst-libs/gst/base/gstaggregator.c b/gst-libs/gst/base/gstaggregator.c
index ec297df..d458e97 100644
--- a/gst-libs/gst/base/gstaggregator.c
+++ b/gst-libs/gst/base/gstaggregator.c
@@ -270,7 +270,7 @@
struct _GstAggregatorPrivate
{
- gint padcount;
+ gint max_padserial;
/* Our state is >= PAUSED */
gboolean running; /* protected by src_lock */
@@ -424,6 +424,7 @@
{
GstAggregatorPad *pad;
GList *l, *sinkpads;
+ gboolean have_data = TRUE;
GST_LOG_OBJECT (self, "checking pads");
@@ -438,22 +439,30 @@
PAD_LOCK (pad);
- /* In live mode, having a single pad with buffers is enough to
- * generate a start time from it. In non-live mode all pads need
- * to have a buffer
- */
- if (self->priv->peer_latency_live &&
- !gst_aggregator_pad_queue_is_empty (pad))
+ if (gst_aggregator_pad_queue_is_empty (pad)) {
+ if (!pad->priv->eos) {
+ have_data = FALSE;
+
+ /* If not live we need data on all pads, so leave the loop */
+ if (!self->priv->peer_latency_live) {
+ PAD_UNLOCK (pad);
+ goto pad_not_ready;
+ }
+ }
+ } else if (self->priv->peer_latency_live) {
+ /* In live mode, having a single pad with buffers is enough to
+ * generate a start time from it. In non-live mode all pads need
+ * to have a buffer
+ */
self->priv->first_buffer = FALSE;
-
- if (gst_aggregator_pad_queue_is_empty (pad) && !pad->priv->eos) {
- PAD_UNLOCK (pad);
- goto pad_not_ready;
}
- PAD_UNLOCK (pad);
+ PAD_UNLOCK (pad);
}
+ if (!have_data)
+ goto pad_not_ready;
+
self->priv->first_buffer = FALSE;
GST_OBJECT_UNLOCK (self);
@@ -649,6 +658,7 @@
* and if a pad does not have a buffer in time we ignore
* that pad.
*/
+ GST_OBJECT_LOCK (self);
if (!GST_CLOCK_TIME_IS_VALID (latency) ||
!GST_IS_CLOCK (GST_ELEMENT_CLOCK (self)) ||
!GST_CLOCK_TIME_IS_VALID (start) ||
@@ -659,6 +669,7 @@
* then check if we're ready now. If we return FALSE,
* we will be directly called again.
*/
+ GST_OBJECT_UNLOCK (self);
SRC_WAIT (self);
} else {
GstClockTime base_time, time;
@@ -669,11 +680,8 @@
GST_DEBUG_OBJECT (self, "got subclass start time: %" GST_TIME_FORMAT,
GST_TIME_ARGS (start));
- GST_OBJECT_LOCK (self);
base_time = GST_ELEMENT_CAST (self)->base_time;
- clock = GST_ELEMENT_CLOCK (self);
- if (clock)
- gst_object_ref (clock);
+ clock = gst_object_ref (GST_ELEMENT_CLOCK (self));
GST_OBJECT_UNLOCK (self);
time = base_time + start;
@@ -683,7 +691,7 @@
GST_TIME_FORMAT " (base %" GST_TIME_FORMAT " start %" GST_TIME_FORMAT
" latency %" GST_TIME_FORMAT " current %" GST_TIME_FORMAT ")",
GST_TIME_ARGS (time),
- GST_TIME_ARGS (GST_ELEMENT_CAST (self)->base_time),
+ GST_TIME_ARGS (base_time),
GST_TIME_ARGS (start), GST_TIME_ARGS (latency),
GST_TIME_ARGS (gst_clock_get_time (clock)));
@@ -1316,22 +1324,22 @@
gchar *name = NULL;
if (templ->direction != GST_PAD_SINK ||
- g_strcmp0 (templ->name_template, "sink_%u"))
+ g_strcmp0 (templ->name_template, "sink_%u") != 0)
goto not_sink;
GST_OBJECT_LOCK (self);
if (req_name == NULL || strlen (req_name) < 6
|| !g_str_has_prefix (req_name, "sink_")) {
/* no name given when requesting the pad, use next available int */
- priv->padcount++;
+ serial = ++priv->max_padserial;
} else {
/* parse serial number from requested padname */
serial = g_ascii_strtoull (&req_name[5], NULL, 10);
- if (serial >= priv->padcount)
- priv->padcount = serial;
+ if (serial > priv->max_padserial)
+ priv->max_padserial = serial;
}
- name = g_strdup_printf ("sink_%u", priv->padcount);
+ name = g_strdup_printf ("sink_%u", serial);
agg_pad = g_object_new (GST_AGGREGATOR_GET_CLASS (self)->sinkpads_type,
"name", name, "direction", GST_PAD_SINK, "template", templ, NULL);
g_free (name);
@@ -2011,7 +2019,7 @@
gst_element_class_get_pad_template (GST_ELEMENT_CLASS (klass), "src");
g_return_if_fail (pad_template != NULL);
- priv->padcount = -1;
+ priv->max_padserial = -1;
priv->tags_changed = FALSE;
self->priv->peer_latency_live = FALSE;
@@ -2139,10 +2147,6 @@
if (aggpad->priv->pending_eos == TRUE)
goto eos;
- flow_return = aggpad->priv->flow_return;
- if (flow_return != GST_FLOW_OK)
- goto flushing;
-
PAD_UNLOCK (aggpad);
if (aggclass->clip && head) {
diff --git a/gst-libs/gst/basecamerabinsrc/Makefile.in b/gst-libs/gst/basecamerabinsrc/Makefile.in
index a4e5c32..2c592de 100644
--- a/gst-libs/gst/basecamerabinsrc/Makefile.in
+++ b/gst-libs/gst/basecamerabinsrc/Makefile.in
@@ -293,6 +293,8 @@
DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
DSYMUTIL = @DSYMUTIL@
DTLS_CFLAGS = @DTLS_CFLAGS@
DTLS_LIBS = @DTLS_LIBS@
@@ -508,6 +510,8 @@
LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
LIPO = @LIPO@
LN_S = @LN_S@
LOCALEDIR = @LOCALEDIR@
@@ -634,8 +638,6 @@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
SNDIO_LIBS = @SNDIO_LIBS@
@@ -680,6 +682,8 @@
WAYLAND_LIBS = @WAYLAND_LIBS@
WEBP_CFLAGS = @WEBP_CFLAGS@
WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
WGET = @WGET@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
diff --git a/gst-libs/gst/codecparsers/Makefile.am b/gst-libs/gst/codecparsers/Makefile.am
index b180570..e7d8248 100644
--- a/gst-libs/gst/codecparsers/Makefile.am
+++ b/gst-libs/gst/codecparsers/Makefile.am
@@ -6,6 +6,7 @@
parserutils.c nalutils.c dboolhuff.c vp8utils.c \
gstjpegparser.c \
gstmpegvideometa.c \
+ gstjpeg2000sampling.c \
gstvp9parser.c vp9utils.c
libgstcodecparsers_@GST_API_VERSION@includedir = \
@@ -18,6 +19,7 @@
gsth265parser.h gstvp8parser.h gstvp8rangedecoder.h \
gstjpegparser.h \
gstmpegvideometa.h \
+ gstjpeg2000sampling.h \
gstvp9parser.h
libgstcodecparsers_@GST_API_VERSION@_la_CFLAGS = \
diff --git a/gst-libs/gst/codecparsers/Makefile.in b/gst-libs/gst/codecparsers/Makefile.in
index 084014e..ab7d6e3 100644
--- a/gst-libs/gst/codecparsers/Makefile.in
+++ b/gst-libs/gst/codecparsers/Makefile.in
@@ -182,6 +182,7 @@
libgstcodecparsers_@GST_API_VERSION@_la-vp8utils.lo \
libgstcodecparsers_@GST_API_VERSION@_la-gstjpegparser.lo \
libgstcodecparsers_@GST_API_VERSION@_la-gstmpegvideometa.lo \
+ libgstcodecparsers_@GST_API_VERSION@_la-gstjpeg2000sampling.lo \
libgstcodecparsers_@GST_API_VERSION@_la-gstvp9parser.lo \
libgstcodecparsers_@GST_API_VERSION@_la-vp9utils.lo
libgstcodecparsers_@GST_API_VERSION@_la_OBJECTS = \
@@ -323,6 +324,8 @@
DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
DSYMUTIL = @DSYMUTIL@
DTLS_CFLAGS = @DTLS_CFLAGS@
DTLS_LIBS = @DTLS_LIBS@
@@ -538,6 +541,8 @@
LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
LIPO = @LIPO@
LN_S = @LN_S@
LOCALEDIR = @LOCALEDIR@
@@ -664,8 +669,6 @@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
SNDIO_LIBS = @SNDIO_LIBS@
@@ -710,6 +713,8 @@
WAYLAND_LIBS = @WAYLAND_LIBS@
WEBP_CFLAGS = @WEBP_CFLAGS@
WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
WGET = @WGET@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
@@ -805,6 +810,7 @@
parserutils.c nalutils.c dboolhuff.c vp8utils.c \
gstjpegparser.c \
gstmpegvideometa.c \
+ gstjpeg2000sampling.c \
gstvp9parser.c vp9utils.c
libgstcodecparsers_@GST_API_VERSION@includedir = \
@@ -816,6 +822,7 @@
gsth265parser.h gstvp8parser.h gstvp8rangedecoder.h \
gstjpegparser.h \
gstmpegvideometa.h \
+ gstjpeg2000sampling.h \
gstvp9parser.h
libgstcodecparsers_@GST_API_VERSION@_la_CFLAGS = \
@@ -918,6 +925,7 @@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstcodecparsers_@GST_API_VERSION@_la-dboolhuff.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstcodecparsers_@GST_API_VERSION@_la-gsth264parser.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstcodecparsers_@GST_API_VERSION@_la-gsth265parser.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstcodecparsers_@GST_API_VERSION@_la-gstjpeg2000sampling.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstcodecparsers_@GST_API_VERSION@_la-gstjpegparser.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstcodecparsers_@GST_API_VERSION@_la-gstmpeg4parser.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstcodecparsers_@GST_API_VERSION@_la-gstmpegvideometa.Plo@am__quote@
@@ -1046,6 +1054,13 @@
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstcodecparsers_@GST_API_VERSION@_la_CFLAGS) $(CFLAGS) -c -o libgstcodecparsers_@GST_API_VERSION@_la-gstmpegvideometa.lo `test -f 'gstmpegvideometa.c' || echo '$(srcdir)/'`gstmpegvideometa.c
+libgstcodecparsers_@GST_API_VERSION@_la-gstjpeg2000sampling.lo: gstjpeg2000sampling.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstcodecparsers_@GST_API_VERSION@_la_CFLAGS) $(CFLAGS) -MT libgstcodecparsers_@GST_API_VERSION@_la-gstjpeg2000sampling.lo -MD -MP -MF $(DEPDIR)/libgstcodecparsers_@GST_API_VERSION@_la-gstjpeg2000sampling.Tpo -c -o libgstcodecparsers_@GST_API_VERSION@_la-gstjpeg2000sampling.lo `test -f 'gstjpeg2000sampling.c' || echo '$(srcdir)/'`gstjpeg2000sampling.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgstcodecparsers_@GST_API_VERSION@_la-gstjpeg2000sampling.Tpo $(DEPDIR)/libgstcodecparsers_@GST_API_VERSION@_la-gstjpeg2000sampling.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gstjpeg2000sampling.c' object='libgstcodecparsers_@GST_API_VERSION@_la-gstjpeg2000sampling.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 $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstcodecparsers_@GST_API_VERSION@_la_CFLAGS) $(CFLAGS) -c -o libgstcodecparsers_@GST_API_VERSION@_la-gstjpeg2000sampling.lo `test -f 'gstjpeg2000sampling.c' || echo '$(srcdir)/'`gstjpeg2000sampling.c
+
libgstcodecparsers_@GST_API_VERSION@_la-gstvp9parser.lo: gstvp9parser.c
@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstcodecparsers_@GST_API_VERSION@_la_CFLAGS) $(CFLAGS) -MT libgstcodecparsers_@GST_API_VERSION@_la-gstvp9parser.lo -MD -MP -MF $(DEPDIR)/libgstcodecparsers_@GST_API_VERSION@_la-gstvp9parser.Tpo -c -o libgstcodecparsers_@GST_API_VERSION@_la-gstvp9parser.lo `test -f 'gstvp9parser.c' || echo '$(srcdir)/'`gstvp9parser.c
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgstcodecparsers_@GST_API_VERSION@_la-gstvp9parser.Tpo $(DEPDIR)/libgstcodecparsers_@GST_API_VERSION@_la-gstvp9parser.Plo
diff --git a/gst-libs/gst/codecparsers/gsth264parser.c b/gst-libs/gst/codecparsers/gsth264parser.c
index 9dc9822..bc84416 100644
--- a/gst-libs/gst/codecparsers/gsth264parser.c
+++ b/gst-libs/gst/codecparsers/gsth264parser.c
@@ -947,7 +947,7 @@
}
}
- time_offset_length = 0;
+ time_offset_length = 24;
if (vui->nal_hrd_parameters_present_flag)
time_offset_length = vui->nal_hrd_parameters.time_offset_length;
else if (vui->vcl_hrd_parameters_present_flag)
@@ -1498,7 +1498,6 @@
gint width, height;
guint subwc[] = { 1, 2, 2, 1 };
guint subhc[] = { 1, 2, 1, 1 };
- GstH264VUIParams *vui = NULL;
memset (sps, 0, sizeof (*sps));
@@ -1592,7 +1591,6 @@
if (sps->vui_parameters_present_flag && parse_vui_params) {
if (!gst_h264_parse_vui_parameters (sps, nr))
goto error;
- vui = &sps->vui_parameters;
}
/* calculate ChromaArrayType */
@@ -1631,26 +1629,10 @@
GST_LOG ("crop_rectangle x=%u y=%u width=%u, height=%u", sps->crop_rect_x,
sps->crop_rect_y, width, height);
}
- sps->fps_num = 0;
- sps->fps_den = 1;
- if (vui && vui->timing_info_present_flag) {
- /* derive framerate */
- /* FIXME verify / also handle other cases */
- GST_LOG ("Framerate: %u %u %u %u", parse_vui_params,
- vui->fixed_frame_rate_flag, sps->frame_mbs_only_flag,
- vui->pic_struct_present_flag);
+ sps->fps_num_removed = 0;
+ sps->fps_den_removed = 1;
- if (parse_vui_params && vui->fixed_frame_rate_flag) {
- sps->fps_num = vui->time_scale;
- sps->fps_den = vui->num_units_in_tick;
- /* picture is a frame = 2 fields */
- sps->fps_den *= 2;
- GST_LOG ("framerate %d/%d", sps->fps_num, sps->fps_den);
- }
- } else {
- GST_LOG ("No VUI, unknown framerate");
- }
return TRUE;
error:
diff --git a/gst-libs/gst/codecparsers/gsth264parser.h b/gst-libs/gst/codecparsers/gsth264parser.h
index be5194f..56d8720 100644
--- a/gst-libs/gst/codecparsers/gsth264parser.h
+++ b/gst-libs/gst/codecparsers/gsth264parser.h
@@ -437,7 +437,7 @@
* @aspect_ratio_idc specifies the value of the sample aspect ratio of the luma samples
* @sar_width indicates the horizontal size of the sample aspect ratio
* @sar_height indicates the vertical size of the sample aspect ratio
- * @overscan_info_present_flag: %TRUE overscan_appropriate_flag is present %FALSE otherwize
+ * @overscan_info_present_flag: %TRUE overscan_appropriate_flag is present %FALSE otherwise
* @overscan_appropriate_flag: %TRUE indicates that the cropped decoded pictures
* output are suitable for display using overscan. %FALSE the cropped decoded pictures
* output contain visually important information
@@ -451,7 +451,7 @@
* @transfer_characteristics: indicates the opto-electronic transfer characteristic
* @matrix_coefficients: describes the matrix coefficients used in deriving luma and chroma signals
* @chroma_loc_info_present_flag: %TRUE specifies that chroma_sample_loc_type_top_field and
- * chroma_sample_loc_type_bottom_field are present, %FALSE otherwize
+ * chroma_sample_loc_type_bottom_field are present, %FALSE otherwise
* @chroma_sample_loc_type_top_field: specify the location of chroma for top field
* @chroma_sample_loc_type_bottom_field specify the location of chroma for bottom field
* @timing_info_present_flag: %TRUE specifies that num_units_in_tick,
@@ -460,7 +460,7 @@
* time_scale: is the number of time units that pass in one second
* @fixed_frame_rate_flag: %TRUE indicates that the temporal distance between the HRD output times
* of any two consecutive pictures in output order is constrained as specified in the spec, %FALSE
- * otherwize.
+ * otherwise.
* @nal_hrd_parameters_present_flag: %TRUE if nal hrd parameters present in the bitstream
* @vcl_hrd_parameters_present_flag: %TRUE if nal vlc hrd parameters present in the bitstream
* @low_delay_hrd_flag: specifies the HRD operational mode
@@ -710,7 +710,7 @@
gint width, height;
gint crop_rect_width, crop_rect_height;
gint crop_rect_x, crop_rect_y;
- gint fps_num, fps_den;
+ gint fps_num_removed, fps_den_removed; /* FIXME: remove */
gboolean valid;
/* Subset SPS extensions */
diff --git a/gst-libs/gst/codecparsers/gsth265parser.h b/gst-libs/gst/codecparsers/gsth265parser.h
index 80cc270..4ec91fa 100644
--- a/gst-libs/gst/codecparsers/gsth265parser.h
+++ b/gst-libs/gst/codecparsers/gsth265parser.h
@@ -535,7 +535,7 @@
* @aspect_ratio_idc specifies the value of the sample aspect ratio of the luma samples
* @sar_width indicates the horizontal size of the sample aspect ratio
* @sar_height indicates the vertical size of the sample aspect ratio
- * @overscan_info_present_flag: %TRUE overscan_appropriate_flag is present %FALSE otherwize
+ * @overscan_info_present_flag: %TRUE overscan_appropriate_flag is present %FALSE otherwise
* @overscan_appropriate_flag: %TRUE indicates that the cropped decoded pictures
* output are suitable for display using overscan. %FALSE the cropped decoded pictures
* output contain visually important information
@@ -549,7 +549,7 @@
* @transfer_characteristics: indicates the opto-electronic transfer characteristic
* @matrix_coefficients: describes the matrix coefficients used in deriving luma and chroma signals
* @chroma_loc_info_present_flag: %TRUE specifies that chroma_sample_loc_type_top_field and
- * chroma_sample_loc_type_bottom_field are present, %FALSE otherwize
+ * chroma_sample_loc_type_bottom_field are present, %FALSE otherwise
* @chroma_sample_loc_type_top_field: specify the location of chroma for top field
* @chroma_sample_loc_type_bottom_field specify the location of chroma for bottom field
* @neutral_chroma_indication_flag: %TRUE indicate that the value of chroma samples is equla
diff --git a/gst-libs/gst/codecparsers/gstjpeg2000sampling.c b/gst-libs/gst/codecparsers/gstjpeg2000sampling.c
new file mode 100644
index 0000000..dba1c50
--- /dev/null
+++ b/gst-libs/gst/codecparsers/gstjpeg2000sampling.c
@@ -0,0 +1,126 @@
+/* GStreamer JPEG 2000 Sampling
+ * Copyright (C) <2016> Grok Image Compression Inc.
+ * @author Aaron Boxer <boxerab@gmail.com>
+ *
+ * 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.
+ */
+
+/**
+ * SECTION:gstjpeg2000sampling
+ * @short_description: Manage JPEG 2000 sampling and colorspace fields
+ *
+ */
+
+#include "gstjpeg2000sampling.h"
+
+/* string values corresponding to GstJPEG2000Sampling enums */
+static const gchar *gst_jpeg2000_sampling_strings[] = {
+ "RGB",
+ "BGR",
+ "RGBA",
+ "BGRA",
+ "YCbCr-4:4:4",
+ "YCbCr-4:2:2",
+ "YCbCr-4:2:0",
+ "YCbCr-4:1:0",
+ "GRAYSCALE",
+ "YCbCrA-4:4:4:4",
+};
+
+/* convert string to GstJPEG2000Sampling enum */
+GstJPEG2000Sampling
+gst_jpeg2000_sampling_from_string (const gchar * sampling_string)
+{
+ GstJPEG2000Sampling i;
+ g_return_val_if_fail (sampling_string != NULL, GST_JPEG2000_SAMPLING_NONE);
+ for (i = 0; i < G_N_ELEMENTS (gst_jpeg2000_sampling_strings); ++i) {
+ if (!g_strcmp0 (sampling_string, gst_jpeg2000_sampling_strings[i]))
+ return (i + 1);
+ }
+ return GST_JPEG2000_SAMPLING_NONE;
+
+
+}
+
+/* convert GstJPEG2000Sampling enum to string */
+const gchar *
+gst_jpeg2000_sampling_to_string (GstJPEG2000Sampling sampling)
+{
+ g_return_val_if_fail (sampling > 0
+ && sampling <= G_N_ELEMENTS (gst_jpeg2000_sampling_strings), NULL);
+ return gst_jpeg2000_sampling_strings[sampling - 1];
+}
+
+/* check if @sampling is in RGB color space */
+gboolean
+gst_jpeg2000_sampling_is_rgb (GstJPEG2000Sampling sampling)
+{
+ return sampling == GST_JPEG2000_SAMPLING_RGB ||
+ sampling == GST_JPEG2000_SAMPLING_RGBA ||
+ sampling == GST_JPEG2000_SAMPLING_BGR
+ || sampling == GST_JPEG2000_SAMPLING_BGRA;
+}
+
+/* check if @sampling is in YUV color space */
+gboolean
+gst_jpeg2000_sampling_is_yuv (GstJPEG2000Sampling sampling)
+{
+ return sampling == GST_JPEG2000_SAMPLING_YBRA4444_EXT ||
+ sampling == GST_JPEG2000_SAMPLING_YBR444 ||
+ sampling == GST_JPEG2000_SAMPLING_YBR422 ||
+ sampling == GST_JPEG2000_SAMPLING_YBR420
+ || sampling == GST_JPEG2000_SAMPLING_YBR410;
+}
+
+/* check if @sampling is in GRAYSCALE color space */
+gboolean
+gst_jpeg2000_sampling_is_mono (GstJPEG2000Sampling sampling)
+{
+ return sampling == GST_JPEG2000_SAMPLING_GRAYSCALE;
+}
+
+/* string values corresponding to GstJPEG2000Colorspace enums */
+static const gchar *gst_jpeg2000_colorspace_strings[] = {
+ "sRGB",
+ "sYUV",
+ "GRAY",
+};
+
+/* convert GstJPEG2000Colorspace enum to string */
+GstJPEG2000Colorspace
+gst_jpeg2000_colorspace_from_string (const gchar * colorspace_string)
+{
+ GstJPEG2000Colorspace i;
+
+ g_return_val_if_fail (colorspace_string != NULL,
+ GST_JPEG2000_COLORSPACE_NONE);
+
+ for (i = 0; i < G_N_ELEMENTS (gst_jpeg2000_colorspace_strings); ++i) {
+ if (!g_strcmp0 (colorspace_string, gst_jpeg2000_colorspace_strings[i]))
+ return (i + 1);
+ }
+ return GST_JPEG2000_COLORSPACE_NONE;
+}
+
+/* convert string to GstJPEG2000Colorspace enum */
+const gchar *
+gst_jpeg2000_colorspace_to_string (GstJPEG2000Colorspace colorspace)
+{
+ g_return_val_if_fail (colorspace > GST_JPEG2000_COLORSPACE_NONE
+ && colorspace <= G_N_ELEMENTS (gst_jpeg2000_colorspace_strings), NULL);
+
+ return gst_jpeg2000_colorspace_strings[colorspace - 1];
+}
diff --git a/gst-libs/gst/codecparsers/gstjpeg2000sampling.h b/gst-libs/gst/codecparsers/gstjpeg2000sampling.h
new file mode 100644
index 0000000..fb6a0aa
--- /dev/null
+++ b/gst-libs/gst/codecparsers/gstjpeg2000sampling.h
@@ -0,0 +1,92 @@
+/* GStreamer JPEG 2000 Sampling
+ * Copyright (C) <2016> Grok Image Compression Inc.
+ * @author Aaron Boxer <boxerab@gmail.com>
+ *
+ * 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.
+ */
+
+#ifndef __GST_JPEG2000_SAMPLING_H__
+#define __GST_JPEG2000_SAMPLING_H__
+
+#include <gst/gst.h>
+
+/**
+ * GstJPEG2000Sampling:
+ * Sampling values from RF 5371 for JPEG 2000 over RTP : https://datatracker.ietf.org/doc/rfc5371/C
+ * Note: sampling extensions that are not listed in the RFC are signified by an _EXT at the end of the enum
+ *
+ * @GST_JPEG2000_SAMPLING_NONE: no sampling
+ * @GST_JPEG2000_SAMPLING_RGB: standard Red, Green, Blue color space.
+ * @GST_JPEG2000_SAMPLING_BGR: standard Blue, Green, Red color space.
+ * @GST_JPEG2000_SAMPLING_RGBA: standard Red, Green, Blue, Alpha color space.
+ * @GST_JPEG2000_SAMPLING_BGRA: standard Blue, Green, Red, Alpha color space.
+ * @GST_JPEG2000_SAMPLING_YCbCr-4:4:4: standard YCbCr color space; no subsampling.
+ * @GST_JPEG2000_SAMPLING_YCbCr-4:2:2: standard YCbCr color space; Cb and Cr are subsampled horizontally by 1/2.
+ * @GST_JPEG2000_SAMPLING_YCbCr-4:2:0: standard YCbCr color space; Cb and Cr are subsampled horizontally and vertically by 1/2.
+ * @GST_JPEG2000_SAMPLING_YCbCr-4:1:1: standard YCbCr color space; Cb and Cr are subsampled vertically by 1/4.
+ * @GST_JPEG2000_SAMPLING_GRAYSCALE: basically, a single component image of just multilevels of grey.
+ * @GST_JPEG2000_SAMPLING_YBRA4444_EXT: standard YCbCr color space, alpha channel, no subsampling,
+ */
+typedef enum
+{
+ GST_JPEG2000_SAMPLING_NONE,
+ GST_JPEG2000_SAMPLING_RGB,
+ GST_JPEG2000_SAMPLING_BGR,
+ GST_JPEG2000_SAMPLING_RGBA,
+ GST_JPEG2000_SAMPLING_BGRA,
+ GST_JPEG2000_SAMPLING_YBR444,
+ GST_JPEG2000_SAMPLING_YBR422,
+ GST_JPEG2000_SAMPLING_YBR420,
+ GST_JPEG2000_SAMPLING_YBR410,
+ GST_JPEG2000_SAMPLING_GRAYSCALE,
+ GST_JPEG2000_SAMPLING_YBRA4444_EXT
+} GstJPEG2000Sampling;
+
+/* GST_JPEG2000_SAMPLING_LIST: sampling strings in list form, for use in caps */
+#define GST_JPEG2000_SAMPLING_LIST "sampling = (string) {\"RGB\", \"BGR\", \"RGBA\", \"BGRA\", \"YCbCr-4:4:4\", \"YCbCr-4:2:2\", \"YCbCr-4:2:0\", \"YCbCr-4:1:1\", \"GRAYSCALE\" , \"YCbCrA-4:4:4:4\"}"
+
+const gchar *gst_jpeg2000_sampling_to_string (GstJPEG2000Sampling sampling);
+GstJPEG2000Sampling gst_jpeg2000_sampling_from_string (const gchar *
+ sampling_string);
+gboolean gst_jpeg2000_sampling_is_rgb (GstJPEG2000Sampling sampling);
+gboolean gst_jpeg2000_sampling_is_yuv (GstJPEG2000Sampling sampling);
+gboolean gst_jpeg2000_sampling_is_mono (GstJPEG2000Sampling sampling);
+
+
+/**
+ * GstJPEG2000Colorspace:
+ * @GST_JPEG2000_COLORSPACE_NONE: no color space
+ * @GST_JPEG2000_COLORSPACE_RGB: standard RGB color space
+ * @GST_JPEG2000_COLORSPACE_YUV: standard YUV color space
+ * @GST_JPEG2000_COLORSPACE_GRAY: monochrome color space
+ */
+typedef enum
+{
+ GST_JPEG2000_COLORSPACE_NONE,
+ GST_JPEG2000_COLORSPACE_RGB,
+ GST_JPEG2000_COLORSPACE_YUV,
+ GST_JPEG2000_COLORSPACE_GRAY
+} GstJPEG2000Colorspace;
+
+const gchar *gst_jpeg2000_colorspace_to_string (GstJPEG2000Colorspace
+ colorspace);
+GstJPEG2000Colorspace gst_jpeg2000_colorspace_from_string (const gchar *
+ colorspace_string);
+
+/* GST_JPEG2000_COLORSPACE_LIST: color space strings in list form, for use in caps */
+#define GST_JPEG2000_COLORSPACE_LIST "colorspace = (string) { \"sRGB\", \"sYUV\", \"GRAY\" }"
+
+#endif
diff --git a/gst-libs/gst/codecparsers/gstmpeg4parser.c b/gst-libs/gst/codecparsers/gstmpeg4parser.c
index b23fc87..b455764 100644
--- a/gst-libs/gst/codecparsers/gstmpeg4parser.c
+++ b/gst-libs/gst/codecparsers/gstmpeg4parser.c
@@ -411,7 +411,7 @@
/**
* gst_mpeg4_parse:
* @packet: The #GstMpeg4Packet to fill
- * @skip_user_data: %TRUE to skip user data packet %FALSE otherwize
+ * @skip_user_data: %TRUE to skip user data packet %FALSE otherwise
* @vop: The last parsed #GstMpeg4VideoObjectPlane or %NULL if you do
* not need to detect the resync codes.
* @offset: offset from which to start the parsing
diff --git a/gst-libs/gst/codecparsers/gstmpegvideometa.c b/gst-libs/gst/codecparsers/gstmpegvideometa.c
index f7b2f87..d5d5f0a 100644
--- a/gst-libs/gst/codecparsers/gstmpegvideometa.c
+++ b/gst-libs/gst/codecparsers/gstmpegvideometa.c
@@ -37,6 +37,7 @@
mpeg_video_meta->pichdr = NULL;
mpeg_video_meta->picext = NULL;
mpeg_video_meta->quantext = NULL;
+ mpeg_video_meta->num_slices = mpeg_video_meta->slice_offset = 0;
return TRUE;
}
diff --git a/gst-libs/gst/codecparsers/gstmpegvideoparser.c b/gst-libs/gst/codecparsers/gstmpegvideoparser.c
index debafa0..2cfd32a 100644
--- a/gst-libs/gst/codecparsers/gstmpegvideoparser.c
+++ b/gst-libs/gst/codecparsers/gstmpegvideoparser.c
@@ -286,7 +286,7 @@
* Parses the @seqhdr MPEG Video Sequence Header structure members
* from video @packet
*
- * Returns: %TRUE if the seqhdr could be parsed correctly, %FALSE otherwize.
+ * Returns: %TRUE if the seqhdr could be parsed correctly, %FALSE otherwise.
*
* Since: 1.2
*/
@@ -296,7 +296,6 @@
{
GstBitReader br;
guint8 bits;
- guint8 load_intra_flag, load_non_intra_flag;
g_return_val_if_fail (seqhdr != NULL, FALSE);
@@ -339,8 +338,8 @@
READ_UINT8 (&br, seqhdr->constrained_parameters_flag, 1);
/* load_intra_quantiser_matrix */
- READ_UINT8 (&br, load_intra_flag, 1);
- if (load_intra_flag) {
+ READ_UINT8 (&br, seqhdr->load_intra_quantiser_matrix, 1);
+ if (seqhdr->load_intra_quantiser_matrix) {
gint i;
for (i = 0; i < 64; i++)
READ_UINT8 (&br, seqhdr->intra_quantizer_matrix[i], 8);
@@ -348,8 +347,8 @@
memcpy (seqhdr->intra_quantizer_matrix, default_intra_quantizer_matrix, 64);
/* non intra quantizer matrix */
- READ_UINT8 (&br, load_non_intra_flag, 1);
- if (load_non_intra_flag) {
+ READ_UINT8 (&br, seqhdr->load_non_intra_quantiser_matrix, 1);
+ if (seqhdr->load_non_intra_quantiser_matrix) {
gint i;
for (i = 0; i < 64; i++)
READ_UINT8 (&br, seqhdr->non_intra_quantizer_matrix[i], 8);
@@ -382,7 +381,7 @@
* Parses the @seqext MPEG Video Sequence Extension structure members
* from video @packet
*
- * Returns: %TRUE if the seqext could be parsed correctly, %FALSE otherwize.
+ * Returns: %TRUE if the seqext could be parsed correctly, %FALSE otherwise.
*
* Since: 1.2
*/
@@ -449,7 +448,7 @@
* Parses the @seqext MPEG Video Sequence Display Extension structure
* members from video @packet
*
- * Returns: %TRUE if the seqext could be parsed correctly, %FALSE otherwize.
+ * Returns: %TRUE if the seqext could be parsed correctly, %FALSE otherwise.
*
* Since: 1.2
*/
@@ -511,7 +510,7 @@
* Parses the @seqscaleext MPEG Video Sequence Scalable Extension structure
* members from video @packet
*
- * Returns: %TRUE if the seqext could be parsed correctly, %FALSE otherwize.
+ * Returns: %TRUE if the seqext could be parsed correctly, %FALSE otherwise.
*
* Since: 1.2
*/
@@ -633,7 +632,7 @@
* structure members from video @packet
*
* Returns: %TRUE if the quant matrix extension could be parsed correctly,
- * %FALSE otherwize.
+ * %FALSE otherwise.
*
* Since: 1.2
*/
@@ -703,7 +702,7 @@
* video @packet
*
* Returns: %TRUE if the picture extension could be parsed correctly,
- * %FALSE otherwize.
+ * %FALSE otherwise.
*
* Since: 1.2
*/
@@ -803,7 +802,7 @@
* from video @packet
*
* Returns: %TRUE if the picture sequence could be parsed correctly, %FALSE
- * otherwize.
+ * otherwise.
*
* Since: 1.2
*/
@@ -831,8 +830,8 @@
if (hdr->pic_type == 0 || hdr->pic_type > 4)
goto bad_pic_type; /* Corrupted picture packet */
- /* skip VBV delay */
- if (!gst_bit_reader_skip (&br, 16))
+ /* VBV delay */
+ if (!gst_bit_reader_get_bits_uint16 (&br, &hdr->vbv_delay, 16))
goto failed;
if (hdr->pic_type == GST_MPEG_VIDEO_PICTURE_TYPE_P
@@ -880,7 +879,7 @@
* Parses the @gop MPEG Video Group of Picture structure members from
* video @packet
*
- * Returns: %TRUE if the gop could be parsed correctly, %FALSE otherwize.
+ * Returns: %TRUE if the gop could be parsed correctly, %FALSE otherwise.
*
* Since: 1.2
*/
@@ -931,7 +930,7 @@
*
* Parses the @GstMpegVideoSliceHdr structure members from @data
*
- * Returns: %TRUE if the slice could be parsed correctly, %FALSE otherwize.
+ * Returns: %TRUE if the slice could be parsed correctly, %FALSE otherwise.
*
* Since: 1.2
*/
@@ -964,6 +963,9 @@
if (height > 2800)
READ_UINT8 (&br, vertical_position_extension, 3);
+ slice_hdr->vertical_position = packet->type;
+ slice_hdr->vertical_position_ext = vertical_position_extension;
+
if (seqscaleext)
if (seqscaleext->scalable_mode ==
GST_MPEG_VIDEO_SEQ_SCALABLE_MODE_DATA_PARTITIONING)
@@ -971,12 +973,12 @@
READ_UINT8 (&br, slice_hdr->quantiser_scale_code, 5);
- READ_UINT8 (&br, extra_bits, 1);
- if (!extra_bits)
+ READ_UINT8 (&br, slice_hdr->slice_ext_flag, 1);
+ if (!slice_hdr->slice_ext_flag)
slice_hdr->intra_slice = 0;
else {
READ_UINT8 (&br, slice_hdr->intra_slice, 1);
- SKIP (&br, 1);
+ READ_UINT8 (&br, slice_hdr->slice_picture_id_enable, 1);
READ_UINT8 (&br, slice_hdr->slice_picture_id, 6);
READ_UINT8 (&br, bits, 1);
@@ -1072,7 +1074,7 @@
*
* Parses the @seqhdr Mpeg Video Sequence Header structure members from @data
*
- * Returns: %TRUE if the seqhdr could be parsed correctly, %FALSE otherwize.
+ * Returns: %TRUE if the seqhdr could be parsed correctly, %FALSE otherwise.
*
* Deprecated: Use gst_mpeg_video_packet_parse_sequence_header() instead.
*/
@@ -1105,7 +1107,7 @@
*
* Parses the @seqext Mpeg Video Sequence Extension structure members from @data
*
- * Returns: %TRUE if the seqext could be parsed correctly, %FALSE otherwize.
+ * Returns: %TRUE if the seqext could be parsed correctly, %FALSE otherwise.
*
* Deprecated: Use gst_mpeg_video_packet_parse_sequence_extension() instead.
*/
@@ -1161,7 +1163,7 @@
* @data
*
* Returns: %TRUE if the quant matrix extension could be parsed correctly,
- * %FALSE otherwize.
+ * %FALSE otherwise.
*
* Deprecated: Use gst_mpeg_video_packet_parse_quant_matrix_extension() instead.
*/
@@ -1195,7 +1197,7 @@
* Parsers the @hdr Mpeg Video Picture Header structure members from @data
*
* Returns: %TRUE if the picture sequence could be parsed correctly, %FALSE
- * otherwize.
+ * otherwise.
*
* Deprecated: Use gst_mpeg_video_packet_parse_picture_header() instead.
*/
@@ -1229,7 +1231,7 @@
* Parse the @ext Mpeg Video Picture Extension structure members from @data
*
* Returns: %TRUE if the picture extension could be parsed correctly,
- * %FALSE otherwize.
+ * %FALSE otherwise.
*
* Deprecated: Use gst_mpeg_video_packet_parse_picture_extension() instead.
*/
@@ -1262,7 +1264,7 @@
*
* Parses the @gop Mpeg Video Group of Picture structure members from @data
*
- * Returns: %TRUE if the gop could be parsed correctly, %FALSE otherwize.
+ * Returns: %TRUE if the gop could be parsed correctly, %FALSE otherwise.
*
* Deprecated: Use gst_mpeg_video_packet_parse_gop() instead.
*/
diff --git a/gst-libs/gst/codecparsers/gstmpegvideoparser.h b/gst-libs/gst/codecparsers/gstmpegvideoparser.h
index 1298ed7..3989f0c 100644
--- a/gst-libs/gst/codecparsers/gstmpegvideoparser.h
+++ b/gst-libs/gst/codecparsers/gstmpegvideoparser.h
@@ -211,7 +211,9 @@
* @bitrate_value: Value of the bitrate as is in the stream (400bps unit)
* @bitrate: the real bitrate of the Mpeg video stream in bits per second, 0 if VBR stream
* @constrained_parameters_flag: %TRUE if this stream uses contrained parameters.
+ * @load_intra_quantiser_matrix: %TRUE indicates the presence of intra_quantiser_matrix
* @intra_quantizer_matrix: intra-quantization table, in zigzag scan order
+ * @load_non_intra_quantiser_matrix: %TRUE indicates the presence of non_intra_quantiser_matrix
* @non_intra_quantizer_matrix: non-intra quantization table, in zigzag scan order
*
* The Mpeg2 Video Sequence Header structure.
@@ -226,7 +228,9 @@
guint8 constrained_parameters_flag;
+ guint8 load_intra_quantiser_matrix;
guint8 intra_quantizer_matrix[64];
+ guint8 load_non_intra_quantiser_matrix;
guint8 non_intra_quantizer_matrix[64];
/* Calculated values */
@@ -376,6 +380,7 @@
{
guint16 tsn;
guint8 pic_type;
+ guint16 vbv_delay;
guint8 full_pel_forward_vector, full_pel_backward_vector;
@@ -394,7 +399,7 @@
* @alternate_scan: Alternate Scan
* @repeat_first_field: Repeat First Field
* @chroma_420_type: Chroma 420 Type
- * @progressive_frame: %TRUE if the frame is progressive %FALSE otherwize
+ * @progressive_frame: %TRUE if the frame is progressive %FALSE otherwise
*
* The Mpeg2 Video Picture Extension structure.
*/
@@ -445,10 +450,13 @@
/**
* GstMpegVideoSliceHdr:
- * @slice_vertical_position_extension: Extension to slice_vertical_position
+ * @vertical_position: slice vertical position
+ * @vertical_position_extension: Extension to slice_vertical_position
* @priority_breakpoint: Point where the bitstream shall be partitioned
* @quantiser_scale_code: Quantiser value (range: 1-31)
+ * @slice_ext_flag: Slice Extension flag
* @intra_slice: Equal to one if all the macroblocks are intra macro blocks.
+ * @slice_picture_id_enable: controls the semantics of slice_picture_id
* @slice_picture_id: Intended to aid recovery on severe bursts of
* errors for certain types of applications
*
@@ -458,9 +466,14 @@
*/
struct _GstMpegVideoSliceHdr
{
+ guint8 vertical_position;
+ guint8 vertical_position_ext;
+
guint8 priority_breakpoint;
guint8 quantiser_scale_code;
+ guint8 slice_ext_flag;
guint8 intra_slice;
+ guint8 slice_picture_id_enable;
guint8 slice_picture_id;
/* Calculated values */
diff --git a/gst-libs/gst/codecparsers/gstvc1parser.c b/gst-libs/gst/codecparsers/gstvc1parser.c
index fd16ee0..7ed73f8 100644
--- a/gst-libs/gst/codecparsers/gstvc1parser.c
+++ b/gst-libs/gst/codecparsers/gstvc1parser.c
@@ -2197,7 +2197,7 @@
* in simple or main mode, or after #gst_vc1_parse_entry_point_header
* if in advanced mode.
*
- * Returns: %TRUE if everything went fine, %FALSE otherwize
+ * Returns: %TRUE if everything went fine, %FALSE otherwise
*/
gboolean
gst_vc1_bitplanes_ensure_size (GstVC1BitPlanes * bitplanes,
diff --git a/gst-libs/gst/codecparsers/gstvp9parser.c b/gst-libs/gst/codecparsers/gstvp9parser.c
index e518dee..0bd05bc 100644
--- a/gst-libs/gst/codecparsers/gstvp9parser.c
+++ b/gst-libs/gst/codecparsers/gstvp9parser.c
@@ -103,26 +103,26 @@
}
static gboolean
-parse_bitdepth_colorspace_sampling (GstBitReader * const br,
- GstVp9FrameHdr * frame_hdr)
+parse_bitdepth_colorspace_sampling (GstVp9Parser * parser,
+ GstBitReader * const br, GstVp9FrameHdr * frame_hdr)
{
if (frame_hdr->profile > GST_VP9_PROFILE_1)
- frame_hdr->bit_depth =
+ parser->bit_depth =
gst_vp9_read_bit (br) ? GST_VP9_BIT_DEPTH_12 : GST_VP9_BIT_DEPTH_10;
else
- frame_hdr->bit_depth = GST_VP9_BIT_DEPTH_8;
+ parser->bit_depth = GST_VP9_BIT_DEPTH_8;
- frame_hdr->color_space = gst_vp9_read_bits (br, 3);
- if (frame_hdr->color_space != GST_VP9_CS_SRGB) {
- frame_hdr->color_range = gst_vp9_read_bit (br);
+ parser->color_space = gst_vp9_read_bits (br, 3);
+ if (parser->color_space != GST_VP9_CS_SRGB) {
+ parser->color_range = gst_vp9_read_bit (br);
if (frame_hdr->profile == GST_VP9_PROFILE_1
|| frame_hdr->profile == GST_VP9_PROFILE_3) {
- frame_hdr->subsampling_x = gst_vp9_read_bit (br);
- frame_hdr->subsampling_y = gst_vp9_read_bit (br);
+ parser->subsampling_x = gst_vp9_read_bit (br);
+ parser->subsampling_y = gst_vp9_read_bit (br);
- if (frame_hdr->subsampling_x == 1 && frame_hdr->subsampling_y == 1) {
+ if (parser->subsampling_x == 1 && parser->subsampling_y == 1) {
GST_ERROR
("4:2:0 subsampling is not supported in profile_1 or profile_3");
goto error;
@@ -133,10 +133,10 @@
goto error;
}
} else {
- frame_hdr->subsampling_y = frame_hdr->subsampling_x = 1;
+ parser->subsampling_y = parser->subsampling_x = 1;
}
} else {
- frame_hdr->color_range = GST_VP9_CR_FULL;
+ parser->color_range = GST_VP9_CR_FULL;
if (frame_hdr->profile == GST_VP9_PROFILE_1
|| frame_hdr->profile == GST_VP9_PROFILE_3) {
@@ -481,12 +481,12 @@
const GstVp9SegmentationInfoData *info = priv->segmentation + i;
seg->luma_dc_quant_scale =
- gst_vp9_dc_quant (q, quant_indices->y_dc_delta, frame_hdr->bit_depth);
- seg->luma_ac_quant_scale = gst_vp9_ac_quant (q, 0, frame_hdr->bit_depth);
+ gst_vp9_dc_quant (q, quant_indices->y_dc_delta, parser->bit_depth);
+ seg->luma_ac_quant_scale = gst_vp9_ac_quant (q, 0, parser->bit_depth);
seg->chroma_dc_quant_scale =
- gst_vp9_dc_quant (q, quant_indices->uv_dc_delta, frame_hdr->bit_depth);
+ gst_vp9_dc_quant (q, quant_indices->uv_dc_delta, parser->bit_depth);
seg->chroma_ac_quant_scale =
- gst_vp9_ac_quant (q, quant_indices->uv_ac_delta, frame_hdr->bit_depth);
+ gst_vp9_ac_quant (q, quant_indices->uv_ac_delta, parser->bit_depth);
if (lf->filter_level) {
guint8 filter = seg_get_filter_level (parser, frame_hdr, i);
@@ -578,13 +578,17 @@
}
static void
-gst_vp9_parser_init (GstVp9Parser * parser)
+gst_vp9_parser_reset (GstVp9Parser * parser)
{
GstVp9ParserPrivate *priv = parser->priv;
- memset (parser, 0, sizeof (GstVp9Parser));
- memset (priv, 0, sizeof (GstVp9ParserPrivate));
+ parser->priv = NULL;
+ memset (parser->mb_segment_tree_probs, 0,
+ sizeof (parser->mb_segment_tree_probs));
+ memset (parser->segment_pred_probs, 0, sizeof (parser->segment_pred_probs));
+ memset (parser->segmentation, 0, sizeof (parser->segmentation));
+ memset (priv, 0, sizeof (GstVp9ParserPrivate));
parser->priv = priv;
}
@@ -592,7 +596,7 @@
gst_vp9_parser_update (GstVp9Parser * parser, GstVp9FrameHdr * const frame_hdr)
{
if (frame_hdr->frame_type == GST_VP9_KEY_FRAME)
- gst_vp9_parser_init (parser);
+ gst_vp9_parser_reset (parser);
if (frame_is_intra_only (frame_hdr) || frame_hdr->error_resilient_mode)
setup_past_independence (parser, frame_hdr);
@@ -626,16 +630,15 @@
INITIALIZE_DEBUG_CATEGORY;
GST_DEBUG ("Create VP9 Parser");
- parser = g_slice_new (GstVp9Parser);
+ parser = g_slice_new0 (GstVp9Parser);
if (!parser)
return NULL;
- priv = g_slice_new (GstVp9ParserPrivate);
+ priv = g_slice_new0 (GstVp9ParserPrivate);
if (!priv)
return NULL;
parser->priv = priv;
- gst_vp9_parser_init (parser);
return parser;
}
@@ -712,7 +715,7 @@
goto error;
}
- if (!parse_bitdepth_colorspace_sampling (br, frame_hdr)) {
+ if (!parse_bitdepth_colorspace_sampling (parser, br, frame_hdr)) {
GST_ERROR ("Failed to parse color_space/bit_depth info !");
goto error;
}
@@ -734,15 +737,15 @@
}
if (frame_hdr->profile > GST_VP9_PROFILE_0) {
- if (!parse_bitdepth_colorspace_sampling (br, frame_hdr)) {
+ if (!parse_bitdepth_colorspace_sampling (parser, br, frame_hdr)) {
GST_ERROR ("Failed to parse color_space/bit_depth info !");
goto error;
}
} else {
- frame_hdr->color_space = GST_VP9_CS_BT_601;
- frame_hdr->color_range = GST_VP9_CR_LIMITED;
- frame_hdr->subsampling_y = frame_hdr->subsampling_x = 1;
- frame_hdr->bit_depth = GST_VP9_BIT_DEPTH_8;
+ parser->color_space = GST_VP9_CS_BT_601;
+ parser->color_range = GST_VP9_CR_LIMITED;
+ parser->subsampling_y = parser->subsampling_x = 1;
+ parser->bit_depth = GST_VP9_BIT_DEPTH_8;
}
frame_hdr->refresh_frame_flags =
@@ -766,12 +769,6 @@
frame_hdr->allow_high_precision_mv = gst_vp9_read_bit (br);
frame_hdr->mcomp_filter_type = parse_interp_filter (br);
-
- /* Assing defalut values */
- frame_hdr->color_space = GST_VP9_CS_BT_601;
- frame_hdr->color_range = GST_VP9_CR_LIMITED;
- frame_hdr->subsampling_y = frame_hdr->subsampling_x = 1;
- frame_hdr->bit_depth = GST_VP9_BIT_DEPTH_8;
}
}
@@ -811,7 +808,6 @@
frame_hdr->frame_header_length_in_bytes =
(gst_bit_reader_get_pos (br) + 7) / 8;
-
return gst_vp9_parser_update (parser, frame_hdr);
error:
diff --git a/gst-libs/gst/codecparsers/gstvp9parser.h b/gst-libs/gst/codecparsers/gstvp9parser.h
index fd45e54..aaf30e5 100644
--- a/gst-libs/gst/codecparsers/gstvp9parser.h
+++ b/gst-libs/gst/codecparsers/gstvp9parser.h
@@ -350,17 +350,12 @@
* @frame_type: frame type
* @show_frame: indicate whether it is a displayable frame or not
* @error_resilient_mode: error resilent mode
- * @subsampling_x: horizontal subsampling
- * @subsampling_y: vertical subsampling
* @width: frame width
* @height: frame height
* @display_size_enabled: display size enabled (cropping)
* @display_width: display width
* @display_height: display height
* @frame_context_idx: frame context index
- * @bit_depth: bit depth of the stream
- * @color_space: color space standard
- * @color_range: color range standard
* @intra_only: intra only frame
* @reset_frame_context: reset frame context
* @refresh_frame_flags: refresh reference frame flags
@@ -391,8 +386,6 @@
guint frame_type;
guint8 show_frame;
guint8 error_resilient_mode;
- gint subsampling_x;
- gint subsampling_y;
guint32 width;
guint32 height;
guint8 display_size_enabled;
@@ -400,10 +393,6 @@
guint32 display_height;
guint frame_context_idx;
- guint bit_depth;
- guint color_space;
- guint color_range;
-
guint8 intra_only;
gint reset_frame_context;
gint refresh_frame_flags;
@@ -464,6 +453,11 @@
/**
* GstVp9Parser:
* @priv: GstVp9ParserPrivate struct to keep track of state variables
+ * @subsampling_x: horizontal subsampling
+ * @subsampling_y: vertical subsampling
+ * @bit_depth: bit depth of the stream
+ * @color_space: color space standard
+ * @color_range: color range standard
* @mb_segment_tree_probs: decoding tree probabilities
* @segment_pred_probs: segment prediction probabiilties
* @segmentation: Segmentation info
@@ -477,6 +471,12 @@
/* private stuct for tracking state variables across frames */
void *priv;
+ gint subsampling_x;
+ gint subsampling_y;
+ guint bit_depth;
+ guint color_space;
+ guint color_range;
+
guint8 mb_segment_tree_probs[GST_VP9_SEG_TREE_PROBS];
guint8 segment_pred_probs[GST_VP9_PREDICTION_PROBS];
GstVp9Segmentation segmentation[GST_VP9_MAX_SEGMENTS];
diff --git a/gst-libs/gst/gl/Makefile.am b/gst-libs/gst/gl/Makefile.am
index f1cb9e1..3f04a51 100644
--- a/gst-libs/gst/gl/Makefile.am
+++ b/gst-libs/gst/gl/Makefile.am
@@ -152,6 +152,7 @@
GstGL-@GST_API_VERSION@.gir: $(INTROSPECTION_SCANNER) libgstgl-@GST_API_VERSION@.la
$(AM_V_GEN)PKG_CONFIG_PATH="$(GST_PKG_CONFIG_PATH)" GI_SCANNER_DISABLE_CACHE=yes\
GST_PLUGIN_SYSTEM_PATH_1_0="" GST_PLUGIN_PATH_1_0="" GST_REGISTRY_UPDATE=no \
+ CPPFLAGS="$(CPPFLAGS)" CFLAGS="$(CFLAGS)" LDFLAGS="$(LDFLAGS)" CC="$(CC)" PKG_CONFIG="$(PKG_CONFIG)" DLLTOOL="$(DLLTOOL)" \
$(INTROSPECTION_SCANNER) -v --namespace GstGL \
--nsversion=@GST_API_VERSION@ \
--identifier-prefix=Gst \
diff --git a/gst-libs/gst/gl/Makefile.in b/gst-libs/gst/gl/Makefile.in
index c12e544..998609b 100644
--- a/gst-libs/gst/gl/Makefile.in
+++ b/gst-libs/gst/gl/Makefile.in
@@ -400,6 +400,8 @@
DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
DSYMUTIL = @DSYMUTIL@
DTLS_CFLAGS = @DTLS_CFLAGS@
DTLS_LIBS = @DTLS_LIBS@
@@ -615,6 +617,8 @@
LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
LIPO = @LIPO@
LN_S = @LN_S@
LOCALEDIR = @LOCALEDIR@
@@ -741,8 +745,6 @@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
SNDIO_LIBS = @SNDIO_LIBS@
@@ -787,6 +789,8 @@
WAYLAND_LIBS = @WAYLAND_LIBS@
WEBP_CFLAGS = @WEBP_CFLAGS@
WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
WGET = @WGET@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
@@ -1693,6 +1697,7 @@
@HAVE_INTROSPECTION_TRUE@GstGL-@GST_API_VERSION@.gir: $(INTROSPECTION_SCANNER) libgstgl-@GST_API_VERSION@.la
@HAVE_INTROSPECTION_TRUE@ $(AM_V_GEN)PKG_CONFIG_PATH="$(GST_PKG_CONFIG_PATH)" GI_SCANNER_DISABLE_CACHE=yes\
@HAVE_INTROSPECTION_TRUE@ GST_PLUGIN_SYSTEM_PATH_1_0="" GST_PLUGIN_PATH_1_0="" GST_REGISTRY_UPDATE=no \
+@HAVE_INTROSPECTION_TRUE@ CPPFLAGS="$(CPPFLAGS)" CFLAGS="$(CFLAGS)" LDFLAGS="$(LDFLAGS)" CC="$(CC)" PKG_CONFIG="$(PKG_CONFIG)" DLLTOOL="$(DLLTOOL)" \
@HAVE_INTROSPECTION_TRUE@ $(INTROSPECTION_SCANNER) -v --namespace GstGL \
@HAVE_INTROSPECTION_TRUE@ --nsversion=@GST_API_VERSION@ \
@HAVE_INTROSPECTION_TRUE@ --identifier-prefix=Gst \
diff --git a/gst-libs/gst/gl/android/Makefile.in b/gst-libs/gst/gl/android/Makefile.in
index 3f966c4..0ae23fd 100644
--- a/gst-libs/gst/gl/android/Makefile.in
+++ b/gst-libs/gst/gl/android/Makefile.in
@@ -301,6 +301,8 @@
DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
DSYMUTIL = @DSYMUTIL@
DTLS_CFLAGS = @DTLS_CFLAGS@
DTLS_LIBS = @DTLS_LIBS@
@@ -516,6 +518,8 @@
LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
LIPO = @LIPO@
LN_S = @LN_S@
LOCALEDIR = @LOCALEDIR@
@@ -642,8 +646,6 @@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
SNDIO_LIBS = @SNDIO_LIBS@
@@ -688,6 +690,8 @@
WAYLAND_LIBS = @WAYLAND_LIBS@
WEBP_CFLAGS = @WEBP_CFLAGS@
WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
WGET = @WGET@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
diff --git a/gst-libs/gst/gl/cocoa/Makefile.in b/gst-libs/gst/gl/cocoa/Makefile.in
index 1b0c70f..1c30624 100644
--- a/gst-libs/gst/gl/cocoa/Makefile.in
+++ b/gst-libs/gst/gl/cocoa/Makefile.in
@@ -303,6 +303,8 @@
DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
DSYMUTIL = @DSYMUTIL@
DTLS_CFLAGS = @DTLS_CFLAGS@
DTLS_LIBS = @DTLS_LIBS@
@@ -518,6 +520,8 @@
LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
LIPO = @LIPO@
LN_S = @LN_S@
LOCALEDIR = @LOCALEDIR@
@@ -644,8 +648,6 @@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
SNDIO_LIBS = @SNDIO_LIBS@
@@ -690,6 +692,8 @@
WAYLAND_LIBS = @WAYLAND_LIBS@
WEBP_CFLAGS = @WEBP_CFLAGS@
WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
WGET = @WGET@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
diff --git a/gst-libs/gst/gl/cocoa/gstglcaopengllayer.m b/gst-libs/gst/gl/cocoa/gstglcaopengllayer.m
index 45bd0dd..59ed09c 100644
--- a/gst-libs/gst/gl/cocoa/gstglcaopengllayer.m
+++ b/gst-libs/gst/gl/cocoa/gstglcaopengllayer.m
@@ -126,7 +126,7 @@
}
gst_gl_context_activate (self->draw_context, TRUE);
- gst_gl_context_set_shared_with (self->draw_context, self->gst_gl_context);
+ gst_gl_context_set_shared_with (self->draw_context, GST_GL_CONTEXT (self->gst_gl_context));
if (!gst_gl_context_fill_info (self->draw_context, &error)) {
GST_ERROR ("failed to fill wrapped context information: %s", error->message);
return NULL;
diff --git a/gst-libs/gst/gl/cocoa/gstglwindow_cocoa.m b/gst-libs/gst/gl/cocoa/gstglwindow_cocoa.m
index 0d027c5..495d022 100644
--- a/gst-libs/gst/gl/cocoa/gstglwindow_cocoa.m
+++ b/gst-libs/gst/gl/cocoa/gstglwindow_cocoa.m
@@ -77,6 +77,8 @@
gint width, gint height);
static void gst_gl_window_cocoa_show (GstGLWindow * window);
static void gst_gl_window_cocoa_queue_resize (GstGLWindow * window);
+static void gst_gl_window_cocoa_send_message_async (GstGLWindow * window,
+ GstGLWindowCB callback, gpointer data, GDestroyNotify destroy);
struct _GstGLWindowCocoaPrivate
{
@@ -90,6 +92,8 @@
/* atomic set when the internal NSView has been created */
int view_ready;
+
+ dispatch_queue_t gl_queue;
};
static void
@@ -111,6 +115,8 @@
GST_DEBUG_FUNCPTR (gst_gl_window_cocoa_set_preferred_size);
window_class->show = GST_DEBUG_FUNCPTR (gst_gl_window_cocoa_show);
window_class->queue_resize = GST_DEBUG_FUNCPTR (gst_gl_window_cocoa_queue_resize);
+ window_class->send_message_async =
+ GST_DEBUG_FUNCPTR (gst_gl_window_cocoa_send_message_async);
gobject_class->finalize = gst_gl_window_cocoa_finalize;
}
@@ -122,11 +128,15 @@
window->priv->preferred_width = 320;
window->priv->preferred_height = 240;
+ window->priv->gl_queue =
+ dispatch_queue_create ("org.freedesktop.gstreamer.glwindow", NULL);
}
static void
gst_gl_window_cocoa_finalize (GObject * object)
{
+ GstGLWindowCocoa *window = GST_GL_WINDOW_COCOA (object);
+ dispatch_release (window->priv->gl_queue);
G_OBJECT_CLASS (parent_class)->finalize (object);
}
@@ -370,6 +380,33 @@
[pool release];
}
+static void
+gst_gl_window_cocoa_send_message_async (GstGLWindow * window,
+ GstGLWindowCB callback, gpointer data, GDestroyNotify destroy)
+{
+ GstGLWindowCocoa *window_cocoa = (GstGLWindowCocoa *) window;
+ GstGLContext *context = gst_gl_window_get_context (window);
+ GThread *thread = gst_gl_context_get_thread (context);
+
+ if (thread == g_thread_self()) {
+ /* this case happens for nested calls happening from inside the GCD queue */
+ callback (data);
+ if (destroy)
+ destroy (data);
+ gst_object_unref (context);
+ } else {
+ dispatch_async (window_cocoa->priv->gl_queue, ^{
+ gst_gl_context_activate (context, TRUE);
+ gst_object_unref (context);
+ callback (data);
+ if (destroy)
+ destroy (data);
+ });
+ }
+ if (thread)
+ g_thread_unref (thread);
+}
+
/* =============================================================*/
/* */
/* GstGLNSWindow implementation */
diff --git a/gst-libs/gst/gl/dispmanx/Makefile.in b/gst-libs/gst/gl/dispmanx/Makefile.in
index b8d2722..da481c8 100644
--- a/gst-libs/gst/gl/dispmanx/Makefile.in
+++ b/gst-libs/gst/gl/dispmanx/Makefile.in
@@ -273,6 +273,8 @@
DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
DSYMUTIL = @DSYMUTIL@
DTLS_CFLAGS = @DTLS_CFLAGS@
DTLS_LIBS = @DTLS_LIBS@
@@ -488,6 +490,8 @@
LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
LIPO = @LIPO@
LN_S = @LN_S@
LOCALEDIR = @LOCALEDIR@
@@ -614,8 +618,6 @@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
SNDIO_LIBS = @SNDIO_LIBS@
@@ -660,6 +662,8 @@
WAYLAND_LIBS = @WAYLAND_LIBS@
WEBP_CFLAGS = @WEBP_CFLAGS@
WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
WGET = @WGET@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
diff --git a/gst-libs/gst/gl/eagl/Makefile.in b/gst-libs/gst/gl/eagl/Makefile.in
index 074ff57..9b60f3d 100644
--- a/gst-libs/gst/gl/eagl/Makefile.in
+++ b/gst-libs/gst/gl/eagl/Makefile.in
@@ -273,6 +273,8 @@
DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
DSYMUTIL = @DSYMUTIL@
DTLS_CFLAGS = @DTLS_CFLAGS@
DTLS_LIBS = @DTLS_LIBS@
@@ -488,6 +490,8 @@
LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
LIPO = @LIPO@
LN_S = @LN_S@
LOCALEDIR = @LOCALEDIR@
@@ -614,8 +618,6 @@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
SNDIO_LIBS = @SNDIO_LIBS@
@@ -660,6 +662,8 @@
WAYLAND_LIBS = @WAYLAND_LIBS@
WEBP_CFLAGS = @WEBP_CFLAGS@
WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
WGET = @WGET@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
diff --git a/gst-libs/gst/gl/eagl/gstglcontext_eagl.m b/gst-libs/gst/gl/eagl/gstglcontext_eagl.m
index 42dde56..ecadc3f 100644
--- a/gst-libs/gst/gl/eagl/gstglcontext_eagl.m
+++ b/gst-libs/gst/gl/eagl/gstglcontext_eagl.m
@@ -219,18 +219,30 @@
{
GstGLContextEagl *context_eagl = GST_GL_CONTEXT_EAGL (context);
GstGLContextEaglPrivate *priv = context_eagl->priv;
+ EAGLSharegroup *share_group;
if (other_context) {
EAGLContext *external_gl_context = (EAGLContext *)
gst_gl_context_get_gl_context (other_context);
- EAGLSharegroup *share_group = [external_gl_context sharegroup];
-
- priv->eagl_context = [[EAGLContext alloc] initWithAPI: kEAGLRenderingAPIOpenGLES2 sharegroup:share_group];
- [share_group release];
+ share_group = [external_gl_context sharegroup];
} else {
- priv->eagl_context = [[EAGLContext alloc] initWithAPI:kEAGLRenderingAPIOpenGLES2];
+ share_group = nil;
}
+ priv->eagl_context = [[EAGLContext alloc] initWithAPI:kEAGLRenderingAPIOpenGLES3 sharegroup:share_group];
+ if (!priv->eagl_context) {
+ priv->eagl_context = [[EAGLContext alloc] initWithAPI:kEAGLRenderingAPIOpenGLES2 sharegroup:share_group];
+ }
+ if (!priv->eagl_context) {
+ g_set_error_literal (error, GST_GL_CONTEXT_ERROR,
+ GST_GL_CONTEXT_ERROR_CREATE_CONTEXT,
+ "Failed to create OpenGL ES context");
+ return FALSE;
+ }
+
+ if (share_group)
+ [share_group release];
+
priv->eagl_layer = NULL;
priv->framebuffer = 0;
priv->color_renderbuffer = 0;
diff --git a/gst-libs/gst/gl/eagl/gstglwindow_eagl.m b/gst-libs/gst/gl/eagl/gstglwindow_eagl.m
index eb9d4f7..72ab1ab 100644
--- a/gst-libs/gst/gl/eagl/gstglwindow_eagl.m
+++ b/gst-libs/gst/gl/eagl/gstglwindow_eagl.m
@@ -40,6 +40,7 @@
#define gst_gl_window_eagl_parent_class parent_class
G_DEFINE_TYPE_WITH_CODE (GstGLWindowEagl, gst_gl_window_eagl,
GST_GL_TYPE_WINDOW, DEBUG_INIT);
+static void gst_gl_window_eagl_finalize (GObject * object);
static guintptr gst_gl_window_eagl_get_display (GstGLWindow * window);
static guintptr gst_gl_window_eagl_get_window_handle (GstGLWindow * window);
@@ -48,21 +49,27 @@
static void gst_gl_window_eagl_set_preferred_size (GstGLWindow * window,
gint width, gint height);
static void gst_gl_window_eagl_draw (GstGLWindow * window);
+static void gst_gl_window_eagl_send_message_async (GstGLWindow * window,
+ GstGLWindowCB callback, gpointer data, GDestroyNotify destroy);
struct _GstGLWindowEaglPrivate
{
UIView *view;
gint window_width, window_height;
gint preferred_width, preferred_height;
+ dispatch_queue_t gl_queue;
};
static void
gst_gl_window_eagl_class_init (GstGLWindowEaglClass * klass)
{
+ GObjectClass *gobject_class = (GObjectClass *) klass;
GstGLWindowClass *window_class = (GstGLWindowClass *) klass;
g_type_class_add_private (klass, sizeof (GstGLWindowEaglPrivate));
+ gobject_class->finalize = gst_gl_window_eagl_finalize;
+
window_class->get_display =
GST_DEBUG_FUNCPTR (gst_gl_window_eagl_get_display);
window_class->get_window_handle =
@@ -72,13 +79,24 @@
window_class->draw = GST_DEBUG_FUNCPTR (gst_gl_window_eagl_draw);
window_class->set_preferred_size =
GST_DEBUG_FUNCPTR (gst_gl_window_eagl_set_preferred_size);
+ window_class->send_message_async =
+ GST_DEBUG_FUNCPTR (gst_gl_window_eagl_send_message_async);
}
static void
gst_gl_window_eagl_init (GstGLWindowEagl * window)
{
window->priv = GST_GL_WINDOW_EAGL_GET_PRIVATE (window);
+ window->priv->gl_queue =
+ dispatch_queue_create ("org.freedesktop.gstreamer.glwindow", NULL);
+}
+static void
+gst_gl_window_eagl_finalize (GObject * object)
+{
+ GstGLWindowEagl *window = GST_GL_WINDOW_EAGL (object);
+ dispatch_release (window->priv->gl_queue);
+ G_OBJECT_CLASS (parent_class)->finalize (object);
}
/* Must be called in the gl thread */
@@ -127,6 +145,33 @@
}
static void
+gst_gl_window_eagl_send_message_async (GstGLWindow * window,
+ GstGLWindowCB callback, gpointer data, GDestroyNotify destroy)
+{
+ GstGLWindowEagl *window_eagl = (GstGLWindowEagl *) window;
+ GstGLContext *context = gst_gl_window_get_context (window);
+ GThread *thread = gst_gl_context_get_thread (context);
+
+ if (thread == g_thread_self()) {
+ /* this case happens for nested calls happening from inside the GCD queue */
+ callback (data);
+ if (destroy)
+ destroy (data);
+ gst_object_unref (context);
+ } else {
+ dispatch_async (window_eagl->priv->gl_queue, ^{
+ gst_gl_context_activate (context, TRUE);
+ gst_object_unref (context);
+ callback (data);
+ if (destroy)
+ destroy (data);
+ });
+ }
+ if (thread)
+ g_thread_unref (thread);
+}
+
+static void
draw_cb (gpointer data)
{
GstGLWindowEagl *window_eagl = data;
diff --git a/gst-libs/gst/gl/egl/Makefile.am b/gst-libs/gst/gl/egl/Makefile.am
index b808178..e164eb0 100644
--- a/gst-libs/gst/gl/egl/Makefile.am
+++ b/gst-libs/gst/gl/egl/Makefile.am
@@ -5,7 +5,8 @@
libgstgl_egl_la_SOURCES = \
gstgldisplay_egl.c \
gstglcontext_egl.c \
- gsteglimagememory.c
+ gstglmemoryegl.c \
+ gsteglimage.c
noinst_HEADERS =
@@ -13,7 +14,8 @@
libgstgl_eglinclude_HEADERS = \
gstgldisplay_egl.h \
gstglcontext_egl.h \
- gsteglimagememory.h \
+ gstglmemoryegl.h \
+ gsteglimage.h \
gstegl.h
libgstgl_egl_la_CFLAGS = \
diff --git a/gst-libs/gst/gl/egl/Makefile.in b/gst-libs/gst/gl/egl/Makefile.in
index e182bd9..a85730d 100644
--- a/gst-libs/gst/gl/egl/Makefile.in
+++ b/gst-libs/gst/gl/egl/Makefile.in
@@ -137,7 +137,8 @@
libgstgl_egl_la_LIBADD =
am_libgstgl_egl_la_OBJECTS = libgstgl_egl_la-gstgldisplay_egl.lo \
libgstgl_egl_la-gstglcontext_egl.lo \
- libgstgl_egl_la-gsteglimagememory.lo
+ libgstgl_egl_la-gstglmemoryegl.lo \
+ libgstgl_egl_la-gsteglimage.lo
libgstgl_egl_la_OBJECTS = $(am_libgstgl_egl_la_OBJECTS)
AM_V_lt = $(am__v_lt_@AM_V@)
am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@)
@@ -302,6 +303,8 @@
DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
DSYMUTIL = @DSYMUTIL@
DTLS_CFLAGS = @DTLS_CFLAGS@
DTLS_LIBS = @DTLS_LIBS@
@@ -517,6 +520,8 @@
LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
LIPO = @LIPO@
LN_S = @LN_S@
LOCALEDIR = @LOCALEDIR@
@@ -643,8 +648,6 @@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
SNDIO_LIBS = @SNDIO_LIBS@
@@ -689,6 +692,8 @@
WAYLAND_LIBS = @WAYLAND_LIBS@
WEBP_CFLAGS = @WEBP_CFLAGS@
WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
WGET = @WGET@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
@@ -781,14 +786,16 @@
libgstgl_egl_la_SOURCES = \
gstgldisplay_egl.c \
gstglcontext_egl.c \
- gsteglimagememory.c
+ gstglmemoryegl.c \
+ gsteglimage.c
noinst_HEADERS =
libgstgl_eglincludedir = $(includedir)/gstreamer-@GST_API_VERSION@/gst/gl/egl
libgstgl_eglinclude_HEADERS = \
gstgldisplay_egl.h \
gstglcontext_egl.h \
- gsteglimagememory.h \
+ gstglmemoryegl.h \
+ gsteglimage.h \
gstegl.h
libgstgl_egl_la_CFLAGS = \
@@ -857,9 +864,10 @@
distclean-compile:
-rm -f *.tab.c
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstgl_egl_la-gsteglimagememory.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstgl_egl_la-gsteglimage.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstgl_egl_la-gstglcontext_egl.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstgl_egl_la-gstgldisplay_egl.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstgl_egl_la-gstglmemoryegl.Plo@am__quote@
.c.o:
@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\
@@ -899,12 +907,19 @@
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstgl_egl_la_CFLAGS) $(CFLAGS) -c -o libgstgl_egl_la-gstglcontext_egl.lo `test -f 'gstglcontext_egl.c' || echo '$(srcdir)/'`gstglcontext_egl.c
-libgstgl_egl_la-gsteglimagememory.lo: gsteglimagememory.c
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstgl_egl_la_CFLAGS) $(CFLAGS) -MT libgstgl_egl_la-gsteglimagememory.lo -MD -MP -MF $(DEPDIR)/libgstgl_egl_la-gsteglimagememory.Tpo -c -o libgstgl_egl_la-gsteglimagememory.lo `test -f 'gsteglimagememory.c' || echo '$(srcdir)/'`gsteglimagememory.c
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgstgl_egl_la-gsteglimagememory.Tpo $(DEPDIR)/libgstgl_egl_la-gsteglimagememory.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gsteglimagememory.c' object='libgstgl_egl_la-gsteglimagememory.lo' libtool=yes @AMDEPBACKSLASH@
+libgstgl_egl_la-gstglmemoryegl.lo: gstglmemoryegl.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstgl_egl_la_CFLAGS) $(CFLAGS) -MT libgstgl_egl_la-gstglmemoryegl.lo -MD -MP -MF $(DEPDIR)/libgstgl_egl_la-gstglmemoryegl.Tpo -c -o libgstgl_egl_la-gstglmemoryegl.lo `test -f 'gstglmemoryegl.c' || echo '$(srcdir)/'`gstglmemoryegl.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgstgl_egl_la-gstglmemoryegl.Tpo $(DEPDIR)/libgstgl_egl_la-gstglmemoryegl.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gstglmemoryegl.c' object='libgstgl_egl_la-gstglmemoryegl.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 $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstgl_egl_la_CFLAGS) $(CFLAGS) -c -o libgstgl_egl_la-gsteglimagememory.lo `test -f 'gsteglimagememory.c' || echo '$(srcdir)/'`gsteglimagememory.c
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstgl_egl_la_CFLAGS) $(CFLAGS) -c -o libgstgl_egl_la-gstglmemoryegl.lo `test -f 'gstglmemoryegl.c' || echo '$(srcdir)/'`gstglmemoryegl.c
+
+libgstgl_egl_la-gsteglimage.lo: gsteglimage.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstgl_egl_la_CFLAGS) $(CFLAGS) -MT libgstgl_egl_la-gsteglimage.lo -MD -MP -MF $(DEPDIR)/libgstgl_egl_la-gsteglimage.Tpo -c -o libgstgl_egl_la-gsteglimage.lo `test -f 'gsteglimage.c' || echo '$(srcdir)/'`gsteglimage.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgstgl_egl_la-gsteglimage.Tpo $(DEPDIR)/libgstgl_egl_la-gsteglimage.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gsteglimage.c' object='libgstgl_egl_la-gsteglimage.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 $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstgl_egl_la_CFLAGS) $(CFLAGS) -c -o libgstgl_egl_la-gsteglimage.lo `test -f 'gsteglimage.c' || echo '$(srcdir)/'`gsteglimage.c
mostlyclean-libtool:
-rm -f *.lo
diff --git a/gst-libs/gst/gl/egl/gstegl.h b/gst-libs/gst/gl/egl/gstegl.h
index 4fc2f3d..82d4953 100644
--- a/gst-libs/gst/gl/egl/gstegl.h
+++ b/gst-libs/gst/gl/egl/gstegl.h
@@ -30,8 +30,10 @@
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wredundant-decls"
+#if !defined(__cplusplus)
#pragma GCC optimize ("gnu89-inline")
#endif
+#endif
#ifndef EGL_EGLEXT_PROTOTYPES
#define EGL_EGLEXT_PROTOTYPES 1
diff --git a/gst-libs/gst/gl/egl/gsteglimage.c b/gst-libs/gst/gl/egl/gsteglimage.c
new file mode 100644
index 0000000..569ed22
--- /dev/null
+++ b/gst-libs/gst/gl/egl/gsteglimage.c
@@ -0,0 +1,296 @@
+/*
+ * GStreamer
+ * Copyright (C) 2012 Collabora Ltd.
+ * @author: Sebastian Dröge <sebastian.droege@collabora.co.uk>
+ * Copyright (C) 2014 Julien Isorce <julien.isorce@gmail.com>
+ * Copyright (C) 2016 Matthew Waters <matthew@centricular.com>
+ *
+ * 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.
+ */
+
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#include "gsteglimage.h"
+#include <string.h>
+
+#if GST_GL_HAVE_DMABUF
+#include <gst/allocators/gstdmabuf.h>
+#include <libdrm/drm_fourcc.h>
+
+#ifndef DRM_FORMAT_R8
+#define DRM_FORMAT_R8 fourcc_code('R', '8', ' ', ' ')
+#endif
+
+#ifndef DRM_FORMAT_RG88
+#define DRM_FORMAT_RG88 fourcc_code('R', 'G', '8', '8')
+#endif
+
+#ifndef DRM_FORMAT_GR88
+#define DRM_FORMAT_GR88 fourcc_code('G', 'R', '8', '8')
+#endif
+#endif
+
+#ifndef EGL_LINUX_DMA_BUF_EXT
+#define EGL_LINUX_DMA_BUF_EXT 0x3270
+#endif
+
+#ifndef EGL_LINUX_DRM_FOURCC_EXT
+#define EGL_LINUX_DRM_FOURCC_EXT 0x3271
+#endif
+
+#ifndef EGL_DMA_BUF_PLANE0_FD_EXT
+#define EGL_DMA_BUF_PLANE0_FD_EXT 0x3272
+#endif
+
+#ifndef EGL_DMA_BUF_PLANE0_OFFSET_EXT
+#define EGL_DMA_BUF_PLANE0_OFFSET_EXT 0x3273
+#endif
+
+#ifndef EGL_DMA_BUF_PLANE0_PITCH_EXT
+#define EGL_DMA_BUF_PLANE0_PITCH_EXT 0x3274
+#endif
+
+GST_DEFINE_MINI_OBJECT_TYPE (GstEGLImage, gst_egl_image);
+
+/* XXX: This is only used currently if dmabuf support is enabled */
+#if GST_GL_HAVE_DMABUF
+#ifndef GST_DISABLE_GST_DEBUG
+#define GST_CAT_DEFAULT gst_egl_image_ensure_debug_category()
+
+static GstDebugCategory *
+gst_egl_image_ensure_debug_category (void)
+{
+ static gsize cat_gonce = 0;
+
+ if (g_once_init_enter (&cat_gonce)) {
+ GstDebugCategory *cat = NULL;
+
+ GST_DEBUG_CATEGORY_INIT (cat, "gleglimage", 0, "EGLImage wrapper");
+
+ g_once_init_leave (&cat_gonce, (gsize) cat);
+ }
+
+ return (GstDebugCategory *) cat_gonce;
+}
+#endif /* GST_DISABLE_GST_DEBUG */
+#endif /* GST_GL_HAVE_DMABUF */
+
+EGLImageKHR
+gst_egl_image_get_image (GstEGLImage * image)
+{
+ g_return_val_if_fail (GST_IS_EGL_IMAGE (image), EGL_NO_IMAGE_KHR);
+
+ return image->image;
+}
+
+GstVideoGLTextureOrientation
+gst_egl_image_get_orientation (GstEGLImage * image)
+{
+ g_return_val_if_fail (GST_IS_EGL_IMAGE (image),
+ GST_VIDEO_GL_TEXTURE_ORIENTATION_X_NORMAL_Y_NORMAL);
+
+ return image->orientation;
+}
+
+static void
+_gst_egl_image_free_thread (GstGLContext * context, GstEGLImage * image)
+{
+ if (image->destroy_notify)
+ image->destroy_notify (image, image->destroy_data);
+}
+
+static void
+_gst_egl_image_free (GstMiniObject * object)
+{
+ GstEGLImage *image = GST_EGL_IMAGE (object);
+
+ if (image->context) {
+ gst_gl_context_thread_add (GST_GL_CONTEXT (image->context),
+ (GstGLContextThreadFunc) _gst_egl_image_free_thread, image);
+ gst_object_unref (image->context);
+ }
+}
+
+static GstMiniObject *
+_gst_egl_image_copy (GstMiniObject * obj)
+{
+ return gst_mini_object_ref (obj);
+}
+
+GstEGLImage *
+gst_egl_image_new_wrapped (GstGLContext * context, EGLImageKHR image,
+ GstVideoGLTextureType type, GstVideoGLTextureOrientation orientation,
+ gpointer user_data, GstEGLImageDestroyNotify user_data_destroy)
+{
+ GstEGLImage *img = NULL;
+
+ g_return_val_if_fail (context != NULL, NULL);
+ g_return_val_if_fail (GST_IS_GL_CONTEXT_EGL (context), NULL);
+ g_return_val_if_fail (image != EGL_NO_IMAGE_KHR, NULL);
+
+ img = g_new0 (GstEGLImage, 1);
+ gst_mini_object_init (GST_MINI_OBJECT_CAST (img), 0, GST_TYPE_EGL_IMAGE,
+ (GstMiniObjectCopyFunction) _gst_egl_image_copy, NULL,
+ (GstMiniObjectFreeFunction) _gst_egl_image_free);
+
+ img->context = gst_object_ref (context);
+ img->image = image;
+ img->type = type;
+ img->orientation = orientation;
+
+ img->destroy_data = user_data;
+ img->destroy_notify = user_data_destroy;
+
+ return img;
+}
+
+#if GST_GL_HAVE_DMABUF
+/*
+ * GStreamer format descriptions differ from DRM formats as the representation
+ * is relative to a register, hence in native endianness. To reduce the driver
+ * requirement, we only import with a subset of texture formats and use
+ * shaders to convert. This way we avoid having to use external texture
+ * target.
+ */
+static int
+_drm_fourcc_from_info (GstVideoInfo * info, int plane)
+{
+ GstVideoFormat format = GST_VIDEO_INFO_FORMAT (info);
+#if G_BYTE_ORDER == G_LITTLE_ENDIAN
+ const gint rgba_fourcc = DRM_FORMAT_ABGR8888;
+ const gint rgb_fourcc = DRM_FORMAT_BGR888;
+ const gint rg_fourcc = DRM_FORMAT_GR88;
+#else
+ const gint rgba_fourcc = DRM_FORMAT_RGBA8888;
+ const gint rgb_fourcc = DRM_FORMAT_RGB888;
+ const gint rg_fourcc = DRM_FORMAT_RG88;
+#endif
+
+ GST_DEBUG ("Getting DRM fourcc for %s plane %i",
+ gst_video_format_to_string (format), plane);
+
+ switch (format) {
+ case GST_VIDEO_FORMAT_RGB16:
+ case GST_VIDEO_FORMAT_BGR16:
+ return DRM_FORMAT_RGB565;
+
+ case GST_VIDEO_FORMAT_RGB:
+ case GST_VIDEO_FORMAT_BGR:
+ return rgb_fourcc;
+
+ case GST_VIDEO_FORMAT_RGBA:
+ case GST_VIDEO_FORMAT_RGBx:
+ case GST_VIDEO_FORMAT_BGRA:
+ case GST_VIDEO_FORMAT_BGRx:
+ case GST_VIDEO_FORMAT_ARGB:
+ case GST_VIDEO_FORMAT_xRGB:
+ case GST_VIDEO_FORMAT_ABGR:
+ case GST_VIDEO_FORMAT_xBGR:
+ case GST_VIDEO_FORMAT_AYUV:
+ return rgba_fourcc;
+
+ case GST_VIDEO_FORMAT_GRAY8:
+ return DRM_FORMAT_R8;
+
+ case GST_VIDEO_FORMAT_YUY2:
+ case GST_VIDEO_FORMAT_UYVY:
+ case GST_VIDEO_FORMAT_GRAY16_LE:
+ case GST_VIDEO_FORMAT_GRAY16_BE:
+ return rg_fourcc;
+
+ case GST_VIDEO_FORMAT_NV12:
+ case GST_VIDEO_FORMAT_NV21:
+ return plane == 0 ? DRM_FORMAT_R8 : rg_fourcc;
+
+ case GST_VIDEO_FORMAT_I420:
+ case GST_VIDEO_FORMAT_YV12:
+ case GST_VIDEO_FORMAT_Y41B:
+ case GST_VIDEO_FORMAT_Y42B:
+ case GST_VIDEO_FORMAT_Y444:
+ return DRM_FORMAT_R8;
+
+ default:
+ GST_ERROR ("Unsupported format for DMABuf.");
+ return -1;
+ }
+}
+
+static void
+_destroy_egl_image (GstEGLImage * image, gpointer user_data)
+{
+ image->context->eglDestroyImage (image->context->egl_display, image->image);
+}
+
+GstEGLImage *
+gst_egl_image_from_dmabuf (GstGLContext * context,
+ gint dmabuf, GstVideoInfo * in_info, gint plane, gsize offset)
+{
+ GstGLContextEGL *ctx_egl = GST_GL_CONTEXT_EGL (context);
+ gint fourcc;
+ gint atti = 0;
+ EGLint attribs[13];
+ EGLImageKHR img = EGL_NO_IMAGE_KHR;
+ GstVideoGLTextureType type;
+
+ fourcc = _drm_fourcc_from_info (in_info, plane);
+ type =
+ gst_gl_texture_type_from_format (context, GST_VIDEO_INFO_FORMAT (in_info),
+ plane);
+
+ GST_DEBUG ("fourcc %.4s (%d) plane %d (%dx%d)",
+ (char *) &fourcc, fourcc, plane,
+ GST_VIDEO_INFO_COMP_WIDTH (in_info, plane),
+ GST_VIDEO_INFO_COMP_HEIGHT (in_info, plane));
+
+ attribs[atti++] = EGL_WIDTH;
+ attribs[atti++] = GST_VIDEO_INFO_COMP_WIDTH (in_info, plane);
+ attribs[atti++] = EGL_HEIGHT;
+ attribs[atti++] = GST_VIDEO_INFO_COMP_HEIGHT (in_info, plane);
+
+ attribs[atti++] = EGL_LINUX_DRM_FOURCC_EXT;
+ attribs[atti++] = fourcc;
+
+ attribs[atti++] = EGL_DMA_BUF_PLANE0_FD_EXT;
+ attribs[atti++] = dmabuf;
+
+ attribs[atti++] = EGL_DMA_BUF_PLANE0_OFFSET_EXT;
+ attribs[atti++] = offset;
+ attribs[atti++] = EGL_DMA_BUF_PLANE0_PITCH_EXT;
+ attribs[atti++] = GST_VIDEO_INFO_PLANE_STRIDE (in_info, plane);
+
+ attribs[atti] = EGL_NONE;
+
+ for (int i = 0; i < atti; i++)
+ GST_LOG ("attr %i: %08X", i, attribs[i]);
+
+ g_assert (atti == 12);
+
+ img = ctx_egl->eglCreateImage (ctx_egl->egl_display, EGL_NO_CONTEXT,
+ EGL_LINUX_DMA_BUF_EXT, NULL, attribs);
+
+ if (!img) {
+ GST_WARNING ("eglCreateImage failed: %s",
+ gst_gl_context_egl_get_error_string (eglGetError ()));
+ return NULL;
+ }
+
+ return gst_egl_image_new_wrapped (context, img, type,
+ GST_VIDEO_GL_TEXTURE_ORIENTATION_X_NORMAL_Y_NORMAL,
+ (GstEGLImageDestroyNotify) _destroy_egl_image, NULL);
+}
+#endif /* GST_GL_HAVE_DMABUF */
diff --git a/gst-libs/gst/gl/egl/gsteglimage.h b/gst-libs/gst/gl/egl/gsteglimage.h
new file mode 100644
index 0000000..2d2e075
--- /dev/null
+++ b/gst-libs/gst/gl/egl/gsteglimage.h
@@ -0,0 +1,106 @@
+/*
+ * GStreamer
+ * Copyright (C) 2012 Collabora Ltd.
+ * @author: Sebastian Dröge <sebastian.droege@collabora.co.uk>
+ * Copyright (C) 2014 Julien Isorce <julien.isorce@gmail.com>
+ *
+ * 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.
+ */
+
+#ifndef _GST_EGL_IMAGE_H_
+#define _GST_EGL_IMAGE_H_
+
+#include <gst/gst.h>
+#include <gst/video/video.h>
+
+#include <gst/gl/gl.h>
+#include <gst/gl/egl/gstglcontext_egl.h>
+
+G_BEGIN_DECLS
+
+GType gst_egl_image_get_type (void);
+#define GST_TYPE_EGL_IMAGE (gst_egl_image_get_type())
+#define GST_IS_EGL_IMAGE(obj) (GST_IS_MINI_OBJECT_TYPE(obj, GST_TYPE_EGL_IMAGE))
+#define GST_EGL_IMAGE_CAST(obj) ((GstEGLImage *)(obj))
+#define GST_EGL_IMAGE(obj) (GST_EGL_IMAGE_CAST(obj))
+
+typedef struct _GstEGLImage GstEGLImage;
+
+typedef void (*GstEGLImageDestroyNotify) (GstEGLImage * image,
+ gpointer data);
+
+struct _GstEGLImage
+{
+ GstMiniObject parent;
+
+ GstGLContextEGL *context;
+ EGLImageKHR image;
+ GstVideoGLTextureType type;
+ /* FIXME: remove this and use the affine transformation meta instead */
+ GstVideoGLTextureOrientation orientation;
+
+ /* <private> */
+ gpointer destroy_data;
+ GstEGLImageDestroyNotify destroy_notify;
+};
+
+GstEGLImage * gst_egl_image_new_wrapped (GstGLContext * context,
+ EGLImageKHR image,
+ GstVideoGLTextureType type,
+ GstVideoGLTextureOrientation orientation,
+ gpointer user_data,
+ GstEGLImageDestroyNotify user_data_destroy);
+EGLImageKHR gst_egl_image_get_image (GstEGLImage * image);
+GstVideoGLTextureOrientation gst_egl_image_get_orientation (GstEGLImage * image);
+
+#if GST_GL_HAVE_DMABUF
+GstEGLImage * gst_egl_image_from_dmabuf (GstGLContext * context,
+ gint dmabuf,
+ GstVideoInfo * in_info,
+ gint plane,
+ gsize offset);
+#endif
+
+/**
+ * gst_egl_image_ref:
+ * @image: a #GstEGLImage.
+ *
+ * Increases the refcount of the given image by one.
+ *
+ * Returns: (transfer full): @image
+ */
+static inline GstEGLImage *
+gst_egl_image_ref (GstEGLImage * image)
+{
+ return (GstEGLImage *) gst_mini_object_ref (GST_MINI_OBJECT_CAST (image));
+}
+
+/**
+ * gst_buffer_unref:
+ * @buf: (transfer full): a #GstBuffer.
+ *
+ * Decreases the refcount of the image. If the refcount reaches 0, the image
+ * with the associated metadata and memory will be freed.
+ */
+static inline void
+gst_egl_image_unref (GstEGLImage * image)
+{
+ gst_mini_object_unref (GST_MINI_OBJECT_CAST (image));
+}
+
+G_END_DECLS
+
+#endif /* _GST_EGL_IMAGE_H_ */
diff --git a/gst-libs/gst/gl/egl/gsteglimagememory.c b/gst-libs/gst/gl/egl/gsteglimagememory.c
deleted file mode 100644
index 46098b5..0000000
--- a/gst-libs/gst/gl/egl/gsteglimagememory.c
+++ /dev/null
@@ -1,732 +0,0 @@
-/*
- * GStreamer
- * Copyright (C) 2012 Collabora Ltd.
- * @author: Sebastian Dröge <sebastian.droege@collabora.co.uk>
- * Copyright (C) 2014 Julien Isorce <julien.isorce@gmail.com>
- *
- * 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.
- */
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include "gsteglimagememory.h"
-#include <string.h>
-
-#if GST_GL_HAVE_DMABUF
-#include <gst/allocators/gstdmabuf.h>
-#include <libdrm/drm_fourcc.h>
-
-#ifndef DRM_FORMAT_R8
-#define DRM_FORMAT_R8 fourcc_code('R', '8', ' ', ' ')
-#endif
-
-#ifndef DRM_FORMAT_RG88
-#define DRM_FORMAT_RG88 fourcc_code('R', 'G', '8', '8')
-#endif
-
-#ifndef DRM_FORMAT_GR88
-#define DRM_FORMAT_GR88 fourcc_code('G', 'R', '8', '8')
-#endif
-#endif
-
-#ifndef EGL_LINUX_DMA_BUF_EXT
-#define EGL_LINUX_DMA_BUF_EXT 0x3270
-#endif
-
-#ifndef EGL_LINUX_DRM_FOURCC_EXT
-#define EGL_LINUX_DRM_FOURCC_EXT 0x3271
-#endif
-
-#ifndef EGL_DMA_BUF_PLANE0_FD_EXT
-#define EGL_DMA_BUF_PLANE0_FD_EXT 0x3272
-#endif
-
-#ifndef EGL_DMA_BUF_PLANE0_OFFSET_EXT
-#define EGL_DMA_BUF_PLANE0_OFFSET_EXT 0x3273
-#endif
-
-#ifndef EGL_DMA_BUF_PLANE0_PITCH_EXT
-#define EGL_DMA_BUF_PLANE0_PITCH_EXT 0x3274
-#endif
-
-GST_DEBUG_CATEGORY_STATIC (GST_CAT_EGL_IMAGE_MEMORY);
-#define GST_CAT_DEFAULT GST_CAT_EGL_IMAGE_MEMORY
-
-#define GST_EGL_IMAGE_MEMORY(mem) ((GstEGLImageMemory*)(mem))
-
-gboolean
-gst_is_egl_image_memory (GstMemory * mem)
-{
- g_return_val_if_fail (mem != NULL, FALSE);
- g_return_val_if_fail (mem->allocator != NULL, FALSE);
-
- return g_strcmp0 (mem->allocator->mem_type, GST_EGL_IMAGE_MEMORY_TYPE) == 0;
-}
-
-EGLImageKHR
-gst_egl_image_memory_get_image (GstMemory * mem)
-{
- g_return_val_if_fail (gst_is_egl_image_memory (mem), EGL_NO_IMAGE_KHR);
-
- if (mem->parent)
- mem = mem->parent;
-
- return GST_EGL_IMAGE_MEMORY (mem)->image;
-}
-
-EGLDisplay
-gst_egl_image_memory_get_display (GstMemory * mem)
-{
- g_return_val_if_fail (gst_is_egl_image_memory (mem), NULL);
-
- if (mem->parent)
- mem = mem->parent;
-
- return GST_EGL_IMAGE_MEMORY (mem)->context->egl_display;
-}
-
-GstVideoGLTextureOrientation
-gst_egl_image_memory_get_orientation (GstMemory * mem)
-{
- g_return_val_if_fail (gst_is_egl_image_memory (mem),
- GST_VIDEO_GL_TEXTURE_ORIENTATION_X_NORMAL_Y_NORMAL);
-
- if (mem->parent)
- mem = mem->parent;
-
- return GST_EGL_IMAGE_MEMORY (mem)->orientation;
-}
-
-void
-gst_egl_image_memory_set_orientation (GstMemory * mem,
- GstVideoGLTextureOrientation orientation)
-{
- g_return_if_fail (gst_is_egl_image_memory (mem));
-
- if (mem->parent)
- mem = mem->parent;
-
- GST_EGL_IMAGE_MEMORY (mem)->orientation = orientation;
-}
-
-static GstMemory *
-gst_egl_image_allocator_alloc_vfunc (GstAllocator * allocator, gsize size,
- GstAllocationParams * params)
-{
- g_warning
- ("Use gst_egl_image_allocator_alloc() to allocate from this allocator");
-
- return NULL;
-}
-
-static void
-gst_egl_image_allocator_free_vfunc (GstAllocator * allocator, GstMemory * mem)
-{
- GstEGLImageMemory *emem = (GstEGLImageMemory *) mem;
-
- g_return_if_fail (gst_is_egl_image_memory (mem));
-
- /* Shared memory should not destroy all the data */
- if (!mem->parent) {
- emem->context->eglDestroyImage (emem->context->egl_display, emem->image);
-
- if (emem->user_data_destroy)
- emem->user_data_destroy (emem->context, emem->user_data);
-
- gst_object_unref (emem->context);
- emem->context = NULL;
- }
-
- g_slice_free (GstEGLImageMemory, emem);
-}
-
-static gpointer
-gst_egl_image_mem_map (GstMemory * mem, gsize maxsize, GstMapFlags flags)
-{
- return NULL;
-}
-
-static void
-gst_egl_image_mem_unmap (GstMemory * mem)
-{
-}
-
-static GstMemory *
-gst_egl_image_mem_share (GstMemory * mem, gssize offset, gssize size)
-{
- return NULL;
-}
-
-static GstMemory *
-gst_egl_image_mem_copy (GstMemory * mem, gssize offset, gssize size)
-{
- return NULL;
-}
-
-static gboolean
-gst_egl_image_mem_is_span (GstMemory * mem1, GstMemory * mem2, gsize * offset)
-{
- return FALSE;
-}
-
-typedef struct _GstEGLImageAllocator GstEGLImageAllocator;
-typedef struct _GstEGLImageAllocatorClass GstEGLImageAllocatorClass;
-
-struct _GstEGLImageAllocator
-{
- GstAllocator parent;
-};
-
-struct _GstEGLImageAllocatorClass
-{
- GstAllocatorClass parent_class;
-};
-
-GType gst_egl_image_allocator_get_type (void);
-G_DEFINE_TYPE (GstEGLImageAllocator, gst_egl_image_allocator,
- GST_TYPE_ALLOCATOR);
-
-#define GST_TYPE_EGL_IMAGE_ALLOCATOR (gst_egl_image_mem_allocator_get_type())
-#define GST_IS_EGL_IMAGE_ALLOCATOR(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GST_TYPE_EGL_IMAGE_ALLOCATOR))
-
-static void
-gst_egl_image_allocator_class_init (GstEGLImageAllocatorClass * klass)
-{
- GstAllocatorClass *allocator_class = (GstAllocatorClass *) klass;
-
- allocator_class->alloc = gst_egl_image_allocator_alloc_vfunc;
- allocator_class->free = gst_egl_image_allocator_free_vfunc;
-}
-
-static void
-gst_egl_image_allocator_init (GstEGLImageAllocator * allocator)
-{
- GstAllocator *alloc = GST_ALLOCATOR_CAST (allocator);
-
- alloc->mem_type = GST_EGL_IMAGE_MEMORY_TYPE;
- alloc->mem_map = gst_egl_image_mem_map;
- alloc->mem_unmap = gst_egl_image_mem_unmap;
- alloc->mem_share = gst_egl_image_mem_share;
- alloc->mem_copy = gst_egl_image_mem_copy;
- alloc->mem_is_span = gst_egl_image_mem_is_span;
-
- GST_OBJECT_FLAG_SET (allocator, GST_ALLOCATOR_FLAG_CUSTOM_ALLOC);
-}
-
-static gpointer
-gst_egl_image_allocator_init_instance (gpointer data)
-{
- GstAllocator *allocator =
- g_object_new (gst_egl_image_allocator_get_type (), NULL);
-
- GST_DEBUG_CATEGORY_INIT (GST_CAT_EGL_IMAGE_MEMORY, "eglimagememory", 0,
- "EGLImage Memory");
-
- gst_allocator_register (GST_EGL_IMAGE_MEMORY_TYPE,
- gst_object_ref (allocator));
-
- return allocator;
-}
-
-static GstEGLImageAllocator *
-gst_egl_image_allocator_obtain (void)
-{
- static GOnce once = G_ONCE_INIT;
-
- g_once (&once, gst_egl_image_allocator_init_instance, NULL);
-
- g_return_val_if_fail (once.retval != NULL, NULL);
-
- return (GstEGLImageAllocator *) (g_object_ref (once.retval));
-}
-
-void
-gst_egl_image_memory_init (void)
-{
- gst_egl_image_allocator_obtain ();
-}
-
-static void
-gst_egl_image_memory_del_gl_texture (GstGLContext * context, gpointer tex)
-{
- GLuint textures[1] = { GPOINTER_TO_UINT (tex) };
-
- gst_gl_context_del_texture (context, textures);
-}
-
-static GstMemory *
-gst_egl_image_allocator_wrap (GstEGLImageAllocator * allocator,
- GstGLContextEGL * context, EGLImageKHR image, GstVideoGLTextureType type,
- GstMemoryFlags flags, gsize size, gpointer user_data,
- GstEGLImageDestroyNotify user_data_destroy)
-{
- GstEGLImageMemory *mem = NULL;
-
- g_return_val_if_fail (context != NULL, NULL);
- g_return_val_if_fail (image != EGL_NO_IMAGE_KHR, NULL);
-
- if (!allocator) {
- allocator = gst_egl_image_allocator_obtain ();
- }
-
- mem = g_slice_new (GstEGLImageMemory);
- gst_memory_init (GST_MEMORY_CAST (mem), flags,
- GST_ALLOCATOR (allocator), NULL, size, 0, 0, size);
-
- gst_object_unref (allocator);
-
- mem->context = gst_object_ref (context);
- mem->image = image;
- mem->type = type;
- mem->orientation = GST_VIDEO_GL_TEXTURE_ORIENTATION_X_NORMAL_Y_NORMAL;
-
- mem->user_data = user_data;
- mem->user_data_destroy = user_data_destroy;
-
- return GST_MEMORY_CAST (mem);
-}
-
-#if 0
-static GstMemory *
-gst_egl_image_allocator_alloc (GstAllocator * allocator,
- GstGLContextEGL * context, GstVideoGLTextureType type, gint width,
- gint height, gsize size)
-{
- /* EGL_NO_CONTEXT */
- return NULL;
-}
-#endif
-
-static gboolean
-gst_eglimage_to_gl_texture_upload_meta (GstVideoGLTextureUploadMeta *
- meta, guint texture_id[4])
-{
- gint i = 0;
- gint n = 0;
-
- g_return_val_if_fail (meta != NULL, FALSE);
- g_return_val_if_fail (texture_id != NULL, FALSE);
-
- GST_DEBUG ("Uploading for meta with textures %i,%i,%i,%i", texture_id[0],
- texture_id[1], texture_id[2], texture_id[3]);
-
- n = gst_buffer_n_memory (meta->buffer);
-
- for (i = 0; i < n; i++) {
- GstMemory *mem = gst_buffer_peek_memory (meta->buffer, i);
- const GstGLFuncs *gl = NULL;
-
- if (!gst_is_egl_image_memory (mem)) {
- GST_WARNING ("memory %p does not hold an EGLImage", mem);
- return FALSE;
- }
-
- gl = GST_GL_CONTEXT (GST_EGL_IMAGE_MEMORY (mem)->context)->gl_vtable;
-
- gl->ActiveTexture (GL_TEXTURE0 + i);
- gl->BindTexture (GL_TEXTURE_2D, texture_id[i]);
- gl->EGLImageTargetTexture2D (GL_TEXTURE_2D,
- gst_egl_image_memory_get_image (mem));
- }
-
- if (GST_IS_GL_BUFFER_POOL (meta->buffer->pool))
- gst_gl_buffer_pool_replace_last_buffer (GST_GL_BUFFER_POOL (meta->
- buffer->pool), meta->buffer);
-
-
- return TRUE;
-}
-
-#if GST_GL_HAVE_DMABUF
-/*
- * GStreamer format descriptions differ from DRM formats as the representation
- * is relative to a register, hence in native endianness. To reduce the driver
- * requirement, we only import with a subset of texture formats and use
- * shaders to convert. This way we avoid having to use external texture
- * target.
- */
-static int
-_drm_fourcc_from_info (GstVideoInfo * info, int plane)
-{
- GstVideoFormat format = GST_VIDEO_INFO_FORMAT (info);
-#if G_BYTE_ORDER == G_LITTLE_ENDIAN
- const gint rgba_fourcc = DRM_FORMAT_ABGR8888;
- const gint rgb_fourcc = DRM_FORMAT_BGR888;
- const gint rg_fourcc = DRM_FORMAT_GR88;
-#else
- const gint rgba_fourcc = DRM_FORMAT_RGBA8888;
- const gint rgb_fourcc = DRM_FORMAT_RGB888;
- const gint rg_fourcc = DRM_FORMAT_RG88;
-#endif
-
- GST_DEBUG ("Getting DRM fourcc for %s plane %i",
- gst_video_format_to_string (format), plane);
-
- switch (format) {
- case GST_VIDEO_FORMAT_RGB16:
- case GST_VIDEO_FORMAT_BGR16:
- return DRM_FORMAT_RGB565;
-
- case GST_VIDEO_FORMAT_RGB:
- case GST_VIDEO_FORMAT_BGR:
- return rgb_fourcc;
-
- case GST_VIDEO_FORMAT_RGBA:
- case GST_VIDEO_FORMAT_RGBx:
- case GST_VIDEO_FORMAT_BGRA:
- case GST_VIDEO_FORMAT_BGRx:
- case GST_VIDEO_FORMAT_ARGB:
- case GST_VIDEO_FORMAT_xRGB:
- case GST_VIDEO_FORMAT_ABGR:
- case GST_VIDEO_FORMAT_xBGR:
- case GST_VIDEO_FORMAT_AYUV:
- return rgba_fourcc;
-
- case GST_VIDEO_FORMAT_GRAY8:
- return DRM_FORMAT_R8;
-
- case GST_VIDEO_FORMAT_YUY2:
- case GST_VIDEO_FORMAT_UYVY:
- case GST_VIDEO_FORMAT_GRAY16_LE:
- case GST_VIDEO_FORMAT_GRAY16_BE:
- return rg_fourcc;
-
- case GST_VIDEO_FORMAT_NV12:
- case GST_VIDEO_FORMAT_NV21:
- return plane == 0 ? DRM_FORMAT_R8 : rg_fourcc;
-
- case GST_VIDEO_FORMAT_I420:
- case GST_VIDEO_FORMAT_YV12:
- case GST_VIDEO_FORMAT_Y41B:
- case GST_VIDEO_FORMAT_Y42B:
- case GST_VIDEO_FORMAT_Y444:
- return DRM_FORMAT_R8;
-
- default:
- GST_ERROR ("Unsupported format for DMABuf.");
- return -1;
- }
-}
-
-GstMemory *
-gst_egl_image_memory_from_dmabuf (GstGLContext * context,
- gint dmabuf, GstVideoInfo * in_info, gint plane, gsize offset)
-{
- GstGLContextEGL *ctx_egl = GST_GL_CONTEXT_EGL (context);
- GstEGLImageAllocator *allocator;
- gint fourcc;
- gint atti = 0;
- EGLint attribs[13];
- EGLImageKHR img = EGL_NO_IMAGE_KHR;
-
- allocator = gst_egl_image_allocator_obtain ();
- fourcc = _drm_fourcc_from_info (in_info, plane);
-
- GST_DEBUG ("fourcc %.4s (%d) plane %d (%dx%d)",
- (char *) &fourcc, fourcc, plane,
- GST_VIDEO_INFO_COMP_WIDTH (in_info, plane),
- GST_VIDEO_INFO_COMP_HEIGHT (in_info, plane));
-
- attribs[atti++] = EGL_WIDTH;
- attribs[atti++] = GST_VIDEO_INFO_COMP_WIDTH (in_info, plane);
- attribs[atti++] = EGL_HEIGHT;
- attribs[atti++] = GST_VIDEO_INFO_COMP_HEIGHT (in_info, plane);
-
- attribs[atti++] = EGL_LINUX_DRM_FOURCC_EXT;
- attribs[atti++] = fourcc;
-
- attribs[atti++] = EGL_DMA_BUF_PLANE0_FD_EXT;
- attribs[atti++] = dmabuf;
-
- attribs[atti++] = EGL_DMA_BUF_PLANE0_OFFSET_EXT;
- attribs[atti++] = offset;
- attribs[atti++] = EGL_DMA_BUF_PLANE0_PITCH_EXT;
- attribs[atti++] = GST_VIDEO_INFO_PLANE_STRIDE (in_info, plane);
-
- attribs[atti] = EGL_NONE;
-
- for (int i = 0; i < atti; i++)
- GST_LOG ("attr %i: %08X", i, attribs[i]);
-
- g_assert (atti == 12);
-
- img = ctx_egl->eglCreateImage (ctx_egl->egl_display, EGL_NO_CONTEXT,
- EGL_LINUX_DMA_BUF_EXT, NULL, attribs);
-
- if (!img) {
- GST_WARNING_OBJECT (allocator, "eglCreateImage failed: %s",
- gst_gl_context_egl_get_error_string (eglGetError ()));
- return NULL;
- }
-
- return gst_egl_image_allocator_wrap (allocator, ctx_egl, img, 0, 0,
- in_info->size, NULL, NULL);
-}
-#endif /* GST_GL_HAVE_DMABUF */
-
-gboolean
-gst_egl_image_memory_setup_buffer (GstGLContext * ctx, GstVideoInfo * info,
- GstBuffer * buffer)
-{
- gint i = 0;
- gint stride[3];
- gsize offset[3];
- GstMemory *mem[3] = { NULL, NULL, NULL };
- guint n_mem = 0;
- GstMemoryFlags flags = 0;
- EGLImageKHR image = EGL_NO_IMAGE_KHR;
- EGLClientBuffer client_buffer_tex[3] = { 0, 0, 0 };
- GstVideoGLTextureType texture_types[] = { 0, 0, 0, 0 };
- GstEGLImageAllocator *allocator = gst_egl_image_allocator_obtain ();
- GstGLContextEGL *context = GST_GL_CONTEXT_EGL (ctx);
-
- g_return_val_if_fail (ctx, FALSE);
- g_return_val_if_fail (info, FALSE);
- g_return_val_if_fail (buffer, FALSE);
- g_return_val_if_fail (gst_gl_context_check_feature (ctx,
- "EGL_KHR_image_base"), FALSE);
-
- memset (stride, 0, sizeof (stride));
- memset (offset, 0, sizeof (offset));
-
- flags |= GST_MEMORY_FLAG_NOT_MAPPABLE;
- flags |= GST_MEMORY_FLAG_NO_SHARE;
-
- switch (GST_VIDEO_INFO_FORMAT (info)) {
- case GST_VIDEO_FORMAT_RGB:
- case GST_VIDEO_FORMAT_BGR:
- case GST_VIDEO_FORMAT_RGB16:
- case GST_VIDEO_FORMAT_RGBA:
- case GST_VIDEO_FORMAT_BGRA:
- case GST_VIDEO_FORMAT_ARGB:
- case GST_VIDEO_FORMAT_ABGR:
- case GST_VIDEO_FORMAT_RGBx:
- case GST_VIDEO_FORMAT_BGRx:
- case GST_VIDEO_FORMAT_xRGB:
- case GST_VIDEO_FORMAT_xBGR:
- case GST_VIDEO_FORMAT_AYUV:
- {
- gsize size = 0;
-
- switch (GST_VIDEO_INFO_FORMAT (info)) {
- case GST_VIDEO_FORMAT_RGB:
- case GST_VIDEO_FORMAT_BGR:
- case GST_VIDEO_FORMAT_RGB16:
- {
- texture_types[0] = GST_VIDEO_GL_TEXTURE_TYPE_RGB;
- break;
- }
- case GST_VIDEO_FORMAT_RGBA:
- case GST_VIDEO_FORMAT_BGRA:
- case GST_VIDEO_FORMAT_ARGB:
- case GST_VIDEO_FORMAT_ABGR:
- case GST_VIDEO_FORMAT_RGBx:
- case GST_VIDEO_FORMAT_BGRx:
- case GST_VIDEO_FORMAT_xRGB:
- case GST_VIDEO_FORMAT_xBGR:
- case GST_VIDEO_FORMAT_AYUV:
- {
- texture_types[0] = GST_VIDEO_GL_TEXTURE_TYPE_RGBA;
- break;
- }
- default:
- g_assert_not_reached ();
- break;
- }
-#if 0
- mem[0] =
- gst_egl_image_allocator_alloc (allocator, context,
- texture_types[0], GST_VIDEO_INFO_WIDTH (info),
- GST_VIDEO_INFO_HEIGHT (info), size);
- if (mem[0]) {
- stride[0] = size / GST_VIDEO_INFO_HEIGHT (info);
- n_mem = 1;
- GST_MINI_OBJECT_FLAG_SET (mem[0], GST_MEMORY_FLAG_NO_SHARE);
- } else
-#endif
- {
- gst_gl_generate_texture_full (GST_GL_CONTEXT (context), info, 0, stride,
- offset, &size, (GLuint *) & client_buffer_tex[0]);
-
- image = context->eglCreateImage (context->egl_display,
- context->egl_context, EGL_GL_TEXTURE_2D_KHR, client_buffer_tex[0],
- NULL);
- if (eglGetError () != EGL_SUCCESS)
- goto mem_error;
-
- mem[0] =
- gst_egl_image_allocator_wrap (allocator, context,
- image, texture_types[0], flags, size, client_buffer_tex[0],
- (GstEGLImageDestroyNotify) gst_egl_image_memory_del_gl_texture);
- n_mem = 1;
- }
- break;
- }
-
- case GST_VIDEO_FORMAT_NV12:
- case GST_VIDEO_FORMAT_NV21:
- {
- gsize size[2];
-
- texture_types[0] = GST_VIDEO_GL_TEXTURE_TYPE_LUMINANCE;
- texture_types[1] = GST_VIDEO_GL_TEXTURE_TYPE_LUMINANCE_ALPHA;
-#if 0
- mem[0] =
- gst_egl_image_allocator_alloc (allocator, context,
- texture_types[0], GST_VIDEO_INFO_COMP_WIDTH (info,
- 0), GST_VIDEO_INFO_COMP_HEIGHT (info, 0), size[0]);
- mem[1] =
- gst_egl_image_allocator_alloc (allocator, context,
- texture_types[1],
- GST_VIDEO_INFO_COMP_WIDTH (info, 1),
- GST_VIDEO_INFO_COMP_HEIGHT (info, 1), size[1]);
-
- if (mem[0] && mem[1]) {
- stride[0] = size[0] / GST_VIDEO_INFO_HEIGHT (info);
- offset[1] = size[0];
- stride[1] = size[1] / GST_VIDEO_INFO_HEIGHT (info);
- n_mem = 2;
- GST_MINI_OBJECT_FLAG_SET (mem[0], GST_MEMORY_FLAG_NO_SHARE);
- GST_MINI_OBJECT_FLAG_SET (mem[1], GST_MEMORY_FLAG_NO_SHARE);
- } else {
- if (mem[0])
- gst_memory_unref (mem[0]);
- if (mem[1])
- gst_memory_unref (mem[1]);
- mem[0] = mem[1] = NULL;
- }
-#endif
- {
- for (i = 0; i < 2; i++) {
- gst_gl_generate_texture_full (GST_GL_CONTEXT (context), info, 0,
- stride, offset, size, (GLuint *) & client_buffer_tex[i]);
-
- image = context->eglCreateImage (context->egl_display,
- context->egl_context, EGL_GL_TEXTURE_2D_KHR, client_buffer_tex[i],
- NULL);
- if (eglGetError () != EGL_SUCCESS)
- goto mem_error;
-
- mem[i] =
- gst_egl_image_allocator_wrap (allocator, context,
- image, texture_types[i], flags, size[i], client_buffer_tex[i],
- (GstEGLImageDestroyNotify) gst_egl_image_memory_del_gl_texture);
- }
-
- n_mem = 2;
- }
- break;
- }
- case GST_VIDEO_FORMAT_I420:
- case GST_VIDEO_FORMAT_YV12:
- case GST_VIDEO_FORMAT_Y444:
- case GST_VIDEO_FORMAT_Y42B:
- case GST_VIDEO_FORMAT_Y41B:
- {
- gsize size[3];
-
- texture_types[0] = GST_VIDEO_GL_TEXTURE_TYPE_LUMINANCE;
- texture_types[1] = GST_VIDEO_GL_TEXTURE_TYPE_LUMINANCE;
- texture_types[2] = GST_VIDEO_GL_TEXTURE_TYPE_LUMINANCE;
-#if 0
- mem[0] =
- gst_egl_image_allocator_alloc (allocator, context,
- texture_types[0], GST_VIDEO_INFO_COMP_WIDTH (info,
- 0), GST_VIDEO_INFO_COMP_HEIGHT (info, 0), size[0]);
- mem[1] =
- gst_egl_image_allocator_alloc (allocator, context,
- texture_types[1], GST_VIDEO_INFO_COMP_WIDTH (info,
- 1), GST_VIDEO_INFO_COMP_HEIGHT (info, 1), size[1]);
- mem[2] =
- gst_egl_image_allocator_alloc (allocator, context,
- texture_types[2], GST_VIDEO_INFO_COMP_WIDTH (info,
- 2), GST_VIDEO_INFO_COMP_HEIGHT (info, 2), size[2]);
-
- if (mem[0] && mem[1] && mem[2]) {
- stride[0] = size[0] / GST_VIDEO_INFO_HEIGHT (info);
- offset[1] = size[0];
- stride[1] = size[1] / GST_VIDEO_INFO_HEIGHT (info);
- offset[2] = size[1];
- stride[2] = size[2] / GST_VIDEO_INFO_HEIGHT (info);
- n_mem = 3;
- GST_MINI_OBJECT_FLAG_SET (mem[0], GST_MEMORY_FLAG_NO_SHARE);
- GST_MINI_OBJECT_FLAG_SET (mem[1], GST_MEMORY_FLAG_NO_SHARE);
- GST_MINI_OBJECT_FLAG_SET (mem[2], GST_MEMORY_FLAG_NO_SHARE);
- } else {
- if (mem[0])
- gst_memory_unref (mem[0]);
- if (mem[1])
- gst_memory_unref (mem[1]);
- if (mem[2])
- gst_memory_unref (mem[2]);
- mem[0] = mem[1] = mem[2] = NULL;
- }
-#endif
- {
- for (i = 0; i < 3; i++) {
- gst_gl_generate_texture_full (GST_GL_CONTEXT (context), info, i,
- stride, offset, size, (GLuint *) & client_buffer_tex[i]);
-
- image = context->eglCreateImage (context->egl_display,
- context->egl_context, EGL_GL_TEXTURE_2D_KHR, client_buffer_tex[i],
- NULL);
- if (eglGetError () != EGL_SUCCESS)
- goto mem_error;
-
- mem[i] =
- gst_egl_image_allocator_wrap (allocator, context,
- image, texture_types[i], flags, size[i], client_buffer_tex[i],
- (GstEGLImageDestroyNotify) gst_egl_image_memory_del_gl_texture);
- }
-
- n_mem = 3;
- }
- break;
- }
- default:
- g_assert_not_reached ();
- break;
- }
-
- gst_buffer_add_video_meta_full (buffer, 0, GST_VIDEO_INFO_FORMAT (info),
- GST_VIDEO_INFO_WIDTH (info), GST_VIDEO_INFO_HEIGHT (info),
- GST_VIDEO_INFO_N_PLANES (info), offset, stride);
-
- gst_buffer_add_video_gl_texture_upload_meta (buffer,
- gst_egl_image_memory_get_orientation (mem[0]), n_mem, texture_types,
- gst_eglimage_to_gl_texture_upload_meta, NULL, NULL, NULL);
-
- for (i = 0; i < n_mem; i++)
- gst_buffer_append_memory (buffer, mem[i]);
-
- return TRUE;
-
-mem_error:
- {
- GST_CAT_ERROR (GST_CAT_DEFAULT, "Failed to create EGLImage");
-
- for (i = 0; i < 3; i++) {
- if (client_buffer_tex[i])
- gst_gl_context_del_texture (ctx, (GLuint *) & client_buffer_tex[i]);
- if (mem[i])
- gst_memory_unref (mem[i]);
- }
-
- return FALSE;
- }
-}
diff --git a/gst-libs/gst/gl/egl/gsteglimagememory.h b/gst-libs/gst/gl/egl/gsteglimagememory.h
deleted file mode 100644
index aced247..0000000
--- a/gst-libs/gst/gl/egl/gsteglimagememory.h
+++ /dev/null
@@ -1,74 +0,0 @@
-/*
- * GStreamer
- * Copyright (C) 2012 Collabora Ltd.
- * @author: Sebastian Dröge <sebastian.droege@collabora.co.uk>
- * Copyright (C) 2014 Julien Isorce <julien.isorce@gmail.com>
- *
- * 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.
- */
-
-#ifndef _GST_EGL_IMAGE_MEMORY_H_
-#define _GST_EGL_IMAGE_MEMORY_H_
-
-#include <gst/gst.h>
-#include <gst/gstallocator.h>
-#include <gst/gstmemory.h>
-#include <gst/video/video.h>
-
-#include <gst/gl/gl.h>
-#include "gstglcontext_egl.h"
-
-G_BEGIN_DECLS
-
-typedef void (*GstEGLImageDestroyNotify) (GstGLContextEGL * context,
- gpointer data);
-
-typedef struct _GstEGLImageMemory GstEGLImageMemory;
-
-#define GST_EGL_IMAGE_MEMORY_TYPE "EGLImage"
-
-#define GST_CAPS_FEATURE_MEMORY_EGL_IMAGE "memory:EGLImage"
-
-struct _GstEGLImageMemory
-{
- GstMemory parent;
-
- GstGLContextEGL *context;
- EGLImageKHR image;
- GstVideoGLTextureType type;
- GstVideoGLTextureOrientation orientation;
-
- gpointer user_data;
- GstEGLImageDestroyNotify user_data_destroy;
-};
-
-void gst_egl_image_memory_init (void);
-gboolean gst_egl_image_memory_setup_buffer (GstGLContext * context, GstVideoInfo * info, GstBuffer * buffer);
-gboolean gst_is_egl_image_memory (GstMemory * mem);
-EGLImageKHR gst_egl_image_memory_get_image (GstMemory * mem);
-EGLDisplay gst_egl_image_memory_get_display (GstMemory * mem);
-GstVideoGLTextureOrientation gst_egl_image_memory_get_orientation (GstMemory * mem);
-void gst_egl_image_memory_set_orientation (GstMemory * mem,
- GstVideoGLTextureOrientation orientation);
-
-#if GST_GL_HAVE_DMABUF
-GstMemory * gst_egl_image_memory_from_dmabuf (GstGLContext * context,
- gint dmabuf, GstVideoInfo * in_info, gint plane, gsize offset);
-#endif
-
-G_END_DECLS
-
-#endif /* _GST_GL_MEMORY_H_ */
diff --git a/gst-libs/gst/gl/egl/gstgldisplay_egl.c b/gst-libs/gst/gl/egl/gstgldisplay_egl.c
index 9acf4f0..c0c8022 100644
--- a/gst-libs/gst/gl/egl/gstgldisplay_egl.c
+++ b/gst-libs/gst/gl/egl/gstgldisplay_egl.c
@@ -23,7 +23,8 @@
#endif
#include <gst/gl/egl/gstgldisplay_egl.h>
-#include <gst/gl/egl/gsteglimagememory.h>
+#include <gst/gl/egl/gsteglimage.h>
+#include <gst/gl/egl/gstglmemoryegl.h>
GST_DEBUG_CATEGORY_STATIC (gst_gl_display_debug);
#define GST_CAT_DEFAULT gst_gl_display_debug
@@ -50,7 +51,7 @@
display->type = GST_GL_DISPLAY_TYPE_EGL;
display_egl->foreign_display = FALSE;
- gst_egl_image_memory_init ();
+ gst_gl_memory_egl_init_once ();
}
static void
diff --git a/gst-libs/gst/gl/egl/gstglmemoryegl.c b/gst-libs/gst/gl/egl/gstglmemoryegl.c
new file mode 100644
index 0000000..0094c34
--- /dev/null
+++ b/gst-libs/gst/gl/egl/gstglmemoryegl.c
@@ -0,0 +1,251 @@
+/*
+ * GStreamer
+ * Copyright (C) 2012 Collabora Ltd.
+ * @author: Sebastian Dröge <sebastian.droege@collabora.co.uk>
+ * Copyright (C) 2014 Julien Isorce <julien.isorce@gmail.com>
+ * Copyright (C) 2015 Igalia
+ * Author: Gwang Yoon Hwang <yoon@igalia.com>
+ *
+ * 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.
+ */
+
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#include <string.h>
+
+#include <gst/gl/egl/gstglmemoryegl.h>
+
+static GstAllocator *_gl_memory_egl_allocator;
+
+GST_DEBUG_CATEGORY_STATIC (GST_CAT_GL_MEMORY);
+#define GST_CAT_DEFAULT GST_CAT_GL_MEMORY
+
+#define parent_class gst_gl_memory_egl_allocator_parent_class
+G_DEFINE_TYPE (GstGLMemoryEGLAllocator, gst_gl_memory_egl_allocator,
+ GST_TYPE_GL_MEMORY_ALLOCATOR);
+
+gboolean
+gst_is_gl_memory_egl (GstMemory * mem)
+{
+ return mem != NULL && mem->allocator != NULL
+ && g_type_is_a (G_OBJECT_TYPE (mem->allocator),
+ GST_TYPE_GL_MEMORY_EGL_ALLOCATOR);
+}
+
+static GstGLMemoryEGL *
+_gl_mem_get_parent (GstGLMemoryEGL * gl_mem)
+{
+ GstGLMemoryEGL *parent = (GstGLMemoryEGL *) gl_mem->mem.mem.mem.parent;
+ return parent ? parent : gl_mem;
+}
+
+EGLImageKHR
+gst_gl_memory_egl_get_image (GstGLMemoryEGL * mem)
+{
+ g_return_val_if_fail (gst_is_gl_memory_egl (GST_MEMORY_CAST (mem)),
+ EGL_NO_IMAGE_KHR);
+ return gst_egl_image_get_image (_gl_mem_get_parent (mem)->image);
+}
+
+EGLDisplay
+gst_gl_memory_egl_get_display (GstGLMemoryEGL * mem)
+{
+ g_return_val_if_fail (gst_is_gl_memory_egl (GST_MEMORY_CAST (mem)), NULL);
+ return GST_GL_CONTEXT_EGL (_gl_mem_get_parent (mem)->mem.mem.
+ context)->egl_display;
+}
+
+GstVideoGLTextureOrientation
+gst_gl_memory_egl_get_orientation (GstGLMemoryEGL * mem)
+{
+ g_return_val_if_fail (gst_is_gl_memory_egl (GST_MEMORY_CAST (mem)),
+ GST_VIDEO_GL_TEXTURE_ORIENTATION_X_NORMAL_Y_NORMAL);
+
+ return gst_egl_image_get_orientation (_gl_mem_get_parent (mem)->image);
+}
+
+static GstMemory *
+_gl_mem_alloc (GstAllocator * allocator, gsize size,
+ GstAllocationParams * params)
+{
+ g_warning ("Use gst_gl_base_memory_allocator_alloc() to allocate from this "
+ "GstGLMemoryEGL allocator");
+
+ return NULL;
+}
+
+static void
+_gl_mem_destroy (GstGLMemoryEGL * mem)
+{
+ if (mem->image)
+ gst_egl_image_unref (mem->image);
+
+ GST_GL_BASE_MEMORY_ALLOCATOR_CLASS (parent_class)->destroy ((GstGLBaseMemory
+ *) mem);
+}
+
+static GstGLMemoryEGL *
+_gl_mem_egl_alloc (GstGLBaseMemoryAllocator * allocator,
+ GstGLVideoAllocationParams * params)
+{
+ guint alloc_flags = params->parent.alloc_flags;
+ GstGLMemoryEGL *mem;
+
+ g_return_val_if_fail (alloc_flags & GST_GL_ALLOCATION_PARAMS_ALLOC_FLAG_VIDEO,
+ NULL);
+ g_return_val_if_fail ((alloc_flags &
+ GST_GL_ALLOCATION_PARAMS_ALLOC_FLAG_WRAP_SYSMEM) == 0, NULL);
+ if (alloc_flags & GST_GL_ALLOCATION_PARAMS_ALLOC_FLAG_WRAP_GPU_HANDLE) {
+ g_return_val_if_fail (GST_IS_EGL_IMAGE (params->parent.gl_handle), NULL);
+ }
+
+ mem = g_new0 (GstGLMemoryEGL, 1);
+ if (alloc_flags & GST_GL_ALLOCATION_PARAMS_ALLOC_FLAG_WRAP_GPU_HANDLE) {
+ if (params->target != GST_GL_TEXTURE_TARGET_2D) {
+ g_free (mem);
+ GST_CAT_ERROR (GST_CAT_GL_MEMORY, "GstGLMemoryEGL only supports wrapping "
+ "2D textures");
+ return NULL;
+ }
+ mem->image = gst_egl_image_ref (params->parent.gl_handle);
+ }
+
+ gst_gl_memory_init (GST_GL_MEMORY_CAST (mem), GST_ALLOCATOR_CAST (allocator),
+ NULL, params->parent.context, params->target, params->tex_type,
+ params->parent.alloc_params, params->v_info, params->plane,
+ params->valign, params->parent.user_data, params->parent.notify);
+
+ return mem;
+}
+
+static void
+_destroy_egl_image (GstEGLImage * image, gpointer user_data)
+{
+ image->context->eglDestroyImage (image->context->egl_display, image->image);
+}
+
+static gboolean
+_gl_mem_create (GstGLMemoryEGL * gl_mem, GError ** error)
+{
+ GstGLContext *context = gl_mem->mem.mem.context;
+ GstGLContextEGL *ctx_egl = GST_GL_CONTEXT_EGL (context);
+ const GstGLFuncs *gl = context->gl_vtable;
+ GstGLBaseMemoryAllocatorClass *alloc_class;
+
+ if (!gst_gl_context_check_feature (GST_GL_CONTEXT (context),
+ "EGL_KHR_image_base")) {
+ g_set_error (error, GST_GL_CONTEXT_ERROR, GST_GL_CONTEXT_ERROR_WRONG_API,
+ "EGL_KHR_image_base is not supported");
+ return FALSE;
+ }
+
+ alloc_class = GST_GL_BASE_MEMORY_ALLOCATOR_CLASS (parent_class);
+ if (!alloc_class->create ((GstGLBaseMemory *) gl_mem, error))
+ return FALSE;
+
+ if (gl_mem->image == NULL) {
+ EGLImageKHR image = ctx_egl->eglCreateImage (ctx_egl->egl_display,
+ ctx_egl->egl_context, EGL_GL_TEXTURE_2D_KHR,
+ (EGLClientBuffer) (guintptr) gl_mem->mem.tex_id, NULL);
+
+ GST_TRACE ("Generating EGLImage handle:%p from a texture:%u",
+ gl_mem->image, gl_mem->mem.tex_id);
+
+ if (eglGetError () != EGL_SUCCESS) {
+ g_set_error (error, GST_GL_CONTEXT_ERROR, GST_GL_CONTEXT_ERROR_FAILED,
+ "Failed to create EGLImage");
+ return FALSE;
+ }
+
+ gl_mem->image = gst_egl_image_new_wrapped (context, image, 0, 0,
+ (GstEGLImageDestroyNotify) _destroy_egl_image, NULL);
+ } else {
+ gl->ActiveTexture (GL_TEXTURE0 + gl_mem->mem.plane);
+ gl->BindTexture (GL_TEXTURE_2D, gl_mem->mem.tex_id);
+ gl->EGLImageTargetTexture2D (GL_TEXTURE_2D,
+ gst_egl_image_get_image (GST_EGL_IMAGE (gl_mem->image)));
+ }
+
+ return TRUE;
+}
+
+static GstMemory *
+_gl_mem_copy (GstGLMemoryEGL * src, gssize offset, gssize size)
+{
+ GST_CAT_ERROR (GST_CAT_GL_MEMORY, "GstGLMemoryEGL does not support copy");
+ return NULL;
+}
+
+static void
+gst_gl_memory_egl_allocator_class_init (GstGLMemoryEGLAllocatorClass * klass)
+{
+ GstGLBaseMemoryAllocatorClass *gl_base;
+ GstGLMemoryAllocatorClass *gl_tex;
+ GstAllocatorClass *allocator_class;
+
+ gl_tex = (GstGLMemoryAllocatorClass *) klass;
+ gl_base = (GstGLBaseMemoryAllocatorClass *) klass;
+ allocator_class = (GstAllocatorClass *) klass;
+
+ gl_base->alloc = (GstGLBaseMemoryAllocatorAllocFunction) _gl_mem_egl_alloc;
+ gl_base->create = (GstGLBaseMemoryAllocatorCreateFunction) _gl_mem_create;
+ gl_base->destroy = (GstGLBaseMemoryAllocatorDestroyFunction) _gl_mem_destroy;
+ gl_tex->copy = (GstGLBaseMemoryAllocatorCopyFunction) _gl_mem_copy;
+
+ allocator_class->alloc = _gl_mem_alloc;
+}
+
+static void
+gst_gl_memory_egl_allocator_init (GstGLMemoryEGLAllocator * allocator)
+{
+ GstAllocator *alloc = GST_ALLOCATOR_CAST (allocator);
+
+ alloc->mem_type = GST_GL_MEMORY_EGL_ALLOCATOR_NAME;
+
+ GST_OBJECT_FLAG_SET (allocator, GST_ALLOCATOR_FLAG_CUSTOM_ALLOC);
+}
+
+/**
+ * gst_gl_memory_egl_init_once:
+ *
+ * Initializes the GL Memory allocator. It is safe to call this function
+ * multiple times. This must be called before any other GstGLMemoryEGL operation.
+ */
+void
+gst_gl_memory_egl_init_once (void)
+{
+ static volatile gsize _init = 0;
+
+ if (g_once_init_enter (&_init)) {
+ gst_gl_memory_init_once ();
+
+ GST_DEBUG_CATEGORY_INIT (GST_CAT_GL_MEMORY, "glmemory", 0,
+ "OpenGL Texture with EGLImage memory");
+
+ _gl_memory_egl_allocator =
+ g_object_new (GST_TYPE_GL_MEMORY_EGL_ALLOCATOR, NULL);
+
+ /* The allocator is never unreffed */
+ GST_OBJECT_FLAG_SET (_gl_memory_egl_allocator,
+ GST_OBJECT_FLAG_MAY_BE_LEAKED);
+
+ gst_allocator_register (GST_GL_MEMORY_EGL_ALLOCATOR_NAME,
+ gst_object_ref (_gl_memory_egl_allocator));
+ g_once_init_leave (&_init, 1);
+ }
+}
diff --git a/gst-libs/gst/gl/egl/gstglmemoryegl.h b/gst-libs/gst/gl/egl/gstglmemoryegl.h
new file mode 100644
index 0000000..c05ef82
--- /dev/null
+++ b/gst-libs/gst/gl/egl/gstglmemoryegl.h
@@ -0,0 +1,99 @@
+/*
+ * GStreamer
+ * Copyright (C) 2012 Collabora Ltd.
+ * @author: Sebastian Dröge <sebastian.droege@collabora.co.uk>
+ * Copyright (C) 2014 Julien Isorce <julien.isorce@gmail.com>
+ *
+ * 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.
+ */
+
+#ifndef _GST_GL_MEMORY_EGL_H_
+#define _GST_GL_MEMORY_EGL_H_
+
+#include <gst/gst.h>
+#include <gst/gstallocator.h>
+#include <gst/gstmemory.h>
+#include <gst/video/video.h>
+
+#include <gst/gl/gl.h>
+#include <gst/gl/egl/gstglcontext_egl.h>
+#include <gst/gl/egl/gsteglimage.h>
+
+#include <gst/gl/gstglmemory.h>
+
+G_BEGIN_DECLS
+
+#define GST_TYPE_GL_MEMORY_EGL_ALLOCATOR (gst_gl_memory_egl_allocator_get_type())
+GType gst_gl_memory_egl_allocator_get_type(void);
+
+#define GST_IS_GL_MEMORY_EGL_ALLOCATOR(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GST_TYPE_GL_MEMORY_EGL_ALLOCATOR))
+#define GST_IS_GL_MEMORY_EGL_ALLOCATOR_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GST_TYPE_GL_MEMORY_EGL_ALLOCATOR))
+#define GST_GL_MEMORY_EGL_ALLOCATOR_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GST_TYPE_GL_MEMORY_EGL_ALLOCATOR, GstGLMemoryEGLAllocatorClass))
+#define GST_GL_MEMORY_EGL_ALLOCATOR(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GST_TYPE_GL_MEMORY_EGL_ALLOCATOR, GstGLMemoryEGLAllocator))
+#define GST_GL_MEMORY_EGL_ALLOCATOR_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GST_TYPE_GL_MEMORY_EGL_ALLOCATOR, GstGLAllocatorClass))
+#define GST_GL_MEMORY_EGL_ALLOCATOR_CAST(obj) ((GstGLMemoryEGLAllocator *)(obj))
+
+/**
+ * GstGLMemoryEGL:
+ *
+ * Private instance
+ */
+struct _GstGLMemoryEGL
+{
+ GstGLMemory mem;
+
+ GstEGLImage *image;
+};
+
+/**
+ * GST_GL_MEMORY_EGL_ALLOCATOR:
+ *
+ * The name of the GL Memory EGL allocator
+ */
+#define GST_GL_MEMORY_EGL_ALLOCATOR_NAME "GLMemoryEGL"
+
+void gst_gl_memory_egl_init_once (void);
+gboolean gst_is_gl_memory_egl (GstMemory * mem);
+
+EGLImageKHR gst_gl_memory_egl_get_image (GstGLMemoryEGL * mem);
+EGLDisplay gst_gl_memory_egl_get_display (GstGLMemoryEGL * mem);
+
+GstVideoGLTextureOrientation gst_gl_memory_egl_get_orientation
+ (GstGLMemoryEGL * mem);
+
+/**
+ * GstGLAllocator
+ *
+ * Opaque #GstGLAllocator struct
+ */
+struct _GstGLMemoryEGLAllocator
+{
+ GstGLMemoryAllocator parent;
+};
+
+/**
+ * GstGLAllocatorClass:
+ *
+ * The #GstGLAllocatorClass only contains private data
+ */
+struct _GstGLMemoryEGLAllocatorClass
+{
+ GstGLMemoryAllocatorClass parent_class;
+};
+
+G_END_DECLS
+
+#endif /* _GST_GL_MEMORY_EGL_H_ */
diff --git a/gst-libs/gst/gl/glprototypes/Makefile.in b/gst-libs/gst/gl/glprototypes/Makefile.in
index 3284cc2..c3d8253 100644
--- a/gst-libs/gst/gl/glprototypes/Makefile.in
+++ b/gst-libs/gst/gl/glprototypes/Makefile.in
@@ -265,6 +265,8 @@
DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
DSYMUTIL = @DSYMUTIL@
DTLS_CFLAGS = @DTLS_CFLAGS@
DTLS_LIBS = @DTLS_LIBS@
@@ -480,6 +482,8 @@
LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
LIPO = @LIPO@
LN_S = @LN_S@
LOCALEDIR = @LOCALEDIR@
@@ -606,8 +610,6 @@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
SNDIO_LIBS = @SNDIO_LIBS@
@@ -652,6 +654,8 @@
WAYLAND_LIBS = @WAYLAND_LIBS@
WEBP_CFLAGS = @WEBP_CFLAGS@
WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
WGET = @WGET@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
diff --git a/gst-libs/gst/gl/glprototypes/gstgl_gles2compat.h b/gst-libs/gst/gl/glprototypes/gstgl_gles2compat.h
index d282990..6dfd2c3 100644
--- a/gst-libs/gst/gl/glprototypes/gstgl_gles2compat.h
+++ b/gst-libs/gst/gl/glprototypes/gstgl_gles2compat.h
@@ -27,23 +27,30 @@
G_BEGIN_DECLS
-/* SUPPORTED */
-//FIXME:
+#ifndef GL_RGB16
#define GL_RGB16 GL_RGB565
+#endif
+#ifndef GL_RGB8
#define GL_RGB8 GL_RGB
-//END FIXME
+#endif
/* UNSUPPORTED */
-#define GL_COLOR_ATTACHMENT1 0
-#define GL_COLOR_ATTACHMENT2 0
+#ifndef GL_COLOR_ATTACHMENT1
+#define GL_COLOR_ATTACHMENT1 0x8CE1
+#endif
+#ifndef GL_COLOR_ATTACHMENT2
+#define GL_COLOR_ATTACHMENT2 0x8CE2
+#endif
#ifndef GL_TEXTURE_ENV
#define GL_TEXTURE_ENV 0
#endif
#ifndef GL_TEXTURE_ENV_MODE
#define GL_TEXTURE_ENV_MODE 0
#endif
-#define GL_DEPTH24_STENCIL8 0
+#ifndef GL_DEPTH24_STENCIL8
+#define GL_DEPTH24_STENCIL8 0x88F0
+#endif
G_END_DECLS
diff --git a/gst-libs/gst/gl/glprototypes/shaders.h b/gst-libs/gst/gl/glprototypes/shaders.h
index 817e479..6d828db 100644
--- a/gst-libs/gst/gl/glprototypes/shaders.h
+++ b/gst-libs/gst/gl/glprototypes/shaders.h
@@ -362,3 +362,13 @@
GST_GL_EXT_FUNCTION (void, UniformMatrix4x3fv,
(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value))
GST_GL_EXT_END ()
+
+GST_GL_EXT_BEGIN (bind_frag_data,
+ GST_GL_API_OPENGL | GST_GL_API_OPENGL3,
+ 3, 0,
+ 255, 255,
+ "\0",
+ "\0")
+GST_GL_EXT_FUNCTION (void, BindFragDataLocation,
+ (GLuint program, GLuint index, const GLchar * name))
+GST_GL_EXT_END ()
diff --git a/gst-libs/gst/gl/gstgl_fwd.h b/gst-libs/gst/gl/gstgl_fwd.h
index fb64ff6..73e17bd 100644
--- a/gst-libs/gst/gl/gstgl_fwd.h
+++ b/gst-libs/gst/gl/gstgl_fwd.h
@@ -55,6 +55,10 @@
typedef struct _GstGLMemoryPBOAllocator GstGLMemoryPBOAllocator;
typedef struct _GstGLMemoryPBOAllocatorClass GstGLMemoryPBOAllocatorClass;
+typedef struct _GstGLMemoryEGL GstGLMemoryEGL;
+typedef struct _GstGLMemoryEGLAllocator GstGLMemoryEGLAllocator;
+typedef struct _GstGLMemoryEGLAllocatorClass GstGLMemoryEGLAllocatorClass;
+
typedef struct _GstGLSLStage GstGLSLStage;
typedef struct _GstGLSLStagePrivate GstGLSLStagePrivate;
typedef struct _GstGLSLStageClass GstGLSLStageClass;
diff --git a/gst-libs/gst/gl/gstglapi.h b/gst-libs/gst/gl/gstglapi.h
index be38113..93b60b7 100644
--- a/gst-libs/gst/gl/gstglapi.h
+++ b/gst-libs/gst/gl/gstglapi.h
@@ -39,8 +39,13 @@
# include <OpenGLES/ES2/gl.h>
# include <OpenGLES/ES2/glext.h>
# else
-# include <GLES2/gl2.h>
-# include <GLES2/gl2ext.h>
+# if GST_GL_HAVE_GLES3
+# include <GLES3/gl3.h>
+# include <GLES3/gl3ext.h>
+# else
+# include <GLES2/gl2.h>
+# include <GLES2/gl2ext.h>
+# endif
# endif
# if !GST_GL_HAVE_OPENGL
# include <gst/gl/glprototypes/gstgl_gles2compat.h>
diff --git a/gst-libs/gst/gl/gstglbasememory.c b/gst-libs/gst/gl/gstglbasememory.c
index 7fc1d00..915e19e 100644
--- a/gst-libs/gst/gl/gstglbasememory.c
+++ b/gst-libs/gst/gl/gstglbasememory.c
@@ -606,7 +606,7 @@
gsize struct_size, guint alloc_flags, GstGLAllocationParamsCopyFunc copy,
GstGLAllocationParamsFreeFunc free, GstGLContext * context,
gsize alloc_size, GstAllocationParams * alloc_params,
- gpointer wrapped_data, guint gl_handle, gpointer user_data,
+ gpointer wrapped_data, gpointer gl_handle, gpointer user_data,
GDestroyNotify notify)
{
memset (params, 0, sizeof (*params));
diff --git a/gst-libs/gst/gl/gstglbasememory.h b/gst-libs/gst/gl/gstglbasememory.h
index f862c85..642684a 100644
--- a/gst-libs/gst/gl/gstglbasememory.h
+++ b/gst-libs/gst/gl/gstglbasememory.h
@@ -173,7 +173,7 @@
/* GST_GL_ALLOCATION_PARAMS_ALLOC_FLAG_WRAP_SYSMEM only */
gpointer wrapped_data;
/* GST_GL_ALLOCATION_PARAMS_ALLOC_FLAG_WRAP_GPU_HANDLE only */
- guint gl_handle;
+ gpointer gl_handle;
};
gboolean gst_gl_allocation_params_init (GstGLAllocationParams * params,
@@ -185,7 +185,7 @@
gsize alloc_size,
GstAllocationParams * alloc_params,
gpointer wrapped_data,
- guint gl_handle,
+ gpointer gl_handle,
gpointer user_data,
GDestroyNotify notify);
diff --git a/gst-libs/gst/gl/gstglbuffer.c b/gst-libs/gst/gl/gstglbuffer.c
index 2abdd6d..d50fd6d 100644
--- a/gst-libs/gst/gl/gstglbuffer.c
+++ b/gst-libs/gst/gl/gstglbuffer.c
@@ -456,6 +456,9 @@
_gl_buffer_allocator =
g_object_new (gst_gl_buffer_allocator_get_type (), NULL);
+ /* The allocator is never unreffed */
+ GST_OBJECT_FLAG_SET (_gl_buffer_allocator, GST_OBJECT_FLAG_MAY_BE_LEAKED);
+
gst_allocator_register (GST_GL_BUFFER_ALLOCATOR_NAME,
gst_object_ref (_gl_buffer_allocator));
g_once_init_leave (&_init, 1);
diff --git a/gst-libs/gst/gl/gstglbufferpool.c b/gst-libs/gst/gl/gstglbufferpool.c
index 90536b0..218169a 100644
--- a/gst-libs/gst/gl/gstglbufferpool.c
+++ b/gst-libs/gst/gl/gstglbufferpool.c
@@ -26,10 +26,6 @@
#include "gstglbufferpool.h"
#include "gstglutils.h"
-#if GST_GL_HAVE_PLATFORM_EGL
-#include <gst/gl/egl/gsteglimagememory.h>
-#endif
-
/**
* SECTION:gstglbufferpool
* @short_description: buffer pool for #GstGLMemory objects
@@ -51,8 +47,6 @@
GstCaps *caps;
gboolean add_videometa;
gboolean add_glsyncmeta;
- gboolean want_eglimage;
- GstBuffer *last_buffer;
};
static void gst_gl_buffer_pool_finalize (GObject * object);
@@ -132,23 +126,13 @@
priv->add_glsyncmeta = gst_buffer_pool_config_has_option (config,
GST_BUFFER_POOL_OPTION_GL_SYNC_META);
-#if GST_GL_HAVE_PLATFORM_EGL
- if (priv->allocator) {
- priv->want_eglimage =
- (g_strcmp0 (priv->allocator->mem_type, GST_EGL_IMAGE_MEMORY_TYPE) == 0);
- } else
-#endif
- {
- priv->want_eglimage = FALSE;
- }
-
if (priv->gl_params)
gst_gl_allocation_params_free ((GstGLAllocationParams *) priv->gl_params);
priv->gl_params = (GstGLVideoAllocationParams *)
gst_buffer_pool_config_get_gl_allocation_params (config);
if (!priv->gl_params)
priv->gl_params = gst_gl_video_allocation_params_new (glpool->context,
- &alloc_params, &info, -1, NULL, 0);
+ &alloc_params, &info, -1, NULL, 0, 0);
max_align = alloc_params.align;
@@ -276,22 +260,9 @@
if (!(buf = gst_buffer_new ())) {
goto no_buffer;
}
-#if GST_GL_HAVE_PLATFORM_EGL
- if (priv->want_eglimage) {
- /* alloc and append memories, also add video_meta and
- * texture_upload_meta */
- if (!gst_egl_image_memory_setup_buffer (glpool->context,
- priv->gl_params->v_info, buf))
- goto egl_image_mem_create_failed;
-
- *buffer = buf;
-
- return GST_FLOW_OK;
- }
-#endif
alloc = GST_GL_MEMORY_ALLOCATOR (priv->allocator);
- if (!gst_gl_memory_setup_buffer (alloc, buf, priv->gl_params))
+ if (!gst_gl_memory_setup_buffer (alloc, buf, priv->gl_params, NULL, NULL, 0))
goto mem_create_failed;
if (priv->add_glsyncmeta)
@@ -312,48 +283,6 @@
GST_WARNING_OBJECT (pool, "Could not create GL Memory");
return GST_FLOW_ERROR;
}
-
-#if GST_GL_HAVE_PLATFORM_EGL
-egl_image_mem_create_failed:
- {
- GST_WARNING_OBJECT (pool, "Could not create EGLImage Memory");
- return GST_FLOW_ERROR;
- }
-#endif
-}
-
-
-static GstFlowReturn
-gst_gl_buffer_pool_acquire_buffer (GstBufferPool * bpool,
- GstBuffer ** buffer, GstBufferPoolAcquireParams * params)
-{
- GstFlowReturn ret = GST_FLOW_OK;
- GstGLBufferPool *glpool = NULL;
-
- ret =
- GST_BUFFER_POOL_CLASS
- (gst_gl_buffer_pool_parent_class)->acquire_buffer (bpool, buffer, params);
- if (ret != GST_FLOW_OK || !*buffer)
- return ret;
-
- glpool = GST_GL_BUFFER_POOL (bpool);
-
- /* XXX: Don't return the memory we just rendered, glEGLImageTargetTexture2DOES()
- * keeps the EGLImage unmappable until the next one is uploaded
- */
- if (glpool->priv->want_eglimage && *buffer
- && *buffer == glpool->priv->last_buffer) {
- GstBuffer *oldbuf = *buffer;
-
- ret =
- GST_BUFFER_POOL_CLASS
- (gst_gl_buffer_pool_parent_class)->acquire_buffer (bpool,
- buffer, params);
- gst_object_replace ((GstObject **) & oldbuf->pool, (GstObject *) glpool);
- gst_buffer_unref (oldbuf);
- }
-
- return ret;
}
/**
@@ -376,24 +305,6 @@
return GST_BUFFER_POOL_CAST (pool);
}
-/**
- * gst_gl_buffer_pool_replace_last_buffer:
- * @pool: a #GstGLBufferPool
- * @buffer: a #GstBuffer
- *
- * Set @pool<-- -->s last buffer to @buffer for #GstGLPlatform<-- -->s that
- * require it.
- */
-void
-gst_gl_buffer_pool_replace_last_buffer (GstGLBufferPool * pool,
- GstBuffer * buffer)
-{
- g_return_if_fail (pool != NULL);
- g_return_if_fail (buffer != NULL);
-
- gst_buffer_replace (&pool->priv->last_buffer, buffer);
-}
-
static void
gst_gl_buffer_pool_class_init (GstGLBufferPoolClass * klass)
{
@@ -407,7 +318,6 @@
gstbufferpool_class->get_options = gst_gl_buffer_pool_get_options;
gstbufferpool_class->set_config = gst_gl_buffer_pool_set_config;
gstbufferpool_class->alloc_buffer = gst_gl_buffer_pool_alloc;
- gstbufferpool_class->acquire_buffer = gst_gl_buffer_pool_acquire_buffer;
gstbufferpool_class->start = gst_gl_buffer_pool_start;
}
@@ -423,8 +333,6 @@
priv->caps = NULL;
priv->add_videometa = TRUE;
priv->add_glsyncmeta = FALSE;
- priv->want_eglimage = FALSE;
- priv->last_buffer = FALSE;
}
static void
@@ -435,8 +343,6 @@
GST_LOG_OBJECT (pool, "finalize GL buffer pool %p", pool);
- gst_buffer_replace (&pool->priv->last_buffer, NULL);
-
if (priv->caps)
gst_caps_unref (priv->caps);
diff --git a/gst-libs/gst/gl/gstglbufferpool.h b/gst-libs/gst/gl/gstglbufferpool.h
index ee13366..2f964a8 100644
--- a/gst-libs/gst/gl/gstglbufferpool.h
+++ b/gst-libs/gst/gl/gstglbufferpool.h
@@ -61,8 +61,6 @@
};
GstBufferPool *gst_gl_buffer_pool_new (GstGLContext * context);
-void gst_gl_buffer_pool_replace_last_buffer (GstGLBufferPool * pool,
- GstBuffer * buffer);
GstGLAllocationParams * gst_buffer_pool_config_get_gl_allocation_params (GstStructure * config);
void gst_buffer_pool_config_set_gl_allocation_params (GstStructure * config,
diff --git a/gst-libs/gst/gl/gstglcolorconvert.c b/gst-libs/gst/gl/gstglcolorconvert.c
index eb3b4a8..ebddb2d 100644
--- a/gst-libs/gst/gl/gstglcolorconvert.c
+++ b/gst-libs/gst/gl/gstglcolorconvert.c
@@ -27,6 +27,7 @@
#include "gl.h"
#include "gstglcolorconvert.h"
+#include "gstglsl_private.h"
/**
* SECTION:gstglcolorconvert
@@ -261,9 +262,9 @@
" for (int j = 0; j < int(chroma_sampling.y); j++) {\n"
" int n = (i+1)*(j+1);\n"
" delta.y = float(j);\n"
- " vec4 sample = texture2D(tex, (chroma_pos + delta) / unnormalization).%c%c%c%c;\n"
+ " vec4 s = texture2D(tex, (chroma_pos + delta) / unnormalization).%c%c%c%c;\n"
/* rolling average */
- " uv_texel = (float(n-1) * uv_texel + sample) / float(n);\n"
+ " uv_texel = (float(n-1) * uv_texel + s) / float(n);\n"
" }\n"
" }\n"
"}\n"
@@ -413,6 +414,8 @@
GstGLMemory *in_tex[GST_VIDEO_MAX_PLANES];
GstGLMemory *out_tex[GST_VIDEO_MAX_PLANES];
+ GstVideoGLTextureType in_tex_types[GST_VIDEO_MAX_PLANES];
+
GLuint vao;
GLuint vertex_buffer;
GLuint vbo_indices;
@@ -520,6 +523,28 @@
}
static void
+gst_gl_color_convert_reset_shader (GstGLColorConvert * convert)
+{
+ convert->priv->convert_info.chroma_sampling[0] = 1.0f;
+ convert->priv->convert_info.chroma_sampling[1] = 1.0f;
+
+ if (convert->priv->convert_info.frag_prog) {
+ g_free (convert->priv->convert_info.frag_prog);
+ convert->priv->convert_info.frag_prog = NULL;
+ }
+ if (convert->priv->convert_info.frag_body) {
+ g_free (convert->priv->convert_info.frag_body);
+ convert->priv->convert_info.frag_body = NULL;
+ }
+ if (convert->shader) {
+ gst_object_unref (convert->shader);
+ convert->shader = NULL;
+ }
+
+ convert->initted = FALSE;
+}
+
+static void
gst_gl_color_convert_reset (GstGLColorConvert * convert)
{
guint i;
@@ -537,28 +562,13 @@
convert->priv->out_tex[i] = NULL;
}
- convert->priv->convert_info.chroma_sampling[0] = 1.0f;
- convert->priv->convert_info.chroma_sampling[1] = 1.0f;
-
- if (convert->priv->convert_info.frag_prog) {
- g_free (convert->priv->convert_info.frag_prog);
- convert->priv->convert_info.frag_prog = NULL;
- }
- if (convert->priv->convert_info.frag_body) {
- g_free (convert->priv->convert_info.frag_body);
- convert->priv->convert_info.frag_body = NULL;
- }
- if (convert->shader) {
- gst_object_unref (convert->shader);
- convert->shader = NULL;
- }
-
if (convert->priv->pool) {
convert->priv->pool_started = FALSE;
gst_object_unref (convert->priv->pool);
convert->priv->pool = NULL;
}
+
gst_caps_replace (&convert->priv->in_caps, NULL);
gst_caps_replace (&convert->priv->out_caps, NULL);
@@ -566,6 +576,8 @@
gst_gl_context_thread_add (convert->context,
(GstGLContextThreadFunc) _reset_gl, convert);
}
+
+ gst_gl_color_convert_reset_shader (convert);
}
static gboolean
@@ -788,7 +800,7 @@
GST_BUFFER_POOL_OPTION_GL_SYNC_META);
params = gst_gl_video_allocation_params_new (convert->context, NULL, &vinfo,
- 0, NULL, convert->priv->to_texture_target);
+ 0, NULL, convert->priv->to_texture_target, 0);
gst_buffer_pool_config_set_gl_allocation_params (config,
(GstGLAllocationParams *) params);
gst_gl_allocation_params_free ((GstGLAllocationParams *) params);
@@ -1328,6 +1340,42 @@
return g_string_free (ret, discard_output);
}
+static guint
+_get_n_textures (GstVideoFormat v_format)
+{
+ switch (v_format) {
+ case GST_VIDEO_FORMAT_RGBA:
+ case GST_VIDEO_FORMAT_RGBx:
+ case GST_VIDEO_FORMAT_ARGB:
+ case GST_VIDEO_FORMAT_xRGB:
+ case GST_VIDEO_FORMAT_BGRA:
+ case GST_VIDEO_FORMAT_BGRx:
+ case GST_VIDEO_FORMAT_ABGR:
+ case GST_VIDEO_FORMAT_xBGR:
+ case GST_VIDEO_FORMAT_RGB:
+ case GST_VIDEO_FORMAT_BGR:
+ case GST_VIDEO_FORMAT_AYUV:
+ case GST_VIDEO_FORMAT_GRAY8:
+ case GST_VIDEO_FORMAT_GRAY16_LE:
+ case GST_VIDEO_FORMAT_GRAY16_BE:
+ case GST_VIDEO_FORMAT_YUY2:
+ case GST_VIDEO_FORMAT_UYVY:
+ return 1;
+ case GST_VIDEO_FORMAT_NV12:
+ case GST_VIDEO_FORMAT_NV21:
+ return 2;
+ case GST_VIDEO_FORMAT_I420:
+ case GST_VIDEO_FORMAT_Y444:
+ case GST_VIDEO_FORMAT_Y42B:
+ case GST_VIDEO_FORMAT_Y41B:
+ case GST_VIDEO_FORMAT_YV12:
+ return 3;
+ default:
+ g_assert_not_reached ();
+ return 0;
+ }
+}
+
static void
_RGB_to_RGB (GstGLColorConvert * convert)
{
@@ -1339,8 +1387,6 @@
gchar *pixel_order = _RGB_pixel_order (in_format_str, out_format_str);
gchar *alpha = NULL;
- info->in_n_textures = 1;
- info->out_n_textures = 1;
if (_is_RGBx (in_format)) {
int i;
char input_alpha_channel = 'a';
@@ -1368,13 +1414,6 @@
GstVideoFormat out_format = GST_VIDEO_INFO_FORMAT (&convert->out_info);
const gchar *out_format_str = gst_video_format_to_string (out_format);
gchar *pixel_order = _RGB_pixel_order ("rgba", out_format_str);
- gboolean texture_rg =
- gst_gl_context_check_feature (convert->context, "GL_EXT_texture_rg")
- || gst_gl_context_check_gl_version (convert->context, GST_GL_API_GLES2, 3,
- 0)
- || gst_gl_context_check_feature (convert->context, "GL_ARB_texture_rg")
- || gst_gl_context_check_gl_version (convert->context, GST_GL_API_OPENGL3,
- 3, 0);
gboolean apple_ycbcr = gst_gl_context_check_feature (convert->context,
"GL_APPLE_ycbcr_422");
gboolean in_tex_rectangular = FALSE;
@@ -1402,7 +1441,6 @@
info->frag_body =
g_strdup_printf (info->templ->body, pixel_order[0], pixel_order[1],
pixel_order[2], pixel_order[3]);
- info->in_n_textures = 1;
info->shader_tex_names[0] = "tex";
} else {
switch (GST_VIDEO_INFO_FORMAT (&convert->in_info)) {
@@ -1410,7 +1448,6 @@
info->templ = &templ_AYUV_to_RGB;
info->frag_body = g_strdup_printf (info->templ->body, pixel_order[0],
pixel_order[1], pixel_order[2], pixel_order[3]);
- info->in_n_textures = 1;
info->shader_tex_names[0] = "tex";
break;
case GST_VIDEO_FORMAT_I420:
@@ -1421,7 +1458,6 @@
info->frag_body =
g_strdup_printf (info->templ->body, pixel_order[0],
pixel_order[1], pixel_order[2], pixel_order[3]);
- info->in_n_textures = 3;
info->shader_tex_names[0] = "Ytex";
info->shader_tex_names[1] = "Utex";
info->shader_tex_names[2] = "Vtex";
@@ -1431,51 +1467,54 @@
info->frag_body =
g_strdup_printf (info->templ->body, pixel_order[0],
pixel_order[1], pixel_order[2], pixel_order[3]);
- info->in_n_textures = 3;
info->shader_tex_names[0] = "Ytex";
info->shader_tex_names[1] = "Vtex";
info->shader_tex_names[2] = "Utex";
break;
case GST_VIDEO_FORMAT_YUY2:
{
- char uv_val = texture_rg ? 'g' : 'a';
+ char uv_val =
+ convert->priv->in_tex_types[0] ==
+ GST_VIDEO_GL_TEXTURE_TYPE_RG ? 'g' : 'a';
info->templ = &templ_YUY2_UYVY_to_RGB;
info->frag_body = g_strdup_printf (info->templ->body, 'r', uv_val,
uv_val, 'g', 'a', pixel_order[0], pixel_order[1], pixel_order[2],
pixel_order[3]);
- info->in_n_textures = 1;
info->shader_tex_names[0] = "Ytex";
break;
}
case GST_VIDEO_FORMAT_UYVY:
{
- char y_val = texture_rg ? 'g' : 'a';
+ char y_val =
+ convert->priv->in_tex_types[0] ==
+ GST_VIDEO_GL_TEXTURE_TYPE_RG ? 'g' : 'a';
info->templ = &templ_YUY2_UYVY_to_RGB;
info->frag_body = g_strdup_printf (info->templ->body, y_val, 'g',
'g', 'r', 'b', pixel_order[0], pixel_order[1], pixel_order[2],
pixel_order[3]);
- info->in_n_textures = 1;
info->shader_tex_names[0] = "Ytex";
break;
}
case GST_VIDEO_FORMAT_NV12:
{
- char val2 = texture_rg ? 'g' : 'a';
+ char val2 =
+ convert->priv->in_tex_types[1] ==
+ GST_VIDEO_GL_TEXTURE_TYPE_RG ? 'g' : 'a';
info->templ = &templ_NV12_NV21_to_RGB;
info->frag_body = g_strdup_printf (info->templ->body, 'r', val2,
pixel_order[0], pixel_order[1], pixel_order[2], pixel_order[3]);
- info->in_n_textures = 2;
info->shader_tex_names[0] = "Ytex";
info->shader_tex_names[1] = "UVtex";
break;
}
case GST_VIDEO_FORMAT_NV21:
{
- char val2 = texture_rg ? 'g' : 'a';
+ char val2 =
+ convert->priv->in_tex_types[1] ==
+ GST_VIDEO_GL_TEXTURE_TYPE_RG ? 'g' : 'a';
info->templ = &templ_NV12_NV21_to_RGB;
info->frag_body = g_strdup_printf (info->templ->body, val2, 'r',
pixel_order[0], pixel_order[1], pixel_order[2], pixel_order[3]);
- info->in_n_textures = 2;
info->shader_tex_names[0] = "Ytex";
info->shader_tex_names[1] = "UVtex";
break;
@@ -1513,7 +1552,6 @@
const gchar *alpha;
info->frag_prog = NULL;
- info->in_n_textures = 1;
info->shader_tex_names[0] = "tex";
@@ -1609,7 +1647,6 @@
gchar *pixel_order = _RGB_pixel_order (in_format_str, "rgba");
gchar *alpha = NULL;
- info->in_n_textures = 1;
info->out_n_textures = 1;
info->shader_tex_names[0] = "tex";
@@ -1637,16 +1674,7 @@
GstVideoFormat out_format = GST_VIDEO_INFO_FORMAT (&convert->out_info);
const gchar *out_format_str = gst_video_format_to_string (out_format);
gchar *pixel_order = _RGB_pixel_order ("rgba", out_format_str);
- gboolean texture_rg =
- gst_gl_context_check_feature (convert->context, "GL_EXT_texture_rg")
- || gst_gl_context_check_gl_version (convert->context, GST_GL_API_GLES2, 3,
- 0)
- || gst_gl_context_check_feature (convert->context, "GL_ARB_texture_rg")
- || gst_gl_context_check_gl_version (convert->context, GST_GL_API_OPENGL3,
- 3, 0);
- info->in_n_textures = 1;
- info->out_n_textures = 1;
info->shader_tex_names[0] = "tex";
switch (GST_VIDEO_INFO_FORMAT (&convert->in_info)) {
@@ -1657,7 +1685,9 @@
break;
case GST_VIDEO_FORMAT_GRAY16_LE:
{
- char val2 = texture_rg ? 'g' : 'a';
+ char val2 =
+ convert->priv->in_tex_types[0] ==
+ GST_VIDEO_GL_TEXTURE_TYPE_RG ? 'g' : 'a';
info->templ = &templ_COMPOSE;
info->frag_body = g_strdup_printf (info->templ->body, val2, 'r',
pixel_order[0], pixel_order[1], pixel_order[2], pixel_order[3]);
@@ -1665,7 +1695,9 @@
}
case GST_VIDEO_FORMAT_GRAY16_BE:
{
- char val2 = texture_rg ? 'g' : 'a';
+ char val2 =
+ convert->priv->in_tex_types[0] ==
+ GST_VIDEO_GL_TEXTURE_TYPE_RG ? 'g' : 'a';
info->templ = &templ_COMPOSE;
info->frag_body = g_strdup_printf (info->templ->body, 'r', val2,
pixel_order[0], pixel_order[1], pixel_order[2], pixel_order[3]);
@@ -1710,178 +1742,6 @@
gl->DisableVertexAttribArray (convert->priv->attr_texture);
}
-static gchar *
-_mangle_texture_access (const gchar * str, GstGLTextureTarget from,
- GstGLTextureTarget to, GstGLAPI gl_api)
-{
- const gchar *from_str = NULL, *to_str = NULL;
- gchar *ret, *tmp;
- gchar *regex_find;
- GRegex *regex;
-
- if (from == GST_GL_TEXTURE_TARGET_2D)
- from_str = "texture2D";
- if (from == GST_GL_TEXTURE_TARGET_RECTANGLE)
- from_str = "texture2DRect";
- if (from == GST_GL_TEXTURE_TARGET_EXTERNAL_OES)
- from_str = "texture2D";
-
- if (gl_api & GST_GL_API_OPENGL3) {
- to_str = "texture";
- } else {
- if (to == GST_GL_TEXTURE_TARGET_2D)
- to_str = "texture2D";
- if (to == GST_GL_TEXTURE_TARGET_RECTANGLE)
- to_str = "texture2DRect";
- if (to == GST_GL_TEXTURE_TARGET_EXTERNAL_OES)
- to_str = "texture2D";
- }
-
- /* followed by any amount of whitespace then a bracket */
- regex_find = g_strdup_printf ("%s(?=\\s*\\()", from_str);
- regex = g_regex_new (regex_find, 0, 0, NULL);
- tmp = g_regex_replace_literal (regex, str, -1, 0, to_str, 0, NULL);
- g_free (regex_find);
- g_regex_unref (regex);
-
- if (tmp) {
- ret = tmp;
- } else {
- GST_FIXME ("Couldn't mangle texture access successfully from %s to %s",
- from_str, to_str);
- ret = g_strdup (str);
- }
-
- return ret;
-}
-
-static gchar *
-_mangle_sampler_type (const gchar * str, GstGLTextureTarget from,
- GstGLTextureTarget to)
-{
- const gchar *from_str = NULL, *to_str = NULL;
- gchar *ret, *tmp;
- gchar *regex_find;
- GRegex *regex;
-
- if (from == GST_GL_TEXTURE_TARGET_2D)
- from_str = "sampler2D";
- if (from == GST_GL_TEXTURE_TARGET_RECTANGLE)
- from_str = "sampler2DRect";
- if (from == GST_GL_TEXTURE_TARGET_EXTERNAL_OES)
- from_str = "samplerExternalOES";
-
- if (to == GST_GL_TEXTURE_TARGET_2D)
- to_str = "sampler2D";
- if (to == GST_GL_TEXTURE_TARGET_RECTANGLE)
- to_str = "sampler2DRect";
- if (to == GST_GL_TEXTURE_TARGET_EXTERNAL_OES)
- to_str = "samplerExternalOES";
-
- /* followed by some whitespace */
- regex_find = g_strdup_printf ("%s(?=\\s)", from_str);
- regex = g_regex_new (regex_find, 0, 0, NULL);
- tmp = g_regex_replace_literal (regex, str, -1, 0, to_str, 0, NULL);
- g_free (regex_find);
- g_regex_unref (regex);
-
- if (tmp) {
- ret = tmp;
- } else {
- GST_FIXME ("Couldn't mangle sampler type successfully from %s to %s",
- from_str, to_str);
- ret = g_strdup (str);
- }
-
- return ret;
-}
-
-static gchar *
-_mangle_varying_attribute (const gchar * str, guint shader_type,
- GstGLAPI gl_api)
-{
- if (gl_api & GST_GL_API_OPENGL3) {
- if (shader_type == GL_VERTEX_SHADER) {
- gchar *tmp, *tmp2;
- GRegex *regex;
-
- /* followed by some whitespace */
- regex = g_regex_new ("varying(?=\\s)", 0, 0, NULL);
- tmp = g_regex_replace_literal (regex, str, -1, 0, "out", 0, NULL);
- g_regex_unref (regex);
-
- /* followed by some whitespace */
- regex = g_regex_new ("attribute(?=\\s)", 0, 0, NULL);
- tmp2 = g_regex_replace_literal (regex, tmp, -1, 0, "in", 0, NULL);
- g_regex_unref (regex);
-
- g_free (tmp);
- return tmp2;
- } else if (shader_type == GL_FRAGMENT_SHADER) {
- gchar *tmp;
- GRegex *regex;
-
- /* followed by some whitespace */
- regex = g_regex_new ("varying(?=\\s)", 0, 0, NULL);
- tmp = g_regex_replace_literal (regex, str, -1, 0, "in", 0, NULL);
- g_regex_unref (regex);
-
- return tmp;
- }
- }
- return g_strdup (str);
-}
-
-static gchar *
-_mangle_frag_color (const gchar * str)
-{
- GRegex *regex;
- gchar *ret;
-
- regex = g_regex_new ("gl_FragColor", 0, 0, NULL);
- ret = g_regex_replace_literal (regex, str, -1, 0, "fragColor", 0, NULL);
- g_regex_unref (regex);
-
- return ret;
-}
-
-static void
-_mangle_version_profile_from_gl_api (GstGLAPI gl_api, GstGLSLVersion * version,
- GstGLSLProfile * profile)
-{
- if (gl_api & GST_GL_API_OPENGL3) {
- *version = GST_GLSL_VERSION_150;
- *profile = GST_GLSL_PROFILE_NONE;
- } else if (gl_api & GST_GL_API_GLES2) {
- *version = GST_GLSL_VERSION_100;
- *profile = GST_GLSL_PROFILE_ES;
- } else if (gl_api & GST_GL_API_OPENGL) {
- *version = GST_GLSL_VERSION_110;
- *profile = GST_GLSL_PROFILE_COMPATIBILITY;
- }
-}
-
-static gchar *
-_mangle_shader (const gchar * str, guint shader_type, GstGLTextureTarget from,
- GstGLTextureTarget to, GstGLAPI gl_api, GstGLSLVersion * version,
- GstGLSLProfile * profile)
-{
- gchar *tmp, *tmp2;
-
- tmp = _mangle_texture_access (str, from, to, gl_api);
- tmp2 = _mangle_sampler_type (tmp, from, to);
- g_free (tmp);
- tmp = _mangle_varying_attribute (tmp2, shader_type, gl_api);
- g_free (tmp2);
- if (shader_type == GL_FRAGMENT_SHADER && gl_api & GST_GL_API_OPENGL3) {
- tmp2 = _mangle_frag_color (tmp);
- g_free (tmp);
- tmp = tmp2;
- }
- _mangle_version_profile_from_gl_api (gl_api, version, profile);
- return tmp;
-}
-
static GstGLShader *
_create_shader (GstGLColorConvert * convert)
{
@@ -1894,16 +1754,14 @@
gchar *version_str, *tmp, *tmp1;
const gchar *strings[2];
GError *error = NULL;
- GstGLAPI gl_api;
int i;
- gl_api = gst_gl_context_get_gl_api (convert->context);
-
ret = gst_gl_shader_new (convert->context);
tmp =
- _mangle_shader (text_vertex_shader, GL_VERTEX_SHADER, info->templ->target,
- convert->priv->from_texture_target, gl_api, &version, &profile);
+ _gst_glsl_mangle_shader (text_vertex_shader, GL_VERTEX_SHADER,
+ info->templ->target, convert->priv->from_texture_target, convert->context,
+ &version, &profile);
tmp1 = gst_glsl_version_profile_to_string (version, profile);
version_str = g_strdup_printf ("#version %s\n", tmp1);
@@ -1941,9 +1799,37 @@
if (info->templ->uniforms)
g_string_append (str, info->templ->uniforms);
- if (gl_api & GST_GL_API_OPENGL3) {
- g_string_append_c (str, '\n');
- g_string_append (str, "out vec4 fragColor;\n");
+ g_string_append_c (str, '\n');
+
+ /* GL 3.3+ and GL ES 3.x */
+ if ((profile == GST_GLSL_PROFILE_CORE && version >= GST_GLSL_VERSION_330)
+ || (profile == GST_GLSL_PROFILE_ES && version >= GST_GLSL_VERSION_300)) {
+ if (info->out_n_textures > 1) {
+ gint i;
+
+ for (i = 0; i < info->out_n_textures; i++) {
+ g_string_append_printf (str,
+ "layout(location = %d) out vec4 fragColor_%d;\n", i, i);
+ }
+ } else {
+ g_string_append (str, "layout (location = 0) out vec4 fragColor;\n");
+ }
+ } else if (profile == GST_GLSL_PROFILE_CORE
+ && version >= GST_GLSL_VERSION_150) {
+ /* no layout specifiers, use glBindFragDataLocation instead */
+ if (info->out_n_textures > 1) {
+ gint i;
+
+ for (i = 0; i < info->out_n_textures; i++) {
+ gchar *var_name = g_strdup_printf ("fragColor_%d", i);
+ g_string_append_printf (str, "out vec4 %s;\n", var_name);
+ gst_gl_shader_bind_frag_data_location (ret, i, var_name);
+ g_free (var_name);
+ }
+ } else {
+ g_string_append (str, "out vec4 fragColor;\n");
+ gst_gl_shader_bind_frag_data_location (ret, 0, "fragColor");
+ }
}
for (i = 0; i < MAX_FUNCTIONS; i++) {
@@ -1955,7 +1841,19 @@
g_string_append_c (str, '\n');
}
- g_string_append (str, "\nvarying vec2 v_texcoord;\nvoid main (void) {\n");
+ {
+ const gchar *varying = NULL;
+
+ if ((profile == GST_GLSL_PROFILE_ES && version >= GST_GLSL_VERSION_300)
+ || (profile == GST_GLSL_PROFILE_CORE
+ && version >= GST_GLSL_VERSION_150)) {
+ varying = "in";
+ } else {
+ varying = "varying";
+ }
+ g_string_append_printf (str, "\n%s vec2 v_texcoord;\nvoid main (void) {\n",
+ varying);
+ }
if (info->frag_body) {
g_string_append (str, "vec2 texcoord;\n");
if (convert->priv->from_texture_target == GST_GL_TEXTURE_TARGET_RECTANGLE
@@ -1969,8 +1867,8 @@
}
g_string_append (str, "\n}");
tmp = g_string_free (str, FALSE);
- info->frag_prog = _mangle_shader (tmp, GL_FRAGMENT_SHADER,
- info->templ->target, convert->priv->from_texture_target, gl_api,
+ info->frag_prog = _gst_glsl_mangle_shader (tmp, GL_FRAGMENT_SHADER,
+ info->templ->target, convert->priv->from_texture_target, convert->context,
&version, &profile);
g_free (tmp);
@@ -2071,7 +1969,7 @@
}
/* Requires reading from a RG/LA framebuffer... */
- if (USING_GLES2 (convert->context) &&
+ if (USING_GLES2 (convert->context) && !USING_GLES3 (convert->context) &&
(GST_VIDEO_INFO_FORMAT (&convert->out_info) == GST_VIDEO_FORMAT_YUY2 ||
GST_VIDEO_INFO_FORMAT (&convert->out_info) ==
GST_VIDEO_FORMAT_UYVY)) {
@@ -2129,7 +2027,7 @@
gst_gl_context_clear_shader (convert->context);
- if (!_init_convert_fbo (convert)) {
+ if (convert->fbo == 0 && !_init_convert_fbo (convert)) {
goto error;
}
@@ -2336,7 +2234,8 @@
allocator = gst_allocator_find (GST_GL_MEMORY_ALLOCATOR_NAME);
base_mem_allocator = GST_GL_BASE_MEMORY_ALLOCATOR (allocator);
params = gst_gl_video_allocation_params_new (context, NULL, &temp_info,
- 0, NULL, convert->priv->to_texture_target);
+ 0, NULL, convert->priv->to_texture_target,
+ GST_VIDEO_GL_TEXTURE_TYPE_RGBA);
convert->priv->out_tex[j] =
(GstGLMemory *) gst_gl_base_memory_alloc (base_mem_allocator,
@@ -2432,6 +2331,7 @@
_do_convert (GstGLContext * context, GstGLColorConvert * convert)
{
GstVideoInfo *in_info = &convert->in_info;
+ struct ConvertInfo *c_info = &convert->priv->convert_info;
gboolean res = TRUE;
gint views, v;
GstVideoOverlayCompositionMeta *composition_meta;
@@ -2440,6 +2340,54 @@
convert->outbuf = NULL;
+ if (GST_VIDEO_INFO_MULTIVIEW_MODE (in_info) ==
+ GST_VIDEO_MULTIVIEW_MODE_SEPARATED)
+ views = GST_VIDEO_INFO_VIEWS (in_info);
+ else
+ views = 1;
+
+ c_info->in_n_textures =
+ _get_n_textures (GST_VIDEO_INFO_FORMAT (&convert->in_info));
+ c_info->out_n_textures =
+ _get_n_textures (GST_VIDEO_INFO_FORMAT (&convert->out_info));
+
+ {
+ gboolean tex_type_change = FALSE;
+ guint i, v;
+
+ for (v = 0; v < views; v++) {
+ for (i = 0; i < c_info->in_n_textures; i++) {
+ guint j = v * c_info->in_n_textures + i;
+ GstGLMemory *in_tex =
+ (GstGLMemory *) gst_buffer_peek_memory (convert->inbuf, j);
+ if (!gst_is_gl_memory ((GstMemory *) in_tex)) {
+ GST_ERROR_OBJECT (convert, "input must be GstGLMemory");
+ convert->priv->result = FALSE;
+ return;
+ }
+
+ if (j >= GST_VIDEO_MAX_PLANES)
+ /* our arrays aren't that big */
+ g_assert_not_reached ();
+
+ if (v > 0 && in_tex->tex_type != convert->priv->in_tex_types[i]) {
+ GST_ERROR_OBJECT (convert, "Cannot convert textures with "
+ "different types");
+ convert->priv->result = FALSE;
+ return;
+ }
+
+ if (convert->priv->in_tex_types[j] != in_tex->tex_type)
+ tex_type_change = TRUE;
+
+ convert->priv->in_tex_types[j] = in_tex->tex_type;
+ }
+ }
+
+ if (tex_type_change)
+ gst_gl_color_convert_reset_shader (convert);
+ }
+
if (!_init_convert (convert)) {
convert->priv->result = FALSE;
return;
@@ -2488,12 +2436,6 @@
return;
}
- if (GST_VIDEO_INFO_MULTIVIEW_MODE (in_info) ==
- GST_VIDEO_MULTIVIEW_MODE_SEPARATED)
- views = GST_VIDEO_INFO_VIEWS (in_info);
- else
- views = 1;
-
gst_gl_insert_debug_marker (context, "%s converting from %s to %s",
GST_OBJECT_NAME (convert),
gst_video_format_to_string (GST_VIDEO_INFO_FORMAT (in_info)),
diff --git a/gst-libs/gst/gl/gstglcontext.c b/gst-libs/gst/gl/gstglcontext.c
index 2c208ed..d222e08 100644
--- a/gst-libs/gst/gl/gstglcontext.c
+++ b/gst-libs/gst/gl/gstglcontext.c
@@ -132,10 +132,6 @@
return NULL;
}
-#if GST_GL_HAVE_GLES3
-#error "Add module loading support for GLES3"
-#endif
-
/* Context sharedness is tracked by a refcounted pointer stored in each context
* object to track complex creation/deletion scenarios. As a result,
* sharedness can only be successfully validated between two GstGLContext's
@@ -541,9 +537,9 @@
gst_gl_context_get_current_gl_api (GstGLPlatform platform, guint * major,
guint * minor)
{
- const GLubyte *(*GetString) (GLenum name);
+ const GLubyte *(GSTGLAPI * GetString) (GLenum name);
#if GST_GL_HAVE_OPENGL
- void (*GetIntegerv) (GLenum name, GLuint * n);
+ void (GSTGLAPI * GetIntegerv) (GLenum name, GLuint * n);
#endif
const gchar *version;
gint maj, min, n;
@@ -1517,7 +1513,7 @@
gst_gl_context_get_gl_version (GstGLContext * context, gint * maj, gint * min)
{
g_return_if_fail (GST_IS_GL_CONTEXT (context));
- g_return_if_fail (maj != NULL && min != NULL);
+ g_return_if_fail (!(maj == NULL && min == NULL));
if (maj)
*maj = context->priv->gl_major;
diff --git a/gst-libs/gst/gl/gstgldisplay.c b/gst-libs/gst/gl/gstgldisplay.c
index 5cae2f4..fee0316 100644
--- a/gst-libs/gst/gl/gstgldisplay.c
+++ b/gst-libs/gst/gl/gstgldisplay.c
@@ -67,7 +67,8 @@
#endif
#if GST_GL_HAVE_PLATFORM_EGL
#include <gst/gl/egl/gstgldisplay_egl.h>
-#include <gst/gl/egl/gsteglimagememory.h>
+#include <gst/gl/egl/gsteglimage.h>
+#include <gst/gl/egl/gstglmemoryegl.h>
#endif
GST_DEBUG_CATEGORY_STATIC (gst_context);
@@ -143,7 +144,7 @@
gst_gl_memory_pbo_init_once ();
#if GST_GL_HAVE_PLATFORM_EGL
- gst_egl_image_memory_init ();
+ gst_gl_memory_egl_init_once ();
#endif
}
@@ -211,8 +212,7 @@
display = GST_GL_DISPLAY (gst_gl_display_egl_new ());
#endif
if (!display) {
- /* subclass returned a NULL window */
- GST_WARNING ("Could not create display. user specified %s "
+ GST_INFO ("Could not create platform/winsys display. user specified %s "
"(platform: %s), creating dummy",
GST_STR_NULL (user_choice), GST_STR_NULL (platform_choice));
@@ -437,8 +437,11 @@
continue;
}
- if (thread == NULL)
+ if (thread == NULL) {
+ GST_DEBUG_OBJECT (display, "Returning GL context %" GST_PTR_FORMAT " for "
+ "NULL thread", context);
return context;
+ }
context_thread = gst_gl_context_get_thread (context);
if (thread != context_thread) {
@@ -451,9 +454,13 @@
if (context_thread)
g_thread_unref (context_thread);
+
+ GST_DEBUG_OBJECT (display, "Returning GL context %" GST_PTR_FORMAT " for "
+ "thread %p", context, thread);
return context;
}
+ GST_DEBUG_OBJECT (display, "No GL context for thread %p", thread);
return NULL;
}
@@ -549,11 +556,15 @@
/* adding the same context is a no-op */
if (context == collision) {
+ GST_LOG_OBJECT (display, "Attempting to add the same GL context %"
+ GST_PTR_FORMAT ". Ignoring", context);
ret = TRUE;
goto out;
}
if (_check_collision (context, collision)) {
+ GST_DEBUG_OBJECT (display, "Collision detected adding GL context "
+ "%" GST_PTR_FORMAT, context);
ret = FALSE;
goto out;
}
@@ -562,6 +573,7 @@
ref = g_new0 (GWeakRef, 1);
g_weak_ref_init (ref, context);
+ GST_DEBUG_OBJECT (display, "Adding GL context %" GST_PTR_FORMAT, context);
display->priv->contexts = g_list_prepend (display->priv->contexts, ref);
out:
diff --git a/gst-libs/gst/gl/gstglfilter.c b/gst-libs/gst/gl/gstglfilter.c
index d25bb72..7c4e254 100644
--- a/gst-libs/gst/gl/gstglfilter.c
+++ b/gst-libs/gst/gl/gstglfilter.c
@@ -28,10 +28,6 @@
#include "gstglfilter.h"
-#if GST_GL_HAVE_PLATFORM_EGL
-#include "egl/gsteglimagememory.h"
-#endif
-
#define GST_CAT_DEFAULT gst_gl_filter_debug
GST_DEBUG_CATEGORY_STATIC (GST_CAT_DEFAULT);
@@ -142,10 +138,10 @@
klass->transform_internal_caps = default_transform_internal_caps;
- gst_element_class_add_pad_template (element_class,
- gst_static_pad_template_get (&gst_gl_filter_src_pad_template));
- gst_element_class_add_pad_template (element_class,
- gst_static_pad_template_get (&gst_gl_filter_sink_pad_template));
+ gst_element_class_add_static_pad_template (element_class,
+ &gst_gl_filter_src_pad_template);
+ gst_element_class_add_static_pad_template (element_class,
+ &gst_gl_filter_sink_pad_template);
}
static void
diff --git a/gst-libs/gst/gl/gstglfilter.h b/gst-libs/gst/gl/gstglfilter.h
index a818bab..5025bde 100644
--- a/gst-libs/gst/gl/gstglfilter.h
+++ b/gst-libs/gst/gl/gstglfilter.h
@@ -67,9 +67,6 @@
GLuint fbo;
GLuint depthbuffer;
- GLuint in_tex_id;
- GLuint out_tex_id;
-
GstGLShader *default_shader;
gboolean valid_attributes;
diff --git a/gst-libs/gst/gl/gstglmemory.c b/gst-libs/gst/gl/gstglmemory.c
index 402fd4d..73c3b59 100644
--- a/gst-libs/gst/gl/gstglmemory.c
+++ b/gst-libs/gst/gl/gstglmemory.c
@@ -275,8 +275,9 @@
void
gst_gl_memory_init (GstGLMemory * mem, GstAllocator * allocator,
GstMemory * parent, GstGLContext * context, GstGLTextureTarget target,
- GstAllocationParams * params, GstVideoInfo * info, guint plane,
- GstVideoAlignment * valign, gpointer user_data, GDestroyNotify notify)
+ GstVideoGLTextureType tex_type, GstAllocationParams * params,
+ GstVideoInfo * info, guint plane, GstVideoAlignment * valign,
+ gpointer user_data, GDestroyNotify notify)
{
const gchar *target_str;
gsize size;
@@ -307,9 +308,7 @@
size = gst_gl_get_plane_data_size (info, valign, plane);
mem->tex_target = target;
- mem->tex_type =
- gst_gl_texture_type_from_format (context, GST_VIDEO_INFO_FORMAT (info),
- plane);
+ mem->tex_type = tex_type;
mem->plane = plane;
_calculate_unpack_length (mem, context);
@@ -367,6 +366,26 @@
return FALSE;
}
+ if (USING_GLES2 (context) || USING_GLES3 (context)) {
+ if (format == GL_RGBA && type == GL_UNSIGNED_BYTE) {
+ /* explicitly supported */
+ } else {
+ gint supported_format, supported_type;
+
+ gl->GetIntegerv (GL_IMPLEMENTATION_COLOR_READ_FORMAT, &supported_format);
+ gl->GetIntegerv (GL_IMPLEMENTATION_COLOR_READ_TYPE, &supported_type);
+
+ if (supported_format != format || supported_type != type) {
+ GST_CAT_ERROR (GST_CAT_GL_MEMORY, "cannot read pixels with "
+ "unsupported format and type. Supported format 0x%x type 0x%x",
+ supported_format, supported_type);
+ gl->BindFramebuffer (GL_FRAMEBUFFER, 0);
+ gl->DeleteFramebuffers (1, &fbo);
+ return FALSE;
+ }
+ }
+ }
+
gst_gl_query_start_log (GST_GL_BASE_MEMORY_CAST (gl_mem)->query,
GST_CAT_GL_MEMORY, GST_LEVEL_LOG, NULL, "%s", "glReadPixels took");
gl->ReadPixels (0, 0, gl_mem->tex_width, GL_MEM_HEIGHT (gl_mem), format,
@@ -374,7 +393,6 @@
gst_gl_query_end (GST_GL_BASE_MEMORY_CAST (gl_mem)->query);
gl->BindFramebuffer (GL_FRAMEBUFFER, 0);
-
gl->DeleteFramebuffers (1, &fbo);
return TRUE;
@@ -619,12 +637,21 @@
goto error;
}
+ if (USING_GLES2 (src->mem.context)
+ && (src->tex_type == GST_VIDEO_GL_TEXTURE_TYPE_LUMINANCE
+ || src->tex_type == GST_VIDEO_GL_TEXTURE_TYPE_LUMINANCE_ALPHA)) {
+ GST_CAT_FIXME (GST_CAT_GL_MEMORY,
+ "Cannot copy Luminance/Luminance Alpha textures in GLES");
+ goto error;
+ }
+
if (!gst_memory_map (GST_MEMORY_CAST (src), &sinfo,
GST_MAP_READ | GST_MAP_GL)) {
GST_CAT_ERROR (GST_CAT_GL_MEMORY,
"Failed to map source memory for copying");
goto error;
}
+
src_tex_id = *(guint *) sinfo.data;
GST_CAT_LOG (GST_CAT_GL_MEMORY, "copying memory %p, tex %u into "
@@ -719,22 +746,15 @@
dest = g_new0 (GstGLMemory, 1);
gst_gl_memory_init (dest, allocator, NULL, src->mem.context, src->tex_target,
- ¶ms, &src->info, src->plane, &src->valign, NULL, NULL);
+ src->tex_type, ¶ms, &src->info, src->plane, &src->valign, NULL, NULL);
- if (GST_MEMORY_FLAG_IS_SET (src, GST_GL_BASE_MEMORY_TRANSFER_NEED_UPLOAD)) {
- if (!gst_gl_base_memory_memcpy ((GstGLBaseMemory *) src,
- (GstGLBaseMemory *) dest, offset, size)) {
- GST_CAT_WARNING (GST_CAT_GL_MEMORY, "Could not copy GL Memory");
- gst_memory_unref (GST_MEMORY_CAST (dest));
- return NULL;
- }
- } else {
+ if (!GST_MEMORY_FLAG_IS_SET (src, GST_GL_BASE_MEMORY_TRANSFER_NEED_UPLOAD)) {
GstMapInfo dinfo;
if (!gst_memory_map (GST_MEMORY_CAST (dest), &dinfo,
GST_MAP_WRITE | GST_MAP_GL)) {
GST_CAT_WARNING (GST_CAT_GL_MEMORY,
- "Failed not map destination " "for writing");
+ "Failed not map destination for writing");
gst_memory_unref (GST_MEMORY_CAST (dest));
return NULL;
}
@@ -744,11 +764,18 @@
src->tex_type, src->tex_width, GL_MEM_HEIGHT (src))) {
GST_CAT_WARNING (GST_CAT_GL_MEMORY, "Could not copy GL Memory");
gst_memory_unmap (GST_MEMORY_CAST (dest), &dinfo);
- gst_memory_unref (GST_MEMORY_CAST (dest));
- return NULL;
+ goto memcpy;
}
gst_memory_unmap (GST_MEMORY_CAST (dest), &dinfo);
+ } else {
+ memcpy:
+ if (!gst_gl_base_memory_memcpy ((GstGLBaseMemory *) src,
+ (GstGLBaseMemory *) dest, offset, size)) {
+ GST_CAT_WARNING (GST_CAT_GL_MEMORY, "Could not copy GL Memory");
+ gst_memory_unref (GST_MEMORY_CAST (dest));
+ return NULL;
+ }
}
return (GstMemory *) dest;
@@ -802,14 +829,14 @@
mem = g_new0 (GstGLMemory, 1);
if (alloc_flags & GST_GL_ALLOCATION_PARAMS_ALLOC_FLAG_WRAP_GPU_HANDLE) {
- mem->tex_id = params->parent.gl_handle;
+ mem->tex_id = GPOINTER_TO_UINT (params->parent.gl_handle);
mem->texture_wrapped = TRUE;
}
gst_gl_memory_init (mem, GST_ALLOCATOR_CAST (allocator), NULL,
- params->parent.context, params->target, params->parent.alloc_params,
- params->v_info, params->plane, params->valign, params->parent.user_data,
- params->parent.notify);
+ params->parent.context, params->target, params->tex_type,
+ params->parent.alloc_params, params->v_info, params->plane,
+ params->valign, params->parent.user_data, params->parent.notify);
if (alloc_flags & GST_GL_ALLOCATION_PARAMS_ALLOC_FLAG_WRAP_GPU_HANDLE) {
GST_MINI_OBJECT_FLAG_SET (mem, GST_GL_BASE_MEMORY_TRANSFER_NEED_DOWNLOAD);
@@ -1044,6 +1071,7 @@
* @plane: the video plane @wrapped_data represents
* @valign: (allow-none): any #GstVideoAlignment applied to symem mappings of @wrapped_data
* @target: the #GstGLTextureTarget
+ * @tex_type: the #GstVideoGLTextureType
* @wrapped_data: (allow-none): the optional data pointer to wrap
* @gl_handle: the optional OpenGL handle to wrap or 0
* @user_data: (allow-none): user data to call @notify with
@@ -1061,8 +1089,8 @@
GstGLAllocationParamsFreeFunc free, GstGLContext * context,
GstAllocationParams * alloc_params, GstVideoInfo * v_info,
guint plane, GstVideoAlignment * valign, GstGLTextureTarget target,
- gpointer wrapped_data, guint gl_handle, gpointer user_data,
- GDestroyNotify notify)
+ GstVideoGLTextureType tex_type, gpointer wrapped_data, gpointer gl_handle,
+ gpointer user_data, GDestroyNotify notify)
{
guint i;
@@ -1087,6 +1115,7 @@
}
_gst_gl_video_allocation_params_set_video_alignment (params, valign);
params->target = target;
+ params->tex_type = tex_type;
params->plane = plane;
return TRUE;
@@ -1095,11 +1124,12 @@
/**
* gst_gl_video_allocation_params_new:
* @context: a #GstGLContext
- * @alloc_params: (allow-none): the #GstAllocationParams for @wrapped_data
- * @v_info: the #GstVideoInfo for @wrapped_data
- * @plane: the video plane @wrapped_data represents
- * @valign: (allow-none): any #GstVideoAlignment applied to symem mappings of @wrapped_data
- * @target: the #GstGLTextureTarget for @wrapped_data
+ * @alloc_params: (allow-none): the #GstAllocationParams for sysmem mappings of the texture
+ * @v_info: the #GstVideoInfo for the texture
+ * @plane: the video plane of @v_info to allocate
+ * @valign: (allow-none): any #GstVideoAlignment applied to symem mappings of the texture
+ * @target: the #GstGLTextureTarget for the created textures
+ * @target: the #GstVideoGLTextureType for the created textures
*
* Returns: a new #GstGLVideoAllocationParams for allocating #GstGLMemory's
*
@@ -1108,7 +1138,8 @@
GstGLVideoAllocationParams *
gst_gl_video_allocation_params_new (GstGLContext * context,
GstAllocationParams * alloc_params, GstVideoInfo * v_info, guint plane,
- GstVideoAlignment * valign, GstGLTextureTarget target)
+ GstVideoAlignment * valign, GstGLTextureTarget target,
+ GstVideoGLTextureType tex_type)
{
GstGLVideoAllocationParams *params = g_new0 (GstGLVideoAllocationParams, 1);
@@ -1120,7 +1151,7 @@
gst_gl_video_allocation_params_copy_data,
(GstGLAllocationParamsFreeFunc)
gst_gl_video_allocation_params_free_data, context, alloc_params,
- v_info, plane, valign, target, NULL, 0, NULL, NULL)) {
+ v_info, plane, valign, target, tex_type, NULL, 0, NULL, NULL)) {
g_free (params);
return NULL;
}
@@ -1136,6 +1167,7 @@
* @plane: the video plane @wrapped_data represents
* @valign: (allow-none): any #GstVideoAlignment applied to symem mappings of @wrapped_data
* @target: the #GstGLTextureTarget for @wrapped_data
+ * @tex_type: the #GstVideoGLTextureType for @wrapped_data
* @wrapped_data: the data pointer to wrap
* @user_data: (allow-none): user data to call @notify with
* @notify: (allow-none): a #GDestroyNotify
@@ -1148,7 +1180,8 @@
gst_gl_video_allocation_params_new_wrapped_data (GstGLContext * context,
GstAllocationParams * alloc_params, GstVideoInfo * v_info, guint plane,
GstVideoAlignment * valign, GstGLTextureTarget target,
- gpointer wrapped_data, gpointer user_data, GDestroyNotify notify)
+ GstVideoGLTextureType tex_type, gpointer wrapped_data, gpointer user_data,
+ GDestroyNotify notify)
{
GstGLVideoAllocationParams *params = g_new0 (GstGLVideoAllocationParams, 1);
@@ -1160,7 +1193,55 @@
gst_gl_video_allocation_params_copy_data,
(GstGLAllocationParamsFreeFunc)
gst_gl_video_allocation_params_free_data, context, alloc_params,
- v_info, plane, valign, target, wrapped_data, 0, user_data, notify)) {
+ v_info, plane, valign, target, tex_type, wrapped_data, 0, user_data,
+ notify)) {
+ g_free (params);
+ return NULL;
+ }
+
+ return params;
+}
+
+/**
+ * gst_gl_video_allocation_params_new_wrapped_gl_handle:
+ * @context: a #GstGLContext
+ * @alloc_params: (allow-none): the #GstAllocationParams for @tex_id
+ * @v_info: the #GstVideoInfo for @tex_id
+ * @plane: the video plane @tex_id represents
+ * @valign: (allow-none): any #GstVideoAlignment applied to symem mappings of @tex_id
+ * @target: the #GstGLTextureTarget for @tex_id
+ * @tex_type: the #GstVideoGLTextureType for @tex_id
+ * @gl_handle: the GL handle to wrap
+ * @user_data: (allow-none): user data to call @notify with
+ * @notify: (allow-none): a #GDestroyNotify
+ *
+ * @gl_handle is defined by the specific OpenGL handle being wrapped
+ * For #GstGLMemory and #GstGLMemoryPBO it is an OpenGL texture id.
+ * Other memory types may define it to require a different type of parameter.
+ *
+ * Returns: a new #GstGLVideoAllocationParams for wrapping @gl_handle
+ *
+ * Since: 1.8
+ */
+GstGLVideoAllocationParams *
+gst_gl_video_allocation_params_new_wrapped_gl_handle (GstGLContext * context,
+ GstAllocationParams * alloc_params, GstVideoInfo * v_info, guint plane,
+ GstVideoAlignment * valign, GstGLTextureTarget target,
+ GstVideoGLTextureType tex_type, gpointer gl_handle, gpointer user_data,
+ GDestroyNotify notify)
+{
+ GstGLVideoAllocationParams *params = g_new0 (GstGLVideoAllocationParams, 1);
+
+ if (!gst_gl_video_allocation_params_init_full (params,
+ sizeof (GstGLVideoAllocationParams),
+ GST_GL_ALLOCATION_PARAMS_ALLOC_FLAG_WRAP_GPU_HANDLE |
+ GST_GL_ALLOCATION_PARAMS_ALLOC_FLAG_VIDEO,
+ (GstGLAllocationParamsCopyFunc)
+ gst_gl_video_allocation_params_copy_data,
+ (GstGLAllocationParamsFreeFunc)
+ gst_gl_video_allocation_params_free_data, context, alloc_params,
+ v_info, plane, valign, target, tex_type, NULL, gl_handle, user_data,
+ notify)) {
g_free (params);
return NULL;
}
@@ -1176,6 +1257,7 @@
* @plane: the video plane @tex_id represents
* @valign: (allow-none): any #GstVideoAlignment applied to symem mappings of @tex_id
* @target: the #GstGLTextureTarget for @tex_id
+ * @tex_type: the #GstGLTextureType for @tex_id
* @tex_id: the GL texture to wrap
* @user_data: (allow-none): user data to call @notify with
* @notify: (allow-none): a #GDestroyNotify
@@ -1188,24 +1270,12 @@
gst_gl_video_allocation_params_new_wrapped_texture (GstGLContext * context,
GstAllocationParams * alloc_params, GstVideoInfo * v_info, guint plane,
GstVideoAlignment * valign, GstGLTextureTarget target,
- guint tex_id, gpointer user_data, GDestroyNotify notify)
+ GstVideoGLTextureType tex_type, guint tex_id, gpointer user_data,
+ GDestroyNotify notify)
{
- GstGLVideoAllocationParams *params = g_new0 (GstGLVideoAllocationParams, 1);
-
- if (!gst_gl_video_allocation_params_init_full (params,
- sizeof (GstGLVideoAllocationParams),
- GST_GL_ALLOCATION_PARAMS_ALLOC_FLAG_WRAP_GPU_HANDLE |
- GST_GL_ALLOCATION_PARAMS_ALLOC_FLAG_VIDEO,
- (GstGLAllocationParamsCopyFunc)
- gst_gl_video_allocation_params_copy_data,
- (GstGLAllocationParamsFreeFunc)
- gst_gl_video_allocation_params_free_data, context, alloc_params,
- v_info, plane, valign, target, NULL, tex_id, user_data, notify)) {
- g_free (params);
- return NULL;
- }
-
- return params;
+ return gst_gl_video_allocation_params_new_wrapped_gl_handle (context,
+ alloc_params, v_info, plane, valign, target, tex_type,
+ GUINT_TO_POINTER (tex_id), user_data, notify);
}
/**
@@ -1255,6 +1325,7 @@
_gst_gl_video_allocation_params_set_video_alignment (dest_vid,
src_vid->valign);
dest_vid->target = src_vid->target;
+ dest_vid->tex_type = src_vid->tex_type;
dest_vid->plane = src_vid->plane;
}
@@ -1263,6 +1334,7 @@
* @allocator: the @GstGLMemoryAllocator to allocate from
* @buffer: a #GstBuffer to setup
* @params: the #GstGLVideoAllocationParams to allocate with
+ * @tex_types: (allow-none): a list of #GstVideoGLTextureType's to allocate with.
*
* Returns: whether the buffer was correctly setup
*
@@ -1270,18 +1342,15 @@
*/
gboolean
gst_gl_memory_setup_buffer (GstGLMemoryAllocator * allocator,
- GstBuffer * buffer, GstGLVideoAllocationParams * params)
+ GstBuffer * buffer, GstGLVideoAllocationParams * params,
+ GstVideoGLTextureType * tex_types, gpointer * wrapped_data,
+ gsize n_wrapped_pointers)
{
GstGLBaseMemoryAllocator *base_allocator;
guint n_mem, i, v, views;
guint alloc_flags = params->parent.alloc_flags;
g_return_val_if_fail (params != NULL, FALSE);
- g_return_val_if_fail ((alloc_flags &
- GST_GL_ALLOCATION_PARAMS_ALLOC_FLAG_WRAP_SYSMEM)
- == 0, FALSE);
- g_return_val_if_fail ((params->parent.alloc_flags &
- GST_GL_ALLOCATION_PARAMS_ALLOC_FLAG_WRAP_GPU_HANDLE) == 0, FALSE);
g_return_val_if_fail (alloc_flags & GST_GL_ALLOCATION_PARAMS_ALLOC_FLAG_VIDEO,
FALSE);
@@ -1294,11 +1363,30 @@
else
views = 1;
+ g_return_val_if_fail (!wrapped_data
+ || views * n_mem != n_wrapped_pointers, FALSE);
+
for (v = 0; v < views; v++) {
for (i = 0; i < n_mem; i++) {
GstGLMemory *gl_mem;
+ if (tex_types) {
+ params->tex_type = tex_types[i];
+ } else {
+ params->tex_type =
+ gst_gl_texture_type_from_format (params->parent.context,
+ GST_VIDEO_INFO_FORMAT (params->v_info), i);
+ }
+
params->plane = i;
+ if (alloc_flags & GST_GL_ALLOCATION_PARAMS_ALLOC_FLAG_WRAP_SYSMEM) {
+ g_return_val_if_fail (wrapped_data != NULL, FALSE);
+ params->parent.wrapped_data = wrapped_data[i];
+ } else if (alloc_flags &
+ GST_GL_ALLOCATION_PARAMS_ALLOC_FLAG_WRAP_GPU_HANDLE) {
+ g_return_val_if_fail (wrapped_data != NULL, FALSE);
+ params->parent.gl_handle = wrapped_data[i];
+ }
if (!(gl_mem = (GstGLMemory *) gst_gl_base_memory_alloc (base_allocator,
(GstGLAllocationParams *) params)))
diff --git a/gst-libs/gst/gl/gstglmemory.h b/gst-libs/gst/gl/gstglmemory.h
index b032a5c..f36f64b 100644
--- a/gst-libs/gst/gl/gstglmemory.h
+++ b/gst-libs/gst/gl/gstglmemory.h
@@ -92,6 +92,7 @@
guint plane;
GstVideoAlignment *valign;
GstGLTextureTarget target;
+ GstVideoGLTextureType tex_type;
};
gboolean gst_gl_video_allocation_params_init_full (GstGLVideoAllocationParams * params,
@@ -105,8 +106,9 @@
guint plane,
GstVideoAlignment * valign,
GstGLTextureTarget target,
+ GstVideoGLTextureType tex_type,
gpointer wrapped_data,
- guint gl_handle,
+ gpointer gl_handle,
gpointer user_data,
GDestroyNotify notify);
GstGLVideoAllocationParams * gst_gl_video_allocation_params_new (GstGLContext * context,
@@ -114,13 +116,15 @@
GstVideoInfo * v_info,
guint plane,
GstVideoAlignment * valign,
- GstGLTextureTarget target);
+ GstGLTextureTarget target,
+ GstVideoGLTextureType tex_type);
GstGLVideoAllocationParams * gst_gl_video_allocation_params_new_wrapped_data (GstGLContext * context,
GstAllocationParams * alloc_params,
GstVideoInfo * v_info,
guint plane,
GstVideoAlignment * valign,
GstGLTextureTarget target,
+ GstVideoGLTextureType tex_type,
gpointer wrapped_data,
gpointer user_data,
GDestroyNotify notify);
@@ -131,10 +135,22 @@
guint plane,
GstVideoAlignment * valign,
GstGLTextureTarget target,
+ GstVideoGLTextureType tex_type,
guint tex_id,
gpointer user_data,
GDestroyNotify notify);
+GstGLVideoAllocationParams * gst_gl_video_allocation_params_new_wrapped_gl_handle (GstGLContext * context,
+ GstAllocationParams * alloc_params,
+ GstVideoInfo * v_info,
+ guint plane,
+ GstVideoAlignment * valign,
+ GstGLTextureTarget target,
+ GstVideoGLTextureType tex_type,
+ gpointer gl_handle,
+ gpointer user_data,
+ GDestroyNotify notify);
+
/* subclass usage */
void gst_gl_video_allocation_params_free_data (GstGLVideoAllocationParams * params);
/* subclass usage */
@@ -182,6 +198,7 @@
GstMemory * parent,
GstGLContext * context,
GstGLTextureTarget target,
+ GstVideoGLTextureType tex_type,
GstAllocationParams *params,
GstVideoInfo * info,
guint plane,
@@ -216,8 +233,10 @@
gboolean gst_gl_memory_setup_buffer (GstGLMemoryAllocator * allocator,
GstBuffer * buffer,
- GstGLVideoAllocationParams * params);
-
+ GstGLVideoAllocationParams * params,
+ GstVideoGLTextureType *tex_types,
+ gpointer *wrapped_data,
+ gsize n_wrapped_pointers);
GstGLMemoryAllocator * gst_gl_memory_allocator_get_default (GstGLContext *context);
diff --git a/gst-libs/gst/gl/gstglmemorypbo.c b/gst-libs/gst/gl/gstglmemorypbo.c
index d8fa710..e749488 100644
--- a/gst-libs/gst/gl/gstglmemorypbo.c
+++ b/gst-libs/gst/gl/gstglmemorypbo.c
@@ -217,34 +217,6 @@
return TRUE;
}
-static void
-_gl_mem_init (GstGLMemoryPBO * mem, GstAllocator * allocator,
- GstMemory * parent, GstGLContext * context, GstGLTextureTarget target,
- GstAllocationParams * params, GstVideoInfo * info,
- guint plane, GstVideoAlignment * valign, gpointer user_data,
- GDestroyNotify notify)
-{
- gst_gl_memory_init ((GstGLMemory *) mem, allocator, parent,
- context, target, params, info, plane, valign, user_data, notify);
-}
-
-static GstGLMemoryPBO *
-_gl_mem_new (GstAllocator * allocator, GstMemory * parent,
- GstGLContext * context, GstGLTextureTarget target,
- GstAllocationParams * params, GstVideoInfo * info,
- guint plane, GstVideoAlignment * valign, gpointer user_data,
- GDestroyNotify notify)
-{
- GstGLMemoryPBO *mem;
- mem = g_new0 (GstGLMemoryPBO, 1);
- mem->mem.texture_wrapped = FALSE;
-
- _gl_mem_init (mem, allocator, parent, context, target, params, info, plane,
- valign, user_data, notify);
-
- return mem;
-}
-
static gboolean
_read_pixels_to_pbo (GstGLMemoryPBO * gl_mem)
{
@@ -601,18 +573,12 @@
size);
}
- dest = (GstMemory *) _gl_mem_new (allocator, NULL, src->mem.mem.context,
- src->mem.tex_target, ¶ms, &src->mem.info, src->mem.plane,
- &src->mem.valign, NULL, NULL);
+ dest = (GstMemory *) g_new0 (GstGLMemoryPBO, 1);
+ gst_gl_memory_init (GST_GL_MEMORY_CAST (dest), allocator, NULL,
+ src->mem.mem.context, src->mem.tex_target, src->mem.tex_type, ¶ms,
+ &src->mem.info, src->mem.plane, &src->mem.valign, NULL, NULL);
- if (GST_MEMORY_FLAG_IS_SET (src, GST_GL_BASE_MEMORY_TRANSFER_NEED_UPLOAD)) {
- if (!gst_gl_base_memory_memcpy ((GstGLBaseMemory *) src,
- (GstGLBaseMemory *) dest, offset, size)) {
- GST_CAT_WARNING (GST_CAT_GL_MEMORY, "Could not copy GL Memory");
- gst_memory_unref (GST_MEMORY_CAST (dest));
- return NULL;
- }
- } else {
+ if (!GST_MEMORY_FLAG_IS_SET (src, GST_GL_BASE_MEMORY_TRANSFER_NEED_UPLOAD)) {
GstMapInfo dinfo;
if (!gst_memory_map (GST_MEMORY_CAST (dest), &dinfo,
@@ -628,11 +594,18 @@
src->mem.tex_type, src->mem.tex_width, GL_MEM_HEIGHT (src))) {
GST_CAT_WARNING (GST_CAT_GL_MEMORY, "Could not copy GL Memory");
gst_memory_unmap (GST_MEMORY_CAST (dest), &dinfo);
- gst_memory_unref (GST_MEMORY_CAST (dest));
- return NULL;
+ goto memcpy;
}
gst_memory_unmap (GST_MEMORY_CAST (dest), &dinfo);
+ } else {
+ memcpy:
+ if (!gst_gl_base_memory_memcpy ((GstGLBaseMemory *) src,
+ (GstGLBaseMemory *) dest, offset, size)) {
+ GST_CAT_WARNING (GST_CAT_GL_MEMORY, "Could not copy GL Memory");
+ gst_memory_unref (GST_MEMORY_CAST (dest));
+ return NULL;
+ }
}
return dest;
@@ -674,14 +647,14 @@
mem = g_new0 (GstGLMemoryPBO, 1);
if (alloc_flags & GST_GL_ALLOCATION_PARAMS_ALLOC_FLAG_WRAP_GPU_HANDLE) {
- mem->mem.tex_id = params->parent.gl_handle;
+ mem->mem.tex_id = GPOINTER_TO_UINT (params->parent.gl_handle);
mem->mem.texture_wrapped = TRUE;
}
- _gl_mem_init (mem, GST_ALLOCATOR_CAST (allocator), NULL,
- params->parent.context, params->target, params->parent.alloc_params,
- params->v_info, params->plane, params->valign, params->parent.user_data,
- params->parent.notify);
+ gst_gl_memory_init (GST_GL_MEMORY_CAST (mem), GST_ALLOCATOR_CAST (allocator),
+ NULL, params->parent.context, params->target, params->tex_type,
+ params->parent.alloc_params, params->v_info, params->plane,
+ params->valign, params->parent.user_data, params->parent.notify);
if (alloc_flags & GST_GL_ALLOCATION_PARAMS_ALLOC_FLAG_WRAP_GPU_HANDLE) {
GST_MINI_OBJECT_FLAG_SET (mem, GST_GL_BASE_MEMORY_TRANSFER_NEED_DOWNLOAD);
@@ -864,6 +837,8 @@
GST_DEBUG_CATEGORY_INIT (GST_CAT_GL_MEMORY, "glmemory", 0, "OpenGL Memory");
_gl_allocator = g_object_new (GST_TYPE_GL_MEMORY_PBO_ALLOCATOR, NULL);
+ /* The allocator is never unreffed */
+ GST_OBJECT_FLAG_SET (_gl_allocator, GST_OBJECT_FLAG_MAY_BE_LEAKED);
gst_allocator_register (GST_GL_MEMORY_PBO_ALLOCATOR_NAME,
gst_object_ref (_gl_allocator));
diff --git a/gst-libs/gst/gl/gstgloverlaycompositor.c b/gst-libs/gst/gl/gstgloverlaycompositor.c
index f7d0639..f6548a0 100644
--- a/gst-libs/gst/gl/gstgloverlaycompositor.c
+++ b/gst-libs/gst/gl/gstgloverlaycompositor.c
@@ -356,7 +356,8 @@
params = gst_gl_video_allocation_params_new_wrapped_data (overlay->context,
NULL, &comp_frame->info, 0, NULL, GST_GL_TEXTURE_TARGET_2D,
- comp_frame->data[0], comp_frame, _video_frame_unmap_and_free);
+ GST_VIDEO_GL_TEXTURE_TYPE_RGBA, comp_frame->data[0], comp_frame,
+ _video_frame_unmap_and_free);
comp_gl_memory =
(GstGLMemory *) gst_gl_base_memory_alloc (mem_allocator,
diff --git a/gst-libs/gst/gl/gstglquery.c b/gst-libs/gst/gl/gstglquery.c
index 45e6336..c59c19f 100644
--- a/gst-libs/gst/gl/gstglquery.c
+++ b/gst-libs/gst/gl/gstglquery.c
@@ -254,7 +254,8 @@
gl = query->context->gl_vtable;
if (gl->GetQueryObjectui64v) {
- gl->GetQueryObjectui64v (query->query_id, GL_QUERY_RESULT, &ret);
+ gl->GetQueryObjectui64v (query->query_id, GL_QUERY_RESULT,
+ (GLuint64 *) & ret);
} else {
guint tmp;
gl->GetQueryObjectuiv (query->query_id, GL_QUERY_RESULT, &tmp);
diff --git a/gst-libs/gst/gl/gstglshader.c b/gst-libs/gst/gl/gstglshader.c
index 9d96784..9f09236 100644
--- a/gst-libs/gst/gl/gstglshader.c
+++ b/gst-libs/gst/gl/gstglshader.c
@@ -1306,3 +1306,23 @@
gl->BindAttribLocation (priv->program_handle, index, name);
}
+
+void
+gst_gl_shader_bind_frag_data_location (GstGLShader * shader,
+ guint index, const gchar * name)
+{
+ GstGLShaderPrivate *priv;
+ GstGLFuncs *gl;
+
+ g_return_if_fail (shader != NULL);
+ if (!_ensure_program (shader))
+ g_return_if_fail (shader->priv->program_handle);
+ priv = shader->priv;
+ gl = shader->context->gl_vtable;
+ g_return_if_fail (gl->BindFragDataLocation);
+
+ GST_TRACE_OBJECT (shader, "binding program %i frag data \'%s\' location %i",
+ (int) priv->program_handle, name, index);
+
+ gl->BindFragDataLocation (priv->program_handle, index, name);
+}
diff --git a/gst-libs/gst/gl/gstglshader.h b/gst-libs/gst/gl/gstglshader.h
index 21410e2..2200b89 100644
--- a/gst-libs/gst/gl/gstglshader.h
+++ b/gst-libs/gst/gl/gstglshader.h
@@ -104,6 +104,7 @@
gint gst_gl_shader_get_attribute_location (GstGLShader *shader, const gchar *name);
void gst_gl_shader_bind_attribute_location (GstGLShader * shader, guint index, const gchar * name);
+void gst_gl_shader_bind_frag_data_location (GstGLShader * shader, guint index, const gchar * name);
G_END_DECLS
diff --git a/gst-libs/gst/gl/gstglshaderstrings.c b/gst-libs/gst/gl/gstglshaderstrings.c
index 729be6f..e6bf5f3 100644
--- a/gst-libs/gst/gl/gstglshaderstrings.c
+++ b/gst-libs/gst/gl/gstglshaderstrings.c
@@ -46,6 +46,17 @@
" v_texcoord = (u_transformation * vec4(a_texcoord, 0, 1)).xy;\n"
"}\n";
+const gchar *gst_gl_shader_string_vertex_mat4_vertex_transform =
+ "uniform mat4 u_transformation;\n"
+ "attribute vec4 a_position;\n"
+ "attribute vec2 a_texcoord;\n"
+ "varying vec2 v_texcoord;\n"
+ "void main()\n"
+ "{\n"
+ " gl_Position = u_transformation * a_position;\n"
+ " v_texcoord = a_texcoord;\n"
+ "}\n";
+
const gchar *gst_gl_shader_string_fragment_default =
"#ifdef GL_ES\n"
"precision mediump float;\n"
diff --git a/gst-libs/gst/gl/gstglshaderstrings.h b/gst-libs/gst/gl/gstglshaderstrings.h
index 49ea8de..89d88b0 100644
--- a/gst-libs/gst/gl/gstglshaderstrings.h
+++ b/gst-libs/gst/gl/gstglshaderstrings.h
@@ -29,6 +29,7 @@
extern const gchar *gst_gl_shader_string_fragment_default;
extern const gchar *gst_gl_shader_string_vertex_mat4_texture_transform;
+extern const gchar *gst_gl_shader_string_vertex_mat4_vertex_transform;
extern const gchar *gst_gl_shader_string_fragment_external_oes_default;
G_END_DECLS
diff --git a/gst-libs/gst/gl/gstglsl.c b/gst-libs/gst/gl/gstglsl.c
index 5074552..e3fe9c5 100644
--- a/gst-libs/gst/gl/gstglsl.c
+++ b/gst-libs/gst/gl/gstglsl.c
@@ -33,6 +33,21 @@
* @see_also: #GstGLSLStage, #GstGLShader
*/
+#define GST_CAT_DEFAULT gst_glsl_debug
+GST_DEBUG_CATEGORY_STATIC (GST_CAT_DEFAULT);
+
+static void
+_init_debug (void)
+{
+ static volatile gsize _init = 0;
+
+ if (g_once_init_enter (&_init)) {
+ GST_DEBUG_CATEGORY_INIT (GST_CAT_DEFAULT, "glsl", 0,
+ "OpenGL Shading Language");
+ g_once_init_leave (&_init, 1);
+ }
+}
+
GQuark
gst_glsl_error_quark (void)
{
@@ -255,6 +270,8 @@
GstGLSLProfile profile = GST_GLSL_PROFILE_NONE;
gint i;
+ _init_debug ();
+
if (!string)
goto error;
@@ -265,6 +282,7 @@
if (str[0] == '#') {
if (!(version_s =
(gchar *) _check_valid_version_preprocessor_string (version_s))) {
+ GST_WARNING ("Invalid preprocesser directive detected: %s", version_s);
g_free (str);
goto error;
}
@@ -277,6 +295,8 @@
i++;
/* wrong version length */
if (i != 3) {
+ GST_WARNING ("version number has the wrong number of digits: %s",
+ version_s);
g_free (str);
goto error;
}
@@ -293,13 +313,24 @@
g_free (str);
/* check whether the parsed data is valid */
- if (!version)
+ if (!version) {
+ GST_WARNING ("Could not map the version number to a valid GLSL version:");
goto error;
- if (!_is_valid_version_profile (version, profile))
+ }
+ if (!_is_valid_version_profile (version, profile)) {
+ GST_WARNING ("Invalid version/profile combination specified: %s %s",
+ gst_glsl_version_to_string (version),
+ gst_glsl_profile_to_string (profile));
goto error;
+ }
/* got a profile when none was expected */
- if (version <= GST_GLSL_VERSION_150 && profile != GST_GLSL_PROFILE_NONE)
+ if (version <= GST_GLSL_VERSION_150 && profile != GST_GLSL_PROFILE_NONE) {
+ GST_WARNING
+ ("Found a profile (%s) with a version (%s) that does not support "
+ "profiles", gst_glsl_version_to_string (version),
+ gst_glsl_profile_to_string (profile));
goto error;
+ }
_fixup_version_profile (&version, &profile);
@@ -329,6 +360,8 @@
gboolean newline = TRUE;
gint i = 0;
+ _init_debug ();
+
/* search for #version while allowing for preceeding comments/whitespace as
* permitted by the GLSL specification */
while (str && str[i] != '\0' && i < 1024) {
@@ -366,8 +399,10 @@
}
if (str[i] == '#') {
- if (newline && _check_valid_version_preprocessor_string (&str[i]))
+ if (newline && _check_valid_version_preprocessor_string (&str[i])) {
+ GST_DEBUG ("found #version declaration at index %i", i);
return &str[i];
+ }
break;
}
@@ -376,6 +411,8 @@
i++;
}
+ GST_DEBUG ("no #version declaration found in the first 1K");
+
return NULL;
}
@@ -410,6 +447,8 @@
{
g_return_val_if_fail (gl_api != GST_GL_API_NONE, 0);
+ _init_debug ();
+
if (gl_api & GST_GL_API_GLES2) {
if (maj == 2 && min == 0)
return 100;
@@ -417,6 +456,7 @@
if (maj == 3 && min >= 0 && min <= 2)
return maj * 100 + min * 10;
+ GST_WARNING ("unknown GLES version");
return 0;
}
@@ -436,9 +476,11 @@
if (maj == 2 && min == 0)
return 110;
+ GST_WARNING ("unknown GL version");
return 0;
}
+ GST_WARNING ("unknown GL API");
return 0;
}
@@ -551,3 +593,269 @@
vtable->initialized = TRUE;
return TRUE;
}
+
+static gchar *
+_mangle_external_image_extension (const gchar * str, GstGLContext * context,
+ GstGLTextureTarget from, GstGLTextureTarget to, GstGLSLVersion version,
+ GstGLSLProfile profile)
+{
+ GST_DEBUG ("is oes? %d, profile == ES? %d, version >= 300? %d, "
+ "have essl3? %d", to == GST_GL_TEXTURE_TARGET_EXTERNAL_OES,
+ profile == GST_GLSL_PROFILE_ES, version >= GST_GLSL_VERSION_300,
+ gst_gl_context_check_feature (context,
+ "GL_OES_EGL_image_external_essl3"));
+
+ /* replace GL_OES_EGL_image_external with GL_OES_EGL_image_external_essl3 where supported */
+ if (to == GST_GL_TEXTURE_TARGET_EXTERNAL_OES && profile == GST_GLSL_PROFILE_ES
+ && version >= GST_GLSL_VERSION_300) {
+ if (gst_gl_context_check_feature (context,
+ "GL_OES_EGL_image_external_essl3")) {
+ GRegex *regex = g_regex_new (
+ /* '#extension ' with optional spacing */
+ "(#[ \\t]*extension[ \\t]+)"
+ /* what we're looking to replace */
+ "GL_OES_EGL_image_external"
+ /* ':' with optional spacing */
+ "([ \\t]*:[ \\t]*"
+ /* some word like require, disable, etc followed by spacing and a newline */
+ "\\S+[ \\t]*\\R)",
+ 0, 0, NULL);
+ gchar *tmp = g_regex_replace (regex, str, -1, 0,
+ "\\1GL_OES_EGL_image_external_essl3\\2", 0, NULL);
+ g_regex_unref (regex);
+ return tmp;
+ } else {
+ GST_FIXME ("Undefined situation detected. GLES3 supported but "
+ "GL_OES_EGL_image_external_essl3 not supported. Falling back to the "
+ "older GL_OES_EGL_image_external extension");
+ return g_strdup (str);
+ }
+ } else {
+ return g_strdup (str);
+ }
+}
+
+static gchar *
+_mangle_texture_access (const gchar * str, GstGLContext * context,
+ GstGLTextureTarget from, GstGLTextureTarget to, GstGLSLVersion version,
+ GstGLSLProfile profile)
+{
+ const gchar *from_str = NULL, *to_str = NULL;
+ gchar *ret, *tmp;
+ gchar *regex_find;
+ GRegex *regex;
+
+ if (from == GST_GL_TEXTURE_TARGET_2D)
+ from_str = "texture2D";
+ if (from == GST_GL_TEXTURE_TARGET_RECTANGLE)
+ from_str = "texture2DRect";
+ if (from == GST_GL_TEXTURE_TARGET_EXTERNAL_OES)
+ from_str = "texture2D";
+
+ /* GL3 || gles3 but not when external-oes unless the image_external_essl3 extension is supported */
+ if (profile == GST_GLSL_PROFILE_CORE || (profile == GST_GLSL_PROFILE_ES
+ && version >= GST_GLSL_VERSION_300
+ && (to != GST_GL_TEXTURE_TARGET_EXTERNAL_OES
+ || gst_gl_context_check_feature (context,
+ "GL_OES_EGL_image_external_essl3")))) {
+ to_str = "texture";
+ } else {
+ if (to == GST_GL_TEXTURE_TARGET_2D)
+ to_str = "texture2D";
+ if (to == GST_GL_TEXTURE_TARGET_RECTANGLE)
+ to_str = "texture2DRect";
+ if (to == GST_GL_TEXTURE_TARGET_EXTERNAL_OES)
+ to_str = "texture2D";
+ }
+
+ /* followed by any amount of whitespace then a bracket */
+ regex_find = g_strdup_printf ("%s(?=\\s*\\()", from_str);
+ regex = g_regex_new (regex_find, 0, 0, NULL);
+ tmp = g_regex_replace_literal (regex, str, -1, 0, to_str, 0, NULL);
+ g_free (regex_find);
+ g_regex_unref (regex);
+
+ if (tmp) {
+ ret = tmp;
+ } else {
+ GST_FIXME ("Couldn't mangle texture access successfully from %s to %s",
+ from_str, to_str);
+ ret = g_strdup (str);
+ }
+
+ return ret;
+}
+
+static gchar *
+_mangle_sampler_type (const gchar * str, GstGLTextureTarget from,
+ GstGLTextureTarget to)
+{
+ const gchar *from_str = NULL, *to_str = NULL;
+ gchar *ret, *tmp;
+ gchar *regex_find;
+ GRegex *regex;
+
+ if (from == GST_GL_TEXTURE_TARGET_2D)
+ from_str = "sampler2D";
+ if (from == GST_GL_TEXTURE_TARGET_RECTANGLE)
+ from_str = "sampler2DRect";
+ if (from == GST_GL_TEXTURE_TARGET_EXTERNAL_OES)
+ from_str = "samplerExternalOES";
+
+ if (to == GST_GL_TEXTURE_TARGET_2D)
+ to_str = "sampler2D";
+ if (to == GST_GL_TEXTURE_TARGET_RECTANGLE)
+ to_str = "sampler2DRect";
+ if (to == GST_GL_TEXTURE_TARGET_EXTERNAL_OES)
+ to_str = "samplerExternalOES";
+
+ /* followed by some whitespace */
+ regex_find = g_strdup_printf ("%s(?=\\s)", from_str);
+ regex = g_regex_new (regex_find, 0, 0, NULL);
+ tmp = g_regex_replace_literal (regex, str, -1, 0, to_str, 0, NULL);
+ g_free (regex_find);
+ g_regex_unref (regex);
+
+ if (tmp) {
+ ret = tmp;
+ } else {
+ GST_FIXME ("Couldn't mangle sampler type successfully from %s to %s",
+ from_str, to_str);
+ ret = g_strdup (str);
+ }
+
+ return ret;
+}
+
+static gchar *
+_mangle_varying_attribute (const gchar * str, guint shader_type,
+ GstGLSLVersion version, GstGLSLProfile profile)
+{
+ if (shader_type == GL_VERTEX_SHADER) {
+ if (profile == GST_GLSL_PROFILE_CORE || (profile == GST_GLSL_PROFILE_ES
+ && version >= GST_GLSL_VERSION_300)) {
+ gchar *tmp, *tmp2;
+ GRegex *regex;
+
+ /* followed by some whitespace */
+ regex = g_regex_new ("varying(?=\\s)", 0, 0, NULL);
+ tmp = g_regex_replace_literal (regex, str, -1, 0, "out", 0, NULL);
+ g_regex_unref (regex);
+
+ /* followed by some whitespace */
+ regex = g_regex_new ("attribute(?=\\s)", 0, 0, NULL);
+ tmp2 = g_regex_replace_literal (regex, tmp, -1, 0, "in", 0, NULL);
+ g_regex_unref (regex);
+
+ g_free (tmp);
+ return tmp2;
+ }
+ } else if (shader_type == GL_FRAGMENT_SHADER) {
+ if (profile == GST_GLSL_PROFILE_CORE || (profile == GST_GLSL_PROFILE_ES
+ && version >= GST_GLSL_VERSION_300)) {
+ gchar *tmp;
+ GRegex *regex;
+
+ /* followed by some whitespace */
+ regex = g_regex_new ("varying(?=\\s)", 0, 0, NULL);
+ tmp = g_regex_replace_literal (regex, str, -1, 0, "in", 0, NULL);
+ g_regex_unref (regex);
+
+ return tmp;
+ }
+ }
+ return g_strdup (str);
+}
+
+static gchar *
+_mangle_frag_color_data (const gchar * str)
+{
+ GRegex *regex;
+ gchar *ret, *tmp;
+
+ regex = g_regex_new ("gl_FragColor", 0, 0, NULL);
+ ret = g_regex_replace_literal (regex, str, -1, 0, "fragColor", 0, NULL);
+ g_regex_unref (regex);
+
+ tmp = ret;
+ /* search and replace 'gl_FragData[NUM]' into fragColor_NUM */
+ regex = g_regex_new ("gl_FragData\\[(\\d+)\\]", 0, 0, NULL);
+ ret = g_regex_replace (regex, tmp, -1, 0, "fragColor_\\1", 0, NULL);
+ g_regex_unref (regex);
+ g_free (tmp);
+
+ return ret;
+}
+
+static void
+_mangle_version_profile_from_gl_api (GstGLContext * context,
+ GstGLTextureTarget from, GstGLTextureTarget to, GstGLSLVersion * version,
+ GstGLSLProfile * profile)
+{
+ GstGLAPI gl_api;
+ gint gl_major, gl_minor;
+
+ gl_api = gst_gl_context_get_gl_api (context);
+ gst_gl_context_get_gl_version (context, &gl_major, &gl_minor);
+
+ *version = GST_GLSL_VERSION_NONE;
+ *profile = GST_GLSL_PROFILE_NONE;
+
+ if (gl_api & GST_GL_API_OPENGL3) {
+ if (gl_major > 3 || gl_minor >= 3) {
+ *version = GST_GLSL_VERSION_330;
+ *profile = GST_GLSL_PROFILE_CORE;
+ } else {
+ *version = GST_GLSL_VERSION_150;
+ *profile = GST_GLSL_PROFILE_NONE;
+ }
+ } else if (gl_api & GST_GL_API_GLES2) {
+ /* We don't know which texture function to use if we have GLES3 and
+ * don't have the essl3 extension */
+ if (gl_major >= 3 && (to != GST_GL_TEXTURE_TARGET_EXTERNAL_OES
+ || gst_gl_context_check_feature (context,
+ "GL_OES_EGL_image_external_essl3"))) {
+ *version = GST_GLSL_VERSION_300;
+ *profile = GST_GLSL_PROFILE_ES;
+ } else if (gl_major >= 2) {
+ *version = GST_GLSL_VERSION_100;
+ *profile = GST_GLSL_PROFILE_ES;
+ }
+ } else if (gl_api & GST_GL_API_OPENGL) {
+ *version = GST_GLSL_VERSION_110;
+ *profile = GST_GLSL_PROFILE_COMPATIBILITY;
+ }
+}
+
+gchar *
+_gst_glsl_mangle_shader (const gchar * str, guint shader_type,
+ GstGLTextureTarget from, GstGLTextureTarget to, GstGLContext * context,
+ GstGLSLVersion * version, GstGLSLProfile * profile)
+{
+ gchar *tmp, *tmp2;
+
+ _init_debug ();
+
+ g_return_val_if_fail (GST_IS_GL_CONTEXT (context), NULL);
+
+ _mangle_version_profile_from_gl_api (context, from, to, version, profile);
+ tmp2 =
+ _mangle_external_image_extension (str, context, from, to, *version,
+ *profile);
+ tmp = _mangle_texture_access (tmp2, context, from, to, *version, *profile);
+ g_free (tmp2);
+ tmp2 = _mangle_sampler_type (tmp, from, to);
+ g_free (tmp);
+ tmp = _mangle_varying_attribute (tmp2, shader_type, *version, *profile);
+ g_free (tmp2);
+ if (shader_type == GL_FRAGMENT_SHADER) {
+ if ((*profile == GST_GLSL_PROFILE_ES && *version >= GST_GLSL_VERSION_300)
+ || (*profile == GST_GLSL_PROFILE_CORE
+ && *version >= GST_GLSL_VERSION_150)) {
+ tmp2 = _mangle_frag_color_data (tmp);
+ g_free (tmp);
+ tmp = tmp2;
+ }
+ }
+ return tmp;
+}
diff --git a/gst-libs/gst/gl/gstglsl_private.h b/gst-libs/gst/gl/gstglsl_private.h
index c1be677..755170d 100644
--- a/gst-libs/gst/gl/gstglsl_private.h
+++ b/gst-libs/gst/gl/gstglsl_private.h
@@ -58,6 +58,10 @@
G_GNUC_INTERNAL gboolean _gst_glsl_funcs_fill (GstGLSLFuncs * vtable, GstGLContext * context);
G_GNUC_INTERNAL const gchar * _gst_glsl_shader_string_find_version (const gchar * str);
+G_GNUC_INTERNAL gchar *
+_gst_glsl_mangle_shader (const gchar * str, guint shader_type, GstGLTextureTarget from,
+ GstGLTextureTarget to, GstGLContext * context, GstGLSLVersion * version, GstGLSLProfile * profile);
+
G_END_DECLS
#endif /* __GST_GLSL_PRIVATE_H__ */
diff --git a/gst-libs/gst/gl/gstglupload.c b/gst-libs/gst/gl/gstglupload.c
index 32e6150..e94195b 100644
--- a/gst-libs/gst/gl/gstglupload.c
+++ b/gst-libs/gst/gl/gstglupload.c
@@ -28,7 +28,7 @@
#include "gstglupload.h"
#if GST_GL_HAVE_PLATFORM_EGL
-#include "egl/gsteglimagememory.h"
+#include "egl/gstglmemoryegl.h"
#endif
#if GST_GL_HAVE_DMABUF
@@ -319,6 +319,17 @@
upload->context));
gst_query_add_allocation_param (query, allocator, ¶ms);
gst_object_unref (allocator);
+
+#if GST_GL_HAVE_PLATFORM_EGL
+ if (upload->upload->context
+ && gst_gl_context_get_gl_platform (upload->upload->context) ==
+ GST_GL_PLATFORM_EGL) {
+ allocator =
+ GST_ALLOCATOR (gst_allocator_find (GST_GL_MEMORY_EGL_ALLOCATOR_NAME));
+ gst_query_add_allocation_param (query, allocator, ¶ms);
+ gst_object_unref (allocator);
+ }
+#endif
}
n_pools = gst_query_get_n_allocation_pools (query);
@@ -433,231 +444,12 @@
&_gl_memory_upload_free
};
-#if GST_GL_HAVE_PLATFORM_EGL
-struct EGLImageUpload
-{
- GstGLUpload *upload;
- GstBuffer *buffer;
- GstBuffer **outbuf;
- GstGLVideoAllocationParams *params;
-};
-
-static gpointer
-_egl_image_upload_new (GstGLUpload * upload)
-{
- struct EGLImageUpload *image = g_new0 (struct EGLImageUpload, 1);
-
- image->upload = upload;
-
- return image;
-}
-
-static GstCaps *
-_egl_image_upload_transform_caps (GstGLContext * context,
- GstPadDirection direction, GstCaps * caps)
-{
- GstCapsFeatures *passthrough =
- gst_caps_features_from_string
- (GST_CAPS_FEATURE_META_GST_VIDEO_OVERLAY_COMPOSITION);
- GstCaps *ret;
-
- if (direction == GST_PAD_SINK) {
- GstCaps *tmp;
-
- ret =
- _set_caps_features_with_passthrough (caps,
- GST_CAPS_FEATURE_MEMORY_GL_MEMORY, passthrough);
-
- tmp = _caps_intersect_texture_target (ret, 1 << GST_GL_TEXTURE_TARGET_2D);
- gst_caps_unref (ret);
- ret = tmp;
- } else {
- gint i, n;
-
- ret =
- _set_caps_features_with_passthrough (caps,
- GST_CAPS_FEATURE_MEMORY_EGL_IMAGE, passthrough);
- gst_caps_set_simple (ret, "format", G_TYPE_STRING, "RGBA", NULL);
-
- n = gst_caps_get_size (ret);
- for (i = 0; i < n; i++) {
- GstStructure *s = gst_caps_get_structure (ret, i);
-
- gst_structure_remove_fields (s, "texture-target", NULL);
- }
- }
-
- gst_caps_features_free (passthrough);
-
- return ret;
-}
-
-static gboolean
-_egl_image_upload_accept (gpointer impl, GstBuffer * buffer, GstCaps * in_caps,
- GstCaps * out_caps)
-{
- struct EGLImageUpload *image = impl;
- GstCapsFeatures *features;
- gboolean ret = TRUE;
- int i;
-
- features = gst_caps_get_features (in_caps, 0);
- if (!gst_caps_features_contains (features, GST_CAPS_FEATURE_MEMORY_EGL_IMAGE))
- ret = FALSE;
-
- features = gst_caps_get_features (out_caps, 0);
- if (!gst_caps_features_contains (features, GST_CAPS_FEATURE_MEMORY_GL_MEMORY))
- ret = FALSE;
-
- if (!ret)
- return FALSE;
-
- if (image->params)
- gst_gl_allocation_params_free ((GstGLAllocationParams *) image->params);
- if (!(image->params =
- gst_gl_video_allocation_params_new (image->upload->context, NULL,
- &image->upload->priv->in_info, -1, NULL,
- GST_GL_TEXTURE_TARGET_2D)))
- return FALSE;
-
- if (buffer) {
- GstVideoInfo *in_info = &image->upload->priv->in_info;
- guint expected_memories = GST_VIDEO_INFO_N_PLANES (in_info);
-
- /* Support stereo views for separated multiview mode */
- if (GST_VIDEO_INFO_MULTIVIEW_MODE (in_info) ==
- GST_VIDEO_MULTIVIEW_MODE_SEPARATED)
- expected_memories *= GST_VIDEO_INFO_VIEWS (in_info);
-
- if (gst_buffer_n_memory (buffer) != expected_memories)
- return FALSE;
-
- for (i = 0; i < expected_memories; i++) {
- GstMemory *mem = gst_buffer_peek_memory (buffer, i);
-
- if (!gst_is_egl_image_memory (mem))
- return FALSE;
- }
- }
-
- return TRUE;
-}
-
-static void
-_egl_image_upload_propose_allocation (gpointer impl, GstQuery * decide_query,
- GstQuery * query)
-{
- struct EGLImageUpload *image = impl;
- GstCaps *caps;
- GstCapsFeatures *features;
-
- gst_query_parse_allocation (query, &caps, NULL);
- features = gst_caps_get_features (caps, 0);
-
- /* Only offer our custom allocator if that type of memory was negotiated. */
- if (gst_caps_features_contains (features,
- GST_CAPS_FEATURE_MEMORY_EGL_IMAGE) &&
- gst_gl_context_check_feature (image->upload->context,
- "EGL_KHR_image_base")) {
- GstAllocationParams params;
- GstAllocator *allocator;
-
- gst_allocation_params_init (¶ms);
-
- allocator = gst_allocator_find (GST_EGL_IMAGE_MEMORY_TYPE);
- gst_query_add_allocation_param (query, allocator, ¶ms);
- gst_object_unref (allocator);
- }
-}
-
-static void
-_egl_image_upload_perform_gl_thread (GstGLContext * context,
- struct EGLImageUpload *image)
-{
- GstGLMemoryAllocator *allocator;
- guint i, n;
-
- allocator =
- GST_GL_MEMORY_ALLOCATOR (gst_allocator_find
- (GST_GL_MEMORY_PBO_ALLOCATOR_NAME));
-
- /* FIXME: buffer pool */
- *image->outbuf = gst_buffer_new ();
- gst_gl_memory_setup_buffer (allocator, *image->outbuf, image->params);
- gst_object_unref (allocator);
-
- n = gst_buffer_n_memory (image->buffer);
- for (i = 0; i < n; i++) {
- GstMemory *mem = gst_buffer_peek_memory (image->buffer, i);
- GstGLMemory *out_gl_mem =
- (GstGLMemory *) gst_buffer_peek_memory (*image->outbuf, i);
- const GstGLFuncs *gl = NULL;
-
- gl = GST_GL_CONTEXT (((GstEGLImageMemory *) mem)->context)->gl_vtable;
-
- gl->ActiveTexture (GL_TEXTURE0 + i);
- gl->BindTexture (GL_TEXTURE_2D, out_gl_mem->tex_id);
- gl->EGLImageTargetTexture2D (GL_TEXTURE_2D,
- gst_egl_image_memory_get_image (mem));
- }
-
- if (GST_IS_GL_BUFFER_POOL (image->buffer->pool))
- gst_gl_buffer_pool_replace_last_buffer (GST_GL_BUFFER_POOL (image->
- buffer->pool), image->buffer);
-}
-
-static GstGLUploadReturn
-_egl_image_upload_perform (gpointer impl, GstBuffer * buffer,
- GstBuffer ** outbuf)
-{
- struct EGLImageUpload *image = impl;
-
- image->buffer = buffer;
- image->outbuf = outbuf;
-
- gst_gl_context_thread_add (image->upload->context,
- (GstGLContextThreadFunc) _egl_image_upload_perform_gl_thread, image);
-
- if (!*image->outbuf)
- return GST_GL_UPLOAD_ERROR;
-
- return GST_GL_UPLOAD_DONE;
-}
-
-static void
-_egl_image_upload_free (gpointer impl)
-{
- struct EGLImageUpload *image = impl;
-
- if (image->params)
- gst_gl_allocation_params_free ((GstGLAllocationParams *) image->params);
-
- g_free (impl);
-}
-
-static GstStaticCaps _egl_image_upload_caps =
-GST_STATIC_CAPS (GST_VIDEO_CAPS_MAKE_WITH_FEATURES
- (GST_CAPS_FEATURE_MEMORY_EGL_IMAGE, "RGBA"));
-
-static const UploadMethod _egl_image_upload = {
- "EGLImage",
- 0,
- &_egl_image_upload_caps,
- &_egl_image_upload_new,
- &_egl_image_upload_transform_caps,
- &_egl_image_upload_accept,
- &_egl_image_upload_propose_allocation,
- &_egl_image_upload_perform,
- &_egl_image_upload_free
-};
-#endif /* GST_GL_HAVE_PLATFORM_EGL */
-
#if GST_GL_HAVE_DMABUF
struct DmabufUpload
{
GstGLUpload *upload;
- GstMemory *eglimage[GST_VIDEO_MAX_PLANES];
+ GstEGLImage *eglimage[GST_VIDEO_MAX_PLANES];
GstBuffer *outbuf;
GstGLVideoAllocationParams *params;
};
@@ -729,7 +521,7 @@
return quark[plane];
}
-static GstMemory *
+static GstEGLImage *
_get_cached_eglimage (GstMemory * mem, gint plane)
{
return gst_mini_object_get_qdata (GST_MINI_OBJECT (mem),
@@ -737,10 +529,10 @@
}
static void
-_set_cached_eglimage (GstMemory * mem, GstMemory * eglimage, gint plane)
+_set_cached_eglimage (GstMemory * mem, GstEGLImage * eglimage, gint plane)
{
return gst_mini_object_set_qdata (GST_MINI_OBJECT (mem),
- _eglimage_quark (plane), eglimage, (GDestroyNotify) gst_memory_unref);
+ _eglimage_quark (plane), eglimage, (GDestroyNotify) gst_egl_image_unref);
}
static gboolean
@@ -790,9 +582,9 @@
if (dmabuf->params)
gst_gl_allocation_params_free ((GstGLAllocationParams *) dmabuf->params);
if (!(dmabuf->params =
- gst_gl_video_allocation_params_new (dmabuf->upload->context, NULL,
- &dmabuf->upload->priv->in_info, -1, NULL,
- GST_GL_TEXTURE_TARGET_2D)))
+ gst_gl_video_allocation_params_new_wrapped_gl_handle (dmabuf->
+ upload->context, NULL, &dmabuf->upload->priv->in_info, -1, NULL,
+ GST_GL_TEXTURE_TARGET_2D, 0, NULL, NULL, NULL)))
return FALSE;
/* Find and validate all memories */
@@ -826,7 +618,7 @@
/* otherwise create one and cache it */
dmabuf->eglimage[i] =
- gst_egl_image_memory_from_dmabuf (dmabuf->upload->context,
+ gst_egl_image_from_dmabuf (dmabuf->upload->context,
gst_dmabuf_memory_get_fd (mems[i]), in_info, i, mems_skip[i]);
if (!dmabuf->eglimage[i])
@@ -850,35 +642,16 @@
struct DmabufUpload *dmabuf)
{
GstGLMemoryAllocator *allocator;
- guint i, n;
allocator =
GST_GL_MEMORY_ALLOCATOR (gst_allocator_find
- (GST_GL_MEMORY_PBO_ALLOCATOR_NAME));
+ (GST_GL_MEMORY_EGL_ALLOCATOR_NAME));
/* FIXME: buffer pool */
dmabuf->outbuf = gst_buffer_new ();
- gst_gl_memory_setup_buffer (allocator, dmabuf->outbuf, dmabuf->params);
+ gst_gl_memory_setup_buffer (allocator, dmabuf->outbuf, dmabuf->params, NULL,
+ (gpointer *) dmabuf->eglimage, gst_buffer_n_memory (dmabuf->outbuf));
gst_object_unref (allocator);
-
- n = gst_buffer_n_memory (dmabuf->outbuf);
- for (i = 0; i < n; i++) {
- const GstGLFuncs *gl = NULL;
- GstGLMemory *gl_mem =
- (GstGLMemory *) gst_buffer_peek_memory (dmabuf->outbuf, i);
-
- if (!dmabuf->eglimage[i]) {
- g_clear_pointer (&dmabuf->outbuf, gst_buffer_unref);
- return;
- }
-
- gl = GST_GL_CONTEXT (((GstEGLImageMemory *) gl_mem)->context)->gl_vtable;
-
- gl->ActiveTexture (GL_TEXTURE0 + i);
- gl->BindTexture (GL_TEXTURE_2D, gl_mem->tex_id);
- gl->EGLImageTargetTexture2D (GL_TEXTURE_2D,
- gst_egl_image_memory_get_image (dmabuf->eglimage[i]));
- }
}
static GstGLUploadReturn
@@ -1012,7 +785,7 @@
if (!(upload->params =
gst_gl_video_allocation_params_new (upload->upload->context, NULL,
&upload->upload->priv->in_info, -1, NULL,
- GST_GL_TEXTURE_TARGET_2D)))
+ GST_GL_TEXTURE_TARGET_2D, 0)))
return FALSE;
if (buffer) {
@@ -1103,7 +876,8 @@
/* FIXME: buffer pool */
*outbuf = gst_buffer_new ();
- gst_gl_memory_setup_buffer (allocator, *outbuf, upload->params);
+ gst_gl_memory_setup_buffer (allocator, *outbuf, upload->params, NULL, NULL,
+ 0);
gst_object_unref (allocator);
for (i = 0; i < GST_GL_UPLOAD_MAX_PLANES; i++) {
@@ -1137,16 +911,9 @@
_upload_meta_upload_free (gpointer impl)
{
struct GLUploadMeta *upload = impl;
- gint i;
g_return_if_fail (impl != NULL);
- for (i = 0; i < GST_GL_UPLOAD_MAX_PLANES; i++) {
- if (upload->texture_ids[i])
- gst_gl_context_del_texture (upload->upload->context,
- &upload->texture_ids[i]);
- }
-
if (upload->params)
gst_gl_allocation_params_free ((GstGLAllocationParams *) upload->params);
@@ -1301,7 +1068,7 @@
if (!(raw->params =
gst_gl_video_allocation_params_new_wrapped_data (raw->upload->context,
NULL, &raw->upload->priv->in_info, -1, NULL,
- GST_GL_TEXTURE_TARGET_2D, NULL, raw->in_frame,
+ GST_GL_TEXTURE_TARGET_2D, 0, NULL, raw->in_frame,
(GDestroyNotify) _raw_upload_frame_unref)))
return FALSE;
@@ -1337,6 +1104,9 @@
raw->params->parent.wrapped_data = raw->in_frame->frame.data[i];
raw->params->plane = i;
+ raw->params->tex_type =
+ gst_gl_texture_type_from_format (raw->upload->context,
+ GST_VIDEO_INFO_FORMAT (in_info), i);
tex =
gst_gl_base_memory_alloc (allocator,
@@ -1385,9 +1155,6 @@
};
static const UploadMethod *upload_methods[] = { &_gl_memory_upload,
-#if GST_GL_HAVE_PLATFORM_EGL
- &_egl_image_upload,
-#endif
#if GST_GL_HAVE_DMABUF
&_dma_buf_upload,
#endif
diff --git a/gst-libs/gst/gl/gstglutils.c b/gst-libs/gst/gl/gstglutils.c
index e2e04e4..ade2f95 100644
--- a/gst-libs/gst/gl/gstglutils.c
+++ b/gst-libs/gst/gl/gstglutils.c
@@ -98,187 +98,6 @@
return FALSE;
}
-typedef struct _GenTexture
-{
- guint width, height;
- GstVideoFormat format;
- guint result;
-} GenTexture;
-
-static void
-_gen_texture (GstGLContext * context, GenTexture * data)
-{
- const GstGLFuncs *gl = context->gl_vtable;
- GLenum internal_format;
-
- GST_TRACE ("Generating texture format:%u dimensions:%ux%u", data->format,
- data->width, data->height);
-
- gl->GenTextures (1, &data->result);
- gl->BindTexture (GL_TEXTURE_2D, data->result);
-
- internal_format =
- gst_gl_sized_gl_format_from_gl_format_type (context, GL_RGBA,
- GL_UNSIGNED_BYTE);
- if (data->width > 0 && data->height > 0)
- gl->TexImage2D (GL_TEXTURE_2D, 0, internal_format,
- data->width, data->height, 0, GL_RGBA, GL_UNSIGNED_BYTE, NULL);
-
- gl->TexParameteri (GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
- gl->TexParameteri (GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
- gl->TexParameteri (GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
- gl->TexParameteri (GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
-
- GST_LOG ("generated texture id:%d", data->result);
-}
-
-/* deprecated. replaced by GstGLMemory */
-void
-gst_gl_context_gen_texture (GstGLContext * context, GLuint * pTexture,
- GstVideoFormat v_format, GLint width, GLint height)
-{
- GenTexture data = { width, height, v_format, 0 };
-
- gst_gl_context_thread_add (context, (GstGLContextThreadFunc) _gen_texture,
- &data);
-
- *pTexture = data.result;
-}
-
-static void
-_del_texture (GstGLContext * context, guint * texture)
-{
- context->gl_vtable->DeleteTextures (1, texture);
-}
-
-/* deprecated. replaced by GstGLMemory */
-void
-gst_gl_context_del_texture (GstGLContext * context, GLuint * pTexture)
-{
- gst_gl_context_thread_add (context, (GstGLContextThreadFunc) _del_texture,
- pTexture);
-}
-
-typedef struct _GenTextureFull
-{
- const GstVideoInfo *info;
- const gint comp;
- guint result;
-} GenTextureFull;
-
-static void
-_gen_texture_full (GstGLContext * context, GenTextureFull * data)
-{
- const GstGLFuncs *gl = context->gl_vtable;
- GstVideoGLTextureType tex_type;
- GstVideoFormat v_format;
- GLint glinternalformat = 0;
- GLenum glformat = 0;
- GLenum gltype = 0;
-
- gl->GenTextures (1, &data->result);
- gl->BindTexture (GL_TEXTURE_2D, data->result);
-
- v_format = GST_VIDEO_INFO_FORMAT (data->info);
- tex_type = gst_gl_texture_type_from_format (context, v_format, data->comp);
- glformat = gst_gl_format_from_gl_texture_type (tex_type);
- gltype = GL_UNSIGNED_BYTE;
- if (v_format == GST_VIDEO_FORMAT_RGB16)
- gltype = GL_UNSIGNED_SHORT_5_6_5;
- glinternalformat = gst_gl_sized_gl_format_from_gl_format_type (context,
- glformat, gltype);
-
- gl->TexImage2D (GL_TEXTURE_2D, 0, glinternalformat,
- GST_VIDEO_INFO_COMP_WIDTH (data->info, data->comp),
- GST_VIDEO_INFO_COMP_HEIGHT (data->info, data->comp), 0, glformat, gltype,
- NULL);
-
- gl->TexParameteri (GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
- gl->TexParameteri (GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
- gl->TexParameteri (GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
- gl->TexParameteri (GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
-}
-
-/* deprecated. replaced by GstGLMemory */
-void
-gst_gl_generate_texture_full (GstGLContext * context, const GstVideoInfo * info,
- const guint comp, gint stride[], gsize offset[], gsize size[],
- GLuint * pTexture)
-{
- GenTextureFull data = { info, comp, 0 };
-
- switch (GST_VIDEO_INFO_FORMAT (info)) {
- case GST_VIDEO_FORMAT_RGB:
- case GST_VIDEO_FORMAT_BGR:
- {
- stride[0] = GST_ROUND_UP_4 (GST_VIDEO_INFO_WIDTH (info) * 3);
- offset[0] = 0;
- size[0] = stride[0] * GST_VIDEO_INFO_HEIGHT (info);
- break;
- }
- case GST_VIDEO_FORMAT_RGB16:
- {
- stride[0] = GST_ROUND_UP_4 (GST_VIDEO_INFO_WIDTH (info) * 2);
- offset[0] = 0;
- size[0] = stride[0] * GST_VIDEO_INFO_HEIGHT (info);
- break;
- }
- case GST_VIDEO_FORMAT_RGBA:
- case GST_VIDEO_FORMAT_BGRA:
- case GST_VIDEO_FORMAT_ARGB:
- case GST_VIDEO_FORMAT_ABGR:
- case GST_VIDEO_FORMAT_RGBx:
- case GST_VIDEO_FORMAT_BGRx:
- case GST_VIDEO_FORMAT_xRGB:
- case GST_VIDEO_FORMAT_xBGR:
- case GST_VIDEO_FORMAT_AYUV:
- {
- stride[0] = GST_ROUND_UP_4 (GST_VIDEO_INFO_WIDTH (info) * 4);
- offset[0] = 0;
- size[0] = stride[0] * GST_VIDEO_INFO_HEIGHT (info);
- break;
- }
- case GST_VIDEO_FORMAT_NV12:
- case GST_VIDEO_FORMAT_NV21:
- {
- size[comp] = stride[comp] * GST_VIDEO_INFO_COMP_HEIGHT (info, comp);
- if (comp == 0) {
- stride[0] = GST_ROUND_UP_4 (GST_VIDEO_INFO_COMP_WIDTH (info, 1));
- offset[0] = 0;
- } else {
- stride[1] = GST_ROUND_UP_4 (GST_VIDEO_INFO_COMP_WIDTH (info, 1) * 2);
- offset[1] = size[0];
- }
- break;
- }
- case GST_VIDEO_FORMAT_I420:
- case GST_VIDEO_FORMAT_YV12:
- case GST_VIDEO_FORMAT_Y444:
- case GST_VIDEO_FORMAT_Y42B:
- case GST_VIDEO_FORMAT_Y41B:
- {
- stride[comp] = GST_ROUND_UP_4 (GST_VIDEO_INFO_COMP_WIDTH (info, comp));
- size[comp] = stride[comp] * GST_VIDEO_INFO_COMP_HEIGHT (info, comp);
- if (comp == 0)
- offset[0] = 0;
- else if (comp == 1)
- offset[1] = size[0];
- else
- offset[2] = offset[1] + size[1];
- break;
- }
- default:
- GST_WARNING ("unsupported %s",
- gst_video_format_to_string (GST_VIDEO_INFO_FORMAT (info)));
- break;
- }
-
- gst_gl_context_thread_add (context,
- (GstGLContextThreadFunc) _gen_texture_full, &data);
-
- *pTexture = data.result;
-}
-
typedef struct _GenFBO
{
GstGLFramebuffer *frame;
@@ -1067,3 +886,63 @@
return ret;
}
}
+
+static const gfloat identity_matrix[] = {
+ 1.0f, 0.0f, 0.0, 0.0f,
+ 0.0f, 1.0f, 0.0, 0.0f,
+ 0.0f, 0.0f, 1.0, 0.0f,
+ 0.0f, 0.0f, 0.0, 1.0f,
+};
+
+static const gfloat from_ndc_matrix[] = {
+ 0.5f, 0.0f, 0.0, 0.5f,
+ 0.0f, 0.5f, 0.0, 0.5f,
+ 0.0f, 0.0f, 0.5, 0.5f,
+ 0.0f, 0.0f, 0.0, 1.0f,
+};
+
+static const gfloat to_ndc_matrix[] = {
+ 2.0f, 0.0f, 0.0, -1.0f,
+ 0.0f, 2.0f, 0.0, -1.0f,
+ 0.0f, 0.0f, 2.0, -1.0f,
+ 0.0f, 0.0f, 0.0, 1.0f,
+};
+
+void
+gst_gl_multiply_matrix4 (const gfloat * a, const gfloat * b, gfloat * result)
+{
+ int i, j, k;
+ gfloat tmp[16] = { 0.0f };
+
+ if (!a || !b || !result)
+ return;
+
+ for (i = 0; i < 4; i++) {
+ for (j = 0; j < 4; j++) {
+ for (k = 0; k < 4; k++) {
+ tmp[i + (j * 4)] += a[i + (k * 4)] * b[k + (j * 4)];
+ }
+ }
+ }
+
+ for (i = 0; i < 16; i++)
+ result[i] = tmp[i];
+}
+
+void
+gst_gl_get_affine_transformation_meta_as_ndc (GstVideoAffineTransformationMeta *
+ meta, gfloat * matrix)
+{
+ if (!meta) {
+ int i;
+
+ for (i = 0; i < 16; i++) {
+ matrix[i] = identity_matrix[i];
+ }
+ } else {
+ gfloat tmp[16] = { 0.0f };
+
+ gst_gl_multiply_matrix4 (from_ndc_matrix, meta->matrix, tmp);
+ gst_gl_multiply_matrix4 (tmp, to_ndc_matrix, matrix);
+ }
+}
diff --git a/gst-libs/gst/gl/gstglutils.h b/gst-libs/gst/gl/gstglutils.h
index 1c5ab12..4741dad 100644
--- a/gst-libs/gst/gl/gstglutils.h
+++ b/gst-libs/gst/gl/gstglutils.h
@@ -22,6 +22,7 @@
#define __GST_GL_UTILS_H__
#include <gst/video/video.h>
+#include <gst/video/gstvideoaffinetransformationmeta.h>
#include <gst/gl/gstgl_fwd.h>
@@ -67,16 +68,6 @@
*/
typedef void (*GLCB_V2) (gpointer stuff);
-/* deprecated. replaced by GstGLMemory */
-void gst_gl_context_gen_texture (GstGLContext * context, GLuint * pTexture,
- GstVideoFormat v_format, GLint width, GLint height);
-/* deprecated. replaced by GstGLMemory */
-void gst_gl_context_del_texture (GstGLContext * context, GLuint * pTexture);
-
-/* deprecated. replaced by GstGLMemory */
-void gst_gl_generate_texture_full (GstGLContext * context, const GstVideoInfo * info,
- const guint comp, gint stride[], gsize offset[], gsize size[], GLuint * pTexture);
-
gboolean gst_gl_context_gen_fbo (GstGLContext * context, gint width, gint height,
GLuint * fbo, GLuint * depthbuffer);
gboolean gst_gl_context_use_fbo_v2 (GstGLContext * context, gint texture_fbo_width,
@@ -116,6 +107,10 @@
gboolean gst_gl_value_set_texture_target (GValue * value, GstGLTextureTarget target);
GstGLTextureTarget gst_gl_value_get_texture_target_mask (const GValue * value);
+void gst_gl_multiply_matrix4 (const gfloat * a, const gfloat * b, gfloat * result);
+void gst_gl_get_affine_transformation_meta_as_ndc (GstVideoAffineTransformationMeta *
+ meta, gfloat * matrix);
+
G_END_DECLS
#endif /* __GST_GL_UTILS_H__ */
diff --git a/gst-libs/gst/gl/gstglviewconvert.c b/gst-libs/gst/gl/gstglviewconvert.c
index 7d44860..0697891 100644
--- a/gst-libs/gst/gl/gstglviewconvert.c
+++ b/gst-libs/gst/gl/gstglviewconvert.c
@@ -31,6 +31,7 @@
#endif
#include "gstglviewconvert.h"
+#include "gstglsl_private.h"
#include <gst/video/gstvideoaffinetransformationmeta.h>
#define USING_OPENGL(context) (gst_gl_context_check_gl_version (context, GST_GL_API_OPENGL, 1, 0))
@@ -152,27 +153,20 @@
0.0f, 0.0f, 0.0f, 1.0f,
};
+#define glsl_OES_extension_string "#extension GL_OES_EGL_image_external : require \n"
+
/* *INDENT-OFF* */
-static const gchar *fragment_source =
+static const gchar *fragment_header =
"#ifdef GL_ES\n"
"precision mediump float;\n"
"#endif\n"
- "varying vec2 v_texcoord;\n"
"uniform sampler2D tex_l;\n"
"uniform sampler2D tex_r;\n"
"uniform float width;\n"
"uniform float height;\n"
"uniform mat3 downmix[2];\n"
"uniform vec2 tex_scale[2];\n"
- "uniform vec2 offsets[2];\n"
- "void main () {\n"
- "vec4 l, r;\n"
- /* input */
- "%s"
- /* now have left and right pixel into l and r */
- /* output */
- "%s"
- "}\n";
+ "uniform vec2 offsets[2];\n";
static const gchar *frag_input =
" vec2 l_tex = v_texcoord * tex_scale[0] + offsets[0];\n"
@@ -1459,111 +1453,17 @@
return ret;
}
-static gchar *
-_mangle_texture_access (const gchar * str, GstGLTextureTarget from,
- GstGLTextureTarget to)
-{
- const gchar *from_str = NULL, *to_str = NULL;
- gchar *ret, *tmp;
- gchar *regex_find;
- GRegex *regex;
-
- if (from == GST_GL_TEXTURE_TARGET_2D)
- from_str = "texture2D";
- if (from == GST_GL_TEXTURE_TARGET_RECTANGLE)
- from_str = "texture2DRect";
- if (from == GST_GL_TEXTURE_TARGET_EXTERNAL_OES)
- from_str = "texture2D";
-
- if (to == GST_GL_TEXTURE_TARGET_2D)
- to_str = "texture2D";
- if (to == GST_GL_TEXTURE_TARGET_RECTANGLE)
- to_str = "texture2DRect";
- if (to == GST_GL_TEXTURE_TARGET_EXTERNAL_OES)
- to_str = "texture2D";
-
- /* followed by any amount of whitespace then a bracket */
- regex_find = g_strdup_printf ("%s(?=\\s*\\()", from_str);
- regex = g_regex_new (regex_find, 0, 0, NULL);
- tmp = g_regex_replace_literal (regex, str, -1, 0, to_str, 0, NULL);
- g_free (regex_find);
- g_regex_unref (regex);
-
- if (tmp) {
- ret = tmp;
- } else {
- GST_FIXME ("Couldn't mangle texture access successfully from %s to %s",
- from_str, to_str);
- ret = g_strdup (str);
- }
-
- return ret;
-}
-
-static gchar *
-_mangle_sampler_type (const gchar * str, GstGLTextureTarget from,
- GstGLTextureTarget to)
-{
- const gchar *from_str = NULL, *to_str = NULL;
- gchar *ret, *tmp;
- gchar *regex_find;
- GRegex *regex;
-
- if (from == GST_GL_TEXTURE_TARGET_2D)
- from_str = "sampler2D";
- if (from == GST_GL_TEXTURE_TARGET_RECTANGLE)
- from_str = "sampler2DRect";
- if (from == GST_GL_TEXTURE_TARGET_EXTERNAL_OES)
- from_str = "samplerExternalOES";
-
- if (to == GST_GL_TEXTURE_TARGET_2D)
- to_str = "sampler2D";
- if (to == GST_GL_TEXTURE_TARGET_RECTANGLE)
- to_str = "sampler2DRect";
- if (to == GST_GL_TEXTURE_TARGET_EXTERNAL_OES)
- to_str = "samplerExternalOES";
-
- /* followed by some whitespace */
- regex_find = g_strdup_printf ("%s(?=\\s)", from_str);
- regex = g_regex_new (regex_find, 0, 0, NULL);
- tmp = g_regex_replace_literal (regex, str, -1, 0, to_str, 0, NULL);
- g_free (regex_find);
- g_regex_unref (regex);
-
- if (tmp) {
- ret = tmp;
- } else {
- GST_FIXME ("Couldn't mangle sampler type successfully from %s to %s",
- from_str, to_str);
- ret = g_strdup (str);
- }
-
- return ret;
-}
-
-static gchar *
-_mangle_extensions (const gchar * str, GstGLTextureTarget from)
-{
- const gchar *ext_str = NULL;
-
- if (from == GST_GL_TEXTURE_TARGET_EXTERNAL_OES)
- ext_str = "#extension GL_OES_EGL_image_external : require\n";
-
- if (ext_str) {
- return g_strdup_printf ("%s%s", ext_str, str);
- } else {
- return g_strdup (str);
- }
-}
-
/* free after use */
static gchar *
-_get_shader_string (GstGLViewConvert * viewconvert,
- GstVideoMultiviewMode in_mode, GstVideoMultiviewMode out_mode)
+_get_shader_string (GstGLViewConvert * viewconvert, GstGLShader * shader,
+ GstVideoMultiviewMode in_mode, GstVideoMultiviewMode out_mode,
+ GstGLSLVersion version, GstGLSLProfile profile)
{
const gchar *input_str, *output_str;
gboolean mono_input = FALSE;
gchar *tmp, *tmp2;
+ GString *str = g_string_new (NULL);
+ guint n_outputs = 1;
switch (in_mode) {
case GST_VIDEO_MULTIVIEW_MODE_NONE:
@@ -1601,6 +1501,7 @@
case GST_VIDEO_MULTIVIEW_MODE_SEPARATED:
case GST_VIDEO_MULTIVIEW_MODE_FRAME_BY_FRAME:
output_str = frag_output_separated;
+ n_outputs = 2;
break;
case GST_VIDEO_MULTIVIEW_MODE_CHECKERBOARD:
output_str = frag_output_checkerboard;
@@ -1615,15 +1516,65 @@
break;
}
- tmp = g_strdup_printf (fragment_source, input_str, output_str);
- tmp2 = _mangle_sampler_type (tmp, GST_GL_TEXTURE_TARGET_2D,
- viewconvert->from_texture_target);
- g_free (tmp);
- tmp = _mangle_texture_access (tmp2, GST_GL_TEXTURE_TARGET_2D,
- viewconvert->from_texture_target);
- g_free (tmp2);
- tmp2 = _mangle_extensions (tmp, viewconvert->from_texture_target);
- g_free (tmp);
+ if (viewconvert->from_texture_target == GST_GL_TEXTURE_TARGET_EXTERNAL_OES)
+ g_string_append (str, glsl_OES_extension_string);
+
+ g_string_append (str, fragment_header);
+
+ /* GL 3.3+ and GL ES 3.x */
+ if ((profile == GST_GLSL_PROFILE_CORE && version >= GST_GLSL_VERSION_330)
+ || (profile == GST_GLSL_PROFILE_ES && version >= GST_GLSL_VERSION_300)) {
+ if (n_outputs > 1) {
+ gint i;
+
+ for (i = 0; i < n_outputs; i++) {
+ g_string_append_printf (str,
+ "layout(location = %d) out vec4 fragColor_%d;\n", i, i);
+ }
+ } else {
+ g_string_append (str, "layout (location = 0) out vec4 fragColor;\n");
+ }
+ } else if (profile == GST_GLSL_PROFILE_CORE
+ && version >= GST_GLSL_VERSION_150) {
+ /* no layout specifiers, use glBindFragDataLocation instead */
+ if (n_outputs > 1) {
+ gint i;
+
+ for (i = 0; i < n_outputs; i++) {
+ gchar *var_name = g_strdup_printf ("fragColor_%d", i);
+ g_string_append_printf (str, "out vec4 %s;\n", var_name);
+ gst_gl_shader_bind_frag_data_location (shader, i, var_name);
+ g_free (var_name);
+ }
+ } else {
+ g_string_append (str, "out vec4 fragColor;\n");
+ gst_gl_shader_bind_frag_data_location (shader, 0, "fragColor");
+ }
+ }
+
+ {
+ const gchar *varying = NULL;
+
+ if ((profile == GST_GLSL_PROFILE_ES && version >= GST_GLSL_VERSION_300)
+ || (profile == GST_GLSL_PROFILE_CORE
+ && version >= GST_GLSL_VERSION_150)) {
+ varying = "in";
+ } else {
+ varying = "varying";
+ }
+ g_string_append_printf (str,
+ "\n%s vec2 v_texcoord;\nvoid main() {\nvec4 l, r;\n", varying);
+ }
+
+ g_string_append (str, input_str);
+ g_string_append (str, output_str);
+ g_string_append (str, "\n}");
+ tmp = g_string_free (str, FALSE);
+
+ tmp2 =
+ _gst_glsl_mangle_shader (tmp, GL_FRAGMENT_SHADER,
+ GST_GL_TEXTURE_TARGET_2D, viewconvert->from_texture_target,
+ viewconvert->context, &version, &profile);
return tmp2;
}
@@ -1673,7 +1624,6 @@
};
gchar *fragment_source_str;
GstGLFuncs *gl;
- gboolean res;
gint l_index, r_index;
gl = viewconvert->context->gl_vtable;
@@ -1774,13 +1724,70 @@
tex_scale[0][0], tex_scale[0][1],
tex_scale[1][0], tex_scale[1][1],
offsets[0][0], offsets[0][1], offsets[1][0], offsets[1][1]);
- fragment_source_str = _get_shader_string (viewconvert, in_mode, out_mode);
- res = gst_gl_context_gen_shader (viewconvert->context,
- gst_gl_shader_string_vertex_mat4_texture_transform, fragment_source_str,
- &viewconvert->shader);
- g_free (fragment_source_str);
- if (!res)
- goto error;
+
+ viewconvert->shader = gst_gl_shader_new (viewconvert->context);
+ {
+ GstGLSLVersion version;
+ GstGLSLProfile profile;
+ GstGLSLStage *vert, *frag;
+ gchar *tmp, *tmp1, *version_str;
+ const gchar *strings[2];
+ GError *error = NULL;
+
+ tmp =
+ _gst_glsl_mangle_shader
+ (gst_gl_shader_string_vertex_mat4_vertex_transform, GL_VERTEX_SHADER,
+ GST_GL_TEXTURE_TARGET_2D, viewconvert->from_texture_target,
+ viewconvert->context, &version, &profile);
+
+ tmp1 = gst_glsl_version_profile_to_string (version, profile);
+ version_str = g_strdup_printf ("#version %s\n", tmp1);
+ g_free (tmp1);
+ strings[0] = version_str;
+
+ strings[1] = tmp;
+ vert =
+ gst_glsl_stage_new_with_strings (viewconvert->context,
+ GL_VERTEX_SHADER, version, profile, 2, strings);
+ g_free (tmp);
+
+ if (!gst_gl_shader_compile_attach_stage (viewconvert->shader, vert, &error)) {
+ GST_ERROR_OBJECT (viewconvert, "Failed to compile vertex stage %s",
+ error->message);
+ gst_object_unref (viewconvert->shader);
+ viewconvert->shader = NULL;
+ g_free (version_str);
+ goto error;
+ }
+
+ fragment_source_str = _get_shader_string (viewconvert, viewconvert->shader,
+ in_mode, out_mode, version, profile);
+ strings[1] = fragment_source_str;
+
+ frag =
+ gst_glsl_stage_new_with_strings (viewconvert->context,
+ GL_FRAGMENT_SHADER, version, profile, 2, strings);
+ g_free (version_str);
+
+ if (!gst_gl_shader_compile_attach_stage (viewconvert->shader, frag, &error)) {
+ GST_ERROR_OBJECT (viewconvert, "Failed to compile fragment stage %s",
+ error->message);
+ g_free (fragment_source_str);
+ gst_object_unref (viewconvert->shader);
+ viewconvert->shader = NULL;
+ goto error;
+ }
+ g_free (fragment_source_str);
+
+ if (!gst_gl_shader_link (viewconvert->shader, &error)) {
+ GST_ERROR_OBJECT (viewconvert, "Failed to link conversion shader %s",
+ error->message);
+ gst_object_unref (viewconvert->shader);
+ viewconvert->shader = NULL;
+ goto error;
+ }
+ }
+
viewconvert->priv->attr_position =
gst_gl_shader_get_attribute_location (viewconvert->shader, "a_position");
viewconvert->priv->attr_texture =
@@ -1856,7 +1863,6 @@
GstVideoMultiviewMode out_mode = priv->output_mode;
guint from_gl_target =
gst_gl_texture_target_to_gl (viewconvert->from_texture_target);
- GstVideoAffineTransformationMeta *af_meta;
gl = context->gl_vtable;
out_width = GST_VIDEO_INFO_WIDTH (&viewconvert->out_info);
@@ -1869,12 +1875,6 @@
out_views = 1;
}
- /* FIXME: the auxillary buffer could have a different transform matrix */
- af_meta = gst_buffer_get_video_affine_transformation_meta (priv->primary_in);
- if (af_meta)
- gst_gl_shader_set_uniform_matrix_4fv (viewconvert->shader,
- "u_transformation", 1, FALSE, af_meta->matrix);
-
/* attach the texture to the FBO to renderer to */
for (i = 0; i < out_views; i++) {
guint gl_target =
@@ -1892,7 +1892,21 @@
gl->DrawBuffer (GL_COLOR_ATTACHMENT0);
gl->GetIntegerv (GL_VIEWPORT, viewport_dim);
gl->Viewport (0, 0, out_width, out_height);
+
gst_gl_shader_use (viewconvert->shader);
+
+ /* FIXME: the auxillary buffer could have a different transform matrix */
+ {
+ GstVideoAffineTransformationMeta *af_meta;
+ gfloat matrix[16];
+
+ af_meta =
+ gst_buffer_get_video_affine_transformation_meta (priv->primary_in);
+ gst_gl_get_affine_transformation_meta_as_ndc (af_meta, matrix);
+ gst_gl_shader_set_uniform_matrix_4fv (viewconvert->shader,
+ "u_transformation", 1, FALSE, matrix);
+ }
+
if (gl->BindVertexArray)
gl->BindVertexArray (priv->vao);
else
@@ -1940,9 +1954,10 @@
(viewconvert->context));
mem_allocator = GST_GL_MEMORY_ALLOCATOR (allocator);
params = gst_gl_video_allocation_params_new (viewconvert->context, NULL,
- &viewconvert->out_info, 0, NULL, viewconvert->to_texture_target);
+ &viewconvert->out_info, 0, NULL, viewconvert->to_texture_target, 0);
- if (!gst_gl_memory_setup_buffer (mem_allocator, *target, params)) {
+ if (!gst_gl_memory_setup_buffer (mem_allocator, *target, params, NULL, NULL,
+ 0)) {
gst_gl_allocation_params_free ((GstGLAllocationParams *) params);
gst_object_unref (allocator);
return FALSE;
@@ -2081,7 +2096,8 @@
GST_ALLOCATOR (gst_gl_memory_allocator_get_default (context));
base_mem_allocator = GST_GL_BASE_MEMORY_ALLOCATOR (allocator);
params = gst_gl_video_allocation_params_new (context, NULL, &temp_info,
- 0, NULL, viewconvert->to_texture_target);
+ 0, NULL, viewconvert->to_texture_target,
+ GST_VIDEO_GL_TEXTURE_TYPE_RGBA);
priv->out_tex[j] =
(GstGLMemory *) gst_gl_base_memory_alloc (base_mem_allocator,
diff --git a/gst-libs/gst/gl/gstglwindow.c b/gst-libs/gst/gl/gstglwindow.c
index 695f4c4..410bc86 100644
--- a/gst-libs/gst/gl/gstglwindow.c
+++ b/gst-libs/gst/gl/gstglwindow.c
@@ -102,6 +102,8 @@
GMutex nav_lock;
GCond nav_create_cond;
gboolean nav_alive;
+ GMutex sync_message_lock;
+ GCond sync_message_cond;
};
static void gst_gl_window_finalize (GObject * object);
@@ -197,6 +199,9 @@
g_weak_ref_init (&window->context_ref, NULL);
+ g_mutex_init (&window->priv->sync_message_lock);
+ g_cond_init (&window->priv->sync_message_cond);
+
priv->main_context = g_main_context_new ();
priv->loop = g_main_loop_new (priv->main_context, FALSE);
priv->navigation_loop = NULL;
@@ -348,6 +353,8 @@
g_mutex_clear (&window->lock);
g_mutex_clear (&window->priv->nav_lock);
g_cond_clear (&window->priv->nav_create_cond);
+ g_mutex_clear (&window->priv->sync_message_lock);
+ g_cond_clear (&window->priv->sync_message_cond);
gst_object_unref (window->display);
G_OBJECT_CLASS (gst_gl_window_parent_class)->finalize (object);
@@ -590,8 +597,7 @@
typedef struct _GstGLSyncMessage
{
- GMutex lock;
- GCond cond;
+ GstGLWindow *window;
gboolean fired;
GstGLWindowCB callback;
@@ -601,14 +607,14 @@
static void
_run_message_sync (GstGLSyncMessage * message)
{
- g_mutex_lock (&message->lock);
if (message->callback)
message->callback (message->data);
+ g_mutex_lock (&message->window->priv->sync_message_lock);
message->fired = TRUE;
- g_cond_signal (&message->cond);
- g_mutex_unlock (&message->lock);
+ g_cond_broadcast (&message->window->priv->sync_message_cond);
+ g_mutex_unlock (&message->window->priv->sync_message_lock);
}
void
@@ -617,24 +623,21 @@
{
GstGLSyncMessage message;
+ message.window = window;
message.callback = callback;
message.data = data;
message.fired = FALSE;
- g_mutex_init (&message.lock);
- g_cond_init (&message.cond);
gst_gl_window_send_message_async (window, (GstGLWindowCB) _run_message_sync,
&message, NULL);
- g_mutex_lock (&message.lock);
+ g_mutex_lock (&window->priv->sync_message_lock);
/* block until opengl calls have been executed in the gl thread */
while (!message.fired)
- g_cond_wait (&message.cond, &message.lock);
- g_mutex_unlock (&message.lock);
-
- g_mutex_clear (&message.lock);
- g_cond_clear (&message.cond);
+ g_cond_wait (&window->priv->sync_message_cond,
+ &window->priv->sync_message_lock);
+ g_mutex_unlock (&window->priv->sync_message_lock);
}
/**
diff --git a/gst-libs/gst/gl/wayland/Makefile.in b/gst-libs/gst/gl/wayland/Makefile.in
index feaf1a8..ee594bf 100644
--- a/gst-libs/gst/gl/wayland/Makefile.in
+++ b/gst-libs/gst/gl/wayland/Makefile.in
@@ -275,6 +275,8 @@
DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
DSYMUTIL = @DSYMUTIL@
DTLS_CFLAGS = @DTLS_CFLAGS@
DTLS_LIBS = @DTLS_LIBS@
@@ -490,6 +492,8 @@
LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
LIPO = @LIPO@
LN_S = @LN_S@
LOCALEDIR = @LOCALEDIR@
@@ -616,8 +620,6 @@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
SNDIO_LIBS = @SNDIO_LIBS@
@@ -662,6 +664,8 @@
WAYLAND_LIBS = @WAYLAND_LIBS@
WEBP_CFLAGS = @WEBP_CFLAGS@
WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
WGET = @WGET@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
diff --git a/gst-libs/gst/gl/win32/Makefile.in b/gst-libs/gst/gl/win32/Makefile.in
index 079345d..9857cd0 100644
--- a/gst-libs/gst/gl/win32/Makefile.in
+++ b/gst-libs/gst/gl/win32/Makefile.in
@@ -280,6 +280,8 @@
DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
DSYMUTIL = @DSYMUTIL@
DTLS_CFLAGS = @DTLS_CFLAGS@
DTLS_LIBS = @DTLS_LIBS@
@@ -495,6 +497,8 @@
LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
LIPO = @LIPO@
LN_S = @LN_S@
LOCALEDIR = @LOCALEDIR@
@@ -621,8 +625,6 @@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
SNDIO_LIBS = @SNDIO_LIBS@
@@ -667,6 +669,8 @@
WAYLAND_LIBS = @WAYLAND_LIBS@
WEBP_CFLAGS = @WEBP_CFLAGS@
WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
WGET = @WGET@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
diff --git a/gst-libs/gst/gl/win32/gstglcontext_wgl.c b/gst-libs/gst/gl/win32/gstglcontext_wgl.c
index 3c2f34a..0961e40 100644
--- a/gst-libs/gst/gl/win32/gstglcontext_wgl.c
+++ b/gst-libs/gst/gl/win32/gstglcontext_wgl.c
@@ -40,6 +40,8 @@
GstGLAPI context_api;
};
+#define GST_CAT_DEFAULT gst_gl_context_debug
+
#define gst_gl_context_wgl_parent_class parent_class
G_DEFINE_TYPE (GstGLContextWGL, gst_gl_context_wgl, GST_GL_TYPE_CONTEXT);
#define GST_GL_CONTEXT_WGL_GET_PRIVATE(o) \
@@ -221,23 +223,35 @@
}
if (!context_wgl->wgl_context) {
- context_wgl->wgl_context = wglCreateContext (device);
- if (!context_wgl->wgl_context) {
- g_set_error (error, GST_GL_CONTEXT_ERROR,
- GST_GL_CONTEXT_ERROR_CREATE_CONTEXT,
- "Failed to create WGL context 0x%x", (unsigned int) GetLastError ());
- goto failure;
+ if (context_wgl->priv->wglCreateContextAttribsARB && external_gl_context) {
+ context_wgl->wgl_context =
+ context_wgl->priv->wglCreateContextAttribsARB (device,
+ external_gl_context, 0);
}
- if (external_gl_context) {
- if (!wglShareLists (external_gl_context, context_wgl->wgl_context)) {
+
+ if (!context_wgl->wgl_context) {
+
+ context_wgl->wgl_context = wglCreateContext (device);
+
+ if (!context_wgl->wgl_context) {
g_set_error (error, GST_GL_CONTEXT_ERROR,
GST_GL_CONTEXT_ERROR_CREATE_CONTEXT,
- "failed to share contexts through wglShareLists 0x%x",
+ "Failed to create WGL context 0x%x",
(unsigned int) GetLastError ());
goto failure;
}
+
+ if (external_gl_context) {
+ if (!wglShareLists (external_gl_context, context_wgl->wgl_context)) {
+ g_set_error (error, GST_GL_CONTEXT_ERROR,
+ GST_GL_CONTEXT_ERROR_CREATE_CONTEXT,
+ "failed to share contexts through wglShareLists 0x%x",
+ (unsigned int) GetLastError ());
+ goto failure;
+ }
+ }
}
context_wgl->priv->context_api = GST_GL_API_OPENGL;
diff --git a/gst-libs/gst/gl/x11/Makefile.in b/gst-libs/gst/gl/x11/Makefile.in
index 982e2ec..b2e7071 100644
--- a/gst-libs/gst/gl/x11/Makefile.in
+++ b/gst-libs/gst/gl/x11/Makefile.in
@@ -309,6 +309,8 @@
DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
DSYMUTIL = @DSYMUTIL@
DTLS_CFLAGS = @DTLS_CFLAGS@
DTLS_LIBS = @DTLS_LIBS@
@@ -524,6 +526,8 @@
LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
LIPO = @LIPO@
LN_S = @LN_S@
LOCALEDIR = @LOCALEDIR@
@@ -650,8 +654,6 @@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
SNDIO_LIBS = @SNDIO_LIBS@
@@ -696,6 +698,8 @@
WAYLAND_LIBS = @WAYLAND_LIBS@
WEBP_CFLAGS = @WEBP_CFLAGS@
WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
WGET = @WGET@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
diff --git a/gst-libs/gst/insertbin/Makefile.am b/gst-libs/gst/insertbin/Makefile.am
index 8368f41..1f8ea30 100644
--- a/gst-libs/gst/insertbin/Makefile.am
+++ b/gst-libs/gst/insertbin/Makefile.am
@@ -31,6 +31,7 @@
GstInsertBin-@GST_API_VERSION@.gir: $(INTROSPECTION_SCANNER) libgstinsertbin-@GST_API_VERSION@.la
$(AM_V_GEN)PKG_CONFIG_PATH="$(GST_PKG_CONFIG_PATH)" GI_SCANNER_DISABLE_CACHE=yes\
GST_PLUGIN_SYSTEM_PATH_1_0="" GST_PLUGIN_PATH_1_0="" GST_REGISTRY_UPDATE=no \
+ CPPFLAGS="$(CPPFLAGS)" CFLAGS="$(CFLAGS)" LDFLAGS="$(LDFLAGS)" CC="$(CC)" PKG_CONFIG="$(PKG_CONFIG)" DLLTOOL="$(DLLTOOL)" \
$(INTROSPECTION_SCANNER) -v --namespace GstInsertBin \
--nsversion=@GST_API_VERSION@ \
--identifier-prefix=Gst \
diff --git a/gst-libs/gst/insertbin/Makefile.in b/gst-libs/gst/insertbin/Makefile.in
index 343709b..507b2e6 100644
--- a/gst-libs/gst/insertbin/Makefile.in
+++ b/gst-libs/gst/insertbin/Makefile.in
@@ -292,6 +292,8 @@
DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
DSYMUTIL = @DSYMUTIL@
DTLS_CFLAGS = @DTLS_CFLAGS@
DTLS_LIBS = @DTLS_LIBS@
@@ -507,6 +509,8 @@
LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
LIPO = @LIPO@
LN_S = @LN_S@
LOCALEDIR = @LOCALEDIR@
@@ -633,8 +637,6 @@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
SNDIO_LIBS = @SNDIO_LIBS@
@@ -679,6 +681,8 @@
WAYLAND_LIBS = @WAYLAND_LIBS@
WEBP_CFLAGS = @WEBP_CFLAGS@
WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
WGET = @WGET@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
@@ -1157,6 +1161,7 @@
@HAVE_INTROSPECTION_TRUE@GstInsertBin-@GST_API_VERSION@.gir: $(INTROSPECTION_SCANNER) libgstinsertbin-@GST_API_VERSION@.la
@HAVE_INTROSPECTION_TRUE@ $(AM_V_GEN)PKG_CONFIG_PATH="$(GST_PKG_CONFIG_PATH)" GI_SCANNER_DISABLE_CACHE=yes\
@HAVE_INTROSPECTION_TRUE@ GST_PLUGIN_SYSTEM_PATH_1_0="" GST_PLUGIN_PATH_1_0="" GST_REGISTRY_UPDATE=no \
+@HAVE_INTROSPECTION_TRUE@ CPPFLAGS="$(CPPFLAGS)" CFLAGS="$(CFLAGS)" LDFLAGS="$(LDFLAGS)" CC="$(CC)" PKG_CONFIG="$(PKG_CONFIG)" DLLTOOL="$(DLLTOOL)" \
@HAVE_INTROSPECTION_TRUE@ $(INTROSPECTION_SCANNER) -v --namespace GstInsertBin \
@HAVE_INTROSPECTION_TRUE@ --nsversion=@GST_API_VERSION@ \
@HAVE_INTROSPECTION_TRUE@ --identifier-prefix=Gst \
diff --git a/gst-libs/gst/insertbin/gstinsertbin.c b/gst-libs/gst/insertbin/gstinsertbin.c
index 57f030a..f200c28 100644
--- a/gst-libs/gst/insertbin/gstinsertbin.c
+++ b/gst-libs/gst/insertbin/gstinsertbin.c
@@ -132,13 +132,12 @@
g_type_class_add_private (klass, sizeof (GstInsertBinPrivate));
- gst_element_class_add_pad_template (gstelement_class,
- gst_static_pad_template_get (&gst_insert_bin_src_template));
- gst_element_class_add_pad_template (gstelement_class,
- gst_static_pad_template_get (&gst_insert_bin_sink_template));
+ gst_element_class_add_static_pad_template (gstelement_class,
+ &gst_insert_bin_src_template);
+ gst_element_class_add_static_pad_template (gstelement_class,
+ &gst_insert_bin_sink_template);
gst_element_class_set_static_metadata (gstelement_class, "Insert Bin",
- "Generic/Bin/Filter",
- "Auto-links filter style elements insertally",
+ "Generic/Bin/Filter", "Auto-links filter style elements insertally",
"Olivier Crete <olivier.crete@collabora.com>");
gobject_class->dispose = gst_insert_bin_dispose;
diff --git a/gst-libs/gst/interfaces/Makefile.in b/gst-libs/gst/interfaces/Makefile.in
index f04d68a..b4bc22e 100644
--- a/gst-libs/gst/interfaces/Makefile.in
+++ b/gst-libs/gst/interfaces/Makefile.in
@@ -322,6 +322,8 @@
DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
DSYMUTIL = @DSYMUTIL@
DTLS_CFLAGS = @DTLS_CFLAGS@
DTLS_LIBS = @DTLS_LIBS@
@@ -537,6 +539,8 @@
LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
LIPO = @LIPO@
LN_S = @LN_S@
LOCALEDIR = @LOCALEDIR@
@@ -663,8 +667,6 @@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
SNDIO_LIBS = @SNDIO_LIBS@
@@ -709,6 +711,8 @@
WAYLAND_LIBS = @WAYLAND_LIBS@
WEBP_CFLAGS = @WEBP_CFLAGS@
WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
WGET = @WGET@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
diff --git a/gst-libs/gst/mpegts/Makefile.am b/gst-libs/gst/mpegts/Makefile.am
index cd8b8ad..aeea32e 100644
--- a/gst-libs/gst/mpegts/Makefile.am
+++ b/gst-libs/gst/mpegts/Makefile.am
@@ -65,6 +65,7 @@
GstMpegts-@GST_API_VERSION@.gir: $(INTROSPECTION_SCANNER) libgstmpegts-@GST_API_VERSION@.la
$(AM_V_GEN)PKG_CONFIG_PATH="$(GST_PKG_CONFIG_PATH)" GI_SCANNER_DISABLE_CACHE=yes\
GST_PLUGIN_SYSTEM_PATH_1_0="" GST_PLUGIN_PATH_1_0="" GST_REGISTRY_UPDATE=no \
+ CPPFLAGS="$(CPPFLAGS)" CFLAGS="$(CFLAGS)" LDFLAGS="$(LDFLAGS)" CC="$(CC)" PKG_CONFIG="$(PKG_CONFIG)" DLLTOOL="$(DLLTOOL)" \
$(INTROSPECTION_SCANNER) -v --namespace GstMpegts \
--nsversion=@GST_API_VERSION@ \
--identifier-prefix=GstMpegts \
diff --git a/gst-libs/gst/mpegts/Makefile.in b/gst-libs/gst/mpegts/Makefile.in
index 46c14c4..07d58c9 100644
--- a/gst-libs/gst/mpegts/Makefile.in
+++ b/gst-libs/gst/mpegts/Makefile.in
@@ -330,6 +330,8 @@
DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
DSYMUTIL = @DSYMUTIL@
DTLS_CFLAGS = @DTLS_CFLAGS@
DTLS_LIBS = @DTLS_LIBS@
@@ -545,6 +547,8 @@
LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
LIPO = @LIPO@
LN_S = @LN_S@
LOCALEDIR = @LOCALEDIR@
@@ -671,8 +675,6 @@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
SNDIO_LIBS = @SNDIO_LIBS@
@@ -717,6 +719,8 @@
WAYLAND_LIBS = @WAYLAND_LIBS@
WEBP_CFLAGS = @WEBP_CFLAGS@
WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
WGET = @WGET@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
@@ -1346,6 +1350,7 @@
@HAVE_INTROSPECTION_TRUE@GstMpegts-@GST_API_VERSION@.gir: $(INTROSPECTION_SCANNER) libgstmpegts-@GST_API_VERSION@.la
@HAVE_INTROSPECTION_TRUE@ $(AM_V_GEN)PKG_CONFIG_PATH="$(GST_PKG_CONFIG_PATH)" GI_SCANNER_DISABLE_CACHE=yes\
@HAVE_INTROSPECTION_TRUE@ GST_PLUGIN_SYSTEM_PATH_1_0="" GST_PLUGIN_PATH_1_0="" GST_REGISTRY_UPDATE=no \
+@HAVE_INTROSPECTION_TRUE@ CPPFLAGS="$(CPPFLAGS)" CFLAGS="$(CFLAGS)" LDFLAGS="$(LDFLAGS)" CC="$(CC)" PKG_CONFIG="$(PKG_CONFIG)" DLLTOOL="$(DLLTOOL)" \
@HAVE_INTROSPECTION_TRUE@ $(INTROSPECTION_SCANNER) -v --namespace GstMpegts \
@HAVE_INTROSPECTION_TRUE@ --nsversion=@GST_API_VERSION@ \
@HAVE_INTROSPECTION_TRUE@ --identifier-prefix=GstMpegts \
diff --git a/gst-libs/gst/mpegts/gstmpegtsdescriptor.c b/gst-libs/gst/mpegts/gstmpegtsdescriptor.c
index d4817d2..a49ce2a 100644
--- a/gst-libs/gst/mpegts/gstmpegtsdescriptor.c
+++ b/gst-libs/gst/mpegts/gstmpegtsdescriptor.c
@@ -1040,6 +1040,30 @@
}
/**
+ * gst_mpegts_descriptor_from_iso_639_language:
+ * @language: (transfer none): ISO-639-2 language 3-char code
+ *
+ * Creates a %GST_MTS_DESC_ISO_639_LANGUAGE #GstMpegtsDescriptor with
+ * a single language
+ *
+ * Return: #GstMpegtsDescriptor, %NULL on failure
+ */
+GstMpegtsDescriptor *
+gst_mpegts_descriptor_from_iso_639_language (const gchar * language)
+{
+ GstMpegtsDescriptor *descriptor;
+
+ g_return_val_if_fail (language != NULL, NULL);
+
+ descriptor = _new_descriptor (GST_MTS_DESC_ISO_639_LANGUAGE, 4 + 4); /* a language takes 4 bytes */
+
+ memcpy (descriptor->data + 2, language, 3);
+ descriptor->data[2 + 3] = 0; /* set audio type to undefined */
+
+ return descriptor;
+}
+
+/**
* gst_mpegts_descriptor_parse_logical_channel:
* @descriptor: a %GST_MTS_DESC_DTG_LOGICAL_CHANNEL #GstMpegtsDescriptor
* @res: (out) (transfer none): the #GstMpegtsLogicalChannelDescriptor to fill
diff --git a/gst-libs/gst/mpegts/gstmpegtsdescriptor.h b/gst-libs/gst/mpegts/gstmpegtsdescriptor.h
index af56be0..33d46f5 100644
--- a/gst-libs/gst/mpegts/gstmpegtsdescriptor.h
+++ b/gst-libs/gst/mpegts/gstmpegtsdescriptor.h
@@ -313,6 +313,7 @@
guint idx, gchar **lang,
GstMpegtsIso639AudioType *audio_type);
guint gst_mpegts_descriptor_parse_iso_639_language_nb (const GstMpegtsDescriptor *descriptor);
+GstMpegtsDescriptor * gst_mpegts_descriptor_from_iso_639_language (const gchar * language);
diff --git a/gst-libs/gst/player/Makefile.am b/gst-libs/gst/player/Makefile.am
index 611d1fc..f893375 100644
--- a/gst-libs/gst/player/Makefile.am
+++ b/gst-libs/gst/player/Makefile.am
@@ -57,7 +57,9 @@
gir_sources=$(patsubst %,$(srcdir)/%, $(libgstplayer_@GST_API_VERSION@_la_SOURCES))
GstPlayer-@GST_API_VERSION@.gir: $(INTROSPECTION_SCANNER) libgstplayer-@GST_API_VERSION@.la
- $(AM_V_GEN)PKG_CONFIG_PATH="$(GST_PKG_CONFIG_PATH)" \
+ $(AM_V_GEN)GST_PLUGIN_SYSTEM_PATH_1_0="" GST_PLUGIN_PATH_1_0="" GST_REGISTRY_UPDATE=no GI_SCANNER_DISABLE_CACHE=yes \
+ CPPFLAGS="$(CPPFLAGS)" CFLAGS="$(CFLAGS)" LDFLAGS="$(LDFLAGS)" CC="$(CC)" PKG_CONFIG="$(PKG_CONFIG)" DLLTOOL="$(DLLTOOL)" \
+ PKG_CONFIG_PATH="$(GST_PKG_CONFIG_PATH)" \
$(INTROSPECTION_SCANNER) -v --namespace GstPlayer \
--nsversion=@GST_API_VERSION@ \
--warn-all \
@@ -67,9 +69,12 @@
--c-include "gst/player/player.h" \
--add-include-path=$(top_builddir)/gst-libs \
--add-include-path=`PKG_CONFIG_PATH="$(GST_PKG_CONFIG_PATH)" $(PKG_CONFIG) --variable=girdir gstreamer-1.0` \
+ --add-include-path=`PKG_CONFIG_PATH="$(GST_PKG_CONFIG_PATH)" $(PKG_CONFIG) --variable=girdir gstreamer-base-1.0` \
+ --add-include-path=`PKG_CONFIG_PATH="$(GST_PKG_CONFIG_PATH)" $(PKG_CONFIG) --variable=girdir gstreamer-video-1.0` \
--library-path=$(top_builddir)/gst-libs \
--library=libgstplayer-@GST_API_VERSION@.la \
--include=Gst-@GST_API_VERSION@ \
+ --include=GstVideo-@GST_API_VERSION@ \
--libtool="${LIBTOOL}" \
--pkg gstreamer-@GST_API_VERSION@ \
--pkg gstreamer-audio-@GST_API_VERSION@ \
@@ -97,6 +102,8 @@
--includedir=$(srcdir)/gst-libs \
--includedir=$(builddir)/gst-libs \
--includedir=`PKG_CONFIG_PATH="$(GST_PKG_CONFIG_PATH)" $(PKG_CONFIG) --variable=girdir gstreamer-1.0` \
+ --includedir=`PKG_CONFIG_PATH="$(GST_PKG_CONFIG_PATH)" $(PKG_CONFIG) --variable=girdir gstreamer-base-1.0` \
+ --includedir=`PKG_CONFIG_PATH="$(GST_PKG_CONFIG_PATH)" $(PKG_CONFIG) --variable=girdir gstreamer-video-1.0` \
$(INTROSPECTION_COMPILER_OPTS) $< -o $(@F)
CLEANFILES += $(BUILT_GIRSOURCES) $(typelibs_DATA)
diff --git a/gst-libs/gst/player/Makefile.in b/gst-libs/gst/player/Makefile.in
index 47b6f87..715ffb1 100644
--- a/gst-libs/gst/player/Makefile.in
+++ b/gst-libs/gst/player/Makefile.in
@@ -315,6 +315,8 @@
DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
DSYMUTIL = @DSYMUTIL@
DTLS_CFLAGS = @DTLS_CFLAGS@
DTLS_LIBS = @DTLS_LIBS@
@@ -530,6 +532,8 @@
LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
LIPO = @LIPO@
LN_S = @LN_S@
LOCALEDIR = @LOCALEDIR@
@@ -656,8 +660,6 @@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
SNDIO_LIBS = @SNDIO_LIBS@
@@ -702,6 +704,8 @@
WAYLAND_LIBS = @WAYLAND_LIBS@
WEBP_CFLAGS = @WEBP_CFLAGS@
WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
WGET = @WGET@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
@@ -1293,7 +1297,9 @@
@HAVE_INTROSPECTION_TRUE@GstPlayer-@GST_API_VERSION@.gir: $(INTROSPECTION_SCANNER) libgstplayer-@GST_API_VERSION@.la
-@HAVE_INTROSPECTION_TRUE@ $(AM_V_GEN)PKG_CONFIG_PATH="$(GST_PKG_CONFIG_PATH)" \
+@HAVE_INTROSPECTION_TRUE@ $(AM_V_GEN)GST_PLUGIN_SYSTEM_PATH_1_0="" GST_PLUGIN_PATH_1_0="" GST_REGISTRY_UPDATE=no GI_SCANNER_DISABLE_CACHE=yes \
+@HAVE_INTROSPECTION_TRUE@ CPPFLAGS="$(CPPFLAGS)" CFLAGS="$(CFLAGS)" LDFLAGS="$(LDFLAGS)" CC="$(CC)" PKG_CONFIG="$(PKG_CONFIG)" DLLTOOL="$(DLLTOOL)" \
+@HAVE_INTROSPECTION_TRUE@ PKG_CONFIG_PATH="$(GST_PKG_CONFIG_PATH)" \
@HAVE_INTROSPECTION_TRUE@ $(INTROSPECTION_SCANNER) -v --namespace GstPlayer \
@HAVE_INTROSPECTION_TRUE@ --nsversion=@GST_API_VERSION@ \
@HAVE_INTROSPECTION_TRUE@ --warn-all \
@@ -1303,9 +1309,12 @@
@HAVE_INTROSPECTION_TRUE@ --c-include "gst/player/player.h" \
@HAVE_INTROSPECTION_TRUE@ --add-include-path=$(top_builddir)/gst-libs \
@HAVE_INTROSPECTION_TRUE@ --add-include-path=`PKG_CONFIG_PATH="$(GST_PKG_CONFIG_PATH)" $(PKG_CONFIG) --variable=girdir gstreamer-1.0` \
+@HAVE_INTROSPECTION_TRUE@ --add-include-path=`PKG_CONFIG_PATH="$(GST_PKG_CONFIG_PATH)" $(PKG_CONFIG) --variable=girdir gstreamer-base-1.0` \
+@HAVE_INTROSPECTION_TRUE@ --add-include-path=`PKG_CONFIG_PATH="$(GST_PKG_CONFIG_PATH)" $(PKG_CONFIG) --variable=girdir gstreamer-video-1.0` \
@HAVE_INTROSPECTION_TRUE@ --library-path=$(top_builddir)/gst-libs \
@HAVE_INTROSPECTION_TRUE@ --library=libgstplayer-@GST_API_VERSION@.la \
@HAVE_INTROSPECTION_TRUE@ --include=Gst-@GST_API_VERSION@ \
+@HAVE_INTROSPECTION_TRUE@ --include=GstVideo-@GST_API_VERSION@ \
@HAVE_INTROSPECTION_TRUE@ --libtool="${LIBTOOL}" \
@HAVE_INTROSPECTION_TRUE@ --pkg gstreamer-@GST_API_VERSION@ \
@HAVE_INTROSPECTION_TRUE@ --pkg gstreamer-audio-@GST_API_VERSION@ \
@@ -1324,6 +1333,8 @@
@HAVE_INTROSPECTION_TRUE@ --includedir=$(srcdir)/gst-libs \
@HAVE_INTROSPECTION_TRUE@ --includedir=$(builddir)/gst-libs \
@HAVE_INTROSPECTION_TRUE@ --includedir=`PKG_CONFIG_PATH="$(GST_PKG_CONFIG_PATH)" $(PKG_CONFIG) --variable=girdir gstreamer-1.0` \
+@HAVE_INTROSPECTION_TRUE@ --includedir=`PKG_CONFIG_PATH="$(GST_PKG_CONFIG_PATH)" $(PKG_CONFIG) --variable=girdir gstreamer-base-1.0` \
+@HAVE_INTROSPECTION_TRUE@ --includedir=`PKG_CONFIG_PATH="$(GST_PKG_CONFIG_PATH)" $(PKG_CONFIG) --variable=girdir gstreamer-video-1.0` \
@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/player/gstplayer-media-info-private.h b/gst-libs/gst/player/gstplayer-media-info-private.h
index b8757be..c5f6aad 100644
--- a/gst-libs/gst/player/gstplayer-media-info-private.h
+++ b/gst-libs/gst/player/gstplayer-media-info-private.h
@@ -96,7 +96,7 @@
gchar *uri;
gchar *title;
gchar *container;
- gboolean seekable;
+ gboolean seekable, is_live;
GstTagList *tags;
GstSample *image_sample;
diff --git a/gst-libs/gst/player/gstplayer-media-info.c b/gst-libs/gst/player/gstplayer-media-info.c
index 85a53d4..bba8ea6 100644
--- a/gst-libs/gst/player/gstplayer-media-info.c
+++ b/gst-libs/gst/player/gstplayer-media-info.c
@@ -410,6 +410,7 @@
gst_player_media_info_init (GstPlayerMediaInfo * info)
{
info->duration = -1;
+ info->is_live = FALSE;
info->seekable = FALSE;
}
@@ -558,6 +559,7 @@
info = gst_player_media_info_new (ref->uri);
info->duration = ref->duration;
info->seekable = ref->seekable;
+ info->is_live = ref->is_live;
if (ref->tags)
info->tags = gst_tag_list_ref (ref->tags);
if (ref->title)
@@ -644,6 +646,20 @@
}
/**
+ * gst_player_media_info_is_live:
+ * @info: a #GstPlayerMediaInfo
+ *
+ * Returns: %TRUE if the media is live.
+ */
+gboolean
+gst_player_media_info_is_live (const GstPlayerMediaInfo * info)
+{
+ g_return_val_if_fail (GST_IS_PLAYER_MEDIA_INFO (info), FALSE);
+
+ return info->is_live;
+}
+
+/**
* gst_player_media_info_get_stream_list:
* @info: a #GstPlayerMediaInfo
*
diff --git a/gst-libs/gst/player/gstplayer-media-info.h b/gst-libs/gst/player/gstplayer-media-info.h
index a458b75..7ffd6b4 100644
--- a/gst-libs/gst/player/gstplayer-media-info.h
+++ b/gst-libs/gst/player/gstplayer-media-info.h
@@ -169,6 +169,8 @@
(const GstPlayerMediaInfo *info);
gboolean gst_player_media_info_is_seekable
(const GstPlayerMediaInfo *info);
+gboolean gst_player_media_info_is_live
+ (const GstPlayerMediaInfo *info);
GstClockTime gst_player_media_info_get_duration
(const GstPlayerMediaInfo *info);
GList* gst_player_media_info_get_stream_list
diff --git a/gst-libs/gst/player/gstplayer-video-overlay-video-renderer.c b/gst-libs/gst/player/gstplayer-video-overlay-video-renderer.c
index 72a35e0..7764d43 100644
--- a/gst-libs/gst/player/gstplayer-video-overlay-video-renderer.c
+++ b/gst-libs/gst/player/gstplayer-video-overlay-video-renderer.c
@@ -255,7 +255,7 @@
* Configure a subregion as a video target within the window set by
* gst_player_video_overlay_video_renderer_set_window_handle(). If this is not
* used or not supported the video will fill the area of the window set as the
- * overlay to 100%. By specifying the rectangle, the video can be overlayed to
+ * overlay to 100%. By specifying the rectangle, the video can be overlaid to
* a specific region of that window only. After setting the new rectangle one
* should call gst_player_video_overlay_video_renderer_expose() to force a
* redraw. To unset the region pass -1 for the @width and @height parameters.
diff --git a/gst-libs/gst/player/gstplayer.c b/gst-libs/gst/player/gstplayer.c
index 871ba43..15d7d34 100644
--- a/gst-libs/gst/player/gstplayer.c
+++ b/gst-libs/gst/player/gstplayer.c
@@ -65,6 +65,7 @@
#define DEFAULT_MUTE FALSE
#define DEFAULT_RATE 1.0
#define DEFAULT_POSITION_UPDATE_INTERVAL_MS 100
+#define DEFAULT_AUDIO_VIDEO_OFFSET 0
GQuark
gst_player_error_quark (void)
@@ -95,11 +96,15 @@
PROP_RATE,
PROP_PIPELINE,
PROP_POSITION_UPDATE_INTERVAL,
+ PROP_VIDEO_MULTIVIEW_MODE,
+ PROP_VIDEO_MULTIVIEW_FLAGS,
+ PROP_AUDIO_VIDEO_OFFSET,
PROP_LAST
};
enum
{
+ SIGNAL_URI_LOADED,
SIGNAL_POSITION_UPDATED,
SIGNAL_DURATION_CHANGED,
SIGNAL_STATE_CHANGED,
@@ -161,6 +166,10 @@
GstClockTime last_seek_time; /* Only set from main context */
GSource *seek_source;
GstClockTime seek_position;
+ /* If TRUE, all signals are inhibited except the
+ * state-changed:GST_PLAYER_STATE_STOPPED/PAUSED. This ensures that no signal
+ * is emitted after gst_player_stop/pause() has been called by the user. */
+ gboolean inhibit_sigs;
};
struct _GstPlayerClass
@@ -238,6 +247,7 @@
self->seek_pending = FALSE;
self->seek_position = GST_CLOCK_TIME_NONE;
self->last_seek_time = GST_CLOCK_TIME_NONE;
+ self->inhibit_sigs = FALSE;
GST_TRACE_OBJECT (self, "Initialized");
}
@@ -325,8 +335,33 @@
0, 10000, DEFAULT_POSITION_UPDATE_INTERVAL_MS,
G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS);
+ param_specs[PROP_VIDEO_MULTIVIEW_MODE] =
+ g_param_spec_enum ("video-multiview-mode",
+ "Multiview Mode Override",
+ "Re-interpret a video stream as one of several frame-packed stereoscopic modes.",
+ GST_TYPE_VIDEO_MULTIVIEW_FRAME_PACKING,
+ GST_VIDEO_MULTIVIEW_FRAME_PACKING_NONE,
+ G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS);
+
+ param_specs[PROP_VIDEO_MULTIVIEW_FLAGS] =
+ g_param_spec_flags ("video-multiview-flags",
+ "Multiview Flags Override",
+ "Override details of the multiview frame layout",
+ GST_TYPE_VIDEO_MULTIVIEW_FLAGS, GST_VIDEO_MULTIVIEW_FLAGS_NONE,
+ G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS);
+
+ param_specs[PROP_AUDIO_VIDEO_OFFSET] =
+ g_param_spec_int64 ("audio-video-offset", "Audio Video Offset",
+ "The synchronisation offset between audio and video in nanoseconds",
+ G_MININT64, G_MAXINT64, 0, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS);
+
g_object_class_install_properties (gobject_class, PROP_LAST, param_specs);
+ signals[SIGNAL_URI_LOADED] =
+ g_signal_new ("uri-loaded", G_TYPE_FROM_CLASS (klass),
+ G_SIGNAL_RUN_LAST | G_SIGNAL_NO_RECURSE | G_SIGNAL_NO_HOOKS, 0, NULL,
+ NULL, NULL, G_TYPE_NONE, 1, G_TYPE_STRING);
+
signals[SIGNAL_POSITION_UPDATED] =
g_signal_new ("position-updated", G_TYPE_FROM_CLASS (klass),
G_SIGNAL_RUN_LAST | G_SIGNAL_NO_RECURSE | G_SIGNAL_NO_HOOKS, 0, NULL,
@@ -450,6 +485,28 @@
G_OBJECT_CLASS (parent_class)->constructed (object);
}
+typedef struct
+{
+ GstPlayer *player;
+ gchar *uri;
+} UriLoadedSignalData;
+
+static void
+uri_loaded_dispatch (gpointer user_data)
+{
+ UriLoadedSignalData *data = user_data;
+
+ g_signal_emit (data->player, signals[SIGNAL_URI_LOADED], 0, data->uri);
+}
+
+static void
+uri_loaded_signal_data_free (UriLoadedSignalData * data)
+{
+ g_object_unref (data->player);
+ g_free (data->uri);
+ g_free (data);
+}
+
static gboolean
gst_player_set_uri_internal (gpointer user_data)
{
@@ -463,6 +520,17 @@
g_object_set (self->playbin, "uri", self->uri, NULL);
+ if (g_signal_handler_find (self, G_SIGNAL_MATCH_ID,
+ signals[SIGNAL_URI_LOADED], 0, NULL, NULL, NULL) != 0) {
+ UriLoadedSignalData *data = g_new (UriLoadedSignalData, 1);
+
+ data->player = g_object_ref (self);
+ data->uri = g_strdup (self->uri);
+ gst_player_signal_dispatcher_dispatch (self->signal_dispatcher, self,
+ uri_loaded_dispatch, data,
+ (GDestroyNotify) uri_loaded_signal_data_free);
+ }
+
/* if have suburi from previous playback then free it */
if (self->suburi) {
g_free (self->suburi);
@@ -570,6 +638,21 @@
gst_player_set_position_update_interval_internal (self);
break;
+ case PROP_VIDEO_MULTIVIEW_MODE:
+ GST_DEBUG_OBJECT (self, "Set multiview mode=%u",
+ g_value_get_enum (value));
+ g_object_set_property (G_OBJECT (self->playbin), "video-multiview-mode",
+ value);
+ break;
+ case PROP_VIDEO_MULTIVIEW_FLAGS:
+ GST_DEBUG_OBJECT (self, "Set multiview flags=%x",
+ g_value_get_flags (value));
+ g_object_set_property (G_OBJECT (self->playbin), "video-multiview-flags",
+ value);
+ break;
+ case PROP_AUDIO_VIDEO_OFFSET:
+ g_object_set_property (G_OBJECT (self->playbin), "av-offset", value);
+ break;
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
break;
@@ -662,6 +745,23 @@
g_value_set_uint (value, gst_player_get_position_update_interval (self));
g_mutex_unlock (&self->lock);
break;
+ case PROP_VIDEO_MULTIVIEW_MODE:{
+ g_object_get_property (G_OBJECT (self->playbin), "video-multiview-mode",
+ value);
+ GST_TRACE_OBJECT (self, "Return multiview mode=%d",
+ g_value_get_enum (value));
+ break;
+ }
+ case PROP_VIDEO_MULTIVIEW_FLAGS:{
+ g_object_get_property (G_OBJECT (self->playbin), "video-multiview-flags",
+ value);
+ GST_TRACE_OBJECT (self, "Return multiview flags=%x",
+ g_value_get_flags (value));
+ break;
+ }
+ case PROP_AUDIO_VIDEO_OFFSET:
+ g_object_get_property (G_OBJECT (self->playbin), "av-offset", value);
+ break;
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
break;
@@ -693,6 +793,10 @@
{
StateChangedSignalData *data = user_data;
+ if (data->player->inhibit_sigs && data->state != GST_PLAYER_STATE_STOPPED
+ && data->state != GST_PLAYER_STATE_PAUSED)
+ return;
+
g_signal_emit (data->player, signals[SIGNAL_STATE_CHANGED], 0, data->state);
}
@@ -737,6 +841,9 @@
{
PositionUpdatedSignalData *data = user_data;
+ if (data->player->inhibit_sigs)
+ return;
+
if (data->player->target_state >= GST_STATE_PAUSED) {
g_signal_emit (data->player, signals[SIGNAL_POSITION_UPDATED], 0,
data->position);
@@ -853,6 +960,9 @@
{
ErrorSignalData *data = user_data;
+ if (data->player->inhibit_sigs)
+ return;
+
g_signal_emit (data->player, signals[SIGNAL_ERROR], 0, data->err);
}
@@ -939,6 +1049,9 @@
{
WarningSignalData *data = user_data;
+ if (data->player->inhibit_sigs)
+ return;
+
g_signal_emit (data->player, signals[SIGNAL_WARNING], 0, data->err);
}
@@ -1051,7 +1164,12 @@
static void
eos_dispatch (gpointer user_data)
{
- g_signal_emit (user_data, signals[SIGNAL_END_OF_STREAM], 0);
+ GstPlayer *player = user_data;
+
+ if (player->inhibit_sigs)
+ return;
+
+ g_signal_emit (player, signals[SIGNAL_END_OF_STREAM], 0);
}
static void
@@ -1086,6 +1204,9 @@
{
BufferingSignalData *data = user_data;
+ if (data->player->inhibit_sigs)
+ return;
+
if (data->player->target_state >= GST_STATE_PAUSED) {
g_signal_emit (data->player, signals[SIGNAL_BUFFERING], 0, data->percent);
}
@@ -1201,6 +1322,9 @@
{
VideoDimensionsChangedSignalData *data = user_data;
+ if (data->player->inhibit_sigs)
+ return;
+
if (data->player->target_state >= GST_STATE_PAUSED) {
g_signal_emit (data->player, signals[SIGNAL_VIDEO_DIMENSIONS_CHANGED], 0,
data->width, data->height);
@@ -1286,6 +1410,9 @@
{
DurationChangedSignalData *data = user_data;
+ if (data->player->inhibit_sigs)
+ return;
+
if (data->player->target_state >= GST_STATE_PAUSED) {
g_signal_emit (data->player, signals[SIGNAL_DURATION_CHANGED], 0,
data->duration);
@@ -1330,6 +1457,9 @@
{
SeekDoneSignalData *data = user_data;
+ if (data->player->inhibit_sigs)
+ return;
+
g_signal_emit (data->player, signals[SIGNAL_SEEK_DONE], 0, data->position);
}
@@ -1672,6 +1802,9 @@
{
MediaInfoUpdatedSignalData *data = user_data;
+ if (data->player->inhibit_sigs)
+ return;
+
if (data->player->target_state >= GST_STATE_PAUSED) {
g_signal_emit (data->player, signals[SIGNAL_MEDIA_INFO_UPDATED], 0,
data->info);
@@ -2235,6 +2368,7 @@
media_info = gst_player_media_info_new (self->uri);
media_info->duration = gst_player_get_duration (self);
media_info->tags = self->global_tags;
+ media_info->is_live = self->is_live;
self->global_tags = NULL;
query = gst_query_new_seeking (GST_FORMAT_TIME);
@@ -2256,10 +2390,10 @@
media_info->image_sample = get_from_tags (self, media_info, get_cover_sample);
GST_DEBUG_OBJECT (self, "uri: %s title: %s duration: %" GST_TIME_FORMAT
- " seekable: %s container: %s image_sample %p",
+ " seekable: %s live: %s container: %s image_sample %p",
media_info->uri, media_info->title, GST_TIME_ARGS (media_info->duration),
- media_info->seekable ? "yes" : "no", media_info->container,
- media_info->image_sample);
+ media_info->seekable ? "yes" : "no", media_info->is_live ? "yes" : "no",
+ media_info->container, media_info->image_sample);
GST_DEBUG_OBJECT (self, "end");
return media_info;
@@ -2309,8 +2443,13 @@
static void
volume_changed_dispatch (gpointer user_data)
{
- g_signal_emit (user_data, signals[SIGNAL_VOLUME_CHANGED], 0);
- g_object_notify_by_pspec (G_OBJECT (user_data), param_specs[PROP_VOLUME]);
+ GstPlayer *player = user_data;
+
+ if (player->inhibit_sigs)
+ return;
+
+ g_signal_emit (player, signals[SIGNAL_VOLUME_CHANGED], 0);
+ g_object_notify_by_pspec (G_OBJECT (player), param_specs[PROP_VOLUME]);
}
static void
@@ -2328,8 +2467,13 @@
static void
mute_changed_dispatch (gpointer user_data)
{
- g_signal_emit (user_data, signals[SIGNAL_MUTE_CHANGED], 0);
- g_object_notify_by_pspec (G_OBJECT (user_data), param_specs[PROP_MUTE]);
+ GstPlayer *player = user_data;
+
+ if (player->inhibit_sigs)
+ return;
+
+ g_signal_emit (player, signals[SIGNAL_MUTE_CHANGED], 0);
+ g_object_notify_by_pspec (G_OBJECT (player), param_specs[PROP_MUTE]);
}
static void
@@ -2596,6 +2740,10 @@
{
g_return_if_fail (GST_IS_PLAYER (self));
+ g_mutex_lock (&self->lock);
+ self->inhibit_sigs = FALSE;
+ g_mutex_unlock (&self->lock);
+
g_main_context_invoke_full (self->context, G_PRIORITY_DEFAULT,
gst_player_play_internal, self, NULL);
}
@@ -2663,6 +2811,10 @@
{
g_return_if_fail (GST_IS_PLAYER (self));
+ g_mutex_lock (&self->lock);
+ self->inhibit_sigs = FALSE;
+ g_mutex_unlock (&self->lock);
+
g_main_context_invoke_full (self->context, G_PRIORITY_DEFAULT,
gst_player_pause_internal, self, NULL);
}
@@ -2723,6 +2875,10 @@
{
g_return_if_fail (GST_IS_PLAYER (self));
+ g_mutex_lock (&self->lock);
+ self->inhibit_sigs = TRUE;
+ g_mutex_unlock (&self->lock);
+
g_main_context_invoke_full (self->context, G_PRIORITY_DEFAULT,
gst_player_stop_internal, self, NULL);
}
@@ -3656,6 +3812,127 @@
(gdouble) channel->min_value);
}
+/**
+ * gst_player_get_multiview_mode:
+ * @player: #GstPlayer instance
+ *
+ * Retrieve the current value of the indicated @type.
+ *
+ * Returns: The current value of @type, Default: -1 "none"
+ *
+ * Since: 1.10
+ */
+GstVideoMultiviewMode
+gst_player_get_multiview_mode (GstPlayer * self)
+{
+ GstVideoMultiviewMode val = GST_VIDEO_MULTIVIEW_MODE_NONE;
+
+ g_return_val_if_fail (GST_IS_PLAYER (self), GST_VIDEO_MULTIVIEW_MODE_NONE);
+
+ g_object_get (self, "video-multiview-mode", &val, NULL);
+
+ return val;
+}
+
+/**
+ * gst_player_set_multiview_mode:
+ * @player: #GstPlayer instance
+ * @mode: The new value for the @type
+ *
+ * Sets the current value of the indicated mode @type to the passed
+ * value.
+ *
+ * Since: 1.10
+ */
+void
+gst_player_set_multiview_mode (GstPlayer * self, GstVideoMultiviewMode mode)
+{
+ g_return_if_fail (GST_IS_PLAYER (self));
+
+ g_object_set (self, "video-multiview-mode", mode, NULL);
+}
+
+/**
+ * gst_player_get_multiview_flags:
+ * @player: #GstPlayer instance
+ *
+ * Retrieve the current value of the indicated @type.
+ *
+ * Returns: The current value of @type, Default: 0x00000000 "none
+ *
+ * Since: 1.10
+ */
+GstVideoMultiviewFlags
+gst_player_get_multiview_flags (GstPlayer * self)
+{
+ GstVideoMultiviewFlags val = GST_VIDEO_MULTIVIEW_FLAGS_NONE;
+
+ g_return_val_if_fail (GST_IS_PLAYER (self), val);
+
+ g_object_get (self, "video-multiview-flags", &val, NULL);
+
+ return val;
+}
+
+/**
+ * gst_player_set_multiview_flags:
+ * @player: #GstPlayer instance
+ * @flags: The new value for the @type
+ *
+ * Sets the current value of the indicated mode @type to the passed
+ * value.
+ *
+ * Since: 1.10
+ */
+void
+gst_player_set_multiview_flags (GstPlayer * self, GstVideoMultiviewFlags flags)
+{
+ g_return_if_fail (GST_IS_PLAYER (self));
+
+ g_object_set (self, "video-multiview-flags", flags, NULL);
+}
+
+/**
+ * gst_player_get_audio_video_offset:
+ * @player: #GstPlayer instance
+ *
+ * Retrieve the current value of audio-video-offset property
+ *
+ * Returns: The current value of audio-video-offset in nanoseconds
+ *
+ * Since 1.10
+ */
+gint64
+gst_player_get_audio_video_offset (GstPlayer * self)
+{
+ gint64 val = 0;
+
+ g_return_val_if_fail (GST_IS_PLAYER (self), DEFAULT_AUDIO_VIDEO_OFFSET);
+
+ g_object_get (self, "audio-video-offset", &val, NULL);
+
+ return val;
+}
+
+/**
+ * gst_player_set_audio_video_offset:
+ * @player: #GstPlayer instance
+ * @offset: #gint64 in nanoseconds
+ *
+ * Sets audio-video-offset property by value of @offset
+ *
+ * Returns: void
+ *
+ * Since 1.10
+ */
+void
+gst_player_set_audio_video_offset (GstPlayer * self, gint64 offset)
+{
+ g_return_if_fail (GST_IS_PLAYER (self));
+
+ g_object_set (self, "audio-video-offset", offset, NULL);
+}
+
#define C_ENUM(v) ((gint) v)
#define C_FLAGS(v) ((guint) v)
diff --git a/gst-libs/gst/player/gstplayer.h b/gst-libs/gst/player/gstplayer.h
index 3391b0f..0ab4233 100644
--- a/gst-libs/gst/player/gstplayer.h
+++ b/gst-libs/gst/player/gstplayer.h
@@ -22,6 +22,7 @@
#define __GST_PLAYER_H__
#include <gst/gst.h>
+#include <gst/video/video.h>
#include <gst/player/gstplayer-types.h>
#include <gst/player/gstplayer-signal-dispatcher.h>
#include <gst/player/gstplayer-video-renderer.h>
@@ -178,6 +179,19 @@
gdouble gst_player_get_color_balance (GstPlayer * player,
GstPlayerColorBalanceType type);
+
+GstVideoMultiviewMode gst_player_get_multiview_mode (GstPlayer * player);
+void gst_player_set_multiview_mode (GstPlayer * player,
+ GstVideoMultiviewMode mode);
+
+GstVideoMultiviewFlags gst_player_get_multiview_flags (GstPlayer * player);
+void gst_player_set_multiview_flags (GstPlayer * player,
+ GstVideoMultiviewFlags flags);
+
+gint64 gst_player_get_audio_video_offset (GstPlayer * player);
+void gst_player_set_audio_video_offset (GstPlayer * player,
+ gint64 offset);
+
G_END_DECLS
#endif /* __GST_PLAYER_H__ */
diff --git a/gst-libs/gst/uridownloader/Makefile.in b/gst-libs/gst/uridownloader/Makefile.in
index daf72b3..320d227 100644
--- a/gst-libs/gst/uridownloader/Makefile.in
+++ b/gst-libs/gst/uridownloader/Makefile.in
@@ -290,6 +290,8 @@
DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
DSYMUTIL = @DSYMUTIL@
DTLS_CFLAGS = @DTLS_CFLAGS@
DTLS_LIBS = @DTLS_LIBS@
@@ -505,6 +507,8 @@
LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
LIPO = @LIPO@
LN_S = @LN_S@
LOCALEDIR = @LOCALEDIR@
@@ -631,8 +635,6 @@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
SNDIO_LIBS = @SNDIO_LIBS@
@@ -677,6 +679,8 @@
WAYLAND_LIBS = @WAYLAND_LIBS@
WEBP_CFLAGS = @WEBP_CFLAGS@
WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
WGET = @WGET@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
diff --git a/gst-libs/gst/uridownloader/gsturidownloader.c b/gst-libs/gst/uridownloader/gsturidownloader.c
index 72e5e79..47b6f29 100644
--- a/gst-libs/gst/uridownloader/gsturidownloader.c
+++ b/gst-libs/gst/uridownloader/gsturidownloader.c
@@ -58,6 +58,10 @@
static GstBusSyncReply gst_uri_downloader_bus_handler (GstBus * bus,
GstMessage * message, gpointer data);
+static gboolean gst_uri_downloader_ensure_src (GstUriDownloader * downloader,
+ const gchar * uri);
+static void gst_uri_downloader_destroy_src (GstUriDownloader * downloader);
+
static GstStaticPadTemplate sinkpadtemplate = GST_STATIC_PAD_TEMPLATE ("sink",
GST_PAD_SINK,
GST_PAD_ALWAYS,
@@ -112,11 +116,7 @@
{
GstUriDownloader *downloader = GST_URI_DOWNLOADER (object);
- if (downloader->priv->urisrc != NULL) {
- gst_element_set_state (downloader->priv->urisrc, GST_STATE_NULL);
- gst_object_unref (downloader->priv->urisrc);
- downloader->priv->urisrc = NULL;
- }
+ gst_uri_downloader_destroy_src (downloader);
if (downloader->priv->bus != NULL) {
gst_object_unref (downloader->priv->bus);
@@ -347,16 +347,8 @@
}
static gboolean
-gst_uri_downloader_set_uri (GstUriDownloader * downloader, const gchar * uri,
- const gchar * referer, gboolean compress, gboolean refresh,
- gboolean allow_cache)
+gst_uri_downloader_ensure_src (GstUriDownloader * downloader, const gchar * uri)
{
- GstPad *pad;
- GObjectClass *gobject_class;
-
- if (!gst_uri_is_valid (uri))
- return FALSE;
-
if (downloader->priv->urisrc) {
gchar *old_protocol, *new_protocol;
gchar *old_uri;
@@ -367,22 +359,18 @@
new_protocol = gst_uri_get_protocol (uri);
if (!g_str_equal (old_protocol, new_protocol)) {
- gst_element_set_state (downloader->priv->urisrc, GST_STATE_NULL);
- gst_object_unref (downloader->priv->urisrc);
- downloader->priv->urisrc = NULL;
+ gst_uri_downloader_destroy_src (downloader);
GST_DEBUG_OBJECT (downloader, "Can't re-use old source element");
} else {
GError *err = NULL;
GST_DEBUG_OBJECT (downloader, "Re-using old source element");
- if (!gst_uri_handler_set_uri (GST_URI_HANDLER (downloader->priv->urisrc),
- uri, &err)) {
- GST_DEBUG_OBJECT (downloader, "Failed to re-use old source element: %s",
- err->message);
+ if (!gst_uri_handler_set_uri
+ (GST_URI_HANDLER (downloader->priv->urisrc), uri, &err)) {
+ GST_DEBUG_OBJECT (downloader,
+ "Failed to re-use old source element: %s", err->message);
g_clear_error (&err);
- gst_element_set_state (downloader->priv->urisrc, GST_STATE_NULL);
- gst_object_unref (downloader->priv->urisrc);
- downloader->priv->urisrc = NULL;
+ gst_uri_downloader_destroy_src (downloader);
}
}
g_free (old_uri);
@@ -395,10 +383,43 @@
uri);
downloader->priv->urisrc =
gst_element_make_from_uri (GST_URI_SRC, uri, NULL, NULL);
- if (!downloader->priv->urisrc)
- return FALSE;
+ if (downloader->priv->urisrc) {
+ /* gst_element_make_from_uri returns a floating reference
+ * and we are not going to transfer the ownership, so we
+ * should take it.
+ */
+ gst_object_ref_sink (downloader->priv->urisrc);
+ }
}
+ return downloader->priv->urisrc != NULL;
+}
+
+static void
+gst_uri_downloader_destroy_src (GstUriDownloader * downloader)
+{
+ if (!downloader->priv->urisrc)
+ return;
+
+ gst_element_set_state (downloader->priv->urisrc, GST_STATE_NULL);
+ gst_object_unref (downloader->priv->urisrc);
+ downloader->priv->urisrc = NULL;
+}
+
+static gboolean
+gst_uri_downloader_set_uri (GstUriDownloader * downloader, const gchar * uri,
+ const gchar * referer, gboolean compress,
+ gboolean refresh, gboolean allow_cache)
+{
+ GstPad *pad;
+ GObjectClass *gobject_class;
+
+ if (!gst_uri_is_valid (uri))
+ return FALSE;
+
+ if (!gst_uri_downloader_ensure_src (downloader, uri))
+ return FALSE;
+
gobject_class = G_OBJECT_GET_CLASS (downloader->priv->urisrc);
if (g_object_class_find_property (gobject_class, "compress"))
g_object_set (downloader->priv->urisrc, "compress", compress, NULL);
diff --git a/gst-libs/gst/video/Makefile.in b/gst-libs/gst/video/Makefile.in
index 6fb5acd..46b029b 100644
--- a/gst-libs/gst/video/Makefile.in
+++ b/gst-libs/gst/video/Makefile.in
@@ -294,6 +294,8 @@
DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
DSYMUTIL = @DSYMUTIL@
DTLS_CFLAGS = @DTLS_CFLAGS@
DTLS_LIBS = @DTLS_LIBS@
@@ -509,6 +511,8 @@
LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
LIPO = @LIPO@
LN_S = @LN_S@
LOCALEDIR = @LOCALEDIR@
@@ -635,8 +639,6 @@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
SNDIO_LIBS = @SNDIO_LIBS@
@@ -681,6 +683,8 @@
WAYLAND_LIBS = @WAYLAND_LIBS@
WEBP_CFLAGS = @WEBP_CFLAGS@
WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
WGET = @WGET@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
diff --git a/gst-libs/gst/video/gstvideoaggregator.c b/gst-libs/gst/video/gstvideoaggregator.c
index 1254e2e..9046252 100644
--- a/gst-libs/gst/video/gstvideoaggregator.c
+++ b/gst-libs/gst/video/gstvideoaggregator.c
@@ -43,11 +43,11 @@
#include "gstvideoaggregator.h"
#include "gstvideoaggregatorpad.h"
-GST_DEBUG_CATEGORY_STATIC (gst_videoaggregator_debug);
-#define GST_CAT_DEFAULT gst_videoaggregator_debug
+GST_DEBUG_CATEGORY_STATIC (gst_video_aggregator_debug);
+#define GST_CAT_DEFAULT gst_video_aggregator_debug
/* Needed prototypes */
-static void gst_videoaggregator_reset_qos (GstVideoAggregator * vagg);
+static void gst_video_aggregator_reset_qos (GstVideoAggregator * vagg);
/****************************************
* GstVideoAggregatorPad implementation *
@@ -77,11 +77,11 @@
};
-G_DEFINE_TYPE (GstVideoAggregatorPad, gst_videoaggregator_pad,
+G_DEFINE_TYPE (GstVideoAggregatorPad, gst_video_aggregator_pad,
GST_TYPE_AGGREGATOR_PAD);
static void
-gst_videoaggregator_pad_get_property (GObject * object, guint prop_id,
+gst_video_aggregator_pad_get_property (GObject * object, guint prop_id,
GValue * value, GParamSpec * pspec)
{
GstVideoAggregatorPad *pad = GST_VIDEO_AGGREGATOR_PAD (object);
@@ -107,7 +107,7 @@
}
static void
-gst_videoaggregator_pad_set_property (GObject * object, guint prop_id,
+gst_video_aggregator_pad_set_property (GObject * object, guint prop_id,
const GValue * value, GParamSpec * pspec)
{
GstVideoAggregatorPad *pad = GST_VIDEO_AGGREGATOR_PAD (object);
@@ -139,7 +139,7 @@
GstVideoAggregator *vagg = GST_VIDEO_AGGREGATOR (aggregator);
GstVideoAggregatorPad *pad = GST_VIDEO_AGGREGATOR_PAD (aggpad);
- gst_videoaggregator_reset_qos (vagg);
+ gst_video_aggregator_reset_qos (vagg);
gst_buffer_replace (&pad->buffer, NULL);
pad->priv->start_time = -1;
pad->priv->end_time = -1;
@@ -217,7 +217,7 @@
}
static void
-gst_videoaggregator_pad_finalize (GObject * o)
+gst_video_aggregator_pad_finalize (GObject * o)
{
GstVideoAggregatorPad *vaggpad = GST_VIDEO_AGGREGATOR_PAD (o);
@@ -225,7 +225,7 @@
gst_video_converter_free (vaggpad->priv->convert);
vaggpad->priv->convert = NULL;
- G_OBJECT_CLASS (gst_videoaggregator_pad_parent_class)->finalize (o);
+ G_OBJECT_CLASS (gst_video_aggregator_pad_parent_class)->finalize (o);
}
static gboolean
@@ -300,14 +300,14 @@
}
static void
-gst_videoaggregator_pad_class_init (GstVideoAggregatorPadClass * klass)
+gst_video_aggregator_pad_class_init (GstVideoAggregatorPadClass * klass)
{
GObjectClass *gobject_class = (GObjectClass *) klass;
GstAggregatorPadClass *aggpadclass = (GstAggregatorPadClass *) klass;
- gobject_class->set_property = gst_videoaggregator_pad_set_property;
- gobject_class->get_property = gst_videoaggregator_pad_get_property;
- gobject_class->finalize = gst_videoaggregator_pad_finalize;
+ gobject_class->set_property = gst_video_aggregator_pad_set_property;
+ gobject_class->get_property = gst_video_aggregator_pad_get_property;
+ gobject_class->finalize = gst_video_aggregator_pad_finalize;
g_object_class_install_property (gobject_class, PROP_PAD_ZORDER,
g_param_spec_uint ("zorder", "Z-Order", "Z Order of the picture",
@@ -329,7 +329,7 @@
}
static void
-gst_videoaggregator_pad_init (GstVideoAggregatorPad * vaggpad)
+gst_video_aggregator_pad_init (GstVideoAggregatorPad * vaggpad)
{
vaggpad->priv =
G_TYPE_INSTANCE_GET_PRIVATE (vaggpad, GST_TYPE_VIDEO_AGGREGATOR_PAD,
@@ -347,8 +347,8 @@
* GstChildProxy implementation *
*********************************/
static GObject *
-gst_videoaggregator_child_proxy_get_child_by_index (GstChildProxy * child_proxy,
- guint index)
+gst_video_aggregator_child_proxy_get_child_by_index (GstChildProxy *
+ child_proxy, guint index)
{
GObject *obj;
GstVideoAggregator *vagg = GST_VIDEO_AGGREGATOR (child_proxy);
@@ -362,7 +362,8 @@
}
static guint
-gst_videoaggregator_child_proxy_get_children_count (GstChildProxy * child_proxy)
+gst_video_aggregator_child_proxy_get_children_count (GstChildProxy *
+ child_proxy)
{
guint count = 0;
@@ -376,15 +377,15 @@
}
static void
-gst_videoaggregator_child_proxy_init (gpointer g_iface, gpointer iface_data)
+gst_video_aggregator_child_proxy_init (gpointer g_iface, gpointer iface_data)
{
GstChildProxyInterface *iface = g_iface;
GST_INFO ("intializing child proxy interface");
iface->get_child_by_index =
- gst_videoaggregator_child_proxy_get_child_by_index;
+ gst_video_aggregator_child_proxy_get_child_by_index;
iface->get_children_count =
- gst_videoaggregator_child_proxy_get_children_count;
+ gst_video_aggregator_child_proxy_get_children_count;
}
/**************************************
@@ -434,13 +435,13 @@
* videoaggregator class in the _init to be able to set
* the sink pad non-alpha caps. Using the G_DEFINE_TYPE there
* seems to be no way of getting the real class being initialized */
-static void gst_videoaggregator_init (GstVideoAggregator * self,
+static void gst_video_aggregator_init (GstVideoAggregator * self,
GstVideoAggregatorClass * klass);
-static void gst_videoaggregator_class_init (GstVideoAggregatorClass * klass);
-static gpointer gst_videoaggregator_parent_class = NULL;
+static void gst_video_aggregator_class_init (GstVideoAggregatorClass * klass);
+static gpointer gst_video_aggregator_parent_class = NULL;
GType
-gst_videoaggregator_get_type (void)
+gst_video_aggregator_get_type (void)
{
static volatile gsize g_define_type_id_volatile = 0;
@@ -448,13 +449,13 @@
GType g_define_type_id = g_type_register_static_simple (GST_TYPE_AGGREGATOR,
g_intern_static_string ("GstVideoAggregator"),
sizeof (GstVideoAggregatorClass),
- (GClassInitFunc) gst_videoaggregator_class_init,
+ (GClassInitFunc) gst_video_aggregator_class_init,
sizeof (GstVideoAggregator),
- (GInstanceInitFunc) gst_videoaggregator_init,
+ (GInstanceInitFunc) gst_video_aggregator_init,
(GTypeFlags) G_TYPE_FLAG_ABSTRACT);
{
G_IMPLEMENT_INTERFACE (GST_TYPE_CHILD_PROXY,
- gst_videoaggregator_child_proxy_init);
+ gst_video_aggregator_child_proxy_init);
}
g_once_init_leave (&g_define_type_id_volatile, g_define_type_id);
}
@@ -462,7 +463,7 @@
}
static void
-gst_videoaggreagator_find_best_format (GstVideoAggregator * vagg,
+gst_video_aggregator_find_best_format (GstVideoAggregator * vagg,
GstCaps * downstream_caps, GstVideoInfo * best_info,
gboolean * at_least_one_alpha)
{
@@ -534,7 +535,7 @@
/* WITH GST_VIDEO_AGGREGATOR_LOCK TAKEN */
static gboolean
-gst_videoaggregator_src_setcaps (GstVideoAggregator * vagg, GstCaps * caps)
+gst_video_aggregator_src_setcaps (GstVideoAggregator * vagg, GstCaps * caps)
{
GstAggregator *agg = GST_AGGREGATOR (vagg);
gboolean ret = FALSE;
@@ -558,7 +559,7 @@
GST_DEBUG_OBJECT (vagg,
"Resetting frame counter because of framerate change");
}
- gst_videoaggregator_reset_qos (vagg);
+ gst_video_aggregator_reset_qos (vagg);
}
vagg->info = info;
@@ -583,7 +584,7 @@
}
static GstCaps *
-gst_videoaggregator_default_fixate_caps (GstVideoAggregator * vagg,
+gst_video_aggregator_default_fixate_caps (GstVideoAggregator * vagg,
GstCaps * caps)
{
gint best_width = -1, best_height = -1;
@@ -644,7 +645,7 @@
}
static GstCaps *
-gst_videoaggregator_default_update_caps (GstVideoAggregator * vagg,
+gst_video_aggregator_default_update_caps (GstVideoAggregator * vagg,
GstCaps * caps, GstCaps * filter)
{
GstVideoAggregatorClass *vagg_klass = GST_VIDEO_AGGREGATOR_GET_CLASS (vagg);
@@ -680,9 +681,10 @@
ret = gst_caps_merge (best_format_caps, gst_caps_ref (caps));
if (filter) {
- ret = gst_caps_intersect (ret, filter);
- } else {
- gst_caps_ref (ret);
+ GstCaps *tmp;
+ tmp = gst_caps_intersect (ret, filter);
+ gst_caps_unref (ret);
+ ret = tmp;
}
return ret;
@@ -690,7 +692,7 @@
/* WITH GST_VIDEO_AGGREGATOR_LOCK TAKEN */
static gboolean
-gst_videoaggregator_update_src_caps (GstVideoAggregator * vagg)
+gst_video_aggregator_update_src_caps (GstVideoAggregator * vagg)
{
GstVideoAggregatorClass *vagg_klass = GST_VIDEO_AGGREGATOR_GET_CLASS (vagg);
GstVideoAggregatorPadClass *vaggpad_klass = g_type_class_peek
@@ -800,7 +802,7 @@
}
}
- if (gst_videoaggregator_src_setcaps (vagg, caps)) {
+ if (gst_video_aggregator_src_setcaps (vagg, caps)) {
if (vagg_klass->negotiated_caps)
ret =
GST_VIDEO_AGGREGATOR_GET_CLASS (vagg)->negotiated_caps (vagg, caps);
@@ -820,7 +822,27 @@
}
static gboolean
-gst_videoaggregator_pad_sink_setcaps (GstPad * pad, GstObject * parent,
+gst_video_aggregator_get_sinkpads_interlace_mode (GstVideoAggregator * vagg,
+ GstVideoAggregatorPad * skip_pad, GstVideoInterlaceMode * mode)
+{
+ GList *walk;
+
+ for (walk = GST_ELEMENT (vagg)->sinkpads; walk; walk = g_list_next (walk)) {
+ GstVideoAggregatorPad *vaggpad = walk->data;
+
+ if (skip_pad && vaggpad == skip_pad)
+ continue;
+ if (vaggpad->info.finfo
+ && GST_VIDEO_INFO_FORMAT (&vaggpad->info) != GST_VIDEO_FORMAT_UNKNOWN) {
+ *mode = GST_VIDEO_INFO_INTERLACE_MODE (&vaggpad->info);
+ return TRUE;
+ }
+ }
+ return FALSE;
+}
+
+static gboolean
+gst_video_aggregator_pad_sink_setcaps (GstPad * pad, GstObject * parent,
GstCaps * caps)
{
GstVideoAggregator *vagg;
@@ -839,14 +861,28 @@
}
GST_VIDEO_AGGREGATOR_LOCK (vagg);
- if (GST_VIDEO_INFO_FORMAT (&vagg->info) != GST_VIDEO_FORMAT_UNKNOWN) {
- if (GST_VIDEO_INFO_INTERLACE_MODE (&vagg->info) !=
- GST_VIDEO_INFO_INTERLACE_MODE (&info)) {
- GST_ERROR_OBJECT (pad,
- "got input caps %" GST_PTR_FORMAT ", but " "current caps are %"
- GST_PTR_FORMAT, caps, vagg->priv->current_caps);
- GST_VIDEO_AGGREGATOR_UNLOCK (vagg);
- return FALSE;
+ {
+ GstVideoInterlaceMode pads_mode = GST_VIDEO_INTERLACE_MODE_PROGRESSIVE;
+ gboolean has_mode = FALSE;
+
+ /* get the current output setting or fallback to other pads settings */
+ if (GST_VIDEO_INFO_FORMAT (&vagg->info) != GST_VIDEO_FORMAT_UNKNOWN) {
+ pads_mode = GST_VIDEO_INFO_INTERLACE_MODE (&vagg->info);
+ has_mode = TRUE;
+ } else {
+ has_mode =
+ gst_video_aggregator_get_sinkpads_interlace_mode (vagg, vaggpad,
+ &pads_mode);
+ }
+
+ if (has_mode) {
+ if (pads_mode != GST_VIDEO_INFO_INTERLACE_MODE (&info)) {
+ GST_ERROR_OBJECT (pad,
+ "got input caps %" GST_PTR_FORMAT ", but current caps are %"
+ GST_PTR_FORMAT, caps, vagg->priv->current_caps);
+ GST_VIDEO_AGGREGATOR_UNLOCK (vagg);
+ return FALSE;
+ }
}
}
@@ -861,7 +897,7 @@
}
static gboolean
-gst_videoaggregator_caps_has_alpha (GstCaps * caps)
+gst_video_aggregator_caps_has_alpha (GstCaps * caps)
{
guint size = gst_caps_get_size (caps);
guint i;
@@ -907,7 +943,7 @@
}
static GstCaps *
-gst_videoaggregator_pad_sink_getcaps (GstPad * pad, GstVideoAggregator * vagg,
+gst_video_aggregator_pad_sink_getcaps (GstPad * pad, GstVideoAggregator * vagg,
GstCaps * filter)
{
GstCaps *srccaps;
@@ -918,6 +954,8 @@
GstAggregator *agg = GST_AGGREGATOR (vagg);
GstPad *srcpad = GST_PAD (agg->srcpad);
gboolean has_alpha;
+ GstVideoInterlaceMode interlace_mode;
+ gboolean has_interlace_mode;
template_caps = gst_pad_get_pad_template_caps (srcpad);
@@ -925,7 +963,11 @@
srccaps = gst_pad_peer_query_caps (srcpad, template_caps);
srccaps = gst_caps_make_writable (srccaps);
- has_alpha = gst_videoaggregator_caps_has_alpha (srccaps);
+ has_alpha = gst_video_aggregator_caps_has_alpha (srccaps);
+
+ has_interlace_mode =
+ gst_video_aggregator_get_sinkpads_interlace_mode (vagg, NULL,
+ &interlace_mode);
n = gst_caps_get_size (srccaps);
for (i = 0; i < n; i++) {
@@ -936,6 +978,9 @@
gst_structure_remove_fields (s, "colorimetry", "chroma-site", "format",
"pixel-aspect-ratio", NULL);
+ if (has_interlace_mode)
+ gst_structure_set (s, "interlace-mode", G_TYPE_STRING,
+ gst_video_interlace_mode_to_string (interlace_mode), NULL);
}
if (filter) {
@@ -967,7 +1012,7 @@
}
static void
-gst_videoaggregator_update_qos (GstVideoAggregator * vagg, gdouble proportion,
+gst_video_aggregator_update_qos (GstVideoAggregator * vagg, gdouble proportion,
GstClockTimeDiff diff, GstClockTime timestamp)
{
gboolean live;
@@ -999,14 +1044,14 @@
}
static void
-gst_videoaggregator_reset_qos (GstVideoAggregator * vagg)
+gst_video_aggregator_reset_qos (GstVideoAggregator * vagg)
{
- gst_videoaggregator_update_qos (vagg, 0.5, 0, GST_CLOCK_TIME_NONE);
+ gst_video_aggregator_update_qos (vagg, 0.5, 0, GST_CLOCK_TIME_NONE);
vagg->priv->qos_processed = vagg->priv->qos_dropped = 0;
}
static void
-gst_videoaggregator_read_qos (GstVideoAggregator * vagg, gdouble * proportion,
+gst_video_aggregator_read_qos (GstVideoAggregator * vagg, gdouble * proportion,
GstClockTime * time)
{
GST_OBJECT_LOCK (vagg);
@@ -1016,7 +1061,7 @@
}
static void
-gst_videoaggregator_reset (GstVideoAggregator * vagg)
+gst_video_aggregator_reset (GstVideoAggregator * vagg)
{
GstAggregator *agg = GST_AGGREGATOR (vagg);
GList *l;
@@ -1028,7 +1073,7 @@
agg->segment.position = -1;
- gst_videoaggregator_reset_qos (vagg);
+ gst_video_aggregator_reset_qos (vagg);
GST_OBJECT_LOCK (vagg);
for (l = GST_ELEMENT (vagg)->sinkpads; l; l = l->next) {
@@ -1045,7 +1090,7 @@
#define GST_FLOW_NEEDS_DATA GST_FLOW_CUSTOM_ERROR
static gint
-gst_videoaggregator_fill_queues (GstVideoAggregator * vagg,
+gst_video_aggregator_fill_queues (GstVideoAggregator * vagg,
GstClockTime output_start_running_time,
GstClockTime output_end_running_time)
{
@@ -1286,7 +1331,7 @@
}
static GstFlowReturn
-gst_videoaggregator_do_aggregate (GstVideoAggregator * vagg,
+gst_video_aggregator_do_aggregate (GstVideoAggregator * vagg,
GstClockTime output_start_time, GstClockTime output_end_time,
GstBuffer ** outbuf)
{
@@ -1333,7 +1378,7 @@
/* Perform qos calculations before processing the next frame. Returns TRUE if
* the frame should be processed, FALSE if the frame can be dropped entirely */
static gint64
-gst_videoaggregator_do_qos (GstVideoAggregator * vagg, GstClockTime timestamp)
+gst_video_aggregator_do_qos (GstVideoAggregator * vagg, GstClockTime timestamp)
{
GstAggregator *agg = GST_AGGREGATOR (vagg);
GstClockTime qostime, earliest_time;
@@ -1347,7 +1392,7 @@
}
/* get latest QoS observation values */
- gst_videoaggregator_read_qos (vagg, &proportion, &earliest_time);
+ gst_video_aggregator_read_qos (vagg, &proportion, &earliest_time);
/* skip qos if we have no observation (yet) => process frame */
if (G_UNLIKELY (!GST_CLOCK_TIME_IS_VALID (earliest_time))) {
@@ -1374,7 +1419,7 @@
}
static GstClockTime
-gst_videoaggregator_get_next_time (GstAggregator * agg)
+gst_video_aggregator_get_next_time (GstAggregator * agg)
{
GstClockTime next_time;
@@ -1395,7 +1440,7 @@
}
static GstFlowReturn
-gst_videoaggregator_check_reconfigure (GstVideoAggregator * vagg,
+gst_video_aggregator_check_reconfigure (GstVideoAggregator * vagg,
gboolean timeout)
{
GstAggregator *agg = (GstAggregator *) vagg;
@@ -1404,7 +1449,7 @@
|| gst_pad_check_reconfigure (GST_AGGREGATOR_SRC_PAD (vagg))) {
gboolean ret;
- ret = gst_videoaggregator_update_src_caps (vagg);
+ ret = gst_video_aggregator_update_src_caps (vagg);
if (!ret) {
if (timeout && gst_pad_needs_reconfigure (GST_AGGREGATOR_SRC_PAD (vagg))) {
guint64 frame_duration;
@@ -1445,7 +1490,7 @@
}
static GstFlowReturn
-gst_videoaggregator_aggregate (GstAggregator * agg, gboolean timeout)
+gst_video_aggregator_aggregate (GstAggregator * agg, gboolean timeout)
{
GstVideoAggregator *vagg = GST_VIDEO_AGGREGATOR (agg);
GstClockTime output_start_time, output_end_time;
@@ -1456,7 +1501,7 @@
GST_VIDEO_AGGREGATOR_LOCK (vagg);
- flow_ret = gst_videoaggregator_check_reconfigure (vagg, timeout);
+ flow_ret = gst_video_aggregator_check_reconfigure (vagg, timeout);
if (flow_ret != GST_FLOW_OK) {
if (flow_ret == GST_FLOW_NEEDS_DATA)
flow_ret = GST_FLOW_OK;
@@ -1497,7 +1542,7 @@
flow_ret = GST_FLOW_EOS;
} else {
flow_ret =
- gst_videoaggregator_fill_queues (vagg, output_start_running_time,
+ gst_video_aggregator_fill_queues (vagg, output_start_running_time,
output_end_running_time);
}
@@ -1521,9 +1566,9 @@
GST_TIME_ARGS (output_start_running_time),
GST_TIME_ARGS (output_end_running_time));
- jitter = gst_videoaggregator_do_qos (vagg, output_start_time);
+ jitter = gst_video_aggregator_do_qos (vagg, output_start_time);
if (jitter <= 0) {
- flow_ret = gst_videoaggregator_do_aggregate (vagg, output_start_time,
+ flow_ret = gst_video_aggregator_do_aggregate (vagg, output_start_time,
output_end_time, &outbuf);
if (flow_ret != GST_FLOW_OK)
goto done;
@@ -1588,7 +1633,8 @@
* cases work at least somewhat.
*/
static gboolean
-gst_videoaggregator_query_duration (GstVideoAggregator * vagg, GstQuery * query)
+gst_video_aggregator_query_duration (GstVideoAggregator * vagg,
+ GstQuery * query)
{
GValue item = { 0 };
gint64 max;
@@ -1659,7 +1705,7 @@
}
static gboolean
-gst_videoaggregator_src_query (GstAggregator * agg, GstQuery * query)
+gst_video_aggregator_src_query (GstAggregator * agg, GstQuery * query)
{
GstVideoAggregator *vagg = GST_VIDEO_AGGREGATOR (agg);
gboolean res = FALSE;
@@ -1684,11 +1730,11 @@
break;
}
case GST_QUERY_DURATION:
- res = gst_videoaggregator_query_duration (vagg, query);
+ res = gst_video_aggregator_query_duration (vagg, query);
break;
case GST_QUERY_LATENCY:
res =
- GST_AGGREGATOR_CLASS (gst_videoaggregator_parent_class)->src_query
+ GST_AGGREGATOR_CLASS (gst_video_aggregator_parent_class)->src_query
(agg, query);
if (res) {
@@ -1697,7 +1743,7 @@
break;
default:
res =
- GST_AGGREGATOR_CLASS (gst_videoaggregator_parent_class)->src_query
+ GST_AGGREGATOR_CLASS (gst_video_aggregator_parent_class)->src_query
(agg, query);
break;
}
@@ -1705,7 +1751,7 @@
}
static gboolean
-gst_videoaggregator_src_event (GstAggregator * agg, GstEvent * event)
+gst_video_aggregator_src_event (GstAggregator * agg, GstEvent * event)
{
GstVideoAggregator *vagg = GST_VIDEO_AGGREGATOR (agg);
@@ -1718,7 +1764,7 @@
gdouble proportion;
gst_event_parse_qos (event, &type, &proportion, &diff, ×tamp);
- gst_videoaggregator_update_qos (vagg, proportion, diff, timestamp);
+ gst_video_aggregator_update_qos (vagg, proportion, diff, timestamp);
break;
}
case GST_EVENT_SEEK:
@@ -1730,12 +1776,12 @@
}
return
- GST_AGGREGATOR_CLASS (gst_videoaggregator_parent_class)->src_event (agg,
+ GST_AGGREGATOR_CLASS (gst_video_aggregator_parent_class)->src_event (agg,
event);
}
static GstFlowReturn
-gst_videoaggregator_flush (GstAggregator * agg)
+gst_video_aggregator_flush (GstAggregator * agg)
{
GList *l;
gdouble abs_rate;
@@ -1765,12 +1811,12 @@
vagg->priv->ts_offset = 0;
vagg->priv->nframes = 0;
- gst_videoaggregator_reset_qos (vagg);
+ gst_video_aggregator_reset_qos (vagg);
return GST_FLOW_OK;
}
static gboolean
-gst_videoaggregator_sink_event (GstAggregator * agg, GstAggregatorPad * bpad,
+gst_video_aggregator_sink_event (GstAggregator * agg, GstAggregatorPad * bpad,
GstEvent * event)
{
GstVideoAggregator *vagg = GST_VIDEO_AGGREGATOR (agg);
@@ -1787,7 +1833,7 @@
gst_event_parse_caps (event, &caps);
ret =
- gst_videoaggregator_pad_sink_setcaps (GST_PAD (pad),
+ gst_video_aggregator_pad_sink_setcaps (GST_PAD (pad),
GST_OBJECT (vagg), caps);
gst_event_unref (event);
event = NULL;
@@ -1798,7 +1844,7 @@
gst_event_copy_segment (event, &seg);
g_assert (seg.format == GST_FORMAT_TIME);
- gst_videoaggregator_reset_qos (vagg);
+ gst_video_aggregator_reset_qos (vagg);
break;
}
default:
@@ -1806,14 +1852,14 @@
}
if (event != NULL)
- return GST_AGGREGATOR_CLASS (gst_videoaggregator_parent_class)->sink_event
+ return GST_AGGREGATOR_CLASS (gst_video_aggregator_parent_class)->sink_event
(agg, bpad, event);
return ret;
}
static gboolean
-gst_videoaggregator_start (GstAggregator * agg)
+gst_video_aggregator_start (GstAggregator * agg)
{
GstVideoAggregator *vagg = GST_VIDEO_AGGREGATOR (agg);
@@ -1823,18 +1869,18 @@
}
static gboolean
-gst_videoaggregator_stop (GstAggregator * agg)
+gst_video_aggregator_stop (GstAggregator * agg)
{
GstVideoAggregator *vagg = GST_VIDEO_AGGREGATOR (agg);
- gst_videoaggregator_reset (vagg);
+ gst_video_aggregator_reset (vagg);
return TRUE;
}
/* GstElement vmethods */
static GstPad *
-gst_videoaggregator_request_new_pad (GstElement * element,
+gst_video_aggregator_request_new_pad (GstElement * element,
GstPadTemplate * templ, const gchar * req_name, const GstCaps * caps)
{
GstVideoAggregator *vagg;
@@ -1843,7 +1889,7 @@
vagg = GST_VIDEO_AGGREGATOR (element);
vaggpad = (GstVideoAggregatorPad *)
- GST_ELEMENT_CLASS (gst_videoaggregator_parent_class)->request_new_pad
+ GST_ELEMENT_CLASS (gst_video_aggregator_parent_class)->request_new_pad
(element, templ, req_name, caps);
if (vaggpad == NULL)
@@ -1864,7 +1910,7 @@
}
static void
-gst_videoaggregator_release_pad (GstElement * element, GstPad * pad)
+gst_video_aggregator_release_pad (GstElement * element, GstPad * pad)
{
GstVideoAggregator *vagg = NULL;
GstVideoAggregatorPad *vaggpad;
@@ -1880,15 +1926,15 @@
GST_OBJECT_UNLOCK (vagg);
if (last_pad)
- gst_videoaggregator_reset (vagg);
+ gst_video_aggregator_reset (vagg);
gst_buffer_replace (&vaggpad->buffer, NULL);
gst_child_proxy_child_removed (GST_CHILD_PROXY (vagg), G_OBJECT (vaggpad),
GST_OBJECT_NAME (vaggpad));
- GST_ELEMENT_CLASS (gst_videoaggregator_parent_class)->release_pad (GST_ELEMENT
- (vagg), pad);
+ GST_ELEMENT_CLASS (gst_video_aggregator_parent_class)->release_pad
+ (GST_ELEMENT (vagg), pad);
gst_pad_mark_reconfigure (GST_AGGREGATOR_SRC_PAD (vagg));
@@ -1897,7 +1943,7 @@
}
static GstFlowReturn
-gst_videoaggregator_get_output_buffer (GstVideoAggregator * videoaggregator,
+gst_video_aggregator_get_output_buffer (GstVideoAggregator * videoaggregator,
GstBuffer ** outbuf)
{
guint outsize;
@@ -1915,7 +1961,7 @@
}
static gboolean
-gst_videoaggregator_pad_sink_acceptcaps (GstPad * pad,
+gst_video_aggregator_pad_sink_acceptcaps (GstPad * pad,
GstVideoAggregator * vagg, GstCaps * caps)
{
gboolean ret;
@@ -1966,7 +2012,7 @@
}
static gboolean
-gst_videoaggregator_sink_query (GstAggregator * agg, GstAggregatorPad * bpad,
+gst_video_aggregator_sink_query (GstAggregator * agg, GstAggregatorPad * bpad,
GstQuery * query)
{
GstVideoAggregator *vagg = GST_VIDEO_AGGREGATOR (agg);
@@ -1979,7 +2025,8 @@
GstCaps *filter, *caps;
gst_query_parse_caps (query, &filter);
- caps = gst_videoaggregator_pad_sink_getcaps (GST_PAD (pad), vagg, filter);
+ caps =
+ gst_video_aggregator_pad_sink_getcaps (GST_PAD (pad), vagg, filter);
gst_query_set_caps_result (query, caps);
gst_caps_unref (caps);
ret = TRUE;
@@ -1990,14 +2037,15 @@
GstCaps *caps;
gst_query_parse_accept_caps (query, &caps);
- ret = gst_videoaggregator_pad_sink_acceptcaps (GST_PAD (pad), vagg, caps);
+ ret =
+ gst_video_aggregator_pad_sink_acceptcaps (GST_PAD (pad), vagg, caps);
gst_query_set_accept_caps_result (query, ret);
ret = TRUE;
break;
}
default:
ret =
- GST_AGGREGATOR_CLASS (gst_videoaggregator_parent_class)->sink_query
+ GST_AGGREGATOR_CLASS (gst_video_aggregator_parent_class)->sink_query
(agg, bpad, query);
break;
}
@@ -2006,27 +2054,27 @@
/* GObject vmethods */
static void
-gst_videoaggregator_finalize (GObject * o)
+gst_video_aggregator_finalize (GObject * o)
{
GstVideoAggregator *vagg = GST_VIDEO_AGGREGATOR (o);
g_mutex_clear (&vagg->priv->lock);
- G_OBJECT_CLASS (gst_videoaggregator_parent_class)->finalize (o);
+ G_OBJECT_CLASS (gst_video_aggregator_parent_class)->finalize (o);
}
static void
-gst_videoaggregator_dispose (GObject * o)
+gst_video_aggregator_dispose (GObject * o)
{
GstVideoAggregator *vagg = GST_VIDEO_AGGREGATOR (o);
gst_caps_replace (&vagg->priv->current_caps, NULL);
- G_OBJECT_CLASS (gst_videoaggregator_parent_class)->dispose (o);
+ G_OBJECT_CLASS (gst_video_aggregator_parent_class)->dispose (o);
}
static void
-gst_videoaggregator_get_property (GObject * object,
+gst_video_aggregator_get_property (GObject * object,
guint prop_id, GValue * value, GParamSpec * pspec)
{
switch (prop_id) {
@@ -2037,7 +2085,7 @@
}
static void
-gst_videoaggregator_set_property (GObject * object,
+gst_video_aggregator_set_property (GObject * object,
guint prop_id, const GValue * value, GParamSpec * pspec)
{
switch (prop_id) {
@@ -2049,45 +2097,45 @@
/* GObject boilerplate */
static void
-gst_videoaggregator_class_init (GstVideoAggregatorClass * klass)
+gst_video_aggregator_class_init (GstVideoAggregatorClass * klass)
{
GObjectClass *gobject_class = (GObjectClass *) klass;
GstElementClass *gstelement_class = (GstElementClass *) klass;
GstAggregatorClass *agg_class = (GstAggregatorClass *) klass;
- GST_DEBUG_CATEGORY_INIT (gst_videoaggregator_debug, "videoaggregator", 0,
+ GST_DEBUG_CATEGORY_INIT (gst_video_aggregator_debug, "videoaggregator", 0,
"base video aggregator");
- gst_videoaggregator_parent_class = g_type_class_peek_parent (klass);
+ gst_video_aggregator_parent_class = g_type_class_peek_parent (klass);
g_type_class_add_private (klass, sizeof (GstVideoAggregatorPrivate));
- gobject_class->finalize = gst_videoaggregator_finalize;
- gobject_class->dispose = gst_videoaggregator_dispose;
+ gobject_class->finalize = gst_video_aggregator_finalize;
+ gobject_class->dispose = gst_video_aggregator_dispose;
- gobject_class->get_property = gst_videoaggregator_get_property;
- gobject_class->set_property = gst_videoaggregator_set_property;
+ gobject_class->get_property = gst_video_aggregator_get_property;
+ gobject_class->set_property = gst_video_aggregator_set_property;
gstelement_class->request_new_pad =
- GST_DEBUG_FUNCPTR (gst_videoaggregator_request_new_pad);
+ GST_DEBUG_FUNCPTR (gst_video_aggregator_request_new_pad);
gstelement_class->release_pad =
- GST_DEBUG_FUNCPTR (gst_videoaggregator_release_pad);
+ GST_DEBUG_FUNCPTR (gst_video_aggregator_release_pad);
agg_class->sinkpads_type = GST_TYPE_VIDEO_AGGREGATOR_PAD;
- agg_class->start = gst_videoaggregator_start;
- agg_class->stop = gst_videoaggregator_stop;
- agg_class->sink_query = gst_videoaggregator_sink_query;
- agg_class->sink_event = gst_videoaggregator_sink_event;
- agg_class->flush = gst_videoaggregator_flush;
- agg_class->aggregate = gst_videoaggregator_aggregate;
- agg_class->src_event = gst_videoaggregator_src_event;
- agg_class->src_query = gst_videoaggregator_src_query;
- agg_class->get_next_time = gst_videoaggregator_get_next_time;
+ agg_class->start = gst_video_aggregator_start;
+ agg_class->stop = gst_video_aggregator_stop;
+ agg_class->sink_query = gst_video_aggregator_sink_query;
+ agg_class->sink_event = gst_video_aggregator_sink_event;
+ agg_class->flush = gst_video_aggregator_flush;
+ agg_class->aggregate = gst_video_aggregator_aggregate;
+ agg_class->src_event = gst_video_aggregator_src_event;
+ agg_class->src_query = gst_video_aggregator_src_query;
+ agg_class->get_next_time = gst_video_aggregator_get_next_time;
- klass->find_best_format = gst_videoaggreagator_find_best_format;
- klass->get_output_buffer = gst_videoaggregator_get_output_buffer;
- klass->update_caps = gst_videoaggregator_default_update_caps;
- klass->fixate_caps = gst_videoaggregator_default_fixate_caps;
+ klass->find_best_format = gst_video_aggregator_find_best_format;
+ klass->get_output_buffer = gst_video_aggregator_get_output_buffer;
+ klass->update_caps = gst_video_aggregator_default_update_caps;
+ klass->fixate_caps = gst_video_aggregator_default_fixate_caps;
/* Register the pad class */
g_type_class_ref (GST_TYPE_VIDEO_AGGREGATOR_PAD);
@@ -2166,7 +2214,7 @@
static GMutex sink_caps_mutex;
static void
-gst_videoaggregator_init (GstVideoAggregator * vagg,
+gst_video_aggregator_init (GstVideoAggregator * vagg,
GstVideoAggregatorClass * klass)
{
@@ -2182,8 +2230,12 @@
g_mutex_lock (&sink_caps_mutex);
if (klass->sink_non_alpha_caps == NULL) {
klass->sink_non_alpha_caps = _get_non_alpha_caps_from_template (klass);
+
+ /* The caps is cached */
+ GST_MINI_OBJECT_FLAG_SET (klass->sink_non_alpha_caps,
+ GST_MINI_OBJECT_FLAG_MAY_BE_LEAKED);
}
g_mutex_unlock (&sink_caps_mutex);
- gst_videoaggregator_reset (vagg);
+ gst_video_aggregator_reset (vagg);
}
diff --git a/gst-libs/gst/video/gstvideoaggregator.h b/gst-libs/gst/video/gstvideoaggregator.h
index 86df0b6..6204bdd 100644
--- a/gst-libs/gst/video/gstvideoaggregator.h
+++ b/gst-libs/gst/video/gstvideoaggregator.h
@@ -32,7 +32,7 @@
G_BEGIN_DECLS
-#define GST_TYPE_VIDEO_AGGREGATOR (gst_videoaggregator_get_type())
+#define GST_TYPE_VIDEO_AGGREGATOR (gst_video_aggregator_get_type())
#define GST_VIDEO_AGGREGATOR(obj) \
(G_TYPE_CHECK_INSTANCE_CAST((obj),GST_TYPE_VIDEO_AGGREGATOR, GstVideoAggregator))
#define GST_VIDEO_AGGREGATOR_CLASS(klass) \
@@ -118,7 +118,7 @@
gpointer _gst_reserved[GST_PADDING_LARGE];
};
-GType gst_videoaggregator_get_type (void);
+GType gst_video_aggregator_get_type (void);
G_END_DECLS
#endif /* __GST_VIDEO_AGGREGATOR_H__ */
diff --git a/gst-libs/gst/video/gstvideoaggregatorpad.h b/gst-libs/gst/video/gstvideoaggregatorpad.h
index 4302aa3..3360b53 100644
--- a/gst-libs/gst/video/gstvideoaggregatorpad.h
+++ b/gst-libs/gst/video/gstvideoaggregatorpad.h
@@ -29,7 +29,7 @@
G_BEGIN_DECLS
-#define GST_TYPE_VIDEO_AGGREGATOR_PAD (gst_videoaggregator_pad_get_type())
+#define GST_TYPE_VIDEO_AGGREGATOR_PAD (gst_video_aggregator_pad_get_type())
#define GST_VIDEO_AGGREGATOR_PAD(obj) \
(G_TYPE_CHECK_INSTANCE_CAST((obj),GST_TYPE_VIDEO_AGGREGATOR_PAD, GstVideoAggregatorPad))
#define GST_VIDEO_AGGREGATOR_PAD_CLASS(klass) \
@@ -106,7 +106,7 @@
gpointer _gst_reserved[GST_PADDING_LARGE];
};
-GType gst_videoaggregator_pad_get_type (void);
+GType gst_video_aggregator_pad_get_type (void);
G_END_DECLS
#endif /* __GST_VIDEO_AGGREGATOR_PAD_H__ */
diff --git a/gst-libs/gst/wayland/Makefile.in b/gst-libs/gst/wayland/Makefile.in
index b2be04e..a657f4c 100644
--- a/gst-libs/gst/wayland/Makefile.in
+++ b/gst-libs/gst/wayland/Makefile.in
@@ -304,6 +304,8 @@
DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
DSYMUTIL = @DSYMUTIL@
DTLS_CFLAGS = @DTLS_CFLAGS@
DTLS_LIBS = @DTLS_LIBS@
@@ -519,6 +521,8 @@
LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
LIPO = @LIPO@
LN_S = @LN_S@
LOCALEDIR = @LOCALEDIR@
@@ -645,8 +649,6 @@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
SNDIO_LIBS = @SNDIO_LIBS@
@@ -691,6 +693,8 @@
WAYLAND_LIBS = @WAYLAND_LIBS@
WEBP_CFLAGS = @WEBP_CFLAGS@
WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
WGET = @WGET@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
diff --git a/gst-plugins-bad.doap b/gst-plugins-bad.doap
index a6b280b..97eeb8a 100644
--- a/gst-plugins-bad.doap
+++ b/gst-plugins-bad.doap
@@ -35,21 +35,11 @@
<release>
<Version>
- <revision>1.8.2</revision>
- <branch>1.8</branch>
+ <revision>1.9.1</revision>
+ <branch>master</branch>
<name></name>
- <created>2016-06-09</created>
- <file-release rdf:resource="http://gstreamer.freedesktop.org/src/gst-plugins-bad/gst-plugins-bad-1.8.2.tar.xz" />
- </Version>
- </release>
-
- <release>
- <Version>
- <revision>1.8.1</revision>
- <branch>1.8</branch>
- <name></name>
- <created>2016-04-20</created>
- <file-release rdf:resource="http://gstreamer.freedesktop.org/src/gst-plugins-bad/gst-plugins-bad-1.8.1.tar.xz" />
+ <created>2016-06-06</created>
+ <file-release rdf:resource="http://gstreamer.freedesktop.org/src/gst-plugins-bad/gst-plugins-bad-1.9.1.tar.xz" />
</Version>
</release>
diff --git a/gst-plugins-bad.spec b/gst-plugins-bad.spec
index a7403df..d5b7698 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.8.2
+Version: 1.9.1
Release: 1.gst
# The freeze and nfs plugins are LGPLv2 (only)
License: LGPLv2+ and LGPLv2
diff --git a/gst/Makefile.in b/gst/Makefile.in
index 2a090e4..c86b66b 100644
--- a/gst/Makefile.in
+++ b/gst/Makefile.in
@@ -281,6 +281,8 @@
DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
DSYMUTIL = @DSYMUTIL@
DTLS_CFLAGS = @DTLS_CFLAGS@
DTLS_LIBS = @DTLS_LIBS@
@@ -496,6 +498,8 @@
LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
LIPO = @LIPO@
LN_S = @LN_S@
LOCALEDIR = @LOCALEDIR@
@@ -622,8 +626,6 @@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
SNDIO_LIBS = @SNDIO_LIBS@
@@ -668,6 +670,8 @@
WAYLAND_LIBS = @WAYLAND_LIBS@
WEBP_CFLAGS = @WEBP_CFLAGS@
WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
WGET = @WGET@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
diff --git a/gst/accurip/Makefile.in b/gst/accurip/Makefile.in
index df7b44a..95f90ce 100644
--- a/gst/accurip/Makefile.in
+++ b/gst/accurip/Makefile.in
@@ -302,6 +302,8 @@
DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
DSYMUTIL = @DSYMUTIL@
DTLS_CFLAGS = @DTLS_CFLAGS@
DTLS_LIBS = @DTLS_LIBS@
@@ -517,6 +519,8 @@
LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
LIPO = @LIPO@
LN_S = @LN_S@
LOCALEDIR = @LOCALEDIR@
@@ -643,8 +647,6 @@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
SNDIO_LIBS = @SNDIO_LIBS@
@@ -689,6 +691,8 @@
WAYLAND_LIBS = @WAYLAND_LIBS@
WEBP_CFLAGS = @WEBP_CFLAGS@
WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
WGET = @WGET@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
diff --git a/gst/adpcmdec/Makefile.in b/gst/adpcmdec/Makefile.in
index 95d425a..f0eebbb 100644
--- a/gst/adpcmdec/Makefile.in
+++ b/gst/adpcmdec/Makefile.in
@@ -299,6 +299,8 @@
DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
DSYMUTIL = @DSYMUTIL@
DTLS_CFLAGS = @DTLS_CFLAGS@
DTLS_LIBS = @DTLS_LIBS@
@@ -514,6 +516,8 @@
LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
LIPO = @LIPO@
LN_S = @LN_S@
LOCALEDIR = @LOCALEDIR@
@@ -640,8 +644,6 @@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
SNDIO_LIBS = @SNDIO_LIBS@
@@ -686,6 +688,8 @@
WAYLAND_LIBS = @WAYLAND_LIBS@
WEBP_CFLAGS = @WEBP_CFLAGS@
WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
WGET = @WGET@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
diff --git a/gst/adpcmdec/adpcmdec.c b/gst/adpcmdec/adpcmdec.c
index 83289ba..3cfa820 100644
--- a/gst/adpcmdec/adpcmdec.c
+++ b/gst/adpcmdec/adpcmdec.c
@@ -467,13 +467,12 @@
GstElementClass *element_class = (GstElementClass *) klass;
GstAudioDecoderClass *base_class = (GstAudioDecoderClass *) klass;
- gst_element_class_add_pad_template (element_class,
- gst_static_pad_template_get (&adpcmdec_sink_template));
- gst_element_class_add_pad_template (element_class,
- gst_static_pad_template_get (&adpcmdec_src_template));
+ gst_element_class_add_static_pad_template (element_class,
+ &adpcmdec_sink_template);
+ gst_element_class_add_static_pad_template (element_class,
+ &adpcmdec_src_template);
gst_element_class_set_static_metadata (element_class, "ADPCM decoder",
- "Codec/Decoder/Audio",
- "Decode MS and IMA ADPCM audio",
+ "Codec/Decoder/Audio", "Decode MS and IMA ADPCM audio",
"Pioneers of the Inevitable <songbird@songbirdnest.com>");
base_class->start = GST_DEBUG_FUNCPTR (adpcmdec_start);
diff --git a/gst/adpcmenc/Makefile.in b/gst/adpcmenc/Makefile.in
index 1cede6e..2ad407c 100644
--- a/gst/adpcmenc/Makefile.in
+++ b/gst/adpcmenc/Makefile.in
@@ -299,6 +299,8 @@
DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
DSYMUTIL = @DSYMUTIL@
DTLS_CFLAGS = @DTLS_CFLAGS@
DTLS_LIBS = @DTLS_LIBS@
@@ -514,6 +516,8 @@
LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
LIPO = @LIPO@
LN_S = @LN_S@
LOCALEDIR = @LOCALEDIR@
@@ -640,8 +644,6 @@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
SNDIO_LIBS = @SNDIO_LIBS@
@@ -686,6 +688,8 @@
WAYLAND_LIBS = @WAYLAND_LIBS@
WEBP_CFLAGS = @WEBP_CFLAGS@
WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
WGET = @WGET@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
diff --git a/gst/adpcmenc/adpcmenc.c b/gst/adpcmenc/adpcmenc.c
index def90cf..8391b08 100644
--- a/gst/adpcmenc/adpcmenc.c
+++ b/gst/adpcmenc/adpcmenc.c
@@ -438,13 +438,12 @@
gobjectclass->set_property = adpcmenc_set_property;
gobjectclass->get_property = adpcmenc_get_property;
- gst_element_class_add_pad_template (element_class,
- gst_static_pad_template_get (&adpcmenc_sink_template));
- gst_element_class_add_pad_template (element_class,
- gst_static_pad_template_get (&adpcmenc_src_template));
+ gst_element_class_add_static_pad_template (element_class,
+ &adpcmenc_sink_template);
+ gst_element_class_add_static_pad_template (element_class,
+ &adpcmenc_src_template);
gst_element_class_set_static_metadata (element_class, "ADPCM encoder",
- "Codec/Encoder/Audio",
- "Encode ADPCM audio",
+ "Codec/Encoder/Audio", "Encode ADPCM audio",
"Pioneers of the Inevitable <songbird@songbirdnest.com>");
base_class->start = GST_DEBUG_FUNCPTR (adpcmenc_start);
diff --git a/gst/aiff/Makefile.in b/gst/aiff/Makefile.in
index e0b3060..d59580c 100644
--- a/gst/aiff/Makefile.in
+++ b/gst/aiff/Makefile.in
@@ -303,6 +303,8 @@
DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
DSYMUTIL = @DSYMUTIL@
DTLS_CFLAGS = @DTLS_CFLAGS@
DTLS_LIBS = @DTLS_LIBS@
@@ -518,6 +520,8 @@
LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
LIPO = @LIPO@
LN_S = @LN_S@
LOCALEDIR = @LOCALEDIR@
@@ -644,8 +648,6 @@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
SNDIO_LIBS = @SNDIO_LIBS@
@@ -690,6 +692,8 @@
WAYLAND_LIBS = @WAYLAND_LIBS@
WEBP_CFLAGS = @WEBP_CFLAGS@
WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
WGET = @WGET@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
diff --git a/gst/aiff/aiffmux.c b/gst/aiff/aiffmux.c
index 5d5fded..0f6d330 100644
--- a/gst/aiff/aiffmux.c
+++ b/gst/aiff/aiffmux.c
@@ -113,10 +113,8 @@
"AIFF audio muxer", "Muxer/Audio", "Multiplex raw audio into AIFF",
"Robert Swain <robert.swain@gmail.com>");
- gst_element_class_add_pad_template (gstelement_class,
- gst_static_pad_template_get (&src_factory));
- gst_element_class_add_pad_template (gstelement_class,
- gst_static_pad_template_get (&sink_factory));
+ gst_element_class_add_static_pad_template (gstelement_class, &src_factory);
+ gst_element_class_add_static_pad_template (gstelement_class, &sink_factory);
gstelement_class->change_state =
GST_DEBUG_FUNCPTR (gst_aiff_mux_change_state);
diff --git a/gst/aiff/aiffparse.c b/gst/aiff/aiffparse.c
index 5600a7e..27c8313 100644
--- a/gst/aiff/aiffparse.c
+++ b/gst/aiff/aiffparse.c
@@ -120,10 +120,10 @@
object_class->dispose = gst_aiff_parse_dispose;
- gst_element_class_add_pad_template (gstelement_class,
- gst_static_pad_template_get (&sink_template_factory));
- gst_element_class_add_pad_template (gstelement_class,
- gst_static_pad_template_get (&src_template_factory));
+ gst_element_class_add_static_pad_template (gstelement_class,
+ &sink_template_factory);
+ gst_element_class_add_static_pad_template (gstelement_class,
+ &src_template_factory);
gst_element_class_set_static_metadata (gstelement_class,
"AIFF audio demuxer", "Codec/Demuxer/Audio",
diff --git a/gst/asfmux/Makefile.in b/gst/asfmux/Makefile.in
index 60fa5b4..b6b100b 100644
--- a/gst/asfmux/Makefile.in
+++ b/gst/asfmux/Makefile.in
@@ -307,6 +307,8 @@
DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
DSYMUTIL = @DSYMUTIL@
DTLS_CFLAGS = @DTLS_CFLAGS@
DTLS_LIBS = @DTLS_LIBS@
@@ -522,6 +524,8 @@
LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
LIPO = @LIPO@
LN_S = @LN_S@
LOCALEDIR = @LOCALEDIR@
@@ -648,8 +652,6 @@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
SNDIO_LIBS = @SNDIO_LIBS@
@@ -694,6 +696,8 @@
WAYLAND_LIBS = @WAYLAND_LIBS@
WEBP_CFLAGS = @WEBP_CFLAGS@
WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
WGET = @WGET@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
diff --git a/gst/asfmux/gstasfmux.c b/gst/asfmux/gstasfmux.c
index 45617be..3579a55 100644
--- a/gst/asfmux/gstasfmux.c
+++ b/gst/asfmux/gstasfmux.c
@@ -270,12 +270,11 @@
GST_DEBUG_FUNCPTR (gst_asf_mux_request_new_pad);
gstelement_class->change_state = GST_DEBUG_FUNCPTR (gst_asf_mux_change_state);
- gst_element_class_add_pad_template (gstelement_class,
- gst_static_pad_template_get (&src_factory));
- gst_element_class_add_pad_template (gstelement_class,
- gst_static_pad_template_get (&audio_sink_factory));
- gst_element_class_add_pad_template (gstelement_class,
- gst_static_pad_template_get (&video_sink_factory));
+ gst_element_class_add_static_pad_template (gstelement_class, &src_factory);
+ gst_element_class_add_static_pad_template (gstelement_class,
+ &audio_sink_factory);
+ gst_element_class_add_static_pad_template (gstelement_class,
+ &video_sink_factory);
gst_element_class_set_static_metadata (gstelement_class, "ASF muxer",
"Codec/Muxer",
diff --git a/gst/asfmux/gstasfparse.c b/gst/asfmux/gstasfparse.c
index c288266..6cc75b6 100644
--- a/gst/asfmux/gstasfparse.c
+++ b/gst/asfmux/gstasfparse.c
@@ -400,10 +400,8 @@
gstbaseparse_class->stop = gst_asf_parse_stop;
gstbaseparse_class->handle_frame = gst_asf_parse_handle_frame;
- gst_element_class_add_pad_template (gstelement_class,
- gst_static_pad_template_get (&src_factory));
- gst_element_class_add_pad_template (gstelement_class,
- gst_static_pad_template_get (&sink_factory));
+ gst_element_class_add_static_pad_template (gstelement_class, &src_factory);
+ gst_element_class_add_static_pad_template (gstelement_class, &sink_factory);
gst_element_class_set_static_metadata (gstelement_class, "ASF parser",
"Parser", "Parses ASF", "Thiago Santos <thiagoss@embedded.ufcg.edu.br>");
diff --git a/gst/asfmux/gstrtpasfpay.c b/gst/asfmux/gstrtpasfpay.c
index e5ff0de..9b1e032 100644
--- a/gst/asfmux/gstrtpasfpay.c
+++ b/gst/asfmux/gstrtpasfpay.c
@@ -96,10 +96,10 @@
gstbasertppayload_class->handle_buffer = gst_rtp_asf_pay_handle_buffer;
gstbasertppayload_class->set_caps = gst_rtp_asf_pay_set_caps;
- gst_element_class_add_pad_template (gstelement_class,
- gst_static_pad_template_get (&gst_rtp_asf_pay_sink_template));
- gst_element_class_add_pad_template (gstelement_class,
- gst_static_pad_template_get (&gst_rtp_asf_pay_src_template));
+ gst_element_class_add_static_pad_template (gstelement_class,
+ &gst_rtp_asf_pay_sink_template);
+ gst_element_class_add_static_pad_template (gstelement_class,
+ &gst_rtp_asf_pay_src_template);
gst_element_class_set_static_metadata (gstelement_class, "RTP ASF payloader",
"Codec/Payloader/Network",
"Payload-encodes ASF into RTP packets (MS_RTSP)",
diff --git a/gst/audiofxbad/Makefile.in b/gst/audiofxbad/Makefile.in
index 7d065d2..5972f58 100644
--- a/gst/audiofxbad/Makefile.in
+++ b/gst/audiofxbad/Makefile.in
@@ -301,6 +301,8 @@
DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
DSYMUTIL = @DSYMUTIL@
DTLS_CFLAGS = @DTLS_CFLAGS@
DTLS_LIBS = @DTLS_LIBS@
@@ -516,6 +518,8 @@
LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
LIPO = @LIPO@
LN_S = @LN_S@
LOCALEDIR = @LOCALEDIR@
@@ -642,8 +646,6 @@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
SNDIO_LIBS = @SNDIO_LIBS@
@@ -688,6 +690,8 @@
WAYLAND_LIBS = @WAYLAND_LIBS@
WEBP_CFLAGS = @WEBP_CFLAGS@
WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
WGET = @WGET@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
diff --git a/gst/audiofxbad/gstaudiochannelmix.c b/gst/audiofxbad/gstaudiochannelmix.c
index aebe84a..7d92a5b 100644
--- a/gst/audiofxbad/gstaudiochannelmix.c
+++ b/gst/audiofxbad/gstaudiochannelmix.c
@@ -102,10 +102,10 @@
/* Setting up pads and setting metadata should be moved to
base_class_init if you intend to subclass this class. */
- gst_element_class_add_pad_template (GST_ELEMENT_CLASS (klass),
- gst_static_pad_template_get (&gst_audio_channel_mix_src_template));
- gst_element_class_add_pad_template (GST_ELEMENT_CLASS (klass),
- gst_static_pad_template_get (&gst_audio_channel_mix_sink_template));
+ gst_element_class_add_static_pad_template (GST_ELEMENT_CLASS (klass),
+ &gst_audio_channel_mix_src_template);
+ gst_element_class_add_static_pad_template (GST_ELEMENT_CLASS (klass),
+ &gst_audio_channel_mix_sink_template);
gst_element_class_set_static_metadata (GST_ELEMENT_CLASS (klass),
"Simple stereo audio mixer", "Audio/Mixer", "Mixes left/right channels "
diff --git a/gst/audiomixer/Makefile.in b/gst/audiomixer/Makefile.in
index db32131..814cebc 100644
--- a/gst/audiomixer/Makefile.in
+++ b/gst/audiomixer/Makefile.in
@@ -332,6 +332,8 @@
DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
DSYMUTIL = @DSYMUTIL@
DTLS_CFLAGS = @DTLS_CFLAGS@
DTLS_LIBS = @DTLS_LIBS@
@@ -547,6 +549,8 @@
LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
LIPO = @LIPO@
LN_S = @LN_S@
LOCALEDIR = @LOCALEDIR@
@@ -673,8 +677,6 @@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
SNDIO_LIBS = @SNDIO_LIBS@
@@ -719,6 +721,8 @@
WAYLAND_LIBS = @WAYLAND_LIBS@
WEBP_CFLAGS = @WEBP_CFLAGS@
WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
WGET = @WGET@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
diff --git a/gst/audiomixer/gstaudiointerleave.c b/gst/audiomixer/gstaudiointerleave.c
index 39b86e8..e91b645 100644
--- a/gst/audiomixer/gstaudiointerleave.c
+++ b/gst/audiomixer/gstaudiointerleave.c
@@ -566,13 +566,12 @@
gobject_class->get_property = gst_audio_interleave_get_property;
gobject_class->finalize = gst_audio_interleave_finalize;
- gst_element_class_add_pad_template (gstelement_class,
- gst_static_pad_template_get (&gst_audio_interleave_src_template));
- gst_element_class_add_pad_template (gstelement_class,
- gst_static_pad_template_get (&gst_audio_interleave_sink_template));
+ gst_element_class_add_static_pad_template (gstelement_class,
+ &gst_audio_interleave_src_template);
+ gst_element_class_add_static_pad_template (gstelement_class,
+ &gst_audio_interleave_sink_template);
gst_element_class_set_static_metadata (gstelement_class, "AudioInterleave",
- "Generic/Audio",
- "Mixes multiple audio streams",
+ "Generic/Audio", "Mixes multiple audio streams",
"Olivier Crete <olivier.crete@collabora.com>");
gstelement_class->request_new_pad =
diff --git a/gst/audiomixer/gstaudiomixer.c b/gst/audiomixer/gstaudiomixer.c
index b211f7d..de539db 100644
--- a/gst/audiomixer/gstaudiomixer.c
+++ b/gst/audiomixer/gstaudiomixer.c
@@ -485,13 +485,12 @@
"Setting this property takes a reference to the supplied GstCaps "
"object", GST_TYPE_CAPS, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
- gst_element_class_add_pad_template (gstelement_class,
- gst_static_pad_template_get (&gst_audiomixer_src_template));
- gst_element_class_add_pad_template (gstelement_class,
- gst_static_pad_template_get (&gst_audiomixer_sink_template));
+ gst_element_class_add_static_pad_template (gstelement_class,
+ &gst_audiomixer_src_template);
+ gst_element_class_add_static_pad_template (gstelement_class,
+ &gst_audiomixer_sink_template);
gst_element_class_set_static_metadata (gstelement_class, "AudioMixer",
- "Generic/Audio",
- "Mixes multiple audio streams",
+ "Generic/Audio", "Mixes multiple audio streams",
"Sebastian Dröge <sebastian@centricular.com>");
gstelement_class->request_new_pad =
diff --git a/gst/audiovisualizers/Makefile.in b/gst/audiovisualizers/Makefile.in
index 08ab702..75c29ee 100644
--- a/gst/audiovisualizers/Makefile.in
+++ b/gst/audiovisualizers/Makefile.in
@@ -310,6 +310,8 @@
DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
DSYMUTIL = @DSYMUTIL@
DTLS_CFLAGS = @DTLS_CFLAGS@
DTLS_LIBS = @DTLS_LIBS@
@@ -525,6 +527,8 @@
LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
LIPO = @LIPO@
LN_S = @LN_S@
LOCALEDIR = @LOCALEDIR@
@@ -651,8 +655,6 @@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
SNDIO_LIBS = @SNDIO_LIBS@
@@ -697,6 +699,8 @@
WAYLAND_LIBS = @WAYLAND_LIBS@
WEBP_CFLAGS = @WEBP_CFLAGS@
WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
WGET = @WGET@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
diff --git a/gst/audiovisualizers/gstspacescope.c b/gst/audiovisualizers/gstspacescope.c
index 6cde066..5071dc8 100644
--- a/gst/audiovisualizers/gstspacescope.c
+++ b/gst/audiovisualizers/gstspacescope.c
@@ -39,15 +39,17 @@
#include <stdlib.h>
#include "gstspacescope.h"
+#if G_BYTE_ORDER == G_BIG_ENDIAN
+#define RGB_ORDER "xRGB"
+#else
+#define RGB_ORDER "BGRx"
+#endif
+
static GstStaticPadTemplate gst_space_scope_src_template =
GST_STATIC_PAD_TEMPLATE ("src",
GST_PAD_SRC,
GST_PAD_ALWAYS,
-#if G_BYTE_ORDER == G_BIG_ENDIAN
- GST_STATIC_CAPS (GST_VIDEO_CAPS_MAKE ("xRGB"))
-#else
- GST_STATIC_CAPS (GST_VIDEO_CAPS_MAKE ("BGRx"))
-#endif
+ GST_STATIC_CAPS (GST_VIDEO_CAPS_MAKE (RGB_ORDER))
);
static GstStaticPadTemplate gst_space_scope_sink_template =
@@ -131,10 +133,10 @@
"Visualization",
"Simple stereo visualizer", "Stefan Kost <ensonic@users.sf.net>");
- gst_element_class_add_pad_template (element_class,
- gst_static_pad_template_get (&gst_space_scope_src_template));
- gst_element_class_add_pad_template (element_class,
- gst_static_pad_template_get (&gst_space_scope_sink_template));
+ gst_element_class_add_static_pad_template (element_class,
+ &gst_space_scope_src_template);
+ gst_element_class_add_static_pad_template (element_class,
+ &gst_space_scope_sink_template);
gobject_class->set_property = gst_space_scope_set_property;
gobject_class->get_property = gst_space_scope_get_property;
diff --git a/gst/audiovisualizers/gstspectrascope.c b/gst/audiovisualizers/gstspectrascope.c
index 297d3ef..10aa7d2 100644
--- a/gst/audiovisualizers/gstspectrascope.c
+++ b/gst/audiovisualizers/gstspectrascope.c
@@ -40,15 +40,17 @@
#include "gstspectrascope.h"
+#if G_BYTE_ORDER == G_BIG_ENDIAN
+#define RGB_ORDER "xRGB"
+#else
+#define RGB_ORDER "BGRx"
+#endif
+
static GstStaticPadTemplate gst_spectra_scope_src_template =
GST_STATIC_PAD_TEMPLATE ("src",
GST_PAD_SRC,
GST_PAD_ALWAYS,
-#if G_BYTE_ORDER == G_BIG_ENDIAN
- GST_STATIC_CAPS (GST_VIDEO_CAPS_MAKE ("xRGB"))
-#else
- GST_STATIC_CAPS (GST_VIDEO_CAPS_MAKE ("BGRx"))
-#endif
+ GST_STATIC_CAPS (GST_VIDEO_CAPS_MAKE (RGB_ORDER))
);
static GstStaticPadTemplate gst_spectra_scope_sink_template =
@@ -88,10 +90,10 @@
"Frequency spectrum scope", "Visualization",
"Simple frequency spectrum scope", "Stefan Kost <ensonic@users.sf.net>");
- gst_element_class_add_pad_template (element_class,
- gst_static_pad_template_get (&gst_spectra_scope_src_template));
- gst_element_class_add_pad_template (element_class,
- gst_static_pad_template_get (&gst_spectra_scope_sink_template));
+ gst_element_class_add_static_pad_template (element_class,
+ &gst_spectra_scope_src_template);
+ gst_element_class_add_static_pad_template (element_class,
+ &gst_spectra_scope_sink_template);
scope_class->setup = GST_DEBUG_FUNCPTR (gst_spectra_scope_setup);
scope_class->render = GST_DEBUG_FUNCPTR (gst_spectra_scope_render);
diff --git a/gst/audiovisualizers/gstsynaescope.c b/gst/audiovisualizers/gstsynaescope.c
index dfadf09..f99a753 100644
--- a/gst/audiovisualizers/gstsynaescope.c
+++ b/gst/audiovisualizers/gstsynaescope.c
@@ -38,15 +38,17 @@
#include "gstsynaescope.h"
+#if G_BYTE_ORDER == G_BIG_ENDIAN
+#define RGB_ORDER "xRGB"
+#else
+#define RGB_ORDER "BGRx"
+#endif
+
static GstStaticPadTemplate gst_synae_scope_src_template =
GST_STATIC_PAD_TEMPLATE ("src",
GST_PAD_SRC,
GST_PAD_ALWAYS,
-#if G_BYTE_ORDER == G_BIG_ENDIAN
- GST_STATIC_CAPS (GST_VIDEO_CAPS_MAKE ("xRGB"))
-#else
- GST_STATIC_CAPS (GST_VIDEO_CAPS_MAKE ("BGRx"))
-#endif
+ GST_STATIC_CAPS (GST_VIDEO_CAPS_MAKE (RGB_ORDER))
);
static GstStaticPadTemplate gst_synae_scope_sink_template =
@@ -87,10 +89,10 @@
"Creates video visualizations of audio input, using stereo and pitch information",
"Stefan Kost <ensonic@users.sf.net>");
- gst_element_class_add_pad_template (element_class,
- gst_static_pad_template_get (&gst_synae_scope_src_template));
- gst_element_class_add_pad_template (element_class,
- gst_static_pad_template_get (&gst_synae_scope_sink_template));
+ gst_element_class_add_static_pad_template (element_class,
+ &gst_synae_scope_src_template);
+ gst_element_class_add_static_pad_template (element_class,
+ &gst_synae_scope_sink_template);
scope_class->setup = GST_DEBUG_FUNCPTR (gst_synae_scope_setup);
scope_class->render = GST_DEBUG_FUNCPTR (gst_synae_scope_render);
diff --git a/gst/audiovisualizers/gstwavescope.c b/gst/audiovisualizers/gstwavescope.c
index ad125b0..e4eb8c2 100644
--- a/gst/audiovisualizers/gstwavescope.c
+++ b/gst/audiovisualizers/gstwavescope.c
@@ -39,15 +39,17 @@
#include <stdlib.h>
#include "gstwavescope.h"
+#if G_BYTE_ORDER == G_BIG_ENDIAN
+#define RGB_ORDER "xRGB"
+#else
+#define RGB_ORDER "BGRx"
+#endif
+
static GstStaticPadTemplate gst_wave_scope_src_template =
GST_STATIC_PAD_TEMPLATE ("src",
GST_PAD_SRC,
GST_PAD_ALWAYS,
-#if G_BYTE_ORDER == G_BIG_ENDIAN
- GST_STATIC_CAPS (GST_VIDEO_CAPS_MAKE ("xRGB"))
-#else
- GST_STATIC_CAPS (GST_VIDEO_CAPS_MAKE ("BGRx"))
-#endif
+ GST_STATIC_CAPS (GST_VIDEO_CAPS_MAKE (RGB_ORDER))
);
static GstStaticPadTemplate gst_wave_scope_sink_template =
@@ -146,10 +148,10 @@
"Waveform oscilloscope", "Visualization", "Simple waveform oscilloscope",
"Stefan Kost <ensonic@users.sf.net>");
- gst_element_class_add_pad_template (gstelement_class,
- gst_static_pad_template_get (&gst_wave_scope_src_template));
- gst_element_class_add_pad_template (gstelement_class,
- gst_static_pad_template_get (&gst_wave_scope_sink_template));
+ gst_element_class_add_static_pad_template (gstelement_class,
+ &gst_wave_scope_src_template);
+ gst_element_class_add_static_pad_template (gstelement_class,
+ &gst_wave_scope_sink_template);
}
static void
diff --git a/gst/autoconvert/Makefile.in b/gst/autoconvert/Makefile.in
index a951011..d674bc3 100644
--- a/gst/autoconvert/Makefile.in
+++ b/gst/autoconvert/Makefile.in
@@ -304,6 +304,8 @@
DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
DSYMUTIL = @DSYMUTIL@
DTLS_CFLAGS = @DTLS_CFLAGS@
DTLS_LIBS = @DTLS_LIBS@
@@ -519,6 +521,8 @@
LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
LIPO = @LIPO@
LN_S = @LN_S@
LOCALEDIR = @LOCALEDIR@
@@ -645,8 +649,6 @@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
SNDIO_LIBS = @SNDIO_LIBS@
@@ -691,6 +693,8 @@
WAYLAND_LIBS = @WAYLAND_LIBS@
WEBP_CFLAGS = @WEBP_CFLAGS@
WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
WGET = @WGET@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
diff --git a/gst/autoconvert/gstautoconvert.c b/gst/autoconvert/gstautoconvert.c
index b5a1035..77e095a 100644
--- a/gst/autoconvert/gstautoconvert.c
+++ b/gst/autoconvert/gstautoconvert.c
@@ -159,10 +159,8 @@
parent_quark = g_quark_from_static_string ("parent");
- gst_element_class_add_pad_template (gstelement_class,
- gst_static_pad_template_get (&srctemplate));
- gst_element_class_add_pad_template (gstelement_class,
- gst_static_pad_template_get (&sinktemplate));
+ gst_element_class_add_static_pad_template (gstelement_class, &srctemplate);
+ gst_element_class_add_static_pad_template (gstelement_class, &sinktemplate);
gst_element_class_set_static_metadata (gstelement_class,
"Select convertor based on caps", "Generic/Bin",
diff --git a/gst/autoconvert/gstautovideoconvert.c b/gst/autoconvert/gstautovideoconvert.c
index 11fc974..7e0ea9e 100644
--- a/gst/autoconvert/gstautovideoconvert.c
+++ b/gst/autoconvert/gstautovideoconvert.c
@@ -140,10 +140,8 @@
GST_DEBUG_CATEGORY_INIT (autovideoconvert_debug, "autovideoconvert", 0,
"Auto color space converter");
- gst_element_class_add_pad_template (gstelement_class,
- gst_static_pad_template_get (&srctemplate));
- gst_element_class_add_pad_template (gstelement_class,
- gst_static_pad_template_get (&sinktemplate));
+ gst_element_class_add_static_pad_template (gstelement_class, &srctemplate);
+ gst_element_class_add_static_pad_template (gstelement_class, &sinktemplate);
gst_element_class_set_static_metadata (gstelement_class,
"Select color space convertor based on caps", "Generic/Bin",
diff --git a/gst/bayer/Makefile.in b/gst/bayer/Makefile.in
index bc71546..547253a 100644
--- a/gst/bayer/Makefile.in
+++ b/gst/bayer/Makefile.in
@@ -326,6 +326,8 @@
DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
DSYMUTIL = @DSYMUTIL@
DTLS_CFLAGS = @DTLS_CFLAGS@
DTLS_LIBS = @DTLS_LIBS@
@@ -543,6 +545,8 @@
LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
LIPO = @LIPO@
LN_S = @LN_S@
LOCALEDIR = @LOCALEDIR@
@@ -669,8 +673,6 @@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
SNDIO_LIBS = @SNDIO_LIBS@
@@ -715,6 +717,8 @@
WAYLAND_LIBS = @WAYLAND_LIBS@
WEBP_CFLAGS = @WEBP_CFLAGS@
WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
WGET = @WGET@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
diff --git a/gst/bayer/gstrgb2bayer.c b/gst/bayer/gstrgb2bayer.c
index 495f151..9ef5c89 100644
--- a/gst/bayer/gstrgb2bayer.c
+++ b/gst/bayer/gstrgb2bayer.c
@@ -87,10 +87,10 @@
gobject_class->finalize = gst_rgb2bayer_finalize;
- gst_element_class_add_pad_template (element_class,
- gst_static_pad_template_get (&gst_rgb2bayer_src_template));
- gst_element_class_add_pad_template (element_class,
- gst_static_pad_template_get (&gst_rgb2bayer_sink_template));
+ gst_element_class_add_static_pad_template (element_class,
+ &gst_rgb2bayer_src_template);
+ gst_element_class_add_static_pad_template (element_class,
+ &gst_rgb2bayer_sink_template);
gst_element_class_set_static_metadata (element_class,
"RGB to Bayer converter",
diff --git a/gst/camerabin2/Makefile.in b/gst/camerabin2/Makefile.in
index 0caf788..900fdb2 100644
--- a/gst/camerabin2/Makefile.in
+++ b/gst/camerabin2/Makefile.in
@@ -310,6 +310,8 @@
DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
DSYMUTIL = @DSYMUTIL@
DTLS_CFLAGS = @DTLS_CFLAGS@
DTLS_LIBS = @DTLS_LIBS@
@@ -525,6 +527,8 @@
LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
LIPO = @LIPO@
LN_S = @LN_S@
LOCALEDIR = @LOCALEDIR@
@@ -651,8 +655,6 @@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
SNDIO_LIBS = @SNDIO_LIBS@
@@ -697,6 +699,8 @@
WAYLAND_LIBS = @WAYLAND_LIBS@
WEBP_CFLAGS = @WEBP_CFLAGS@
WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
WGET = @WGET@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
diff --git a/gst/camerabin2/gstdigitalzoom.c b/gst/camerabin2/gstdigitalzoom.c
index 20c01be..b936fe4 100644
--- a/gst/camerabin2/gstdigitalzoom.c
+++ b/gst/camerabin2/gstdigitalzoom.c
@@ -376,10 +376,8 @@
GST_DEBUG_CATEGORY_INIT (digital_zoom_debug, "digitalzoom",
0, "digital zoom");
- gst_element_class_add_pad_template (gstelement_class,
- gst_static_pad_template_get (&sink_template));
- gst_element_class_add_pad_template (gstelement_class,
- gst_static_pad_template_get (&src_template));
+ gst_element_class_add_static_pad_template (gstelement_class, &sink_template);
+ gst_element_class_add_static_pad_template (gstelement_class, &src_template);
gst_element_class_set_static_metadata (gstelement_class,
"Digital zoom bin", "Generic/Video",
diff --git a/gst/camerabin2/gstviewfinderbin.c b/gst/camerabin2/gstviewfinderbin.c
index 3ae6c31..7ff7bd5 100644
--- a/gst/camerabin2/gstviewfinderbin.c
+++ b/gst/camerabin2/gstviewfinderbin.c
@@ -122,8 +122,7 @@
DEFAULT_DISABLE_CONVERTERS,
G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
- gst_element_class_add_pad_template (element_class,
- gst_static_pad_template_get (&sink_template));
+ gst_element_class_add_static_pad_template (element_class, &sink_template);
gst_element_class_set_static_metadata (element_class, "Viewfinder Bin",
"Sink/Video", "Viewfinder Bin used in camerabin2",
diff --git a/gst/camerabin2/gstwrappercamerabinsrc.c b/gst/camerabin2/gstwrappercamerabinsrc.c
index 7796107..4c2d8ec 100644
--- a/gst/camerabin2/gstwrappercamerabinsrc.c
+++ b/gst/camerabin2/gstwrappercamerabinsrc.c
@@ -1123,14 +1123,13 @@
GST_DEBUG_CATEGORY_INIT (wrapper_camera_bin_src_debug, "wrappercamerabinsrc",
0, "wrapper camera src");
- gst_element_class_add_pad_template (gstelement_class,
- gst_static_pad_template_get (&vfsrc_template));
+ gst_element_class_add_static_pad_template (gstelement_class, &vfsrc_template);
- gst_element_class_add_pad_template (gstelement_class,
- gst_static_pad_template_get (&imgsrc_template));
+ gst_element_class_add_static_pad_template (gstelement_class,
+ &imgsrc_template);
- gst_element_class_add_pad_template (gstelement_class,
- gst_static_pad_template_get (&vidsrc_template));
+ gst_element_class_add_static_pad_template (gstelement_class,
+ &vidsrc_template);
gst_element_class_set_static_metadata (gstelement_class,
"Wrapper camera src element for camerabin2", "Source/Video",
diff --git a/gst/cdxaparse/Makefile.in b/gst/cdxaparse/Makefile.in
index 3f2b137..34de1a4 100644
--- a/gst/cdxaparse/Makefile.in
+++ b/gst/cdxaparse/Makefile.in
@@ -303,6 +303,8 @@
DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
DSYMUTIL = @DSYMUTIL@
DTLS_CFLAGS = @DTLS_CFLAGS@
DTLS_LIBS = @DTLS_LIBS@
@@ -518,6 +520,8 @@
LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
LIPO = @LIPO@
LN_S = @LN_S@
LOCALEDIR = @LOCALEDIR@
@@ -644,8 +648,6 @@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
SNDIO_LIBS = @SNDIO_LIBS@
@@ -690,6 +692,8 @@
WAYLAND_LIBS = @WAYLAND_LIBS@
WEBP_CFLAGS = @WEBP_CFLAGS@
WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
WGET = @WGET@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
diff --git a/gst/cdxaparse/gstcdxaparse.c b/gst/cdxaparse/gstcdxaparse.c
index cf0d08f..4334362 100644
--- a/gst/cdxaparse/gstcdxaparse.c
+++ b/gst/cdxaparse/gstcdxaparse.c
@@ -76,10 +76,10 @@
"Wim Taymans <wim.taymans@tvd.be>");
/* register src pads */
- gst_element_class_add_pad_template (element_class,
- gst_static_pad_template_get (&sink_template_factory));
- gst_element_class_add_pad_template (element_class,
- gst_static_pad_template_get (&src_template_factory));
+ gst_element_class_add_static_pad_template (element_class,
+ &sink_template_factory);
+ gst_element_class_add_static_pad_template (element_class,
+ &src_template_factory);
}
static void
diff --git a/gst/cdxaparse/gstvcdparse.c b/gst/cdxaparse/gstvcdparse.c
index 4a3a7e7..424e839 100644
--- a/gst/cdxaparse/gstvcdparse.c
+++ b/gst/cdxaparse/gstvcdparse.c
@@ -55,10 +55,8 @@
{
GstElementClass *element_class = GST_ELEMENT_CLASS (klass);
- gst_element_class_add_pad_template (element_class,
- gst_static_pad_template_get (&sink_factory));
- gst_element_class_add_pad_template (element_class,
- gst_static_pad_template_get (&src_factory));
+ gst_element_class_add_static_pad_template (element_class, &sink_factory);
+ gst_element_class_add_static_pad_template (element_class, &src_factory);
gst_element_class_set_static_metadata (element_class, "(S)VCD stream parser",
"Codec/Parser", "Strip (S)VCD stream from its sync headers",
diff --git a/gst/coloreffects/Makefile.in b/gst/coloreffects/Makefile.in
index 793eb5a..c637219 100644
--- a/gst/coloreffects/Makefile.in
+++ b/gst/coloreffects/Makefile.in
@@ -304,6 +304,8 @@
DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
DSYMUTIL = @DSYMUTIL@
DTLS_CFLAGS = @DTLS_CFLAGS@
DTLS_LIBS = @DTLS_LIBS@
@@ -519,6 +521,8 @@
LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
LIPO = @LIPO@
LN_S = @LN_S@
LOCALEDIR = @LOCALEDIR@
@@ -645,8 +649,6 @@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
SNDIO_LIBS = @SNDIO_LIBS@
@@ -691,6 +693,8 @@
WAYLAND_LIBS = @WAYLAND_LIBS@
WEBP_CFLAGS = @WEBP_CFLAGS@
WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
WGET = @WGET@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
diff --git a/gst/coloreffects/gstchromahold.c b/gst/coloreffects/gstchromahold.c
index 097312a..011c401 100644
--- a/gst/coloreffects/gstchromahold.c
+++ b/gst/coloreffects/gstchromahold.c
@@ -153,10 +153,10 @@
"Removes all color information except for one color",
"Sebastian Dröge <sebastian.droege@collabora.co.uk>");
- gst_element_class_add_pad_template (gstelement_class,
- gst_static_pad_template_get (&gst_chroma_hold_sink_template));
- gst_element_class_add_pad_template (gstelement_class,
- gst_static_pad_template_get (&gst_chroma_hold_src_template));
+ gst_element_class_add_static_pad_template (gstelement_class,
+ &gst_chroma_hold_sink_template);
+ gst_element_class_add_static_pad_template (gstelement_class,
+ &gst_chroma_hold_src_template);
GST_DEBUG_CATEGORY_INIT (gst_chroma_hold_debug, "chromahold", 0,
"chromahold - Removes all color information except for one color");
diff --git a/gst/coloreffects/gstcoloreffects.c b/gst/coloreffects/gstcoloreffects.c
index a62a45d..5a1aea1 100644
--- a/gst/coloreffects/gstcoloreffects.c
+++ b/gst/coloreffects/gstcoloreffects.c
@@ -590,10 +590,10 @@
"Color Look-up Table filter",
"Filippo Argiolas <filippo.argiolas@gmail.com>");
- gst_element_class_add_pad_template (element_class,
- gst_static_pad_template_get (&gst_color_effects_sink_template));
- gst_element_class_add_pad_template (element_class,
- gst_static_pad_template_get (&gst_color_effects_src_template));
+ gst_element_class_add_static_pad_template (element_class,
+ &gst_color_effects_sink_template);
+ gst_element_class_add_static_pad_template (element_class,
+ &gst_color_effects_src_template);
}
static void
diff --git a/gst/compositor/Makefile.in b/gst/compositor/Makefile.in
index b00c88d..f87fa3d 100644
--- a/gst/compositor/Makefile.in
+++ b/gst/compositor/Makefile.in
@@ -333,6 +333,8 @@
DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
DSYMUTIL = @DSYMUTIL@
DTLS_CFLAGS = @DTLS_CFLAGS@
DTLS_LIBS = @DTLS_LIBS@
@@ -548,6 +550,8 @@
LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
LIPO = @LIPO@
LN_S = @LN_S@
LOCALEDIR = @LOCALEDIR@
@@ -674,8 +678,6 @@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
SNDIO_LIBS = @SNDIO_LIBS@
@@ -720,6 +722,8 @@
WAYLAND_LIBS = @WAYLAND_LIBS@
WEBP_CFLAGS = @WEBP_CFLAGS@
WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
WGET = @WGET@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
diff --git a/gst/compositor/compositor.c b/gst/compositor/compositor.c
index eced976..c9fd3fc 100644
--- a/gst/compositor/compositor.c
+++ b/gst/compositor/compositor.c
@@ -75,7 +75,7 @@
* ]| A pipeline to demonstrate compositor used together with videobox.
* This should show a 320x240 pixels video test source with some transparency
* showing the background checker pattern. Another video test source with just
- * the snow pattern of 100x100 pixels is overlayed on top of the first one on
+ * the snow pattern of 100x100 pixels is overlaid on top of the first one on
* the left vertically centered with a small transparency showing the first
* video test source behind and the checker pattern under it. Note that the
* framerate of the output video is 10 frames per second.
@@ -239,9 +239,12 @@
comp_pad->height <=
0 ? GST_VIDEO_INFO_HEIGHT (&vagg_pad->info) : comp_pad->height;
- gst_video_calculate_display_ratio (&dar_n, &dar_d, pad_width, pad_height,
- GST_VIDEO_INFO_PAR_N (&vagg_pad->info),
- GST_VIDEO_INFO_PAR_D (&vagg_pad->info), out_par_n, out_par_d);
+ if (!gst_video_calculate_display_ratio (&dar_n, &dar_d, pad_width, pad_height,
+ GST_VIDEO_INFO_PAR_N (&vagg_pad->info),
+ GST_VIDEO_INFO_PAR_D (&vagg_pad->info), out_par_n, out_par_d)) {
+ GST_WARNING_OBJECT (comp_pad, "Cannot calculate display aspect ratio");
+ *width = *height = 0;
+ }
GST_LOG_OBJECT (comp_pad, "scaling %ux%u by %u/%u (%u/%u / %u/%u)", pad_width,
pad_height, dar_n, dar_d, GST_VIDEO_INFO_PAR_N (&vagg_pad->info),
GST_VIDEO_INFO_PAR_D (&vagg_pad->info), out_par_n, out_par_d);
@@ -254,10 +257,8 @@
pad_width = gst_util_uint64_scale_int (pad_height, dar_n, dar_d);
}
- if (width)
- *width = pad_width;
- if (height)
- *height = pad_height;
+ *width = pad_width;
+ *height = pad_height;
}
static gboolean
@@ -1112,10 +1113,8 @@
GST_TYPE_COMPOSITOR_BACKGROUND,
DEFAULT_BACKGROUND, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
- gst_element_class_add_pad_template (gstelement_class,
- gst_static_pad_template_get (&src_factory));
- gst_element_class_add_pad_template (gstelement_class,
- gst_static_pad_template_get (&sink_factory));
+ gst_element_class_add_static_pad_template (gstelement_class, &src_factory);
+ gst_element_class_add_static_pad_template (gstelement_class, &sink_factory);
gst_element_class_set_static_metadata (gstelement_class, "Compositor",
"Filter/Editor/Video/Compositor",
diff --git a/gst/dataurisrc/Makefile.in b/gst/dataurisrc/Makefile.in
index 8756410..408eca8 100644
--- a/gst/dataurisrc/Makefile.in
+++ b/gst/dataurisrc/Makefile.in
@@ -299,6 +299,8 @@
DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
DSYMUTIL = @DSYMUTIL@
DTLS_CFLAGS = @DTLS_CFLAGS@
DTLS_LIBS = @DTLS_LIBS@
@@ -514,6 +516,8 @@
LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
LIPO = @LIPO@
LN_S = @LN_S@
LOCALEDIR = @LOCALEDIR@
@@ -640,8 +644,6 @@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
SNDIO_LIBS = @SNDIO_LIBS@
@@ -686,6 +688,8 @@
WAYLAND_LIBS = @WAYLAND_LIBS@
WEBP_CFLAGS = @WEBP_CFLAGS@
WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
WGET = @WGET@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
diff --git a/gst/dataurisrc/gstdataurisrc.c b/gst/dataurisrc/gstdataurisrc.c
index fe018b0..84ec894 100644
--- a/gst/dataurisrc/gstdataurisrc.c
+++ b/gst/dataurisrc/gstdataurisrc.c
@@ -99,8 +99,7 @@
"URI that should be used",
NULL, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
- gst_element_class_add_pad_template (element_class,
- gst_static_pad_template_get (&src_template));
+ gst_element_class_add_static_pad_template (element_class, &src_template);
gst_element_class_set_static_metadata (element_class,
"data: URI source element", "Source", "Handles data: uris",
"Philippe Normand <pnormand@igalia.com>, "
diff --git a/gst/dccp/Makefile.in b/gst/dccp/Makefile.in
index 2b8fc41..f21618b 100644
--- a/gst/dccp/Makefile.in
+++ b/gst/dccp/Makefile.in
@@ -309,6 +309,8 @@
DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
DSYMUTIL = @DSYMUTIL@
DTLS_CFLAGS = @DTLS_CFLAGS@
DTLS_LIBS = @DTLS_LIBS@
@@ -524,6 +526,8 @@
LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
LIPO = @LIPO@
LN_S = @LN_S@
LOCALEDIR = @LOCALEDIR@
@@ -650,8 +654,6 @@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
SNDIO_LIBS = @SNDIO_LIBS@
@@ -696,6 +698,8 @@
WAYLAND_LIBS = @WAYLAND_LIBS@
WEBP_CFLAGS = @WEBP_CFLAGS@
WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
WGET = @WGET@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
diff --git a/gst/dccp/gstdccpclientsink.c b/gst/dccp/gstdccpclientsink.c
index 9e1f999..058db2b 100644
--- a/gst/dccp/gstdccpclientsink.c
+++ b/gst/dccp/gstdccpclientsink.c
@@ -239,8 +239,7 @@
{
GstElementClass *element_class = GST_ELEMENT_CLASS (g_class);
- gst_element_class_add_pad_template (element_class,
- gst_static_pad_template_get (&sinktemplate));
+ gst_element_class_add_static_pad_template (element_class, &sinktemplate);
gst_element_class_set_static_metadata (element_class, "DCCP client sink",
"Sink/Network",
diff --git a/gst/dccp/gstdccpclientsrc.c b/gst/dccp/gstdccpclientsrc.c
index a467a87..21ac8e2 100644
--- a/gst/dccp/gstdccpclientsrc.c
+++ b/gst/dccp/gstdccpclientsrc.c
@@ -272,8 +272,7 @@
{
GstElementClass *element_class = GST_ELEMENT_CLASS (g_class);
- gst_element_class_add_pad_template (element_class,
- gst_static_pad_template_get (&srctemplate));
+ gst_element_class_add_static_pad_template (element_class, &srctemplate);
gst_element_class_set_static_metadata (element_class, "DCCP client source",
"Source/Network",
diff --git a/gst/dccp/gstdccpserversink.c b/gst/dccp/gstdccpserversink.c
index 98e0960..7623523 100644
--- a/gst/dccp/gstdccpserversink.c
+++ b/gst/dccp/gstdccpserversink.c
@@ -336,8 +336,7 @@
{
GstElementClass *element_class = GST_ELEMENT_CLASS (g_class);
- gst_element_class_add_pad_template (element_class,
- gst_static_pad_template_get (&sinktemplate));
+ gst_element_class_add_static_pad_template (element_class, &sinktemplate);
gst_element_class_set_static_metadata (element_class, "DCCP server sink",
"Sink/Network",
diff --git a/gst/dccp/gstdccpserversrc.c b/gst/dccp/gstdccpserversrc.c
index d8e231d..357a8d1 100644
--- a/gst/dccp/gstdccpserversrc.c
+++ b/gst/dccp/gstdccpserversrc.c
@@ -262,8 +262,7 @@
{
GstElementClass *element_class = GST_ELEMENT_CLASS (g_class);
- gst_element_class_add_pad_template (element_class,
- gst_static_pad_template_get (&srctemplate));
+ gst_element_class_add_static_pad_template (element_class, &srctemplate);
gst_element_class_set_static_metadata (element_class, "DCCP server source",
"Source/Network",
diff --git a/gst/debugutils/Makefile.in b/gst/debugutils/Makefile.in
index e5ad858..393485f 100644
--- a/gst/debugutils/Makefile.in
+++ b/gst/debugutils/Makefile.in
@@ -310,6 +310,8 @@
DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
DSYMUTIL = @DSYMUTIL@
DTLS_CFLAGS = @DTLS_CFLAGS@
DTLS_LIBS = @DTLS_LIBS@
@@ -525,6 +527,8 @@
LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
LIPO = @LIPO@
LN_S = @LN_S@
LOCALEDIR = @LOCALEDIR@
@@ -651,8 +655,6 @@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
SNDIO_LIBS = @SNDIO_LIBS@
@@ -697,6 +699,8 @@
WAYLAND_LIBS = @WAYLAND_LIBS@
WEBP_CFLAGS = @WEBP_CFLAGS@
WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
WGET = @WGET@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
diff --git a/gst/debugutils/fpsdisplaysink.c b/gst/debugutils/fpsdisplaysink.c
index 92b3201..00f89a3 100644
--- a/gst/debugutils/fpsdisplaysink.c
+++ b/gst/debugutils/fpsdisplaysink.c
@@ -205,8 +205,8 @@
gstelement_klass->change_state = fps_display_sink_change_state;
- gst_element_class_add_pad_template (gstelement_klass,
- gst_static_pad_template_get (&fps_display_sink_template));
+ gst_element_class_add_static_pad_template (gstelement_klass,
+ &fps_display_sink_template);
gst_element_class_set_static_metadata (gstelement_klass,
"Measure and show framerate on videosink", "Sink/Video",
diff --git a/gst/debugutils/gstchecksumsink.c b/gst/debugutils/gstchecksumsink.c
index dd55d30..5560a14 100644
--- a/gst/debugutils/gstchecksumsink.c
+++ b/gst/debugutils/gstchecksumsink.c
@@ -25,6 +25,10 @@
#include <gst/base/gstbasesink.h>
#include "gstchecksumsink.h"
+static void gst_checksum_sink_set_property (GObject * object, guint prop_id,
+ const GValue * value, GParamSpec * pspec);
+static void gst_checksum_sink_get_property (GObject * object, guint prop_id,
+ GValue * value, GParamSpec * pspec);
static void gst_checksum_sink_dispose (GObject * object);
static void gst_checksum_sink_finalize (GObject * object);
@@ -33,6 +37,12 @@
static GstFlowReturn
gst_checksum_sink_render (GstBaseSink * sink, GstBuffer * buffer);
+enum
+{
+ PROP_0,
+ PROP_HASH,
+};
+
static GstStaticPadTemplate gst_checksum_sink_sink_template =
GST_STATIC_PAD_TEMPLATE ("sink",
GST_PAD_SINK,
@@ -47,6 +57,26 @@
/* class initialization */
+#define GST_TYPE_CHECKSUM_SINK_HASH (gst_checksum_sink_hash_get_type ())
+static GType
+gst_checksum_sink_hash_get_type (void)
+{
+ static GType gtype = 0;
+
+ if (gtype == 0) {
+ static const GEnumValue values[] = {
+ {G_CHECKSUM_MD5, "MD5", "md5"},
+ {G_CHECKSUM_SHA1, "SHA-1", "sha1"},
+ {G_CHECKSUM_SHA256, "SHA-256", "sha256"},
+ {G_CHECKSUM_SHA512, "SHA-512", "sha512"},
+ {0, NULL, NULL},
+ };
+
+ gtype = g_enum_register_static ("GstChecksumSinkHash", values);
+ }
+ return gtype;
+}
+
#define gst_checksum_sink_parent_class parent_class
G_DEFINE_TYPE (GstChecksumSink, gst_checksum_sink, GST_TYPE_BASE_SINK);
@@ -57,16 +87,23 @@
GstElementClass *element_class = GST_ELEMENT_CLASS (klass);
GstBaseSinkClass *base_sink_class = GST_BASE_SINK_CLASS (klass);
+ gobject_class->set_property = gst_checksum_sink_set_property;
+ gobject_class->get_property = gst_checksum_sink_get_property;
gobject_class->dispose = gst_checksum_sink_dispose;
gobject_class->finalize = gst_checksum_sink_finalize;
base_sink_class->start = GST_DEBUG_FUNCPTR (gst_checksum_sink_start);
base_sink_class->stop = GST_DEBUG_FUNCPTR (gst_checksum_sink_stop);
base_sink_class->render = GST_DEBUG_FUNCPTR (gst_checksum_sink_render);
- gst_element_class_add_pad_template (element_class,
- gst_static_pad_template_get (&gst_checksum_sink_src_template));
- gst_element_class_add_pad_template (element_class,
- gst_static_pad_template_get (&gst_checksum_sink_sink_template));
+ gst_element_class_add_static_pad_template (element_class,
+ &gst_checksum_sink_src_template);
+ gst_element_class_add_static_pad_template (element_class,
+ &gst_checksum_sink_sink_template);
+
+ g_object_class_install_property (gobject_class, PROP_HASH,
+ g_param_spec_enum ("hash", "Hash", "Checksum type",
+ gst_checksum_sink_hash_get_type (), G_CHECKSUM_SHA1,
+ G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
gst_element_class_set_static_metadata (element_class, "Checksum sink",
"Debug/Sink", "Calculates a checksum for buffers",
@@ -77,15 +114,48 @@
gst_checksum_sink_init (GstChecksumSink * checksumsink)
{
gst_base_sink_set_sync (GST_BASE_SINK (checksumsink), FALSE);
+ checksumsink->hash = G_CHECKSUM_SHA1;
}
-void
+static void
+gst_checksum_sink_set_property (GObject * object, guint prop_id,
+ const GValue * value, GParamSpec * pspec)
+{
+ GstChecksumSink *checksumsink = GST_CHECKSUM_SINK (object);
+
+ switch (prop_id) {
+ case PROP_HASH:
+ checksumsink->hash = g_value_get_enum (value);
+ break;
+ default:
+ G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+ break;
+ }
+}
+
+static void
+gst_checksum_sink_get_property (GObject * object, guint prop_id,
+ GValue * value, GParamSpec * pspec)
+{
+ GstChecksumSink *checksumsink = GST_CHECKSUM_SINK (object);
+
+ switch (prop_id) {
+ case PROP_HASH:
+ g_value_set_enum (value, checksumsink->hash);
+ break;
+ default:
+ G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+ break;
+ }
+}
+
+static void
gst_checksum_sink_dispose (GObject * object)
{
G_OBJECT_CLASS (parent_class)->dispose (object);
}
-void
+static void
gst_checksum_sink_finalize (GObject * object)
{
G_OBJECT_CLASS (parent_class)->finalize (object);
@@ -108,9 +178,11 @@
{
gchar *s;
GstMapInfo map;
+ GstChecksumSink *checksumsink;
+ checksumsink = GST_CHECKSUM_SINK (sink);
gst_buffer_map (buffer, &map, GST_MAP_READ);
- s = g_compute_checksum_for_data (G_CHECKSUM_SHA1, map.data, map.size);
+ s = g_compute_checksum_for_data (checksumsink->hash, map.data, map.size);
gst_buffer_unmap (buffer, &map);
g_print ("%" GST_TIME_FORMAT " %s\n",
GST_TIME_ARGS (GST_BUFFER_TIMESTAMP (buffer)), s);
diff --git a/gst/debugutils/gstchecksumsink.h b/gst/debugutils/gstchecksumsink.h
index d714628..d86ced4 100644
--- a/gst/debugutils/gstchecksumsink.h
+++ b/gst/debugutils/gstchecksumsink.h
@@ -37,7 +37,7 @@
struct _GstChecksumSink
{
GstBaseSink base_checksumsink;
-
+ GChecksumType hash;
};
struct _GstChecksumSinkClass
diff --git a/gst/debugutils/gstchopmydata.c b/gst/debugutils/gstchopmydata.c
index ceff7e5..c382d32 100644
--- a/gst/debugutils/gstchopmydata.c
+++ b/gst/debugutils/gstchopmydata.c
@@ -121,10 +121,10 @@
"Step increment for random buffer sizes", 1, G_MAXINT,
DEFAULT_MAX_SIZE, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
- gst_element_class_add_pad_template (element_class,
- gst_static_pad_template_get (&gst_chop_my_data_src_template));
- gst_element_class_add_pad_template (element_class,
- gst_static_pad_template_get (&gst_chop_my_data_sink_template));
+ gst_element_class_add_static_pad_template (element_class,
+ &gst_chop_my_data_src_template);
+ gst_element_class_add_static_pad_template (element_class,
+ &gst_chop_my_data_sink_template);
gst_element_class_set_static_metadata (element_class, "FIXME",
"Generic", "FIXME", "David Schleef <ds@schleef.org>");
diff --git a/gst/debugutils/gstcompare.c b/gst/debugutils/gstcompare.c
index 3d52615..777a8d8 100644
--- a/gst/debugutils/gstcompare.c
+++ b/gst/debugutils/gstcompare.c
@@ -169,12 +169,10 @@
"Whether threshold value is upper bound or lower bound for difference measure",
DEFAULT_UPPER, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
- gst_element_class_add_pad_template (gstelement_class,
- gst_static_pad_template_get (&src_factory));
- gst_element_class_add_pad_template (gstelement_class,
- gst_static_pad_template_get (&sink_factory));
- gst_element_class_add_pad_template (gstelement_class,
- gst_static_pad_template_get (&check_sink_factory));
+ gst_element_class_add_static_pad_template (gstelement_class, &src_factory);
+ gst_element_class_add_static_pad_template (gstelement_class, &sink_factory);
+ gst_element_class_add_static_pad_template (gstelement_class,
+ &check_sink_factory);
gst_element_class_set_static_metadata (gstelement_class, "Compare buffers",
"Filter/Debug", "Compares incoming buffers",
"Mark Nauwelaerts <mark.nauwelaerts@collabora.co.uk>");
diff --git a/gst/debugutils/gstdebugspy.c b/gst/debugutils/gstdebugspy.c
index 19e7cf2..fed2db1 100644
--- a/gst/debugutils/gstdebugspy.c
+++ b/gst/debugutils/gstdebugspy.c
@@ -139,10 +139,8 @@
"DebugSpy provides information on buffers with bus messages",
"Guillaume Emont <gemont@igalia.com>");
- gst_element_class_add_pad_template (element_class,
- gst_static_pad_template_get (&src_factory));
- gst_element_class_add_pad_template (element_class,
- gst_static_pad_template_get (&sink_factory));
+ gst_element_class_add_static_pad_template (element_class, &src_factory);
+ gst_element_class_add_static_pad_template (element_class, &sink_factory);
GST_DEBUG_CATEGORY_INIT (gst_debug_spy_debug, "debugspy", 0, "debugspy");
}
diff --git a/gst/debugutils/gsterrorignore.c b/gst/debugutils/gsterrorignore.c
index 3c19ed5..ed42a05 100644
--- a/gst/debugutils/gsterrorignore.c
+++ b/gst/debugutils/gsterrorignore.c
@@ -92,10 +92,8 @@
"Pass through all packets but ignore some GstFlowReturn types",
"Vivia Nikolaidou <vivia@toolsonair.com>");
- gst_element_class_add_pad_template (gstelement_class,
- gst_static_pad_template_get (&src_template));
- gst_element_class_add_pad_template (gstelement_class,
- gst_static_pad_template_get (&sink_template));
+ gst_element_class_add_static_pad_template (gstelement_class, &src_template);
+ gst_element_class_add_static_pad_template (gstelement_class, &sink_template);
gstelement_class->change_state = gst_error_ignore_change_state;
diff --git a/gst/dvbsuboverlay/Makefile.in b/gst/dvbsuboverlay/Makefile.in
index 0f1fc17..4cacb4f 100644
--- a/gst/dvbsuboverlay/Makefile.in
+++ b/gst/dvbsuboverlay/Makefile.in
@@ -303,6 +303,8 @@
DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
DSYMUTIL = @DSYMUTIL@
DTLS_CFLAGS = @DTLS_CFLAGS@
DTLS_LIBS = @DTLS_LIBS@
@@ -518,6 +520,8 @@
LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
LIPO = @LIPO@
LN_S = @LN_S@
LOCALEDIR = @LOCALEDIR@
@@ -644,8 +648,6 @@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
SNDIO_LIBS = @SNDIO_LIBS@
@@ -690,6 +692,8 @@
WAYLAND_LIBS = @WAYLAND_LIBS@
WEBP_CFLAGS = @WEBP_CFLAGS@
WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
WGET = @WGET@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
diff --git a/gst/dvbsuboverlay/gstdvbsuboverlay.c b/gst/dvbsuboverlay/gstdvbsuboverlay.c
index 3658201..0602003 100644
--- a/gst/dvbsuboverlay/gstdvbsuboverlay.c
+++ b/gst/dvbsuboverlay/gstdvbsuboverlay.c
@@ -162,12 +162,11 @@
gstelement_class->change_state =
GST_DEBUG_FUNCPTR (gst_dvbsub_overlay_change_state);
- gst_element_class_add_pad_template (gstelement_class,
- gst_static_pad_template_get (&src_factory));
- gst_element_class_add_pad_template (gstelement_class,
- gst_static_pad_template_get (&video_sink_factory));
- gst_element_class_add_pad_template (gstelement_class,
- gst_static_pad_template_get (&text_sink_factory));
+ gst_element_class_add_static_pad_template (gstelement_class, &src_factory);
+ gst_element_class_add_static_pad_template (gstelement_class,
+ &video_sink_factory);
+ gst_element_class_add_static_pad_template (gstelement_class,
+ &text_sink_factory);
gst_element_class_set_static_metadata (gstelement_class,
"DVB Subtitles Overlay",
diff --git a/gst/dvdspu/Makefile.in b/gst/dvdspu/Makefile.in
index 009b2f6..458b085 100644
--- a/gst/dvdspu/Makefile.in
+++ b/gst/dvdspu/Makefile.in
@@ -306,6 +306,8 @@
DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
DSYMUTIL = @DSYMUTIL@
DTLS_CFLAGS = @DTLS_CFLAGS@
DTLS_LIBS = @DTLS_LIBS@
@@ -521,6 +523,8 @@
LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
LIPO = @LIPO@
LN_S = @LN_S@
LOCALEDIR = @LOCALEDIR@
@@ -647,8 +651,6 @@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
SNDIO_LIBS = @SNDIO_LIBS@
@@ -693,6 +695,8 @@
WAYLAND_LIBS = @WAYLAND_LIBS@
WEBP_CFLAGS = @WEBP_CFLAGS@
WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
WGET = @WGET@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
diff --git a/gst/dvdspu/gstdvdspu.c b/gst/dvdspu/gstdvdspu.c
index 04a4387..52d1038 100644
--- a/gst/dvdspu/gstdvdspu.c
+++ b/gst/dvdspu/gstdvdspu.c
@@ -131,12 +131,11 @@
gstelement_class->change_state = gst_dvd_spu_change_state;
- gst_element_class_add_pad_template (gstelement_class,
- gst_static_pad_template_get (&src_factory));
- gst_element_class_add_pad_template (gstelement_class,
- gst_static_pad_template_get (&video_sink_factory));
- gst_element_class_add_pad_template (gstelement_class,
- gst_static_pad_template_get (&subpic_sink_factory));
+ gst_element_class_add_static_pad_template (gstelement_class, &src_factory);
+ gst_element_class_add_static_pad_template (gstelement_class,
+ &video_sink_factory);
+ gst_element_class_add_static_pad_template (gstelement_class,
+ &subpic_sink_factory);
gst_element_class_set_static_metadata (gstelement_class,
"Sub-picture Overlay", "Mixer/Video/Overlay/SubPicture/DVD/Bluray",
diff --git a/gst/faceoverlay/Makefile.in b/gst/faceoverlay/Makefile.in
index db2a418..6492262 100644
--- a/gst/faceoverlay/Makefile.in
+++ b/gst/faceoverlay/Makefile.in
@@ -303,6 +303,8 @@
DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
DSYMUTIL = @DSYMUTIL@
DTLS_CFLAGS = @DTLS_CFLAGS@
DTLS_LIBS = @DTLS_LIBS@
@@ -518,6 +520,8 @@
LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
LIPO = @LIPO@
LN_S = @LN_S@
LOCALEDIR = @LOCALEDIR@
@@ -644,8 +648,6 @@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
SNDIO_LIBS = @SNDIO_LIBS@
@@ -690,6 +692,8 @@
WAYLAND_LIBS = @WAYLAND_LIBS@
WEBP_CFLAGS = @WEBP_CFLAGS@
WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
WGET = @WGET@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
diff --git a/gst/faceoverlay/gstfaceoverlay.c b/gst/faceoverlay/gstfaceoverlay.c
index 2a84b54..19006f3 100644
--- a/gst/faceoverlay/gstfaceoverlay.c
+++ b/gst/faceoverlay/gstfaceoverlay.c
@@ -286,10 +286,8 @@
"Overlays SVG graphics over a detected face in a video stream",
"Laura Lucas Alday <lauralucas@gmail.com>");
- gst_element_class_add_pad_template (element_class,
- gst_static_pad_template_get (&src_factory));
- gst_element_class_add_pad_template (element_class,
- gst_static_pad_template_get (&sink_factory));
+ gst_element_class_add_static_pad_template (element_class, &src_factory);
+ gst_element_class_add_static_pad_template (element_class, &sink_factory);
}
static void
diff --git a/gst/festival/Makefile.in b/gst/festival/Makefile.in
index 1140829..91853f4 100644
--- a/gst/festival/Makefile.in
+++ b/gst/festival/Makefile.in
@@ -302,6 +302,8 @@
DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
DSYMUTIL = @DSYMUTIL@
DTLS_CFLAGS = @DTLS_CFLAGS@
DTLS_LIBS = @DTLS_LIBS@
@@ -517,6 +519,8 @@
LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
LIPO = @LIPO@
LN_S = @LN_S@
LOCALEDIR = @LOCALEDIR@
@@ -643,8 +647,6 @@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
SNDIO_LIBS = @SNDIO_LIBS@
@@ -689,6 +691,8 @@
WAYLAND_LIBS = @WAYLAND_LIBS@
WEBP_CFLAGS = @WEBP_CFLAGS@
WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
WGET = @WGET@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
diff --git a/gst/festival/gstfestival.c b/gst/festival/gstfestival.c
index 00ef82d..981ec61 100644
--- a/gst/festival/gstfestival.c
+++ b/gst/festival/gstfestival.c
@@ -163,10 +163,10 @@
GST_DEBUG_FUNCPTR (gst_festival_change_state);
/* register pads */
- gst_element_class_add_pad_template (gstelement_class,
- gst_static_pad_template_get (&sink_template_factory));
- gst_element_class_add_pad_template (gstelement_class,
- gst_static_pad_template_get (&src_template_factory));
+ gst_element_class_add_static_pad_template (gstelement_class,
+ &sink_template_factory);
+ gst_element_class_add_static_pad_template (gstelement_class,
+ &src_template_factory);
gst_element_class_set_static_metadata (gstelement_class,
"Festival Text-to-Speech synthesizer", "Filter/Effect/Audio",
diff --git a/gst/fieldanalysis/Makefile.in b/gst/fieldanalysis/Makefile.in
index 2f77894..a480ba9 100644
--- a/gst/fieldanalysis/Makefile.in
+++ b/gst/fieldanalysis/Makefile.in
@@ -331,6 +331,8 @@
DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
DSYMUTIL = @DSYMUTIL@
DTLS_CFLAGS = @DTLS_CFLAGS@
DTLS_LIBS = @DTLS_LIBS@
@@ -546,6 +548,8 @@
LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
LIPO = @LIPO@
LN_S = @LN_S@
LOCALEDIR = @LOCALEDIR@
@@ -672,8 +676,6 @@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
SNDIO_LIBS = @SNDIO_LIBS@
@@ -718,6 +720,8 @@
WAYLAND_LIBS = @WAYLAND_LIBS@
WEBP_CFLAGS = @WEBP_CFLAGS@
WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
WGET = @WGET@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
diff --git a/gst/fieldanalysis/gstfieldanalysis.c b/gst/fieldanalysis/gstfieldanalysis.c
index 260eaf3..ac6bf60 100644
--- a/gst/fieldanalysis/gstfieldanalysis.c
+++ b/gst/fieldanalysis/gstfieldanalysis.c
@@ -284,10 +284,8 @@
"Analyse fields from video frames to identify if they are progressive/telecined/interlaced",
"Robert Swain <robert.swain@collabora.co.uk>");
- gst_element_class_add_pad_template (gstelement_class,
- gst_static_pad_template_get (&src_factory));
- gst_element_class_add_pad_template (gstelement_class,
- gst_static_pad_template_get (&sink_factory));
+ gst_element_class_add_static_pad_template (gstelement_class, &src_factory);
+ gst_element_class_add_static_pad_template (gstelement_class, &sink_factory);
}
diff --git a/gst/freeverb/Makefile.in b/gst/freeverb/Makefile.in
index ee24cd9..0ced9c9 100644
--- a/gst/freeverb/Makefile.in
+++ b/gst/freeverb/Makefile.in
@@ -305,6 +305,8 @@
DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
DSYMUTIL = @DSYMUTIL@
DTLS_CFLAGS = @DTLS_CFLAGS@
DTLS_LIBS = @DTLS_LIBS@
@@ -520,6 +522,8 @@
LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
LIPO = @LIPO@
LN_S = @LN_S@
LOCALEDIR = @LOCALEDIR@
@@ -646,8 +650,6 @@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
SNDIO_LIBS = @SNDIO_LIBS@
@@ -692,6 +694,8 @@
WAYLAND_LIBS = @WAYLAND_LIBS@
WEBP_CFLAGS = @WEBP_CFLAGS@
WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
WGET = @WGET@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
diff --git a/gst/freeverb/gstfreeverb.c b/gst/freeverb/gstfreeverb.c
index 9500334..e4263e5 100644
--- a/gst/freeverb/gstfreeverb.c
+++ b/gst/freeverb/gstfreeverb.c
@@ -424,10 +424,8 @@
"Add reverberation to audio streams",
"Stefan Sauer <ensonic@users.sf.net>");
- gst_element_class_add_pad_template (element_class,
- gst_static_pad_template_get (&src_template));
- gst_element_class_add_pad_template (element_class,
- gst_static_pad_template_get (&sink_template));
+ gst_element_class_add_static_pad_template (element_class, &src_template);
+ gst_element_class_add_static_pad_template (element_class, &sink_template);
GST_BASE_TRANSFORM_CLASS (klass)->get_unit_size =
GST_DEBUG_FUNCPTR (gst_freeverb_get_unit_size);
diff --git a/gst/frei0r/Makefile.in b/gst/frei0r/Makefile.in
index f91296e..ce3fd52 100644
--- a/gst/frei0r/Makefile.in
+++ b/gst/frei0r/Makefile.in
@@ -306,6 +306,8 @@
DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
DSYMUTIL = @DSYMUTIL@
DTLS_CFLAGS = @DTLS_CFLAGS@
DTLS_LIBS = @DTLS_LIBS@
@@ -521,6 +523,8 @@
LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
LIPO = @LIPO@
LN_S = @LN_S@
LOCALEDIR = @LOCALEDIR@
@@ -647,8 +651,6 @@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
SNDIO_LIBS = @SNDIO_LIBS@
@@ -693,6 +695,8 @@
WAYLAND_LIBS = @WAYLAND_LIBS@
WEBP_CFLAGS = @WEBP_CFLAGS@
WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
WGET = @WGET@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
diff --git a/gst/gaudieffects/Makefile.in b/gst/gaudieffects/Makefile.in
index cee102b..63f754d 100644
--- a/gst/gaudieffects/Makefile.in
+++ b/gst/gaudieffects/Makefile.in
@@ -337,6 +337,8 @@
DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
DSYMUTIL = @DSYMUTIL@
DTLS_CFLAGS = @DTLS_CFLAGS@
DTLS_LIBS = @DTLS_LIBS@
@@ -552,6 +554,8 @@
LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
LIPO = @LIPO@
LN_S = @LN_S@
LOCALEDIR = @LOCALEDIR@
@@ -678,8 +682,6 @@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
SNDIO_LIBS = @SNDIO_LIBS@
@@ -724,6 +726,8 @@
WAYLAND_LIBS = @WAYLAND_LIBS@
WEBP_CFLAGS = @WEBP_CFLAGS@
WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
WGET = @WGET@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
diff --git a/gst/gaudieffects/gstburn.c b/gst/gaudieffects/gstburn.c
index a3a3c55..ee44875 100644
--- a/gst/gaudieffects/gstburn.c
+++ b/gst/gaudieffects/gstburn.c
@@ -138,10 +138,10 @@
"Burn adjusts the colors in the video signal.",
"Luis de Bethencourt <luis@debethencourt.com>");
- gst_element_class_add_pad_template (gstelement_class,
- gst_static_pad_template_get (&gst_burn_sink_template));
- gst_element_class_add_pad_template (gstelement_class,
- gst_static_pad_template_get (&gst_burn_src_template));
+ gst_element_class_add_static_pad_template (gstelement_class,
+ &gst_burn_sink_template);
+ gst_element_class_add_static_pad_template (gstelement_class,
+ &gst_burn_src_template);
gobject_class->set_property = gst_burn_set_property;
gobject_class->get_property = gst_burn_get_property;
diff --git a/gst/gaudieffects/gstchromium.c b/gst/gaudieffects/gstchromium.c
index 264bb65..65ac5b5 100644
--- a/gst/gaudieffects/gstchromium.c
+++ b/gst/gaudieffects/gstchromium.c
@@ -152,10 +152,10 @@
"Chromium breaks the colors of the video signal.",
"Luis de Bethencourt <luis@debethencourt.com>");
- gst_element_class_add_pad_template (gstelement_class,
- gst_static_pad_template_get (&gst_chromium_sink_template));
- gst_element_class_add_pad_template (gstelement_class,
- gst_static_pad_template_get (&gst_chromium_src_template));
+ gst_element_class_add_static_pad_template (gstelement_class,
+ &gst_chromium_sink_template);
+ gst_element_class_add_static_pad_template (gstelement_class,
+ &gst_chromium_src_template);
gobject_class->set_property = gst_chromium_set_property;
gobject_class->get_property = gst_chromium_get_property;
diff --git a/gst/gaudieffects/gstdilate.c b/gst/gaudieffects/gstdilate.c
index 83a3513..301135d 100644
--- a/gst/gaudieffects/gstdilate.c
+++ b/gst/gaudieffects/gstdilate.c
@@ -140,10 +140,10 @@
"Dilate copies the brightest pixel around.",
"Luis de Bethencourt <luis@debethencourt.com>");
- gst_element_class_add_pad_template (gstelement_class,
- gst_static_pad_template_get (&gst_dilate_sink_template));
- gst_element_class_add_pad_template (gstelement_class,
- gst_static_pad_template_get (&gst_dilate_src_template));
+ gst_element_class_add_static_pad_template (gstelement_class,
+ &gst_dilate_sink_template);
+ gst_element_class_add_static_pad_template (gstelement_class,
+ &gst_dilate_src_template);
gobject_class->set_property = gst_dilate_set_property;
gobject_class->get_property = gst_dilate_get_property;
diff --git a/gst/gaudieffects/gstdodge.c b/gst/gaudieffects/gstdodge.c
index 996d894..eb5019e 100644
--- a/gst/gaudieffects/gstdodge.c
+++ b/gst/gaudieffects/gstdodge.c
@@ -135,10 +135,10 @@
"Dodge saturates the colors in the video signal.",
"Luis de Bethencourt <luis@debethencourt.com>");
- gst_element_class_add_pad_template (gstelement_class,
- gst_static_pad_template_get (&gst_dodge_sink_template));
- gst_element_class_add_pad_template (gstelement_class,
- gst_static_pad_template_get (&gst_dodge_src_template));
+ gst_element_class_add_static_pad_template (gstelement_class,
+ &gst_dodge_sink_template);
+ gst_element_class_add_static_pad_template (gstelement_class,
+ &gst_dodge_src_template);
gobject_class->set_property = gst_dodge_set_property;
gobject_class->get_property = gst_dodge_get_property;
diff --git a/gst/gaudieffects/gstexclusion.c b/gst/gaudieffects/gstexclusion.c
index a723f69..6ebe825 100644
--- a/gst/gaudieffects/gstexclusion.c
+++ b/gst/gaudieffects/gstexclusion.c
@@ -140,10 +140,10 @@
"Exclusion exclodes the colors in the video signal.",
"Luis de Bethencourt <luis@debethencourt.com>");
- gst_element_class_add_pad_template (gstelement_class,
- gst_static_pad_template_get (&gst_exclusion_sink_template));
- gst_element_class_add_pad_template (gstelement_class,
- gst_static_pad_template_get (&gst_exclusion_src_template));
+ gst_element_class_add_static_pad_template (gstelement_class,
+ &gst_exclusion_sink_template);
+ gst_element_class_add_static_pad_template (gstelement_class,
+ &gst_exclusion_src_template);
gobject_class->set_property = gst_exclusion_set_property;
gobject_class->get_property = gst_exclusion_get_property;
diff --git a/gst/gaudieffects/gstgaussblur.c b/gst/gaudieffects/gstgaussblur.c
index 6ba9b84..4e3dc59 100644
--- a/gst/gaudieffects/gstgaussblur.c
+++ b/gst/gaudieffects/gstgaussblur.c
@@ -137,10 +137,10 @@
"Perform Gaussian blur/sharpen on a video",
"Jan Schmidt <thaytan@noraisin.net>");
- gst_element_class_add_pad_template (gstelement_class,
- gst_static_pad_template_get (&gst_gaussianblur_sink_template));
- gst_element_class_add_pad_template (gstelement_class,
- gst_static_pad_template_get (&gst_gaussianblur_src_template));
+ gst_element_class_add_static_pad_template (gstelement_class,
+ &gst_gaussianblur_sink_template);
+ gst_element_class_add_static_pad_template (gstelement_class,
+ &gst_gaussianblur_src_template);
gobject_class->set_property = gst_gaussianblur_set_property;
gobject_class->get_property = gst_gaussianblur_get_property;
diff --git a/gst/gaudieffects/gstsolarize.c b/gst/gaudieffects/gstsolarize.c
index f5d98b8..0710d0f 100644
--- a/gst/gaudieffects/gstsolarize.c
+++ b/gst/gaudieffects/gstsolarize.c
@@ -143,10 +143,10 @@
"Solarize tunable inverse in the video signal.",
"Luis de Bethencourt <luis@debethencourt.com>");
- gst_element_class_add_pad_template (gstelement_class,
- gst_static_pad_template_get (&gst_solarize_sink_template));
- gst_element_class_add_pad_template (gstelement_class,
- gst_static_pad_template_get (&gst_solarize_src_template));
+ gst_element_class_add_static_pad_template (gstelement_class,
+ &gst_solarize_sink_template);
+ gst_element_class_add_static_pad_template (gstelement_class,
+ &gst_solarize_src_template);
gobject_class->set_property = gst_solarize_set_property;
gobject_class->get_property = gst_solarize_get_property;
diff --git a/gst/gdp/Makefile.in b/gst/gdp/Makefile.in
index cf4631a..aa131e5 100644
--- a/gst/gdp/Makefile.in
+++ b/gst/gdp/Makefile.in
@@ -304,6 +304,8 @@
DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
DSYMUTIL = @DSYMUTIL@
DTLS_CFLAGS = @DTLS_CFLAGS@
DTLS_LIBS = @DTLS_LIBS@
@@ -519,6 +521,8 @@
LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
LIPO = @LIPO@
LN_S = @LN_S@
LOCALEDIR = @LOCALEDIR@
@@ -645,8 +649,6 @@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
SNDIO_LIBS = @SNDIO_LIBS@
@@ -691,6 +693,8 @@
WAYLAND_LIBS = @WAYLAND_LIBS@
WEBP_CFLAGS = @WEBP_CFLAGS@
WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
WGET = @WGET@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
diff --git a/gst/gdp/dataprotocol.c b/gst/gdp/dataprotocol.c
index fbb46a6..d6534ba 100644
--- a/gst/gdp/dataprotocol.c
+++ b/gst/gdp/dataprotocol.c
@@ -477,6 +477,8 @@
* gst_dp_buffer_from_header:
* @header_length: the length of the packet header
* @header: the byte array of the packet header
+ * @allocator: the allocator used to allocate the new #GstBuffer
+ * @allocation_params: the allocations parameters used to allocate the new #GstBuffer
*
* Creates a newly allocated #GstBuffer from the given header.
* The buffer data needs to be copied into it before validating.
@@ -490,7 +492,8 @@
* Returns: A #GstBuffer if the buffer was successfully created, or NULL.
*/
GstBuffer *
-gst_dp_buffer_from_header (guint header_length, const guint8 * header)
+gst_dp_buffer_from_header (guint header_length, const guint8 * header,
+ GstAllocator * allocator, GstAllocationParams * allocation_params)
{
GstBuffer *buffer;
@@ -500,8 +503,8 @@
GST_DP_PAYLOAD_BUFFER, NULL);
buffer =
- gst_buffer_new_allocate (NULL,
- (guint) GST_DP_HEADER_PAYLOAD_LENGTH (header), NULL);
+ gst_buffer_new_allocate (allocator,
+ (guint) GST_DP_HEADER_PAYLOAD_LENGTH (header), allocation_params);
GST_BUFFER_TIMESTAMP (buffer) = GST_DP_HEADER_TIMESTAMP (header);
GST_BUFFER_DTS (buffer) = GST_DP_HEADER_DTS (header);
diff --git a/gst/gdp/dataprotocol.h b/gst/gdp/dataprotocol.h
index ac1d010..397bf43 100644
--- a/gst/gdp/dataprotocol.h
+++ b/gst/gdp/dataprotocol.h
@@ -78,7 +78,9 @@
/* converting to GstBuffer/GstEvent/GstCaps */
GstBuffer * gst_dp_buffer_from_header (guint header_length,
- const guint8 * header);
+ const guint8 * header,
+ GstAllocator * allocator,
+ GstAllocationParams * allocation_params);
GstCaps * gst_dp_caps_from_packet (guint header_length,
const guint8 * header,
const guint8 * payload);
diff --git a/gst/gdp/gstgdpdepay.c b/gst/gdp/gstgdpdepay.c
index b779a85..b7269bd 100644
--- a/gst/gdp/gstgdpdepay.c
+++ b/gst/gdp/gstgdpdepay.c
@@ -86,6 +86,7 @@
const GValue * value, GParamSpec * pspec);
static void gst_gdp_depay_get_property (GObject * object, guint prop_id,
GValue * value, GParamSpec * pspec);
+static void gst_gdp_depay_decide_allocation (GstGDPDepay * depay);
static void
gst_gdp_depay_class_init (GstGDPDepayClass * klass)
@@ -110,10 +111,10 @@
"Depayloads GStreamer Data Protocol buffers",
"Thomas Vander Stichele <thomas at apestaart dot org>");
- gst_element_class_add_pad_template (gstelement_class,
- gst_static_pad_template_get (&gdp_depay_sink_template));
- gst_element_class_add_pad_template (gstelement_class,
- gst_static_pad_template_get (&gdp_depay_src_template));
+ gst_element_class_add_static_pad_template (gstelement_class,
+ &gdp_depay_sink_template);
+ gst_element_class_add_static_pad_template (gstelement_class,
+ &gdp_depay_src_template);
gstelement_class->change_state =
GST_DEBUG_FUNCPTR (gst_gdp_depay_change_state);
@@ -140,6 +141,9 @@
gst_element_add_pad (GST_ELEMENT (gdpdepay), gdpdepay->srcpad);
gdpdepay->adapter = gst_adapter_new ();
+
+ gdpdepay->allocator = NULL;
+ gst_allocation_params_init (&gdpdepay->allocation_params);
}
static void
@@ -153,6 +157,8 @@
g_free (this->header);
gst_adapter_clear (this->adapter);
g_object_unref (this->adapter);
+ if (this->allocator)
+ gst_object_unref (this->allocator);
GST_CALL_PARENT (G_OBJECT_CLASS, finalize, (gobject));
}
@@ -265,6 +271,10 @@
this = GST_GDP_DEPAY (parent);
+ if (gst_pad_check_reconfigure (this->srcpad)) {
+ gst_gdp_depay_decide_allocation (this);
+ }
+
/* On DISCONT, get rid of accumulated data. We assume a buffer after the
* DISCONT contains (part of) a new valid header, if not we error because we
* lost sync */
@@ -352,7 +362,9 @@
goto no_caps;
GST_LOG_OBJECT (this, "reading GDP buffer from adapter");
- buf = gst_dp_buffer_from_header (GST_DP_HEADER_LENGTH, this->header);
+ buf =
+ gst_dp_buffer_from_header (GST_DP_HEADER_LENGTH, this->header,
+ this->allocator, &this->allocation_params);
if (!buf)
goto buffer_failed;
@@ -411,6 +423,7 @@
GST_DEBUG_OBJECT (this, "deserialized caps %" GST_PTR_FORMAT, caps);
gst_caps_replace (&(this->caps), caps);
gst_pad_set_caps (this->srcpad, caps);
+ gst_gdp_depay_decide_allocation (this);
/* drop the creation ref we still have */
gst_caps_unref (caps);
@@ -521,6 +534,10 @@
this->caps = NULL;
}
gst_adapter_clear (this->adapter);
+ if (this->allocator)
+ gst_object_unref (this->allocator);
+ this->allocator = NULL;
+ gst_allocation_params_init (&this->allocation_params);
break;
default:
break;
@@ -528,6 +545,43 @@
return ret;
}
+static void
+gst_gdp_depay_decide_allocation (GstGDPDepay * gdpdepay)
+{
+ GstAllocator *allocator;
+ GstAllocationParams params;
+ GstQuery *query = NULL;
+ GstCaps *caps;
+
+ caps = gst_pad_query_caps (gdpdepay->srcpad, NULL);
+ if (!caps) {
+ GST_LOG_OBJECT (gdpdepay,
+ "No peer pad caps found. Using default allocator.");
+ return;
+ }
+
+ query = gst_query_new_allocation (caps, TRUE);
+ if (!gst_pad_peer_query (gdpdepay->srcpad, query)) {
+ GST_WARNING_OBJECT (gdpdepay, "Peer allocation query failed.");
+ }
+
+ if (gst_query_get_n_allocation_params (query) > 0) {
+ gst_query_parse_nth_allocation_param (query, 0, &allocator, ¶ms);
+ } else {
+ allocator = NULL;
+ gst_allocation_params_init (¶ms);
+ }
+
+ if (gdpdepay->allocator)
+ gst_object_unref (gdpdepay->allocator);
+
+ gdpdepay->allocator = allocator;
+ gdpdepay->allocation_params = params;
+
+ gst_caps_unref (caps);
+ gst_query_unref (query);
+}
+
gboolean
gst_gdp_depay_plugin_init (GstPlugin * plugin)
{
diff --git a/gst/gdp/gstgdpdepay.h b/gst/gdp/gstgdpdepay.h
index 43bbf9d..c21f302 100644
--- a/gst/gdp/gstgdpdepay.h
+++ b/gst/gdp/gstgdpdepay.h
@@ -68,6 +68,9 @@
GstDPPayloadType payload_type;
gint64 ts_offset;
+
+ GstAllocator *allocator;
+ GstAllocationParams allocation_params;
};
struct _GstGDPDepayClass
diff --git a/gst/gdp/gstgdppay.c b/gst/gdp/gstgdppay.c
index b428462..6b55895 100644
--- a/gst/gdp/gstgdppay.c
+++ b/gst/gdp/gstgdppay.c
@@ -117,10 +117,10 @@
"Payloads GStreamer Data Protocol buffers",
"Thomas Vander Stichele <thomas at apestaart dot org>");
- gst_element_class_add_pad_template (gstelement_class,
- gst_static_pad_template_get (&gdp_pay_sink_template));
- gst_element_class_add_pad_template (gstelement_class,
- gst_static_pad_template_get (&gdp_pay_src_template));
+ gst_element_class_add_static_pad_template (gstelement_class,
+ &gdp_pay_sink_template);
+ gst_element_class_add_static_pad_template (gstelement_class,
+ &gdp_pay_src_template);
gstelement_class->change_state = GST_DEBUG_FUNCPTR (gst_gdp_pay_change_state);
}
diff --git a/gst/geometrictransform/Makefile.in b/gst/geometrictransform/Makefile.in
index a1b5f61..bb8458b 100644
--- a/gst/geometrictransform/Makefile.in
+++ b/gst/geometrictransform/Makefile.in
@@ -325,6 +325,8 @@
DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
DSYMUTIL = @DSYMUTIL@
DTLS_CFLAGS = @DTLS_CFLAGS@
DTLS_LIBS = @DTLS_LIBS@
@@ -540,6 +542,8 @@
LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
LIPO = @LIPO@
LN_S = @LN_S@
LOCALEDIR = @LOCALEDIR@
@@ -666,8 +670,6 @@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
SNDIO_LIBS = @SNDIO_LIBS@
@@ -712,6 +714,8 @@
WAYLAND_LIBS = @WAYLAND_LIBS@
WEBP_CFLAGS = @WEBP_CFLAGS@
WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
WGET = @WGET@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
diff --git a/gst/geometrictransform/gstgeometrictransform.c b/gst/geometrictransform/gstgeometrictransform.c
index 94910ed..a6c00a8 100644
--- a/gst/geometrictransform/gstgeometrictransform.c
+++ b/gst/geometrictransform/gstgeometrictransform.c
@@ -352,10 +352,10 @@
{
GstElementClass *element_class = GST_ELEMENT_CLASS (g_class);
- gst_element_class_add_pad_template (element_class,
- gst_static_pad_template_get (&gst_geometric_transform_sink_template));
- gst_element_class_add_pad_template (element_class,
- gst_static_pad_template_get (&gst_geometric_transform_src_template));
+ gst_element_class_add_static_pad_template (element_class,
+ &gst_geometric_transform_sink_template);
+ gst_element_class_add_static_pad_template (element_class,
+ &gst_geometric_transform_src_template);
}
static void
diff --git a/gst/hdvparse/Makefile.in b/gst/hdvparse/Makefile.in
index de0f5e0..eb329f1 100644
--- a/gst/hdvparse/Makefile.in
+++ b/gst/hdvparse/Makefile.in
@@ -302,6 +302,8 @@
DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
DSYMUTIL = @DSYMUTIL@
DTLS_CFLAGS = @DTLS_CFLAGS@
DTLS_LIBS = @DTLS_LIBS@
@@ -517,6 +519,8 @@
LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
LIPO = @LIPO@
LN_S = @LN_S@
LOCALEDIR = @LOCALEDIR@
@@ -643,8 +647,6 @@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
SNDIO_LIBS = @SNDIO_LIBS@
@@ -689,6 +691,8 @@
WAYLAND_LIBS = @WAYLAND_LIBS@
WEBP_CFLAGS = @WEBP_CFLAGS@
WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
WGET = @WGET@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
diff --git a/gst/hdvparse/gsthdvparse.c b/gst/hdvparse/gsthdvparse.c
index 837c74e..b899e95 100644
--- a/gst/hdvparse/gsthdvparse.c
+++ b/gst/hdvparse/gsthdvparse.c
@@ -116,10 +116,8 @@
GstElementClass *element_class = GST_ELEMENT_CLASS (klass);
- gst_element_class_add_pad_template (element_class,
- gst_static_pad_template_get (&src_template));
- gst_element_class_add_pad_template (element_class,
- gst_static_pad_template_get (&sink_template));
+ gst_element_class_add_static_pad_template (element_class, &src_template);
+ gst_element_class_add_static_pad_template (element_class, &sink_template);
gst_element_class_set_static_metadata (element_class, "HDVParser",
"Data/Parser",
"HDV private stream Parser", "Edward Hervey <bilboed@bilboed.com>");
diff --git a/gst/id3tag/Makefile.in b/gst/id3tag/Makefile.in
index ef09091..163fb43 100644
--- a/gst/id3tag/Makefile.in
+++ b/gst/id3tag/Makefile.in
@@ -303,6 +303,8 @@
DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
DSYMUTIL = @DSYMUTIL@
DTLS_CFLAGS = @DTLS_CFLAGS@
DTLS_LIBS = @DTLS_LIBS@
@@ -518,6 +520,8 @@
LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
LIPO = @LIPO@
LN_S = @LN_S@
LOCALEDIR = @LOCALEDIR@
@@ -644,8 +648,6 @@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
SNDIO_LIBS = @SNDIO_LIBS@
@@ -690,6 +692,8 @@
WAYLAND_LIBS = @WAYLAND_LIBS@
WEBP_CFLAGS = @WEBP_CFLAGS@
WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
WGET = @WGET@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
diff --git a/gst/id3tag/gstid3mux.c b/gst/id3tag/gstid3mux.c
index 6417538..37c7a49 100644
--- a/gst/id3tag/gstid3mux.c
+++ b/gst/id3tag/gstid3mux.c
@@ -129,11 +129,8 @@
"Michael Smith <msmith@songbirdnest.com>, "
"Tim-Philipp Müller <tim centricular net>");
- gst_element_class_add_pad_template (element_class,
- gst_static_pad_template_get (&sink_template));
-
- gst_element_class_add_pad_template (element_class,
- gst_static_pad_template_get (&src_template));
+ gst_element_class_add_static_pad_template (element_class, &sink_template);
+ gst_element_class_add_static_pad_template (element_class, &src_template);
}
static void
diff --git a/gst/inter/Makefile.in b/gst/inter/Makefile.in
index fdec405..f8db455 100644
--- a/gst/inter/Makefile.in
+++ b/gst/inter/Makefile.in
@@ -319,6 +319,8 @@
DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
DSYMUTIL = @DSYMUTIL@
DTLS_CFLAGS = @DTLS_CFLAGS@
DTLS_LIBS = @DTLS_LIBS@
@@ -534,6 +536,8 @@
LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
LIPO = @LIPO@
LN_S = @LN_S@
LOCALEDIR = @LOCALEDIR@
@@ -660,8 +664,6 @@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
SNDIO_LIBS = @SNDIO_LIBS@
@@ -706,6 +708,8 @@
WAYLAND_LIBS = @WAYLAND_LIBS@
WEBP_CFLAGS = @WEBP_CFLAGS@
WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
WGET = @WGET@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
diff --git a/gst/inter/gstinteraudiosink.c b/gst/inter/gstinteraudiosink.c
index 261ed25..19fc5d2 100644
--- a/gst/inter/gstinteraudiosink.c
+++ b/gst/inter/gstinteraudiosink.c
@@ -99,8 +99,8 @@
GST_DEBUG_CATEGORY_INIT (gst_inter_audio_sink_debug_category,
"interaudiosink", 0, "debug category for interaudiosink element");
- gst_element_class_add_pad_template (element_class,
- gst_static_pad_template_get (&gst_inter_audio_sink_sink_template));
+ gst_element_class_add_static_pad_template (element_class,
+ &gst_inter_audio_sink_sink_template);
gst_element_class_set_static_metadata (element_class,
"Internal audio sink",
diff --git a/gst/inter/gstinteraudiosrc.c b/gst/inter/gstinteraudiosrc.c
index 1d4b68b..10581ba 100644
--- a/gst/inter/gstinteraudiosrc.c
+++ b/gst/inter/gstinteraudiosrc.c
@@ -106,8 +106,8 @@
GST_DEBUG_CATEGORY_INIT (gst_inter_audio_src_debug_category, "interaudiosrc",
0, "debug category for interaudiosrc element");
- gst_element_class_add_pad_template (element_class,
- gst_static_pad_template_get (&gst_inter_audio_src_src_template));
+ gst_element_class_add_static_pad_template (element_class,
+ &gst_inter_audio_src_src_template);
gst_element_class_set_static_metadata (element_class,
"Internal audio source",
diff --git a/gst/inter/gstintersubsink.c b/gst/inter/gstintersubsink.c
index 77bc484..038acbb 100644
--- a/gst/inter/gstintersubsink.c
+++ b/gst/inter/gstintersubsink.c
@@ -91,8 +91,8 @@
GST_DEBUG_CATEGORY_INIT (gst_inter_sub_sink_debug_category, "intersubsink", 0,
"debug category for intersubsink element");
- gst_element_class_add_pad_template (element_class,
- gst_static_pad_template_get (&gst_inter_sub_sink_sink_template));
+ gst_element_class_add_static_pad_template (element_class,
+ &gst_inter_sub_sink_sink_template);
gst_element_class_set_static_metadata (element_class,
"Internal subtitle sink",
diff --git a/gst/inter/gstintersubsrc.c b/gst/inter/gstintersubsrc.c
index 482a20f..ac49265 100644
--- a/gst/inter/gstintersubsrc.c
+++ b/gst/inter/gstintersubsrc.c
@@ -93,8 +93,8 @@
GST_DEBUG_CATEGORY_INIT (gst_inter_sub_src_debug_category, "intersubsrc", 0,
"debug category for intersubsrc element");
- gst_element_class_add_pad_template (element_class,
- gst_static_pad_template_get (&gst_inter_sub_src_src_template));
+ gst_element_class_add_static_pad_template (element_class,
+ &gst_inter_sub_src_src_template);
gst_element_class_set_static_metadata (element_class,
"Internal subtitle source",
diff --git a/gst/inter/gstintervideosink.c b/gst/inter/gstintervideosink.c
index ca357d6..edee11d 100644
--- a/gst/inter/gstintervideosink.c
+++ b/gst/inter/gstintervideosink.c
@@ -94,8 +94,8 @@
GST_DEBUG_CATEGORY_INIT (gst_inter_video_sink_debug_category,
"intervideosink", 0, "debug category for intervideosink element");
- gst_element_class_add_pad_template (element_class,
- gst_static_pad_template_get (&gst_inter_video_sink_sink_template));
+ gst_element_class_add_static_pad_template (element_class,
+ &gst_inter_video_sink_sink_template);
gst_element_class_set_static_metadata (element_class,
"Internal video sink",
diff --git a/gst/inter/gstintervideosrc.c b/gst/inter/gstintervideosrc.c
index 8cab648..fd41d50 100644
--- a/gst/inter/gstintervideosrc.c
+++ b/gst/inter/gstintervideosrc.c
@@ -100,8 +100,8 @@
GST_DEBUG_CATEGORY_INIT (gst_inter_video_src_debug_category, "intervideosrc",
0, "debug category for intervideosrc element");
- gst_element_class_add_pad_template (element_class,
- gst_static_pad_template_get (&gst_inter_video_src_src_template));
+ gst_element_class_add_static_pad_template (element_class,
+ &gst_inter_video_src_src_template);
gst_element_class_set_static_metadata (element_class,
"Internal video source",
diff --git a/gst/interlace/Makefile.in b/gst/interlace/Makefile.in
index 0753198..f53c3a6 100644
--- a/gst/interlace/Makefile.in
+++ b/gst/interlace/Makefile.in
@@ -299,6 +299,8 @@
DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
DSYMUTIL = @DSYMUTIL@
DTLS_CFLAGS = @DTLS_CFLAGS@
DTLS_LIBS = @DTLS_LIBS@
@@ -514,6 +516,8 @@
LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
LIPO = @LIPO@
LN_S = @LN_S@
LOCALEDIR = @LOCALEDIR@
@@ -640,8 +644,6 @@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
SNDIO_LIBS = @SNDIO_LIBS@
@@ -686,6 +688,8 @@
WAYLAND_LIBS = @WAYLAND_LIBS@
WEBP_CFLAGS = @WEBP_CFLAGS@
WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
WGET = @WGET@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
diff --git a/gst/interlace/gstinterlace.c b/gst/interlace/gstinterlace.c
index ae9f2de..88e68c0 100644
--- a/gst/interlace/gstinterlace.c
+++ b/gst/interlace/gstinterlace.c
@@ -104,6 +104,7 @@
GstClockTime timebase;
int fields_since_timebase;
guint pattern_offset; /* initial offset into the pattern */
+ gboolean passthrough;
};
struct _GstInterlaceClass
@@ -182,7 +183,7 @@
GST_PAD_ALWAYS,
GST_STATIC_CAPS (GST_VIDEO_CAPS_MAKE
("{AYUV,YUY2,UYVY,I420,YV12,Y42B,Y444,NV12,NV21}")
- ",interlace-mode=progressive")
+ )
);
GType gst_interlace_get_type (void);
@@ -247,10 +248,10 @@
"Creates an interlaced video from progressive frames",
"David Schleef <ds@schleef.org>");
- gst_element_class_add_pad_template (element_class,
- gst_static_pad_template_get (&gst_interlace_sink_template));
- gst_element_class_add_pad_template (element_class,
- gst_static_pad_template_get (&gst_interlace_src_template));
+ gst_element_class_add_static_pad_template (element_class,
+ &gst_interlace_sink_template);
+ gst_element_class_add_static_pad_template (element_class,
+ &gst_interlace_src_template);
element_class->change_state = gst_interlace_change_state;
}
@@ -267,6 +268,7 @@
interlace->phase_index = interlace->pattern_offset;
interlace->timebase = GST_CLOCK_TIME_NONE;
interlace->field_index = 0;
+ interlace->passthrough = FALSE;
if (interlace->stored_frame) {
gst_buffer_unref (interlace->stored_frame);
interlace->stored_frame = NULL;
@@ -392,8 +394,21 @@
gst_caps_set_simple (othercaps, "interlace-mode", G_TYPE_STRING,
"interleaved", NULL);
}
- gst_caps_set_simple (othercaps, "framerate", GST_TYPE_FRACTION,
- interlace->src_fps_n, interlace->src_fps_d, NULL);
+
+ if (gst_caps_can_intersect (caps, othercaps)) {
+ interlace->passthrough = TRUE;
+ } else {
+ if (GST_VIDEO_INFO_IS_INTERLACED (&info)) {
+ GST_ERROR_OBJECT (interlace,
+ "Caps %" GST_PTR_FORMAT " not compatible with %" GST_PTR_FORMAT, caps,
+ othercaps);
+ gst_caps_unref (othercaps);
+ goto caps_error;
+ }
+ interlace->passthrough = FALSE;
+ gst_caps_set_simple (othercaps, "framerate", GST_TYPE_FRACTION,
+ interlace->src_fps_n, interlace->src_fps_d, NULL);
+ }
ret = gst_pad_set_caps (interlace->srcpad, othercaps);
gst_caps_unref (othercaps);
@@ -686,6 +701,7 @@
}
icaps = gst_caps_make_writable (icaps);
+ tcaps = gst_caps_copy (icaps);
if (interlace->pattern > GST_INTERLACE_PATTERN_2_2) {
mode = "mixed";
} else {
@@ -693,6 +709,13 @@
}
gst_caps_set_simple (icaps, "interlace-mode", G_TYPE_STRING,
pad == interlace->srcpad ? mode : "progressive", NULL);
+ if (pad == interlace->sinkpad) {
+ gst_caps_set_simple (tcaps, "interlace-mode", G_TYPE_STRING, mode, NULL);
+ icaps = gst_caps_merge (icaps, tcaps);
+ tcaps = NULL;
+ } else {
+ gst_caps_unref (tcaps);
+ }
icaps =
gst_interlace_caps_double_framerate (icaps, (pad == interlace->srcpad));
@@ -837,6 +860,10 @@
(GST_BUFFER_FLAGS (buffer) & GST_VIDEO_BUFFER_FLAG_ONEFIELD) ? "onefield"
: "");
+ if (interlace->passthrough) {
+ return gst_pad_push (interlace->srcpad, buffer);
+ }
+
if (GST_BUFFER_FLAGS (buffer) & GST_BUFFER_FLAG_DISCONT) {
GST_DEBUG ("discont");
diff --git a/gst/ivfparse/Makefile.in b/gst/ivfparse/Makefile.in
index 8739814..77c0f8d 100644
--- a/gst/ivfparse/Makefile.in
+++ b/gst/ivfparse/Makefile.in
@@ -302,6 +302,8 @@
DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
DSYMUTIL = @DSYMUTIL@
DTLS_CFLAGS = @DTLS_CFLAGS@
DTLS_LIBS = @DTLS_LIBS@
@@ -517,6 +519,8 @@
LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
LIPO = @LIPO@
LN_S = @LN_S@
LOCALEDIR = @LOCALEDIR@
@@ -643,8 +647,6 @@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
SNDIO_LIBS = @SNDIO_LIBS@
@@ -689,6 +691,8 @@
WAYLAND_LIBS = @WAYLAND_LIBS@
WEBP_CFLAGS = @WEBP_CFLAGS@
WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
WGET = @WGET@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
diff --git a/gst/ivfparse/gstivfparse.c b/gst/ivfparse/gstivfparse.c
index bea1e19..e0e8401 100644
--- a/gst/ivfparse/gstivfparse.c
+++ b/gst/ivfparse/gstivfparse.c
@@ -99,10 +99,8 @@
gstbaseparse_class->stop = gst_ivf_parse_stop;
gstbaseparse_class->handle_frame = gst_ivf_parse_handle_frame;
- gst_element_class_add_pad_template (gstelement_class,
- gst_static_pad_template_get (&src_factory));
- gst_element_class_add_pad_template (gstelement_class,
- gst_static_pad_template_get (&sink_factory));
+ gst_element_class_add_static_pad_template (gstelement_class, &src_factory);
+ gst_element_class_add_static_pad_template (gstelement_class, &sink_factory);
gst_element_class_set_static_metadata (gstelement_class,
"IVF parser", "Codec/Demuxer",
diff --git a/gst/ivtc/Makefile.in b/gst/ivtc/Makefile.in
index adbee9e..722b535 100644
--- a/gst/ivtc/Makefile.in
+++ b/gst/ivtc/Makefile.in
@@ -300,6 +300,8 @@
DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
DSYMUTIL = @DSYMUTIL@
DTLS_CFLAGS = @DTLS_CFLAGS@
DTLS_LIBS = @DTLS_LIBS@
@@ -515,6 +517,8 @@
LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
LIPO = @LIPO@
LN_S = @LN_S@
LOCALEDIR = @LOCALEDIR@
@@ -641,8 +645,6 @@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
SNDIO_LIBS = @SNDIO_LIBS@
@@ -687,6 +689,8 @@
WAYLAND_LIBS = @WAYLAND_LIBS@
WEBP_CFLAGS = @WEBP_CFLAGS@
WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
WGET = @WGET@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
diff --git a/gst/ivtc/gstcombdetect.c b/gst/ivtc/gstcombdetect.c
index 2356b96..210d39c 100644
--- a/gst/ivtc/gstcombdetect.c
+++ b/gst/ivtc/gstcombdetect.c
@@ -103,10 +103,10 @@
/* Setting up pads and setting metadata should be moved to
base_class_init if you intend to subclass this class. */
- gst_element_class_add_pad_template (GST_ELEMENT_CLASS (klass),
- gst_static_pad_template_get (&gst_comb_detect_sink_template));
- gst_element_class_add_pad_template (GST_ELEMENT_CLASS (klass),
- gst_static_pad_template_get (&gst_comb_detect_src_template));
+ gst_element_class_add_static_pad_template (GST_ELEMENT_CLASS (klass),
+ &gst_comb_detect_sink_template);
+ gst_element_class_add_static_pad_template (GST_ELEMENT_CLASS (klass),
+ &gst_comb_detect_src_template);
gst_element_class_set_static_metadata (GST_ELEMENT_CLASS (klass),
"Comb Detect", "Video/Filter", "Detect combing artifacts in video stream",
diff --git a/gst/ivtc/gstivtc.c b/gst/ivtc/gstivtc.c
index 6dd0c8d..09b02a5 100644
--- a/gst/ivtc/gstivtc.c
+++ b/gst/ivtc/gstivtc.c
@@ -119,10 +119,10 @@
/* Setting up pads and setting metadata should be moved to
base_class_init if you intend to subclass this class. */
- gst_element_class_add_pad_template (GST_ELEMENT_CLASS (klass),
- gst_static_pad_template_get (&gst_ivtc_sink_template));
- gst_element_class_add_pad_template (GST_ELEMENT_CLASS (klass),
- gst_static_pad_template_get (&gst_ivtc_src_template));
+ gst_element_class_add_static_pad_template (GST_ELEMENT_CLASS (klass),
+ &gst_ivtc_sink_template);
+ gst_element_class_add_static_pad_template (GST_ELEMENT_CLASS (klass),
+ &gst_ivtc_src_template);
gst_element_class_set_static_metadata (GST_ELEMENT_CLASS (klass),
"Inverse Telecine", "Video/Filter", "Inverse Telecine Filter",
diff --git a/gst/jp2kdecimator/Makefile.in b/gst/jp2kdecimator/Makefile.in
index 7d1b517..d64158e 100644
--- a/gst/jp2kdecimator/Makefile.in
+++ b/gst/jp2kdecimator/Makefile.in
@@ -304,6 +304,8 @@
DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
DSYMUTIL = @DSYMUTIL@
DTLS_CFLAGS = @DTLS_CFLAGS@
DTLS_LIBS = @DTLS_LIBS@
@@ -519,6 +521,8 @@
LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
LIPO = @LIPO@
LN_S = @LN_S@
LOCALEDIR = @LOCALEDIR@
@@ -645,8 +649,6 @@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
SNDIO_LIBS = @SNDIO_LIBS@
@@ -691,6 +693,8 @@
WAYLAND_LIBS = @WAYLAND_LIBS@
WEBP_CFLAGS = @WEBP_CFLAGS@
WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
WGET = @WGET@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
diff --git a/gst/jp2kdecimator/gstjp2kdecimator.c b/gst/jp2kdecimator/gstjp2kdecimator.c
index cb95cc0..75ee746 100644
--- a/gst/jp2kdecimator/gstjp2kdecimator.c
+++ b/gst/jp2kdecimator/gstjp2kdecimator.c
@@ -92,10 +92,10 @@
"Removes information from JPEG2000 streams without recompression",
"Sebastian Dröge <sebastian.droege@collabora.co.uk>");
- gst_element_class_add_pad_template (gstelement_class,
- gst_static_pad_template_get (&sink_pad_template));
- gst_element_class_add_pad_template (gstelement_class,
- gst_static_pad_template_get (&src_pad_template));
+ gst_element_class_add_static_pad_template (gstelement_class,
+ &sink_pad_template);
+ gst_element_class_add_static_pad_template (gstelement_class,
+ &src_pad_template);
gobject_class->set_property = gst_jp2k_decimator_set_property;
gobject_class->get_property = gst_jp2k_decimator_get_property;
diff --git a/gst/jpegformat/Makefile.in b/gst/jpegformat/Makefile.in
index 2bb807d..cb7b85d 100644
--- a/gst/jpegformat/Makefile.in
+++ b/gst/jpegformat/Makefile.in
@@ -304,6 +304,8 @@
DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
DSYMUTIL = @DSYMUTIL@
DTLS_CFLAGS = @DTLS_CFLAGS@
DTLS_LIBS = @DTLS_LIBS@
@@ -519,6 +521,8 @@
LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
LIPO = @LIPO@
LN_S = @LN_S@
LOCALEDIR = @LOCALEDIR@
@@ -645,8 +649,6 @@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
SNDIO_LIBS = @SNDIO_LIBS@
@@ -691,6 +693,8 @@
WAYLAND_LIBS = @WAYLAND_LIBS@
WEBP_CFLAGS = @WEBP_CFLAGS@
WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
WGET = @WGET@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
diff --git a/gst/jpegformat/gstjifmux.c b/gst/jpegformat/gstjifmux.c
index 3a6b6fd..b1ba175 100644
--- a/gst/jpegformat/gstjifmux.c
+++ b/gst/jpegformat/gstjifmux.c
@@ -136,10 +136,10 @@
gstelement_class->change_state = GST_DEBUG_FUNCPTR (gst_jif_mux_change_state);
- gst_element_class_add_pad_template (gstelement_class,
- gst_static_pad_template_get (&gst_jif_mux_src_pad_template));
- gst_element_class_add_pad_template (gstelement_class,
- gst_static_pad_template_get (&gst_jif_mux_sink_pad_template));
+ gst_element_class_add_static_pad_template (gstelement_class,
+ &gst_jif_mux_src_pad_template);
+ gst_element_class_add_static_pad_template (gstelement_class,
+ &gst_jif_mux_sink_pad_template);
gst_element_class_set_static_metadata (gstelement_class,
"JPEG stream muxer",
diff --git a/gst/jpegformat/gstjpegparse.c b/gst/jpegformat/gstjpegparse.c
index 77e53a6..c127d6e 100644
--- a/gst/jpegformat/gstjpegparse.c
+++ b/gst/jpegformat/gstjpegparse.c
@@ -144,10 +144,10 @@
gstbaseparse_class->handle_frame = gst_jpeg_parse_handle_frame;
gstbaseparse_class->pre_push_frame = gst_jpeg_parse_pre_push_frame;
- gst_element_class_add_pad_template (gstelement_class,
- gst_static_pad_template_get (&gst_jpeg_parse_src_pad_template));
- gst_element_class_add_pad_template (gstelement_class,
- gst_static_pad_template_get (&gst_jpeg_parse_sink_pad_template));
+ gst_element_class_add_static_pad_template (gstelement_class,
+ &gst_jpeg_parse_src_pad_template);
+ gst_element_class_add_static_pad_template (gstelement_class,
+ &gst_jpeg_parse_sink_pad_template);
gst_element_class_set_static_metadata (gstelement_class,
"JPEG stream parser",
diff --git a/gst/librfb/Makefile.am b/gst/librfb/Makefile.am
index d542ffc..b69ee8c 100644
--- a/gst/librfb/Makefile.am
+++ b/gst/librfb/Makefile.am
@@ -1,27 +1,25 @@
# please keep librfb easily extractable
-noinst_LTLIBRARIES = librfb.la
plugin_LTLIBRARIES = libgstrfbsrc.la
-libgstrfbsrc_la_SOURCES = gstrfbsrc.c
-libgstrfbsrc_la_CFLAGS = $(GST_PLUGINS_BASE_CFLAGS) $(GST_BASE_CFLAGS) $(GST_CFLAGS) $(X11_CFLAGS) -I$(srcdir)/..
-libgstrfbsrc_la_LIBADD = $(GST_PLUGINS_BASE_LIBS) -lgstvideo-$(GST_API_VERSION) \
- $(GST_BASE_LIBS) $(GST_LIBS) $(X11_LIBS) librfb.la
-libgstrfbsrc_la_LDFLAGS = $(GST_PLUGIN_LDFLAGS)
-libgstrfbsrc_la_LIBTOOLFLAGS = $(GST_PLUGIN_LIBTOOLFLAGS)
-
-librfb_la_SOURCES = \
- rfbbuffer.c \
+libgstrfbsrc_la_SOURCES = gstrfbsrc.c \
rfbdecoder.c \
d3des.c
-librfb_la_CFLAGS = $(GST_CFLAGS) $(GIO_CFLAGS) -I$(srcdir)/..
-librfb_la_LIBADD = $(GST_LIBS) $(GIO_LIBS)
+libgstrfbsrc_la_CFLAGS = $(GST_PLUGINS_BASE_CFLAGS) \
+ $(GST_BASE_CFLAGS) \
+ $(GST_CFLAGS) \
+ $(X11_CFLAGS) \
+ $(GIO_CFLAGS)
+libgstrfbsrc_la_LIBADD = $(GST_PLUGINS_BASE_LIBS) \
+ -lgstvideo-$(GST_API_VERSION) \
+ $(GST_BASE_LIBS) \
+ $(GST_LIBS) \
+ $(X11_LIBS) \
+ $(GIO_LIBS)
+libgstrfbsrc_la_LDFLAGS = $(GST_PLUGIN_LDFLAGS) $(GIO_LDFLAGS)
+libgstrfbsrc_la_LIBTOOLFLAGS = $(GST_PLUGIN_LIBTOOLFLAGS)
noinst_HEADERS = \
- rfb.h \
rfbdecoder.h \
- rfbbuffer.h \
- rfbcontext.h \
- rfbutil.h \
gstrfbsrc.h \
d3des.h
diff --git a/gst/librfb/Makefile.in b/gst/librfb/Makefile.in
index 8b8047f..ecbbf43 100644
--- a/gst/librfb/Makefile.in
+++ b/gst/librfb/Makefile.in
@@ -163,12 +163,13 @@
$(am__cd) "$$dir" && rm -f $$files; }; \
}
am__installdirs = "$(DESTDIR)$(plugindir)"
-LTLIBRARIES = $(noinst_LTLIBRARIES) $(plugin_LTLIBRARIES)
+LTLIBRARIES = $(plugin_LTLIBRARIES)
am__DEPENDENCIES_1 =
libgstrfbsrc_la_DEPENDENCIES = $(am__DEPENDENCIES_1) \
$(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \
- $(am__DEPENDENCIES_1) librfb.la
-am_libgstrfbsrc_la_OBJECTS = libgstrfbsrc_la-gstrfbsrc.lo
+ $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1)
+am_libgstrfbsrc_la_OBJECTS = libgstrfbsrc_la-gstrfbsrc.lo \
+ libgstrfbsrc_la-rfbdecoder.lo libgstrfbsrc_la-d3des.lo
libgstrfbsrc_la_OBJECTS = $(am_libgstrfbsrc_la_OBJECTS)
AM_V_lt = $(am__v_lt_@AM_V@)
am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@)
@@ -178,13 +179,6 @@
$(libgstrfbsrc_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link \
$(CCLD) $(libgstrfbsrc_la_CFLAGS) $(CFLAGS) \
$(libgstrfbsrc_la_LDFLAGS) $(LDFLAGS) -o $@
-librfb_la_DEPENDENCIES = $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1)
-am_librfb_la_OBJECTS = librfb_la-rfbbuffer.lo librfb_la-rfbdecoder.lo \
- librfb_la-d3des.lo
-librfb_la_OBJECTS = $(am_librfb_la_OBJECTS)
-librfb_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
- $(LIBTOOLFLAGS) --mode=link $(CCLD) $(librfb_la_CFLAGS) \
- $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
AM_V_P = $(am__v_P_@AM_V@)
am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
am__v_P_0 = false
@@ -219,8 +213,8 @@
am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@)
am__v_CCLD_0 = @echo " CCLD " $@;
am__v_CCLD_1 =
-SOURCES = $(libgstrfbsrc_la_SOURCES) $(librfb_la_SOURCES)
-DIST_SOURCES = $(libgstrfbsrc_la_SOURCES) $(librfb_la_SOURCES)
+SOURCES = $(libgstrfbsrc_la_SOURCES)
+DIST_SOURCES = $(libgstrfbsrc_la_SOURCES)
am__can_run_installinfo = \
case $$AM_UPDATE_INFO_DIR in \
n|no|NO) false;; \
@@ -312,6 +306,8 @@
DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
DSYMUTIL = @DSYMUTIL@
DTLS_CFLAGS = @DTLS_CFLAGS@
DTLS_LIBS = @DTLS_LIBS@
@@ -527,6 +523,8 @@
LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
LIPO = @LIPO@
LN_S = @LN_S@
LOCALEDIR = @LOCALEDIR@
@@ -653,8 +651,6 @@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
SNDIO_LIBS = @SNDIO_LIBS@
@@ -699,6 +695,8 @@
WAYLAND_LIBS = @WAYLAND_LIBS@
WEBP_CFLAGS = @WEBP_CFLAGS@
WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
WGET = @WGET@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
@@ -787,28 +785,28 @@
top_builddir = @top_builddir@
top_srcdir = @top_srcdir@
wayland_scanner = @wayland_scanner@
-noinst_LTLIBRARIES = librfb.la
plugin_LTLIBRARIES = libgstrfbsrc.la
-libgstrfbsrc_la_SOURCES = gstrfbsrc.c
-libgstrfbsrc_la_CFLAGS = $(GST_PLUGINS_BASE_CFLAGS) $(GST_BASE_CFLAGS) $(GST_CFLAGS) $(X11_CFLAGS) -I$(srcdir)/..
-libgstrfbsrc_la_LIBADD = $(GST_PLUGINS_BASE_LIBS) -lgstvideo-$(GST_API_VERSION) \
- $(GST_BASE_LIBS) $(GST_LIBS) $(X11_LIBS) librfb.la
-
-libgstrfbsrc_la_LDFLAGS = $(GST_PLUGIN_LDFLAGS)
-libgstrfbsrc_la_LIBTOOLFLAGS = $(GST_PLUGIN_LIBTOOLFLAGS)
-librfb_la_SOURCES = \
- rfbbuffer.c \
+libgstrfbsrc_la_SOURCES = gstrfbsrc.c \
rfbdecoder.c \
d3des.c
-librfb_la_CFLAGS = $(GST_CFLAGS) $(GIO_CFLAGS) -I$(srcdir)/..
-librfb_la_LIBADD = $(GST_LIBS) $(GIO_LIBS)
+libgstrfbsrc_la_CFLAGS = $(GST_PLUGINS_BASE_CFLAGS) \
+ $(GST_BASE_CFLAGS) \
+ $(GST_CFLAGS) \
+ $(X11_CFLAGS) \
+ $(GIO_CFLAGS)
+
+libgstrfbsrc_la_LIBADD = $(GST_PLUGINS_BASE_LIBS) \
+ -lgstvideo-$(GST_API_VERSION) \
+ $(GST_BASE_LIBS) \
+ $(GST_LIBS) \
+ $(X11_LIBS) \
+ $(GIO_LIBS)
+
+libgstrfbsrc_la_LDFLAGS = $(GST_PLUGIN_LDFLAGS) $(GIO_LDFLAGS)
+libgstrfbsrc_la_LIBTOOLFLAGS = $(GST_PLUGIN_LIBTOOLFLAGS)
noinst_HEADERS = \
- rfb.h \
rfbdecoder.h \
- rfbbuffer.h \
- rfbcontext.h \
- rfbutil.h \
gstrfbsrc.h \
d3des.h
@@ -846,17 +844,6 @@
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
$(am__aclocal_m4_deps):
-clean-noinstLTLIBRARIES:
- -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES)
- @list='$(noinst_LTLIBRARIES)'; \
- locs=`for p in $$list; do echo $$p; done | \
- sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \
- sort -u`; \
- test -z "$$locs" || { \
- echo rm -f $${locs}; \
- rm -f $${locs}; \
- }
-
install-pluginLTLIBRARIES: $(plugin_LTLIBRARIES)
@$(NORMAL_INSTALL)
@list='$(plugin_LTLIBRARIES)'; test -n "$(plugindir)" || list=; \
@@ -895,19 +882,15 @@
libgstrfbsrc.la: $(libgstrfbsrc_la_OBJECTS) $(libgstrfbsrc_la_DEPENDENCIES) $(EXTRA_libgstrfbsrc_la_DEPENDENCIES)
$(AM_V_CCLD)$(libgstrfbsrc_la_LINK) -rpath $(plugindir) $(libgstrfbsrc_la_OBJECTS) $(libgstrfbsrc_la_LIBADD) $(LIBS)
-librfb.la: $(librfb_la_OBJECTS) $(librfb_la_DEPENDENCIES) $(EXTRA_librfb_la_DEPENDENCIES)
- $(AM_V_CCLD)$(librfb_la_LINK) $(librfb_la_OBJECTS) $(librfb_la_LIBADD) $(LIBS)
-
mostlyclean-compile:
-rm -f *.$(OBJEXT)
distclean-compile:
-rm -f *.tab.c
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstrfbsrc_la-d3des.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstrfbsrc_la-gstrfbsrc.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/librfb_la-d3des.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/librfb_la-rfbbuffer.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/librfb_la-rfbdecoder.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstrfbsrc_la-rfbdecoder.Plo@am__quote@
.c.o:
@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\
@@ -940,26 +923,19 @@
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstrfbsrc_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstrfbsrc_la_CFLAGS) $(CFLAGS) -c -o libgstrfbsrc_la-gstrfbsrc.lo `test -f 'gstrfbsrc.c' || echo '$(srcdir)/'`gstrfbsrc.c
-librfb_la-rfbbuffer.lo: rfbbuffer.c
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(librfb_la_CFLAGS) $(CFLAGS) -MT librfb_la-rfbbuffer.lo -MD -MP -MF $(DEPDIR)/librfb_la-rfbbuffer.Tpo -c -o librfb_la-rfbbuffer.lo `test -f 'rfbbuffer.c' || echo '$(srcdir)/'`rfbbuffer.c
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/librfb_la-rfbbuffer.Tpo $(DEPDIR)/librfb_la-rfbbuffer.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='rfbbuffer.c' object='librfb_la-rfbbuffer.lo' libtool=yes @AMDEPBACKSLASH@
+libgstrfbsrc_la-rfbdecoder.lo: rfbdecoder.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstrfbsrc_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstrfbsrc_la_CFLAGS) $(CFLAGS) -MT libgstrfbsrc_la-rfbdecoder.lo -MD -MP -MF $(DEPDIR)/libgstrfbsrc_la-rfbdecoder.Tpo -c -o libgstrfbsrc_la-rfbdecoder.lo `test -f 'rfbdecoder.c' || echo '$(srcdir)/'`rfbdecoder.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgstrfbsrc_la-rfbdecoder.Tpo $(DEPDIR)/libgstrfbsrc_la-rfbdecoder.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='rfbdecoder.c' object='libgstrfbsrc_la-rfbdecoder.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 $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(librfb_la_CFLAGS) $(CFLAGS) -c -o librfb_la-rfbbuffer.lo `test -f 'rfbbuffer.c' || echo '$(srcdir)/'`rfbbuffer.c
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstrfbsrc_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstrfbsrc_la_CFLAGS) $(CFLAGS) -c -o libgstrfbsrc_la-rfbdecoder.lo `test -f 'rfbdecoder.c' || echo '$(srcdir)/'`rfbdecoder.c
-librfb_la-rfbdecoder.lo: rfbdecoder.c
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(librfb_la_CFLAGS) $(CFLAGS) -MT librfb_la-rfbdecoder.lo -MD -MP -MF $(DEPDIR)/librfb_la-rfbdecoder.Tpo -c -o librfb_la-rfbdecoder.lo `test -f 'rfbdecoder.c' || echo '$(srcdir)/'`rfbdecoder.c
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/librfb_la-rfbdecoder.Tpo $(DEPDIR)/librfb_la-rfbdecoder.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='rfbdecoder.c' object='librfb_la-rfbdecoder.lo' libtool=yes @AMDEPBACKSLASH@
+libgstrfbsrc_la-d3des.lo: d3des.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstrfbsrc_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstrfbsrc_la_CFLAGS) $(CFLAGS) -MT libgstrfbsrc_la-d3des.lo -MD -MP -MF $(DEPDIR)/libgstrfbsrc_la-d3des.Tpo -c -o libgstrfbsrc_la-d3des.lo `test -f 'd3des.c' || echo '$(srcdir)/'`d3des.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgstrfbsrc_la-d3des.Tpo $(DEPDIR)/libgstrfbsrc_la-d3des.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='d3des.c' object='libgstrfbsrc_la-d3des.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 $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(librfb_la_CFLAGS) $(CFLAGS) -c -o librfb_la-rfbdecoder.lo `test -f 'rfbdecoder.c' || echo '$(srcdir)/'`rfbdecoder.c
-
-librfb_la-d3des.lo: d3des.c
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(librfb_la_CFLAGS) $(CFLAGS) -MT librfb_la-d3des.lo -MD -MP -MF $(DEPDIR)/librfb_la-d3des.Tpo -c -o librfb_la-d3des.lo `test -f 'd3des.c' || echo '$(srcdir)/'`d3des.c
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/librfb_la-d3des.Tpo $(DEPDIR)/librfb_la-d3des.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='d3des.c' object='librfb_la-d3des.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 $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(librfb_la_CFLAGS) $(CFLAGS) -c -o librfb_la-d3des.lo `test -f 'd3des.c' || echo '$(srcdir)/'`d3des.c
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstrfbsrc_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstrfbsrc_la_CFLAGS) $(CFLAGS) -c -o libgstrfbsrc_la-d3des.lo `test -f 'd3des.c' || echo '$(srcdir)/'`d3des.c
mostlyclean-libtool:
-rm -f *.lo
@@ -1088,8 +1064,8 @@
@echo "it deletes files that may require special tools to rebuild."
clean: clean-am
-clean-am: clean-generic clean-libtool clean-noinstLTLIBRARIES \
- clean-pluginLTLIBRARIES mostlyclean-am
+clean-am: clean-generic clean-libtool clean-pluginLTLIBRARIES \
+ mostlyclean-am
distclean: distclean-am
-rm -rf ./$(DEPDIR)
@@ -1160,19 +1136,19 @@
.MAKE: install-am install-strip
.PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \
- clean-libtool clean-noinstLTLIBRARIES clean-pluginLTLIBRARIES \
- cscopelist-am ctags ctags-am distclean distclean-compile \
- distclean-generic distclean-libtool distclean-tags distdir dvi \
- dvi-am html html-am info info-am install install-am \
- install-data install-data-am install-dvi install-dvi-am \
- install-exec install-exec-am install-html install-html-am \
- install-info install-info-am install-man install-pdf \
- install-pdf-am install-pluginLTLIBRARIES install-ps \
- install-ps-am install-strip installcheck installcheck-am \
- installdirs maintainer-clean maintainer-clean-generic \
- mostlyclean mostlyclean-compile mostlyclean-generic \
- mostlyclean-libtool pdf pdf-am ps ps-am tags tags-am uninstall \
- uninstall-am uninstall-pluginLTLIBRARIES
+ clean-libtool clean-pluginLTLIBRARIES cscopelist-am ctags \
+ ctags-am distclean distclean-compile distclean-generic \
+ distclean-libtool distclean-tags distdir dvi dvi-am html \
+ html-am info info-am install install-am install-data \
+ install-data-am install-dvi install-dvi-am install-exec \
+ install-exec-am install-html install-html-am install-info \
+ install-info-am install-man install-pdf install-pdf-am \
+ install-pluginLTLIBRARIES install-ps install-ps-am \
+ install-strip installcheck installcheck-am installdirs \
+ maintainer-clean maintainer-clean-generic mostlyclean \
+ mostlyclean-compile mostlyclean-generic mostlyclean-libtool \
+ pdf pdf-am ps ps-am tags tags-am uninstall uninstall-am \
+ uninstall-pluginLTLIBRARIES
.PRECIOUS: Makefile
diff --git a/gst/librfb/gstrfbsrc.c b/gst/librfb/gstrfbsrc.c
index 7f9e591..786d32d 100644
--- a/gst/librfb/gstrfbsrc.c
+++ b/gst/librfb/gstrfbsrc.c
@@ -72,12 +72,13 @@
static void gst_rfb_src_get_property (GObject * object, guint prop_id,
GValue * value, GParamSpec * pspec);
-static GstCaps *gst_rfb_src_fixate (GstBaseSrc * bsrc, GstCaps * caps);
-static gboolean gst_rfb_src_start (GstBaseSrc * bsrc);
+static gboolean gst_rfb_src_negotiate (GstBaseSrc * bsrc);
static gboolean gst_rfb_src_stop (GstBaseSrc * bsrc);
static gboolean gst_rfb_src_event (GstBaseSrc * bsrc, GstEvent * event);
-static GstFlowReturn gst_rfb_src_create (GstPushSrc * psrc,
- GstBuffer ** outbuf);
+static gboolean gst_rfb_src_unlock (GstBaseSrc * bsrc);
+static gboolean gst_rfb_src_decide_allocation (GstBaseSrc * bsrc,
+ GstQuery * query);
+static GstFlowReturn gst_rfb_src_fill (GstPushSrc * psrc, GstBuffer * outbuf);
#define gst_rfb_src_parent_class parent_class
G_DEFINE_TYPE (GstRfbSrc, gst_rfb_src, GST_TYPE_PUSH_SRC);
@@ -146,16 +147,19 @@
g_param_spec_boolean ("view-only", "Only view the desktop",
"only view the desktop", FALSE,
G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
- gstbasesrc_class->fixate = GST_DEBUG_FUNCPTR (gst_rfb_src_fixate);
- gstbasesrc_class->start = GST_DEBUG_FUNCPTR (gst_rfb_src_start);
+
+ gstbasesrc_class->negotiate = GST_DEBUG_FUNCPTR (gst_rfb_src_negotiate);
gstbasesrc_class->stop = GST_DEBUG_FUNCPTR (gst_rfb_src_stop);
gstbasesrc_class->event = GST_DEBUG_FUNCPTR (gst_rfb_src_event);
- gstpushsrc_class->create = GST_DEBUG_FUNCPTR (gst_rfb_src_create);
+ gstbasesrc_class->unlock = GST_DEBUG_FUNCPTR (gst_rfb_src_unlock);
+ gstpushsrc_class->fill = GST_DEBUG_FUNCPTR (gst_rfb_src_fill);
+ gstbasesrc_class->decide_allocation =
+ GST_DEBUG_FUNCPTR (gst_rfb_src_decide_allocation);
gstelement_class = GST_ELEMENT_CLASS (klass);
- gst_element_class_add_pad_template (gstelement_class,
- gst_static_pad_template_get (&gst_rfb_src_template));
+ gst_element_class_add_static_pad_template (gstelement_class,
+ &gst_rfb_src_template);
gst_element_class_set_static_metadata (gstelement_class, "Rfb source",
"Source/Video",
@@ -183,10 +187,7 @@
src->view_only = FALSE;
- src->pool = NULL;
-
src->decoder = rfb_decoder_new ();
-
}
static void
@@ -195,10 +196,7 @@
GstRfbSrc *src = GST_RFB_SRC (object);
g_free (src->host);
- if (src->pool) {
- gst_object_unref (src->pool);
- src->pool = NULL;
- }
+
if (src->decoder) {
rfb_decoder_free (src->decoder);
src->decoder = NULL;
@@ -340,84 +338,54 @@
}
}
-static GstCaps *
-gst_rfb_src_fixate (GstBaseSrc * bsrc, GstCaps * caps)
+static gboolean
+gst_rfb_src_decide_allocation (GstBaseSrc * bsrc, GstQuery * query)
{
- GstRfbSrc *src = GST_RFB_SRC (bsrc);
- RfbDecoder *decoder;
- GstStructure *structure;
- guint i;
-
- decoder = src->decoder;
-
- GST_DEBUG_OBJECT (src, "fixating caps %" GST_PTR_FORMAT, caps);
-
- caps = gst_caps_make_writable (caps);
-
- for (i = 0; i < gst_caps_get_size (caps); ++i) {
- structure = gst_caps_get_structure (caps, i);
-
- gst_structure_fixate_field_nearest_int (structure,
- "width", decoder->rect_width);
- gst_structure_fixate_field_nearest_int (structure,
- "height", decoder->rect_height);
- gst_structure_fixate_field (structure, "format");
- }
-
- GST_DEBUG_OBJECT (src, "fixated caps %" GST_PTR_FORMAT, caps);
-
- caps = GST_BASE_SRC_CLASS (parent_class)->fixate (bsrc, caps);
-
- return caps;
-}
-
-static void
-gst_rfb_negotiate_pool (GstRfbSrc * src, GstCaps * caps)
-{
- GstQuery *query;
GstBufferPool *pool = NULL;
- guint size, min, max;
+ guint size, min = 1, max = 0;
GstStructure *config;
+ GstCaps *caps;
+ GstVideoInfo info;
+ gboolean ret;
- /* find a pool for the negotiated caps now */
- query = gst_query_new_allocation (caps, TRUE);
+ gst_query_parse_allocation (query, &caps, NULL);
- if (!gst_pad_peer_query (GST_BASE_SRC_PAD (src), query)) {
- /* not a problem, we use the defaults of query */
- GST_DEBUG_OBJECT (src, "could not get downstream ALLOCATION hints");
- }
+ if (!caps || !gst_video_info_from_caps (&info, caps))
+ return FALSE;
- if (gst_query_get_n_allocation_pools (query) > 0) {
- /* we got configuration from our peer, parse them */
+ while (gst_query_get_n_allocation_pools (query) > 0) {
gst_query_parse_nth_allocation_pool (query, 0, &pool, &size, &min, &max);
- } else {
- GST_DEBUG_OBJECT (src, "didn't get downstream pool hints");
- size = GST_BASE_SRC (src)->blocksize;
- min = max = 0;
+
+ /* TODO We restrict to the exact size as we don't support strides or
+ * special padding */
+ if (size == info.size)
+ break;
+
+ gst_query_remove_nth_allocation_pool (query, 0);
+ gst_object_unref (pool);
+ pool = NULL;
}
if (pool == NULL) {
/* we did not get a pool, make one ourselves then */
pool = gst_video_buffer_pool_new ();
+ size = info.size;
+ min = 1;
+ max = 0;
+ gst_query_add_allocation_pool (query, pool, size, min, max);
}
- if (src->pool)
- gst_object_unref (src->pool);
- src->pool = pool;
-
config = gst_buffer_pool_get_config (pool);
gst_buffer_pool_config_set_params (config, caps, size, min, max);
- gst_buffer_pool_config_add_option (config, GST_BUFFER_POOL_OPTION_VIDEO_META);
- gst_buffer_pool_set_config (pool, config);
- // and activate
- gst_buffer_pool_set_active (pool, TRUE);
+ ret = gst_buffer_pool_set_config (pool, config);
+ gst_object_unref (pool);
- gst_query_unref (query);
+ return ret;
}
static gboolean
-gst_rfb_src_start (GstBaseSrc * bsrc)
+gst_rfb_src_negotiate (GstBaseSrc * bsrc)
{
GstRfbSrc *src = GST_RFB_SRC (bsrc);
RfbDecoder *decoder;
@@ -430,6 +398,9 @@
decoder = src->decoder;
+ if (decoder->inited)
+ return TRUE;
+
GST_DEBUG_OBJECT (src, "connecting to host %s on port %d",
src->host, src->port);
if (!rfb_decoder_connect_tcp (decoder, src->host, src->port)) {
@@ -471,13 +442,6 @@
decoder->rect_height =
(decoder->rect_height ? decoder->rect_height : decoder->height);
- g_object_set (bsrc, "blocksize",
- src->decoder->width * src->decoder->height * (decoder->bpp / 8), NULL);
-
- decoder->frame = g_malloc (bsrc->blocksize);
- if (decoder->use_copyrect) {
- decoder->prev_frame = g_malloc (bsrc->blocksize);
- }
decoder->decoder_private = src;
/* calculate some many used values */
@@ -500,11 +464,13 @@
gst_video_info_set_format (&vinfo, vformat, decoder->rect_width,
decoder->rect_height);
+ decoder->frame = g_malloc (vinfo.size);
+ if (decoder->use_copyrect)
+ decoder->prev_frame = g_malloc (vinfo.size);
+
caps = gst_video_info_to_caps (&vinfo);
- gst_pad_set_caps (GST_BASE_SRC_PAD (bsrc), caps);
-
- gst_rfb_negotiate_pool (src, caps);
+ gst_base_src_set_caps (bsrc, caps);
gst_caps_unref (caps);
@@ -516,10 +482,7 @@
{
GstRfbSrc *src = GST_RFB_SRC (bsrc);
- if (src->decoder->socket) {
- g_object_unref (src->decoder->socket);
- src->decoder->socket = NULL;
- }
+ rfb_decoder_disconnect (src->decoder);
if (src->decoder->frame) {
g_free (src->decoder->frame);
@@ -535,12 +498,11 @@
}
static GstFlowReturn
-gst_rfb_src_create (GstPushSrc * psrc, GstBuffer ** outbuf)
+gst_rfb_src_fill (GstPushSrc * psrc, GstBuffer * outbuf)
{
GstRfbSrc *src = GST_RFB_SRC (psrc);
RfbDecoder *decoder = src->decoder;
GstMapInfo info;
- GstFlowReturn ret;
rfb_decoder_send_update_request (decoder, src->incremental_update,
decoder->offset_x, decoder->offset_y, decoder->rect_width,
@@ -557,25 +519,23 @@
("Error on setup VNC connection to host %s on port %d", src->host,
src->port), (NULL));
}
+ return GST_FLOW_ERROR;
}
}
- /* Create the buffer. */
- ret = gst_buffer_pool_acquire_buffer (src->pool, outbuf, NULL);
-
- if (G_UNLIKELY (ret != GST_FLOW_OK)) {
+ if (!gst_buffer_map (outbuf, &info, GST_MAP_WRITE)) {
+ GST_ELEMENT_ERROR (src, RESOURCE, WRITE,
+ ("Could not map the output frame"), (NULL));
return GST_FLOW_ERROR;
}
- gst_buffer_map (*outbuf, &info, GST_MAP_WRITE);
-
memcpy (info.data, decoder->frame, info.size);
- GST_BUFFER_PTS (*outbuf) =
+ GST_BUFFER_PTS (outbuf) =
gst_clock_get_time (GST_ELEMENT_CLOCK (src)) -
GST_ELEMENT_CAST (src)->base_time;
- gst_buffer_unmap (*outbuf, &info);
+ gst_buffer_unmap (outbuf, &info);
return GST_FLOW_OK;
}
@@ -658,6 +618,14 @@
}
static gboolean
+gst_rfb_src_unlock (GstBaseSrc * bsrc)
+{
+ GstRfbSrc *src = GST_RFB_SRC (bsrc);
+ g_cancellable_cancel (src->decoder->cancellable);
+ return TRUE;
+}
+
+static gboolean
plugin_init (GstPlugin * plugin)
{
return gst_element_register (plugin, "rfbsrc", GST_RANK_NONE,
diff --git a/gst/librfb/gstrfbsrc.h b/gst/librfb/gstrfbsrc.h
index a85dc6e..81ebd45 100644
--- a/gst/librfb/gstrfbsrc.h
+++ b/gst/librfb/gstrfbsrc.h
@@ -25,7 +25,8 @@
#include <gst/gst.h>
#include <gst/base/gstpushsrc.h>
#include <gst/video/gstvideopool.h>
-#include <librfb/rfb.h>
+
+#include "rfbdecoder.h"
G_BEGIN_DECLS
#define GST_TYPE_RFB_SRC \
@@ -60,8 +61,6 @@
guint button_mask;
- GstBufferPool *pool;
-
/* protocol version */
guint version_major;
guint version_minor;
diff --git a/gst/librfb/rfb.h b/gst/librfb/rfb.h
deleted file mode 100644
index 89a4be9..0000000
--- a/gst/librfb/rfb.h
+++ /dev/null
@@ -1,7 +0,0 @@
-#ifndef _RFB_RFB_H_
-#define _RFB_RFB_H_
-
-#include <librfb/rfbdecoder.h>
-#include <librfb/rfbbuffer.h>
-
-#endif
diff --git a/gst/librfb/rfbbuffer.c b/gst/librfb/rfbbuffer.c
deleted file mode 100644
index d8ca081..0000000
--- a/gst/librfb/rfbbuffer.c
+++ /dev/null
@@ -1,30 +0,0 @@
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include "rfbbuffer.h"
-
-RfbBuffer *
-rfb_buffer_new (void)
-{
- return g_new0 (RfbBuffer, 1);
-}
-
-RfbBuffer *
-rfb_buffer_new_and_alloc (int len)
-{
- RfbBuffer *buffer = g_new0 (RfbBuffer, 1);
-
- buffer->data = g_malloc (len);
- buffer->free_data = (RfbBufferFreeFunc) g_free;
-
- return buffer;
-}
-
-void
-rfb_buffer_free (RfbBuffer * buffer)
-{
- g_return_if_fail (buffer != NULL);
-
- buffer->free_data (buffer->data, buffer->buffer_private);
-}
diff --git a/gst/librfb/rfbbuffer.h b/gst/librfb/rfbbuffer.h
deleted file mode 100644
index 6250ad4..0000000
--- a/gst/librfb/rfbbuffer.h
+++ /dev/null
@@ -1,23 +0,0 @@
-#ifndef _LIBRFB_BUFFER_H_
-#define _LIBRFB_BUFFER_H_
-
-#include <glib.h>
-
-G_BEGIN_DECLS typedef struct _RfbBuffer RfbBuffer;
-typedef void (*RfbBufferFreeFunc) (guint8 * data, gpointer priv);
-
-struct _RfbBuffer
-{
- RfbBufferFreeFunc free_data;
- gpointer buffer_private;
-
- guint8 *data;
- gint length;
-};
-
-RfbBuffer *rfb_buffer_new (void);
-RfbBuffer *rfb_buffer_new_and_alloc (gint len);
-void rfb_buffer_free (RfbBuffer * buffer);
-
-G_END_DECLS
-#endif
diff --git a/gst/librfb/rfbcontext.h b/gst/librfb/rfbcontext.h
deleted file mode 100644
index 4c72bc6..0000000
--- a/gst/librfb/rfbcontext.h
+++ /dev/null
@@ -1,35 +0,0 @@
-#ifndef _LIBRFB_RFBCONTEXT_H_
-#define _LIBRFB_RFBCONTEXT_H_
-
-#include <glib.h>
-
-G_BEGIN_DECLS typedef struct _RfbContext
-{
- RfbConnection *connection;
-
- guint8 *buffer1;
- gpointer buffer1_alloc;
- guint buffer1_len;
-
- guint8 *buffer2;
- gpointer buffer2_alloc;
- guint buffer2_len;
-
- gchar *name;
-} RfbContext;
-
-typedef struct _RfbRect
-{
- RfbContext *context;
-
- guint x_pos;
- guint y_pos;
- guint width;
- guint height;
- guint encoding_type;
-
- gchar *data;
-} RfbRect;
-
-G_END_DECLS
-#endif
diff --git a/gst/librfb/rfbdecoder.c b/gst/librfb/rfbdecoder.c
index bd225ad..e6eb701 100644
--- a/gst/librfb/rfbdecoder.c
+++ b/gst/librfb/rfbdecoder.c
@@ -2,7 +2,7 @@
#include "config.h"
#endif
-#include "rfb.h"
+#include "rfbdecoder.h"
#include "d3des.h"
#include <gst/gst.h>
@@ -35,23 +35,24 @@
decoder);
static gboolean rfb_decoder_state_set_colour_map_entries (RfbDecoder * decoder);
static gboolean rfb_decoder_state_server_cut_text (RfbDecoder * decoder);
-static void rfb_decoder_raw_encoding (RfbDecoder * decoder, gint start_x,
+static gboolean rfb_decoder_raw_encoding (RfbDecoder * decoder, gint start_x,
gint start_y, gint rect_w, gint rect_h);
-static void rfb_decoder_copyrect_encoding (RfbDecoder * decoder, gint start_x,
+static gboolean rfb_decoder_copyrect_encoding (RfbDecoder * decoder,
+ gint start_x, gint start_y, gint rect_w, gint rect_h);
+static gboolean rfb_decoder_rre_encoding (RfbDecoder * decoder, gint start_x,
gint start_y, gint rect_w, gint rect_h);
-static void rfb_decoder_rre_encoding (RfbDecoder * decoder, gint start_x,
+static gboolean rfb_decoder_corre_encoding (RfbDecoder * decoder, gint start_x,
gint start_y, gint rect_w, gint rect_h);
-static void rfb_decoder_corre_encoding (RfbDecoder * decoder, gint start_x,
- gint start_y, gint rect_w, gint rect_h);
-static void rfb_decoder_hextile_encoding (RfbDecoder * decoder, gint start_x,
- gint start_y, gint rect_w, gint rect_h);
+static gboolean rfb_decoder_hextile_encoding (RfbDecoder * decoder,
+ gint start_x, gint start_y, gint rect_w, gint rect_h);
RfbDecoder *
rfb_decoder_new (void)
{
RfbDecoder *decoder = g_new0 (RfbDecoder, 1);
- decoder->socket = NULL;
+ decoder->socket_client = g_socket_client_new ();
+ decoder->connection = NULL;
decoder->cancellable = g_cancellable_new ();
decoder->password = NULL;
@@ -63,11 +64,12 @@
decoder->rect_width = 0;
decoder->rect_height = 0;
decoder->shared_flag = TRUE;
- decoder->disconnected = FALSE;
decoder->data = NULL;
decoder->data_len = 0;
decoder->error = NULL;
+ g_mutex_init (&decoder->write_lock);
+
return decoder;
}
@@ -76,21 +78,11 @@
{
g_return_if_fail (decoder != NULL);
- if (decoder->cancellable) {
- g_cancellable_cancel (decoder->cancellable);
- g_object_unref (decoder->cancellable);
- decoder->cancellable = NULL;
- }
+ rfb_decoder_disconnect (decoder);
- if (decoder->socket) {
- g_object_unref (decoder->socket);
- decoder->socket = NULL;
- }
-
- g_clear_error (&decoder->error);
-
- g_free (decoder->data);
-
+ g_clear_object (&decoder->socket_client);
+ g_clear_object (&decoder->cancellable);
+ g_mutex_clear (&decoder->write_lock);
g_free (decoder);
}
@@ -98,78 +90,27 @@
rfb_decoder_connect_tcp (RfbDecoder * decoder, gchar * host, guint port)
{
GError *err = NULL;
- GInetAddress *addr;
- GSocketAddress *saddr;
- GResolver *resolver;
+ GSocketConnection *connection;
GST_DEBUG ("connecting to the rfb server");
g_return_val_if_fail (decoder != NULL, FALSE);
- g_return_val_if_fail (decoder->socket == NULL, FALSE);
+ g_return_val_if_fail (decoder->connection == NULL, FALSE);
g_return_val_if_fail (host != NULL, FALSE);
- /* look up name if we need to */
- addr = g_inet_address_new_from_string (host);
- if (!addr) {
- GList *results;
+ g_cancellable_reset (decoder->cancellable);
- resolver = g_resolver_get_default ();
+ connection =
+ g_socket_client_connect_to_host (decoder->socket_client, host, port,
+ decoder->cancellable, &err);
- results =
- g_resolver_lookup_by_name (resolver, host, decoder->cancellable, &err);
- if (!results)
- goto name_resolve;
- addr = G_INET_ADDRESS (g_object_ref (results->data));
-
- g_resolver_free_addresses (results);
- g_object_unref (resolver);
- }
-
- saddr = g_inet_socket_address_new (addr, port);
-
- decoder->socket =
- g_socket_new (g_socket_address_get_family (saddr), G_SOCKET_TYPE_STREAM,
- G_SOCKET_PROTOCOL_TCP, &err);
-
- if (!decoder->socket)
- goto no_socket;
-
- GST_DEBUG ("opened receiving client socket");
-
- if (!g_socket_connect (decoder->socket, saddr, decoder->cancellable, &err))
+ if (!connection)
goto connect_failed;
- g_object_unref (saddr);
-
- decoder->disconnected = FALSE;
+ decoder->connection = connection;
return TRUE;
-no_socket:
- {
- GST_WARNING ("Failed to create socket: %s", err->message);
- if (decoder->error == NULL)
- decoder->error = err;
- else
- g_clear_error (&err);
- g_object_unref (saddr);
- return FALSE;
- }
-name_resolve:
- {
- if (g_error_matches (err, G_IO_ERROR, G_IO_ERROR_CANCELLED)) {
- GST_DEBUG ("Cancelled name resolval");
- } else {
- GST_WARNING ("Failed to resolve host '%s': %s", host, err->message);
- if (decoder->error == NULL) {
- decoder->error = err;
- err = NULL;
- }
- }
- g_clear_error (&err);
- g_object_unref (resolver);
- return FALSE;
- }
connect_failed:
{
if (g_error_matches (err, G_IO_ERROR, G_IO_ERROR_CANCELLED)) {
@@ -183,11 +124,31 @@
}
}
g_clear_error (&err);
- g_object_unref (saddr);
return FALSE;
}
}
+void
+rfb_decoder_disconnect (RfbDecoder * decoder)
+{
+ GST_DEBUG ("Disconnecting from the rfb server");
+
+ g_return_if_fail (decoder);
+ g_return_if_fail (decoder->cancellable);
+
+ g_cancellable_cancel (decoder->cancellable);
+
+ /* Make sure threaded write a done first, this avoids race condition,
+ * specially when the decoder is freed */
+ g_mutex_lock (&decoder->write_lock);
+
+ g_clear_object (&decoder->connection);
+ g_clear_error (&decoder->error);
+ g_clear_pointer (&decoder->data, g_free);
+
+ g_mutex_unlock (&decoder->write_lock);
+}
+
/**
* rfb_decoder_iterate:
* @decoder: The rfb context
@@ -202,7 +163,7 @@
gboolean ret;
g_return_val_if_fail (decoder != NULL, FALSE);
- g_return_val_if_fail (decoder->socket != NULL, FALSE);
+ g_return_val_if_fail (decoder->connection != NULL, FALSE);
if (decoder->state == NULL) {
GST_DEBUG ("First iteration: set state to -> wait for protocol version");
@@ -225,28 +186,35 @@
static guint8 *
rfb_decoder_read (RfbDecoder * decoder, guint32 len)
{
- guint32 total = 0;
- gssize now = 0;
+ GInputStream *in;
GError *err = NULL;
+ gsize count = 0;
- g_return_val_if_fail (decoder->socket != NULL, NULL);
+ if (!decoder->connection)
+ return FALSE;
+
g_return_val_if_fail (len > 0, NULL);
+ in = g_io_stream_get_input_stream (G_IO_STREAM (decoder->connection));
+
+ g_return_val_if_fail (in != NULL, NULL);
+
if (G_UNLIKELY (len > decoder->data_len)) {
g_free (decoder->data);
decoder->data = g_malloc (len);
decoder->data_len = len;
}
- while (total < len) {
- now = g_socket_receive (decoder->socket, (gchar *) decoder->data + total,
- len - total, decoder->cancellable, &err);
+ if (!g_input_stream_read_all (in, decoder->data, len, &count,
+ decoder->cancellable, &err))
+ goto recv_error;
- if (now < 0)
- goto recv_error;
-
- total += now;
+ if (count == 0) {
+ g_set_error_literal (&err, G_IO_ERROR, G_IO_ERROR_BROKEN_PIPE,
+ "Connection was closed.");
+ goto recv_error;
}
+
return decoder->data;
recv_error:
@@ -261,29 +229,33 @@
}
}
g_clear_error (&err);
- decoder->disconnected = TRUE;
return NULL;
}
}
-static gint
+static gboolean
rfb_decoder_send (RfbDecoder * decoder, guint8 * buffer, guint len)
{
- gssize now = 0;
+ GOutputStream *out;
GError *err = NULL;
- g_return_val_if_fail (decoder->socket != NULL, 0);
+ if (!decoder->connection)
+ return FALSE;
+
g_return_val_if_fail (buffer != NULL, 0);
g_return_val_if_fail (len > 0, 0);
- now = g_socket_send (decoder->socket, (gchar *) buffer, len,
- decoder->cancellable, &err);
+ g_mutex_lock (&decoder->write_lock);
- if (now < 0)
+ out = g_io_stream_get_output_stream (G_IO_STREAM (decoder->connection));
+
+ if (!g_output_stream_write_all (out, buffer, len, NULL, decoder->cancellable,
+ &err))
goto send_error;
-done:
- return now;
+ g_mutex_unlock (&decoder->write_lock);
+
+ return TRUE;
send_error:
{
@@ -297,7 +269,8 @@
}
}
g_clear_error (&err);
- goto done;
+ g_mutex_unlock (&decoder->write_lock);
+ return FALSE;
}
}
@@ -308,7 +281,7 @@
guint8 data[10];
g_return_if_fail (decoder != NULL);
- g_return_if_fail (decoder->socket != NULL);
+ g_return_if_fail (decoder->connection != NULL);
data[0] = 3;
data[1] = incremental;
@@ -334,7 +307,7 @@
guint8 data[8];
g_return_if_fail (decoder != NULL);
- g_return_if_fail (decoder->socket != NULL);
+ g_return_if_fail (decoder->connection != NULL);
data[0] = 4;
data[1] = down_flag;
@@ -351,7 +324,7 @@
guint8 data[6];
g_return_if_fail (decoder != NULL);
- g_return_if_fail (decoder->socket != NULL);
+ g_return_if_fail (decoder->connection != NULL);
data[0] = 5;
data[1] = button_mask;
@@ -365,13 +338,14 @@
* rfb_decoder_state_wait_for_protocol_version:
*
* Negotiate the rfb version used
- *
- * \TODO Support for versions 3.7 and 3.8
*/
static gboolean
rfb_decoder_state_wait_for_protocol_version (RfbDecoder * decoder)
{
- rfb_decoder_read (decoder, 12);
+ gchar version_str[] = "RFB 003.003\n";
+
+ if (!rfb_decoder_read (decoder, 12))
+ return FALSE;
g_return_val_if_fail (memcmp (decoder->data, "RFB 003.00", 10) == 0, FALSE);
g_return_val_if_fail (*(decoder->data + 11) == 0x0a, FALSE);
@@ -389,16 +363,23 @@
("A major protocol version of %d is not supported, falling back to 3",
decoder->protocol_major);
decoder->protocol_major = 3;
+ decoder->protocol_minor = 3;
}
switch (decoder->protocol_minor) {
case 3:
+ case 7:
+ case 8:
break;
default:
GST_INFO ("Minor version %d is not supported, using 3",
decoder->protocol_minor);
decoder->protocol_minor = 3;
}
- rfb_decoder_send (decoder, (guint8 *) "RFB 003.003\n", 12);
+
+ version_str[10] = '0' + decoder->protocol_minor;
+
+ if (!rfb_decoder_send (decoder, (guint8 *) version_str, 12))
+ return FALSE;
decoder->state = rfb_decoder_state_wait_for_security;
return TRUE;
@@ -413,10 +394,14 @@
{
gint reason_length;
- rfb_decoder_read (decoder, 4);
+ if (!rfb_decoder_read (decoder, 4))
+ return FALSE;
reason_length = RFB_GET_UINT32 (decoder->data);
- rfb_decoder_read (decoder, reason_length);
+
+ if (!rfb_decoder_read (decoder, reason_length))
+ return FALSE;
+
GST_WARNING ("Reason by server: %s", decoder->data);
if (decoder->error == NULL) {
@@ -438,17 +423,60 @@
* above.
*/
if (IS_VERSION_3_3 (decoder)) {
- rfb_decoder_read (decoder, 4);
+ if (!rfb_decoder_read (decoder, 4))
+ return FALSE;
decoder->security_type = RFB_GET_UINT32 (decoder->data);
GST_DEBUG ("security = %d", decoder->security_type);
g_return_val_if_fail (decoder->security_type < 3, FALSE);
- g_return_val_if_fail (decoder->security_type != SECURITY_FAIL,
- rfb_decoder_state_reason (decoder));
+
+ if (decoder->security_type == SECURITY_FAIL) {
+ decoder->state = rfb_decoder_state_reason;
+ return TRUE;
+ }
} else {
- /* \TODO Add behavior for the rfb 3.7 and 3.8 servers */
- GST_WARNING ("Other versions are not yet supported");
+ guint8 num_type;
+ gint i;
+ guint8 *type = NULL;
+
+ if (!rfb_decoder_read (decoder, 1))
+ return FALSE;
+
+ num_type = RFB_GET_UINT8 (decoder->data);
+ if (num_type == 0) {
+ decoder->state = rfb_decoder_state_reason;
+ return TRUE;
+ }
+
+ if (!rfb_decoder_read (decoder, num_type))
+ return FALSE;
+
+ decoder->security_type = SECURITY_FAIL;
+
+ /* For now, simply pick the first support security method */
+ for (i = 0; i < num_type; i++) {
+ guint val = RFB_GET_UINT8 (decoder->data + i);
+
+ GST_DEBUG ("Server supports security type %u", val);
+
+ if (val == SECURITY_NONE || val == SECURITY_VNC) {
+ decoder->security_type = val;
+ type = decoder->data + i;
+ break;
+ }
+ }
+
+ if (!type) {
+ GST_WARNING ("Security type negotiation failed.");
+ decoder->error = g_error_new (GST_RESOURCE_ERROR, GST_RESOURCE_ERROR_READ,
+ "VNC server requires unsupported security method.");
+ return FALSE;
+ }
+
+ GST_DEBUG ("security = %d", decoder->security_type);
+ if (!rfb_decoder_send (decoder, type, 1))
+ return FALSE;
}
switch (decoder->security_type) {
@@ -497,7 +525,8 @@
des (&des_ctx, challenge + 8, challenge + 8);
/* .. and send back to server */
- rfb_decoder_send (decoder, challenge, 16);
+ if (!rfb_decoder_send (decoder, challenge, 16))
+ return FALSE;
GST_DEBUG ("Encrypted challenge sent to server");
@@ -519,7 +548,9 @@
static gboolean
rfb_decoder_state_security_result (RfbDecoder * decoder)
{
- rfb_decoder_read (decoder, 4);
+ if (!rfb_decoder_read (decoder, 4))
+ return FALSE;
+
if (RFB_GET_UINT32 (decoder->data) != 0) {
GST_WARNING ("Security handshaking failed");
if (IS_VERSION_3_8 (decoder)) {
@@ -593,7 +624,11 @@
message = rfb_decoder_message_set_encodings (encoder_list);
- rfb_decoder_send (decoder, message, 4 + 4 * g_slist_length (encoder_list));
+ if (!rfb_decoder_send (decoder, message,
+ 4 + 4 * g_slist_length (encoder_list))) {
+ g_free (message);
+ return FALSE;
+ }
g_free (message);
@@ -609,7 +644,10 @@
guint8 shared_flag;
shared_flag = decoder->shared_flag;
- rfb_decoder_send (decoder, &shared_flag, 1);
+
+ if (!rfb_decoder_send (decoder, &shared_flag, 1))
+ return FALSE;
+
GST_DEBUG ("shared_flag is %d", shared_flag);
decoder->state = rfb_decoder_state_wait_for_server_initialisation;
@@ -621,7 +659,8 @@
{
guint32 name_length;
- rfb_decoder_read (decoder, 24);
+ if (!rfb_decoder_read (decoder, 24))
+ return FALSE;
decoder->width = RFB_GET_UINT16 (decoder->data + 0);
decoder->height = RFB_GET_UINT16 (decoder->data + 2);
@@ -652,7 +691,8 @@
name_length = RFB_GET_UINT32 (decoder->data + 20);
- rfb_decoder_read (decoder, name_length);
+ if (!rfb_decoder_read (decoder, name_length))
+ return FALSE;
decoder->name = g_strndup ((gchar *) (decoder->data), name_length);
GST_DEBUG ("name = %s", decoder->name);
@@ -709,7 +749,9 @@
GST_DEBUG ("decoder_state_normal");
- rfb_decoder_read (decoder, 1);
+ if (!rfb_decoder_read (decoder, 1))
+ return FALSE;
+
message_type = RFB_GET_UINT8 (decoder->data);
switch (message_type) {
@@ -738,7 +780,8 @@
rfb_decoder_state_framebuffer_update (RfbDecoder * decoder)
{
- rfb_decoder_read (decoder, 3);
+ if (!rfb_decoder_read (decoder, 3))
+ return FALSE;
decoder->n_rects = RFB_GET_UINT16 (decoder->data + 1);
GST_DEBUG ("Number of rectangles : %d", decoder->n_rects);
@@ -753,8 +796,10 @@
{
gint x, y, w, h;
gint encoding;
+ gboolean ret = FALSE;
- rfb_decoder_read (decoder, 12);
+ if (!rfb_decoder_read (decoder, 12))
+ return FALSE;
x = RFB_GET_UINT16 (decoder->data + 0) - decoder->offset_x;
y = RFB_GET_UINT16 (decoder->data + 2) - decoder->offset_y;
@@ -770,40 +815,44 @@
if (((w * h) + (x * y)) > (decoder->width * decoder->height)) {
GST_ERROR ("Desktop resize is unsupported.");
decoder->state = NULL;
- decoder->disconnected = TRUE;
return TRUE;
}
switch (encoding) {
case ENCODING_TYPE_RAW:
- rfb_decoder_raw_encoding (decoder, x, y, w, h);
+ ret = rfb_decoder_raw_encoding (decoder, x, y, w, h);
break;
case ENCODING_TYPE_COPYRECT:
- rfb_decoder_copyrect_encoding (decoder, x, y, w, h);
+ ret = rfb_decoder_copyrect_encoding (decoder, x, y, w, h);
break;
case ENCODING_TYPE_RRE:
- rfb_decoder_rre_encoding (decoder, x, y, w, h);
+ ret = rfb_decoder_rre_encoding (decoder, x, y, w, h);
break;
case ENCODING_TYPE_CORRE:
- rfb_decoder_corre_encoding (decoder, x, y, w, h);
+ ret = rfb_decoder_corre_encoding (decoder, x, y, w, h);
break;
case ENCODING_TYPE_HEXTILE:
- rfb_decoder_hextile_encoding (decoder, x, y, w, h);
+ ret = rfb_decoder_hextile_encoding (decoder, x, y, w, h);
break;
default:
g_critical ("unimplemented encoding\n");
break;
}
+
+ if (!ret)
+ return FALSE;
+
decoder->n_rects--;
- if (decoder->n_rects == 0 || decoder->disconnected) {
+ if (decoder->n_rects == 0) {
decoder->state = NULL;
} else {
decoder->state = rfb_decoder_state_framebuffer_update_rectangle;
}
+
return TRUE;
}
-static void
+static gboolean
rfb_decoder_raw_encoding (RfbDecoder * decoder, gint start_x, gint start_y,
gint rect_w, gint rect_h)
{
@@ -813,8 +862,11 @@
raw_line_size = rect_w * decoder->bytespp;
size = rect_h * raw_line_size;
+
GST_DEBUG ("Reading %d bytes (%dx%d)", size, rect_w, rect_h);
- rfb_decoder_read (decoder, size);
+
+ if (!rfb_decoder_read (decoder, size))
+ return FALSE;
frame =
decoder->frame + (((start_y * decoder->rect_width) +
@@ -826,9 +878,11 @@
p += raw_line_size;
frame += decoder->line_size;
}
+
+ return TRUE;
}
-static void
+static gboolean
rfb_decoder_copyrect_encoding (RfbDecoder * decoder, gint start_x, gint start_y,
gint rect_w, gint rect_h)
{
@@ -836,7 +890,8 @@
gint line_width, copyrect_width;
guint8 *src, *dst;
- rfb_decoder_read (decoder, 4);
+ if (!rfb_decoder_read (decoder, 4))
+ return FALSE;
/* don't forget the offset */
src_x = RFB_GET_UINT16 (decoder->data) - decoder->offset_x;
@@ -857,6 +912,8 @@
src += line_width;
dst += line_width;
}
+
+ return TRUE;
}
static void
@@ -878,14 +935,16 @@
}
}
-static void
+static gboolean
rfb_decoder_rre_encoding (RfbDecoder * decoder, gint start_x, gint start_y,
gint rect_w, gint rect_h)
{
guint32 number_of_rectangles, color;
guint16 x, y, w, h;
- rfb_decoder_read (decoder, 4 + decoder->bytespp);
+ if (!rfb_decoder_read (decoder, 4 + decoder->bytespp))
+ return FALSE;
+
number_of_rectangles = RFB_GET_UINT32 (decoder->data);
color = GUINT32_SWAP_LE_BE ((RFB_GET_UINT32 (decoder->data + 4)));
@@ -896,7 +955,9 @@
while (number_of_rectangles--) {
- rfb_decoder_read (decoder, decoder->bytespp + 8);
+ if (!rfb_decoder_read (decoder, decoder->bytespp + 8))
+ return FALSE;
+
color = GUINT32_SWAP_LE_BE ((RFB_GET_UINT32 (decoder->data)));
x = RFB_GET_UINT16 (decoder->data + decoder->bytespp);
y = RFB_GET_UINT16 (decoder->data + decoder->bytespp + 2);
@@ -906,16 +967,20 @@
/* draw the rectangle in the foreground */
rfb_decoder_fill_rectangle (decoder, start_x + x, start_y + y, w, h, color);
}
+
+ return TRUE;
}
-static void
+static gboolean
rfb_decoder_corre_encoding (RfbDecoder * decoder, gint start_x, gint start_y,
gint rect_w, gint rect_h)
{
guint32 number_of_rectangles, color;
guint8 x, y, w, h;
- rfb_decoder_read (decoder, 4 + decoder->bytespp);
+ if (!rfb_decoder_read (decoder, 4 + decoder->bytespp))
+ return FALSE;
+
number_of_rectangles = RFB_GET_UINT32 (decoder->data);
color = GUINT32_SWAP_LE_BE ((RFB_GET_UINT32 (decoder->data + 4)));
g_free (decoder->data);
@@ -927,7 +992,9 @@
while (number_of_rectangles--) {
- rfb_decoder_read (decoder, decoder->bytespp + 4);
+ if (!rfb_decoder_read (decoder, decoder->bytespp + 4))
+ return FALSE;
+
color = GUINT32_SWAP_LE_BE ((RFB_GET_UINT32 (decoder->data)));
x = RFB_GET_UINT8 (decoder->data + decoder->bytespp);
y = RFB_GET_UINT8 (decoder->data + decoder->bytespp + 1);
@@ -939,9 +1006,11 @@
g_free (decoder->data);
}
+
+ return TRUE;
}
-static void
+static gboolean
rfb_decoder_hextile_encoding (RfbDecoder * decoder, gint start_x, gint start_y,
gint rect_w, gint rect_h)
{
@@ -963,7 +1032,9 @@
for (y = start_y; y < y_max; y += 16) {
for (x = start_x; x < x_max; x += 16) {
- rfb_decoder_read (decoder, 1);
+ if (!rfb_decoder_read (decoder, 1))
+ return FALSE;
+
subencoding = RFB_GET_UINT8 (decoder->data);
if (subencoding & SUBENCODING_RAW) {
@@ -973,7 +1044,9 @@
}
if (subencoding & SUBENCODING_BACKGROUND) {
- rfb_decoder_read (decoder, decoder->bytespp);
+ if (!rfb_decoder_read (decoder, decoder->bytespp))
+ return FALSE;
+
background = GUINT32_SWAP_LE_BE ((RFB_GET_UINT32 (decoder->data)));
}
rfb_decoder_fill_rectangle (decoder, x, y,
@@ -981,12 +1054,16 @@
background);
if (subencoding & SUBENCODING_FOREGROUND) {
- rfb_decoder_read (decoder, decoder->bytespp);
+ if (!rfb_decoder_read (decoder, decoder->bytespp))
+ return FALSE;
+
foreground = GUINT32_SWAP_LE_BE ((RFB_GET_UINT32 (decoder->data)));
}
if (subencoding & SUBENCODING_ANYSUBRECTS) {
- rfb_decoder_read (decoder, 1);
+ if (!rfb_decoder_read (decoder, 1))
+ return FALSE;
+
nr_subrect = RFB_GET_UINT8 (decoder->data);
} else {
continue;
@@ -995,7 +1072,8 @@
if (subencoding & SUBENCODING_SUBRECTSCOLORED) {
guint offset = 0;
- rfb_decoder_read (decoder, nr_subrect * (2 + decoder->bytespp));
+ if (!rfb_decoder_read (decoder, nr_subrect * (2 + decoder->bytespp)))
+ return FALSE;
while (nr_subrect--) {
foreground =
@@ -1009,7 +1087,8 @@
} else {
guint offset = 0;
- rfb_decoder_read (decoder, 2 * nr_subrect);
+ if (!rfb_decoder_read (decoder, 2 * nr_subrect))
+ return FALSE;
while (nr_subrect--) {
xy = RFB_GET_UINT8 (decoder->data + offset++);
@@ -1020,6 +1099,8 @@
}
}
}
+
+ return TRUE;
}
static gboolean
@@ -1036,13 +1117,18 @@
gint cut_text_length;
/* 3 bytes padding, 4 bytes cut_text_length */
- rfb_decoder_read (decoder, 7);
+ if (!rfb_decoder_read (decoder, 7))
+ return FALSE;
+
cut_text_length = RFB_GET_UINT32 (decoder->data + 3);
- rfb_decoder_read (decoder, cut_text_length);
+ if (!rfb_decoder_read (decoder, cut_text_length))
+ return FALSE;
+
GST_DEBUG ("rfb_decoder_state_server_cut_text: throw away '%s'",
decoder->data);
decoder->state = rfb_decoder_state_normal;
+
return TRUE;
}
diff --git a/gst/librfb/rfbdecoder.h b/gst/librfb/rfbdecoder.h
index 00a8520..0f3f5af 100644
--- a/gst/librfb/rfbdecoder.h
+++ b/gst/librfb/rfbdecoder.h
@@ -42,7 +42,8 @@
gpointer buffer_handler_data;
- GSocket *socket;
+ GSocketClient *socket_client;
+ GSocketConnection *connection;
GCancellable *cancellable;
guint8 *data;
@@ -55,7 +56,6 @@
/* settable properties */
gboolean shared_flag;
- gboolean disconnected;
/* readable properties */
gboolean inited;
@@ -93,27 +93,16 @@
/* some many used values */
guint bytespp;
guint line_size;
+
+ /* Seriliaze writes operations */
+ GMutex write_lock;
};
-#if 0
-typedef struct _RfbRect
-{
- RfbConnection *connection;
-
- guint x_pos;
- guint y_pos;
- guint width;
- guint height;
- guint encoding_type;
-
- gchar *data;
-} RfbRect;
-#endif
-
RfbDecoder *rfb_decoder_new (void);
void rfb_decoder_free (RfbDecoder * decoder);
gboolean rfb_decoder_connect_tcp (RfbDecoder * decoder,
gchar * host, guint port);
+void rfb_decoder_disconnect (RfbDecoder * decoder);
gboolean rfb_decoder_iterate (RfbDecoder * decoder);
void rfb_decoder_send_update_request (RfbDecoder * decoder,
gboolean incremental, gint x, gint y, gint width, gint height);
diff --git a/gst/librfb/rfbutil.h b/gst/librfb/rfbutil.h
deleted file mode 100644
index b1ac946..0000000
--- a/gst/librfb/rfbutil.h
+++ /dev/null
@@ -1,7 +0,0 @@
-#ifndef _LIBRFB_UTIL_H_
-#define _LIBRFB_UTIL_H_
-
-#include <glib.h>
-
-G_BEGIN_DECLS G_END_DECLS
-#endif
diff --git a/gst/midi/Makefile.in b/gst/midi/Makefile.in
index 512252a..1199978 100644
--- a/gst/midi/Makefile.in
+++ b/gst/midi/Makefile.in
@@ -303,6 +303,8 @@
DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
DSYMUTIL = @DSYMUTIL@
DTLS_CFLAGS = @DTLS_CFLAGS@
DTLS_LIBS = @DTLS_LIBS@
@@ -518,6 +520,8 @@
LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
LIPO = @LIPO@
LN_S = @LN_S@
LOCALEDIR = @LOCALEDIR@
@@ -644,8 +648,6 @@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
SNDIO_LIBS = @SNDIO_LIBS@
@@ -690,6 +692,8 @@
WAYLAND_LIBS = @WAYLAND_LIBS@
WEBP_CFLAGS = @WEBP_CFLAGS@
WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
WGET = @WGET@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
diff --git a/gst/midi/midiparse.c b/gst/midi/midiparse.c
index 2f817c7..d52539b 100644
--- a/gst/midi/midiparse.c
+++ b/gst/midi/midiparse.c
@@ -133,10 +133,8 @@
gobject_class->set_property = gst_midi_parse_set_property;
gobject_class->get_property = gst_midi_parse_get_property;
- gst_element_class_add_pad_template (gstelement_class,
- gst_static_pad_template_get (&src_factory));
- gst_element_class_add_pad_template (gstelement_class,
- gst_static_pad_template_get (&sink_factory));
+ gst_element_class_add_static_pad_template (gstelement_class, &src_factory);
+ gst_element_class_add_static_pad_template (gstelement_class, &sink_factory);
gst_element_class_set_static_metadata (gstelement_class, "MidiParse",
"Codec/Demuxer/Audio",
"Midi Parser Element", "Wim Taymans <wim.taymans@gmail.com>");
diff --git a/gst/mpegdemux/Makefile.in b/gst/mpegdemux/Makefile.in
index dbe2b80..a7b6e29 100644
--- a/gst/mpegdemux/Makefile.in
+++ b/gst/mpegdemux/Makefile.in
@@ -304,6 +304,8 @@
DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
DSYMUTIL = @DSYMUTIL@
DTLS_CFLAGS = @DTLS_CFLAGS@
DTLS_LIBS = @DTLS_LIBS@
@@ -519,6 +521,8 @@
LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
LIPO = @LIPO@
LN_S = @LN_S@
LOCALEDIR = @LOCALEDIR@
@@ -645,8 +649,6 @@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
SNDIO_LIBS = @SNDIO_LIBS@
@@ -691,6 +693,8 @@
WAYLAND_LIBS = @WAYLAND_LIBS@
WEBP_CFLAGS = @WEBP_CFLAGS@
WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
WGET = @WGET@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
diff --git a/gst/mpegdemux/gstmpegdemux.c b/gst/mpegdemux/gstmpegdemux.c
index eb2848b..68985b2 100644
--- a/gst/mpegdemux/gstmpegdemux.c
+++ b/gst/mpegdemux/gstmpegdemux.c
@@ -228,7 +228,7 @@
gst_element_class_add_pad_template (element_class, klass->sink_template);
gst_element_class_set_static_metadata (element_class,
- "The Fluendo MPEG Program Stream Demuxer", "Codec/Demuxer",
+ "MPEG Program Stream Demuxer", "Codec/Demuxer",
"Demultiplexes MPEG Program Streams", "Wim Taymans <wim@fluendo.com>");
}
@@ -1274,7 +1274,7 @@
}
/* check the limits */
- if (seeksegment.rate > 0.0) {
+ if (seeksegment.rate > 0.0 && first_pts != G_MAXUINT64) {
if (seeksegment.start < first_pts - demux->base_time) {
seeksegment.start = first_pts - demux->base_time;
seeksegment.position = seeksegment.start;
@@ -2401,13 +2401,14 @@
static inline gboolean
gst_ps_demux_scan_ts (GstPsDemux * demux, const guint8 * data,
- SCAN_MODE mode, guint64 * rts)
+ SCAN_MODE mode, guint64 * rts, const guint8 * end)
{
gboolean ret = FALSE;
guint32 scr1, scr2;
guint64 scr;
guint64 pts, dts;
guint32 code;
+ guint16 len;
/* read the 4 bytes for the sync code */
code = GST_READ_UINT32_BE (data);
@@ -2422,6 +2423,7 @@
/* start parsing the stream */
if ((*data & 0xc0) == 0x40) {
+ /* MPEG-2 PACK header */
guint32 scr_ext;
guint32 next32;
guint8 stuffing_bytes;
@@ -2461,6 +2463,7 @@
goto beach;
}
} else {
+ /* MPEG-1 pack header */
/* check markers */
if ((scr1 & 0xf1000100) != 0x21000100)
goto beach;
@@ -2482,8 +2485,27 @@
goto beach;
}
- /* read the 4 bytes for the PES sync code */
+ /* Possible optional System header here */
code = GST_READ_UINT32_BE (data);
+ len = GST_READ_UINT16_BE (data + 4);
+
+ if (code == ID_PS_SYSTEM_HEADER_START_CODE) {
+ /* Found a system header, skip it */
+ /* Check for sufficient data - system header, plus enough
+ * left over for the PES packet header */
+ if (data + 6 + len + 6 > end)
+ return FALSE;
+ data += len + 6;
+
+ /* read the 4 bytes for the PES sync code */
+ code = GST_READ_UINT32_BE (data);
+ len = GST_READ_UINT16_BE (data + 4);
+ }
+
+ /* Check we have enough data left for reading the PES packet */
+ if (data + 6 + len > end)
+ return FALSE;
+
if (!gst_ps_demux_is_pes_sync (code))
goto beach;
@@ -2597,9 +2619,11 @@
GstMapInfo map;
do {
+ /* Check we can get at least scan_sz bytes */
if (offset + scan_sz > demux->sink_segment.stop)
return FALSE;
+ /* Don't go further than 'limit' bytes */
if (limit && offset > *pos + limit)
return FALSE;
@@ -2624,7 +2648,8 @@
/* scan the block */
for (cursor = 0; !found && cursor <= end_scan; cursor++) {
- found = gst_ps_demux_scan_ts (demux, map.data + cursor, mode, &ts);
+ found = gst_ps_demux_scan_ts (demux, map.data + cursor, mode, &ts,
+ map.data + map.size);
}
/* done with the buffer, unref it */
@@ -2658,10 +2683,12 @@
GstMapInfo map;
do {
+ /* Check we have at least scan_sz bytes available */
if (offset < scan_sz - 1)
return FALSE;
- if (limit && offset < *pos - limit)
+ /* Don't go backward past the start or 'limit' bytes */
+ if (limit && offset + limit < *pos)
return FALSE;
if (offset > BLOCK_SZ)
@@ -2690,7 +2717,8 @@
/* scan the block */
for (cursor = (start_scan + 1); !found && cursor > 0; cursor--) {
- found = gst_ps_demux_scan_ts (demux, data--, mode, &ts);
+ found = gst_ps_demux_scan_ts (demux, data--, mode, &ts,
+ map.data + map.size);
}
/* done with the buffer, unref it */
@@ -2750,7 +2778,8 @@
demux->first_scr_offset = offset;
/* scan for last SCR in the stream */
offset = demux->sink_segment.stop;
- gst_ps_demux_scan_backward_ts (demux, &offset, SCAN_SCR, &demux->last_scr, 0);
+ gst_ps_demux_scan_backward_ts (demux, &offset, SCAN_SCR, &demux->last_scr,
+ DURATION_SCAN_LIMIT);
GST_DEBUG_OBJECT (demux, "Last SCR: %" G_GINT64_FORMAT " %" GST_TIME_FORMAT
" in packet starting at %" G_GUINT64_FORMAT,
demux->last_scr, GST_TIME_ARGS (MPEGTIME_TO_GSTTIME (demux->last_scr)),
diff --git a/gst/mpegpsmux/Makefile.in b/gst/mpegpsmux/Makefile.in
index ec13c2a..ae79453 100644
--- a/gst/mpegpsmux/Makefile.in
+++ b/gst/mpegpsmux/Makefile.in
@@ -305,6 +305,8 @@
DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
DSYMUTIL = @DSYMUTIL@
DTLS_CFLAGS = @DTLS_CFLAGS@
DTLS_LIBS = @DTLS_LIBS@
@@ -520,6 +522,8 @@
LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
LIPO = @LIPO@
LN_S = @LN_S@
LOCALEDIR = @LOCALEDIR@
@@ -646,8 +650,6 @@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
SNDIO_LIBS = @SNDIO_LIBS@
@@ -692,6 +694,8 @@
WAYLAND_LIBS = @WAYLAND_LIBS@
WEBP_CFLAGS = @WEBP_CFLAGS@
WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
WGET = @WGET@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
diff --git a/gst/mpegpsmux/mpegpsmux.c b/gst/mpegpsmux/mpegpsmux.c
index 2b96fc1..fdd1c14 100644
--- a/gst/mpegpsmux/mpegpsmux.c
+++ b/gst/mpegpsmux/mpegpsmux.c
@@ -127,10 +127,10 @@
"Whether to aggregate GOPs and push them out as buffer lists",
DEFAULT_AGGREGATE_GOPS, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
- gst_element_class_add_pad_template (gstelement_class,
- gst_static_pad_template_get (&mpegpsmux_sink_factory));
- gst_element_class_add_pad_template (gstelement_class,
- gst_static_pad_template_get (&mpegpsmux_src_factory));
+ gst_element_class_add_static_pad_template (gstelement_class,
+ &mpegpsmux_sink_factory);
+ gst_element_class_add_static_pad_template (gstelement_class,
+ &mpegpsmux_src_factory);
gst_element_class_set_static_metadata (gstelement_class,
"MPEG Program Stream Muxer", "Codec/Muxer",
diff --git a/gst/mpegtsdemux/Makefile.in b/gst/mpegtsdemux/Makefile.in
index 0ca9693..05b1780 100644
--- a/gst/mpegtsdemux/Makefile.in
+++ b/gst/mpegtsdemux/Makefile.in
@@ -310,6 +310,8 @@
DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
DSYMUTIL = @DSYMUTIL@
DTLS_CFLAGS = @DTLS_CFLAGS@
DTLS_LIBS = @DTLS_LIBS@
@@ -525,6 +527,8 @@
LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
LIPO = @LIPO@
LN_S = @LN_S@
LOCALEDIR = @LOCALEDIR@
@@ -651,8 +655,6 @@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
SNDIO_LIBS = @SNDIO_LIBS@
@@ -697,6 +699,8 @@
WAYLAND_LIBS = @WAYLAND_LIBS@
WEBP_CFLAGS = @WEBP_CFLAGS@
WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
WGET = @WGET@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
diff --git a/gst/mpegtsdemux/mpegtsbase.c b/gst/mpegtsdemux/mpegtsbase.c
index 4aee084..481695a 100644
--- a/gst/mpegtsdemux/mpegtsbase.c
+++ b/gst/mpegtsdemux/mpegtsbase.c
@@ -125,8 +125,7 @@
element_class = GST_ELEMENT_CLASS (klass);
element_class->change_state = mpegts_base_change_state;
- gst_element_class_add_pad_template (element_class,
- gst_static_pad_template_get (&sink_template));
+ gst_element_class_add_static_pad_template (element_class, &sink_template);
gobject_class = G_OBJECT_CLASS (klass);
gobject_class->dispose = mpegts_base_dispose;
diff --git a/gst/mpegtsdemux/mpegtsbase.h b/gst/mpegtsdemux/mpegtsbase.h
index fc0c651..ecb15ac 100644
--- a/gst/mpegtsdemux/mpegtsbase.h
+++ b/gst/mpegtsdemux/mpegtsbase.h
@@ -141,11 +141,6 @@
/* Whether we saw a PAT yet */
gboolean seen_pat;
- /* Whether upstream is live or not */
- gboolean upstream_live;
- /* Whether we queried the upstream latency or not */
- gboolean queried_latency;
-
/* Upstream segment */
GstSegment segment;
diff --git a/gst/mpegtsdemux/mpegtsparse.c b/gst/mpegtsdemux/mpegtsparse.c
index 6ab2e7d..7bf8fc4 100644
--- a/gst/mpegtsdemux/mpegtsparse.c
+++ b/gst/mpegtsdemux/mpegtsparse.c
@@ -165,10 +165,8 @@
element_class->request_new_pad = mpegts_parse_request_new_pad;
element_class->release_pad = mpegts_parse_release_pad;
- gst_element_class_add_pad_template (element_class,
- gst_static_pad_template_get (&src_template));
- gst_element_class_add_pad_template (element_class,
- gst_static_pad_template_get (&program_template));
+ gst_element_class_add_static_pad_template (element_class, &src_template);
+ gst_element_class_add_static_pad_template (element_class, &program_template);
gst_element_class_set_static_metadata (element_class,
"MPEG transport stream parser", "Codec/Parser",
diff --git a/gst/mpegtsdemux/tsdemux.c b/gst/mpegtsdemux/tsdemux.c
index 8a41f90..91d3776 100644
--- a/gst/mpegtsdemux/tsdemux.c
+++ b/gst/mpegtsdemux/tsdemux.c
@@ -246,24 +246,24 @@
GST_STATIC_CAPS ("subpicture/x-pgs; subpicture/x-dvd; subpicture/x-dvb")
static GstStaticPadTemplate video_template =
-GST_STATIC_PAD_TEMPLATE ("video_%04x", GST_PAD_SRC,
+GST_STATIC_PAD_TEMPLATE ("video_%01x_%05x", GST_PAD_SRC,
GST_PAD_SOMETIMES,
VIDEO_CAPS);
static GstStaticPadTemplate audio_template =
-GST_STATIC_PAD_TEMPLATE ("audio_%04x",
+GST_STATIC_PAD_TEMPLATE ("audio_%01x_%05x",
GST_PAD_SRC,
GST_PAD_SOMETIMES,
AUDIO_CAPS);
static GstStaticPadTemplate subpicture_template =
-GST_STATIC_PAD_TEMPLATE ("subpicture_%04x",
+GST_STATIC_PAD_TEMPLATE ("subpicture_%01x_%05x",
GST_PAD_SRC,
GST_PAD_SOMETIMES,
SUBPICTURE_CAPS);
static GstStaticPadTemplate private_template =
-GST_STATIC_PAD_TEMPLATE ("private_%04x",
+GST_STATIC_PAD_TEMPLATE ("private_%01x_%05x",
GST_PAD_SRC,
GST_PAD_SOMETIMES,
GST_STATIC_CAPS_ANY);
@@ -418,6 +418,7 @@
demux->group_id = G_MAXUINT;
demux->last_seek_offset = -1;
+ demux->program_generation = 0;
}
static void
@@ -1533,16 +1534,24 @@
if (caps) {
if (is_audio) {
template = gst_static_pad_template_get (&audio_template);
- name = g_strdup_printf ("audio_%04x", bstream->pid);
+ name =
+ g_strdup_printf ("audio_%01x_%04x", demux->program_generation,
+ bstream->pid);
} else if (is_video) {
template = gst_static_pad_template_get (&video_template);
- name = g_strdup_printf ("video_%04x", bstream->pid);
+ name =
+ g_strdup_printf ("video_%01x_%04x", demux->program_generation,
+ bstream->pid);
} else if (is_private) {
template = gst_static_pad_template_get (&private_template);
- name = g_strdup_printf ("private_%04x", bstream->pid);
+ name =
+ g_strdup_printf ("private_%01x_%04x", demux->program_generation,
+ bstream->pid);
} else if (is_subpicture) {
template = gst_static_pad_template_get (&subpicture_template);
- name = g_strdup_printf ("subpicture_%04x", bstream->pid);
+ name =
+ g_strdup_printf ("subpicture_%01x_%04x", demux->program_generation,
+ bstream->pid);
} else
g_assert_not_reached ();
@@ -1799,6 +1808,9 @@
demux->program_number = program->program_number;
demux->program = program;
+ /* Increment the program_generation counter */
+ demux->program_generation = (demux->program_generation + 1) & 0xf;
+
/* If this is not the initial program, we need to calculate
* a new segment */
if (demux->segment_event) {
diff --git a/gst/mpegtsdemux/tsdemux.h b/gst/mpegtsdemux/tsdemux.h
index b416733..32cbde2 100644
--- a/gst/mpegtsdemux/tsdemux.h
+++ b/gst/mpegtsdemux/tsdemux.h
@@ -64,6 +64,7 @@
gboolean emit_statistics;
/*< private >*/
+ gint program_generation; /* Incremented each time we switch program 0..15 */
MpegTSBaseProgram *program; /* Current program */
MpegTSBaseProgram *previous_program; /* Previous program, to deactivate once
* the new program becomes active */
diff --git a/gst/mpegtsmux/Makefile.in b/gst/mpegtsmux/Makefile.in
index 2611b8c..4b0a2ef 100644
--- a/gst/mpegtsmux/Makefile.in
+++ b/gst/mpegtsmux/Makefile.in
@@ -349,6 +349,8 @@
DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
DSYMUTIL = @DSYMUTIL@
DTLS_CFLAGS = @DTLS_CFLAGS@
DTLS_LIBS = @DTLS_LIBS@
@@ -564,6 +566,8 @@
LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
LIPO = @LIPO@
LN_S = @LN_S@
LOCALEDIR = @LOCALEDIR@
@@ -690,8 +694,6 @@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
SNDIO_LIBS = @SNDIO_LIBS@
@@ -736,6 +738,8 @@
WAYLAND_LIBS = @WAYLAND_LIBS@
WEBP_CFLAGS = @WEBP_CFLAGS@
WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
WGET = @WGET@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
diff --git a/gst/mpegtsmux/mpegtsmux.c b/gst/mpegtsmux/mpegtsmux.c
index 4c68e3e..67c2b72 100644
--- a/gst/mpegtsmux/mpegtsmux.c
+++ b/gst/mpegtsmux/mpegtsmux.c
@@ -239,10 +239,10 @@
GstElementClass *gstelement_class = GST_ELEMENT_CLASS (klass);
GObjectClass *gobject_class = G_OBJECT_CLASS (klass);
- gst_element_class_add_pad_template (gstelement_class,
- gst_static_pad_template_get (&mpegtsmux_sink_factory));
- gst_element_class_add_pad_template (gstelement_class,
- gst_static_pad_template_get (&mpegtsmux_src_factory));
+ gst_element_class_add_static_pad_template (gstelement_class,
+ &mpegtsmux_sink_factory);
+ gst_element_class_add_static_pad_template (gstelement_class,
+ &mpegtsmux_src_factory);
gst_element_class_set_static_metadata (gstelement_class,
"MPEG Transport Stream Muxer", "Codec/Muxer",
@@ -933,11 +933,9 @@
lang_code = gst_tag_get_language_code_iso_639_2B (lang);
if (lang_code) {
- if (pad_data->language) {
- g_free (pad_data->language);
- pad_data->language = NULL;
- }
GST_DEBUG_OBJECT (pad, "Setting language to '%s'", lang_code);
+
+ g_free (pad_data->language);
pad_data->language = g_strdup (lang_code);
} else {
GST_WARNING_OBJECT (pad, "Did not get language code for '%s'", lang);
diff --git a/gst/mpegtsmux/tsmux/Makefile.in b/gst/mpegtsmux/tsmux/Makefile.in
index f2526ec..92b64e0 100644
--- a/gst/mpegtsmux/tsmux/Makefile.in
+++ b/gst/mpegtsmux/tsmux/Makefile.in
@@ -274,6 +274,8 @@
DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
DSYMUTIL = @DSYMUTIL@
DTLS_CFLAGS = @DTLS_CFLAGS@
DTLS_LIBS = @DTLS_LIBS@
@@ -489,6 +491,8 @@
LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
LIPO = @LIPO@
LN_S = @LN_S@
LOCALEDIR = @LOCALEDIR@
@@ -615,8 +619,6 @@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
SNDIO_LIBS = @SNDIO_LIBS@
@@ -661,6 +663,8 @@
WAYLAND_LIBS = @WAYLAND_LIBS@
WEBP_CFLAGS = @WEBP_CFLAGS@
WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
WGET = @WGET@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
diff --git a/gst/mpegtsmux/tsmux/tsmuxstream.c b/gst/mpegtsmux/tsmux/tsmuxstream.c
index 6b7c17e..f719d8f 100644
--- a/gst/mpegtsmux/tsmux/tsmuxstream.c
+++ b/gst/mpegtsmux/tsmux/tsmuxstream.c
@@ -148,6 +148,7 @@
case TSMUX_ST_AUDIO_MPEG1:
case TSMUX_ST_AUDIO_MPEG2:
/* FIXME: Assign sequential IDs? */
+ stream->is_audio = TRUE;
stream->id = 0xC0;
stream->pi.flags |= TSMUX_PACKET_FLAG_PES_FULL_HEADER;
break;
@@ -163,12 +164,15 @@
stream->is_video_stream = TRUE;
break;
case TSMUX_ST_PS_AUDIO_LPCM:
+ stream->is_audio = TRUE;
stream->id_extended = 0x80;
break;
case TSMUX_ST_PS_AUDIO_AC3:
+ stream->is_audio = TRUE;
stream->id_extended = 0x71;
break;
case TSMUX_ST_PS_AUDIO_DTS:
+ stream->is_audio = TRUE;
stream->id_extended = 0x82;
break;
default:
@@ -204,6 +208,7 @@
case TSMUX_ST_PS_OPUS:
/* FIXME: assign sequential extended IDs? */
stream->id = 0xBD;
+ stream->is_audio = TRUE;
stream->stream_type = TSMUX_ST_PRIVATE_DATA;
stream->is_opus = TRUE;
stream->pi.flags |= TSMUX_PACKET_FLAG_PES_FULL_HEADER;
@@ -732,7 +737,13 @@
g_return_if_fail (stream != NULL);
g_return_if_fail (pmt_stream != NULL);
- /* Based on the stream type, write out any descriptors to go in the
+ if (stream->is_audio && stream->language[0] != '\0') {
+ descriptor = gst_mpegts_descriptor_from_iso_639_language (stream->language);
+ g_ptr_array_add (pmt_stream->descriptors, descriptor);
+ descriptor = NULL;
+ }
+
+ /* Based on the stream type, write out any descriptors to go in the
* PMT ES_info field */
/* tag (registration_descriptor), length, format_identifier */
switch (stream->stream_type) {
diff --git a/gst/mpegtsmux/tsmux/tsmuxstream.h b/gst/mpegtsmux/tsmux/tsmuxstream.h
index 73b2a88..2766718 100644
--- a/gst/mpegtsmux/tsmux/tsmuxstream.h
+++ b/gst/mpegtsmux/tsmux/tsmuxstream.h
@@ -211,6 +211,7 @@
gchar language[4];
gboolean is_meta;
+ gboolean is_audio;
/* Opus */
gboolean is_opus;
diff --git a/gst/mve/Makefile.in b/gst/mve/Makefile.in
index fc8b6de..ed8cafb 100644
--- a/gst/mve/Makefile.in
+++ b/gst/mve/Makefile.in
@@ -306,6 +306,8 @@
DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
DSYMUTIL = @DSYMUTIL@
DTLS_CFLAGS = @DTLS_CFLAGS@
DTLS_LIBS = @DTLS_LIBS@
@@ -521,6 +523,8 @@
LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
LIPO = @LIPO@
LN_S = @LN_S@
LOCALEDIR = @LOCALEDIR@
@@ -647,8 +651,6 @@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
SNDIO_LIBS = @SNDIO_LIBS@
@@ -693,6 +695,8 @@
WAYLAND_LIBS = @WAYLAND_LIBS@
WEBP_CFLAGS = @WEBP_CFLAGS@
WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
WGET = @WGET@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
diff --git a/gst/mve/gstmvemux.c b/gst/mve/gstmvemux.c
index a7a32cb..b123d2d 100644
--- a/gst/mve/gstmvemux.c
+++ b/gst/mve/gstmvemux.c
@@ -1350,12 +1350,11 @@
GstElementClass *element_class = GST_ELEMENT_CLASS (klass);
- gst_element_class_add_pad_template (element_class,
- gst_static_pad_template_get (&src_factory));
- gst_element_class_add_pad_template (element_class,
- gst_static_pad_template_get (&audio_sink_factory));
- gst_element_class_add_pad_template (element_class,
- gst_static_pad_template_get (&video_sink_factory));
+ gst_element_class_add_static_pad_template (element_class, &src_factory);
+ gst_element_class_add_static_pad_template (element_class,
+ &audio_sink_factory);
+ gst_element_class_add_static_pad_template (element_class,
+ &video_sink_factory);
gst_element_class_set_static_metadata (element_class, "MVE Multiplexer",
"Codec/Muxer",
diff --git a/gst/mxf/Makefile.in b/gst/mxf/Makefile.in
index d7fa222..78cec92 100644
--- a/gst/mxf/Makefile.in
+++ b/gst/mxf/Makefile.in
@@ -311,6 +311,8 @@
DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
DSYMUTIL = @DSYMUTIL@
DTLS_CFLAGS = @DTLS_CFLAGS@
DTLS_LIBS = @DTLS_LIBS@
@@ -526,6 +528,8 @@
LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
LIPO = @LIPO@
LN_S = @LN_S@
LOCALEDIR = @LOCALEDIR@
@@ -652,8 +656,6 @@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
SNDIO_LIBS = @SNDIO_LIBS@
@@ -698,6 +700,8 @@
WAYLAND_LIBS = @WAYLAND_LIBS@
WEBP_CFLAGS = @WEBP_CFLAGS@
WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
WGET = @WGET@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
diff --git a/gst/mxf/mxfdemux.c b/gst/mxf/mxfdemux.c
index 0eaad0f..ca09cc7 100644
--- a/gst/mxf/mxfdemux.c
+++ b/gst/mxf/mxfdemux.c
@@ -4461,13 +4461,13 @@
GST_DEBUG_FUNCPTR (gst_mxf_demux_change_state);
gstelement_class->query = GST_DEBUG_FUNCPTR (gst_mxf_demux_query);
- gst_element_class_add_pad_template (gstelement_class,
- gst_static_pad_template_get (&mxf_sink_template));
- gst_element_class_add_pad_template (gstelement_class,
- gst_static_pad_template_get (&mxf_src_template));
+ gst_element_class_add_static_pad_template (gstelement_class,
+ &mxf_sink_template);
+ gst_element_class_add_static_pad_template (gstelement_class,
+ &mxf_src_template);
gst_element_class_set_static_metadata (gstelement_class, "MXF Demuxer",
- "Codec/Demuxer",
- "Demux MXF files", "Sebastian Dröge <sebastian.droege@collabora.co.uk>");
+ "Codec/Demuxer", "Demux MXF files",
+ "Sebastian Dröge <sebastian.droege@collabora.co.uk>");
}
static void
diff --git a/gst/mxf/mxfmux.c b/gst/mxf/mxfmux.c
index 4fb6630..c21a84d 100644
--- a/gst/mxf/mxfmux.c
+++ b/gst/mxf/mxfmux.c
@@ -171,8 +171,7 @@
gstaggregator_class->aggregate = GST_DEBUG_FUNCPTR (gst_mxf_mux_aggregate);
gstaggregator_class->sinkpads_type = GST_TYPE_MXF_MUX_PAD;
- gst_element_class_add_pad_template (gstelement_class,
- gst_static_pad_template_get (&src_templ));
+ gst_element_class_add_static_pad_template (gstelement_class, &src_templ);
p = mxf_essence_element_writer_get_pad_templates ();
while (p && *p) {
diff --git a/gst/netsim/Makefile.in b/gst/netsim/Makefile.in
index c04ea7e..70a2f75 100644
--- a/gst/netsim/Makefile.in
+++ b/gst/netsim/Makefile.in
@@ -302,6 +302,8 @@
DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
DSYMUTIL = @DSYMUTIL@
DTLS_CFLAGS = @DTLS_CFLAGS@
DTLS_LIBS = @DTLS_LIBS@
@@ -517,6 +519,8 @@
LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
LIPO = @LIPO@
LN_S = @LN_S@
LOCALEDIR = @LOCALEDIR@
@@ -643,8 +647,6 @@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
SNDIO_LIBS = @SNDIO_LIBS@
@@ -689,6 +691,8 @@
WAYLAND_LIBS = @WAYLAND_LIBS@
WEBP_CFLAGS = @WEBP_CFLAGS@
WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
WGET = @WGET@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
diff --git a/gst/netsim/gstnetsim.c b/gst/netsim/gstnetsim.c
index 2e15ac3..833e746 100644
--- a/gst/netsim/gstnetsim.c
+++ b/gst/netsim/gstnetsim.c
@@ -400,10 +400,10 @@
g_type_class_add_private (klass, sizeof (GstNetSimPrivate));
- gst_element_class_add_pad_template (gstelement_class,
- gst_static_pad_template_get (&gst_net_sim_src_template));
- gst_element_class_add_pad_template (gstelement_class,
- gst_static_pad_template_get (&gst_net_sim_sink_template));
+ gst_element_class_add_static_pad_template (gstelement_class,
+ &gst_net_sim_src_template);
+ gst_element_class_add_static_pad_template (gstelement_class,
+ &gst_net_sim_sink_template);
gst_element_class_set_metadata (gstelement_class,
"Network Simulator",
diff --git a/gst/nuvdemux/Makefile.in b/gst/nuvdemux/Makefile.in
index ff8e8e5..f270c92 100644
--- a/gst/nuvdemux/Makefile.in
+++ b/gst/nuvdemux/Makefile.in
@@ -301,6 +301,8 @@
DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
DSYMUTIL = @DSYMUTIL@
DTLS_CFLAGS = @DTLS_CFLAGS@
DTLS_LIBS = @DTLS_LIBS@
@@ -516,6 +518,8 @@
LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
LIPO = @LIPO@
LN_S = @LN_S@
LOCALEDIR = @LOCALEDIR@
@@ -642,8 +646,6 @@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
SNDIO_LIBS = @SNDIO_LIBS@
@@ -688,6 +690,8 @@
WAYLAND_LIBS = @WAYLAND_LIBS@
WEBP_CFLAGS = @WEBP_CFLAGS@
WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
WGET = @WGET@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
diff --git a/gst/nuvdemux/gstnuvdemux.c b/gst/nuvdemux/gstnuvdemux.c
index 765025f..b98d35d 100644
--- a/gst/nuvdemux/gstnuvdemux.c
+++ b/gst/nuvdemux/gstnuvdemux.c
@@ -124,14 +124,11 @@
{
GstElementClass *element_class = GST_ELEMENT_CLASS (klass);
- gst_element_class_add_pad_template (element_class,
- gst_static_pad_template_get (&audio_src_template));
-
- gst_element_class_add_pad_template (element_class,
- gst_static_pad_template_get (&video_src_template));
-
- gst_element_class_add_pad_template (element_class,
- gst_static_pad_template_get (&sink_template));
+ gst_element_class_add_static_pad_template (element_class,
+ &audio_src_template);
+ gst_element_class_add_static_pad_template (element_class,
+ &video_src_template);
+ gst_element_class_add_static_pad_template (element_class, &sink_template);
gst_element_class_set_static_metadata (element_class, "Nuv demuxer",
"Codec/Demuxer",
"Demultiplex a MythTV NuppleVideo .nuv file into audio and video",
diff --git a/gst/onvif/Makefile.in b/gst/onvif/Makefile.in
index 84f6c30..b4fa711 100644
--- a/gst/onvif/Makefile.in
+++ b/gst/onvif/Makefile.in
@@ -301,6 +301,8 @@
DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
DSYMUTIL = @DSYMUTIL@
DTLS_CFLAGS = @DTLS_CFLAGS@
DTLS_LIBS = @DTLS_LIBS@
@@ -516,6 +518,8 @@
LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
LIPO = @LIPO@
LN_S = @LN_S@
LOCALEDIR = @LOCALEDIR@
@@ -642,8 +646,6 @@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
SNDIO_LIBS = @SNDIO_LIBS@
@@ -688,6 +690,8 @@
WAYLAND_LIBS = @WAYLAND_LIBS@
WEBP_CFLAGS = @WEBP_CFLAGS@
WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
WGET = @WGET@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
diff --git a/gst/onvif/gstrtponvifparse.c b/gst/onvif/gstrtponvifparse.c
index f48ac07..8ff4fa9 100644
--- a/gst/onvif/gstrtponvifparse.c
+++ b/gst/onvif/gstrtponvifparse.c
@@ -57,10 +57,10 @@
gstelement_class = GST_ELEMENT_CLASS (klass);
/* register pads */
- gst_element_class_add_pad_template (gstelement_class,
- gst_static_pad_template_get (&sink_template_factory));
- gst_element_class_add_pad_template (gstelement_class,
- gst_static_pad_template_get (&src_template_factory));
+ gst_element_class_add_static_pad_template (gstelement_class,
+ &sink_template_factory);
+ gst_element_class_add_static_pad_template (gstelement_class,
+ &src_template_factory);
gst_element_class_set_static_metadata (gstelement_class,
"ONVIF NTP timestamps RTP extension", "Effect/RTP",
diff --git a/gst/onvif/gstrtponviftimestamp.c b/gst/onvif/gstrtponviftimestamp.c
index 4abece1..6777f9f 100644
--- a/gst/onvif/gstrtponviftimestamp.c
+++ b/gst/onvif/gstrtponviftimestamp.c
@@ -257,10 +257,10 @@
DEFAULT_SET_E_BIT, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
/* register pads */
- gst_element_class_add_pad_template (gstelement_class,
- gst_static_pad_template_get (&sink_template_factory));
- gst_element_class_add_pad_template (gstelement_class,
- gst_static_pad_template_get (&src_template_factory));
+ gst_element_class_add_static_pad_template (gstelement_class,
+ &sink_template_factory);
+ gst_element_class_add_static_pad_template (gstelement_class,
+ &src_template_factory);
gst_element_class_set_static_metadata (gstelement_class,
"ONVIF NTP timestamps RTP extension", "Effect/RTP",
diff --git a/gst/patchdetect/Makefile.in b/gst/patchdetect/Makefile.in
index 22dceb0..1c72039 100644
--- a/gst/patchdetect/Makefile.in
+++ b/gst/patchdetect/Makefile.in
@@ -304,6 +304,8 @@
DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
DSYMUTIL = @DSYMUTIL@
DTLS_CFLAGS = @DTLS_CFLAGS@
DTLS_LIBS = @DTLS_LIBS@
@@ -519,6 +521,8 @@
LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
LIPO = @LIPO@
LN_S = @LN_S@
LOCALEDIR = @LOCALEDIR@
@@ -645,8 +649,6 @@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
SNDIO_LIBS = @SNDIO_LIBS@
@@ -691,6 +693,8 @@
WAYLAND_LIBS = @WAYLAND_LIBS@
WEBP_CFLAGS = @WEBP_CFLAGS@
WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
WGET = @WGET@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
diff --git a/gst/patchdetect/gstpatchdetect.c b/gst/patchdetect/gstpatchdetect.c
index 06a6396..ff21fda 100644
--- a/gst/patchdetect/gstpatchdetect.c
+++ b/gst/patchdetect/gstpatchdetect.c
@@ -109,10 +109,10 @@
{
GstElementClass *element_class = GST_ELEMENT_CLASS (g_class);
- gst_element_class_add_pad_template (element_class,
- gst_static_pad_template_get (&gst_patchdetect_sink_template));
- gst_element_class_add_pad_template (element_class,
- gst_static_pad_template_get (&gst_patchdetect_src_template));
+ gst_element_class_add_static_pad_template (element_class,
+ &gst_patchdetect_sink_template);
+ gst_element_class_add_static_pad_template (element_class,
+ &gst_patchdetect_src_template);
gst_element_class_set_static_metadata (element_class, "Color Patch Detector",
"Video/Analysis", "Detects color patches from a color calibration chart",
diff --git a/gst/pcapparse/Makefile.in b/gst/pcapparse/Makefile.in
index 9a4cd05..466349b 100644
--- a/gst/pcapparse/Makefile.in
+++ b/gst/pcapparse/Makefile.in
@@ -304,6 +304,8 @@
DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
DSYMUTIL = @DSYMUTIL@
DTLS_CFLAGS = @DTLS_CFLAGS@
DTLS_LIBS = @DTLS_LIBS@
@@ -519,6 +521,8 @@
LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
LIPO = @LIPO@
LN_S = @LN_S@
LOCALEDIR = @LOCALEDIR@
@@ -645,8 +649,6 @@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
SNDIO_LIBS = @SNDIO_LIBS@
@@ -691,6 +693,8 @@
WAYLAND_LIBS = @WAYLAND_LIBS@
WEBP_CFLAGS = @WEBP_CFLAGS@
WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
WGET = @WGET@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
diff --git a/gst/pcapparse/gstirtspparse.c b/gst/pcapparse/gstirtspparse.c
index 88a0096..f6b7ace 100644
--- a/gst/pcapparse/gstirtspparse.c
+++ b/gst/pcapparse/gstirtspparse.c
@@ -105,10 +105,8 @@
parse_class->stop = GST_DEBUG_FUNCPTR (gst_irtsp_parse_stop);
parse_class->handle_frame = GST_DEBUG_FUNCPTR (gst_irtsp_parse_handle_frame);
- gst_element_class_add_pad_template (element_class,
- gst_static_pad_template_get (&sink_template));
- gst_element_class_add_pad_template (element_class,
- gst_static_pad_template_get (&src_template));
+ gst_element_class_add_static_pad_template (element_class, &sink_template);
+ gst_element_class_add_static_pad_template (element_class, &src_template);
gst_element_class_set_static_metadata (element_class, "IRTSPParse",
"Raw/Parser",
diff --git a/gst/pcapparse/gstpcapparse.c b/gst/pcapparse/gstpcapparse.c
index 21e0cab..4ffa8c1 100644
--- a/gst/pcapparse/gstpcapparse.c
+++ b/gst/pcapparse/gstpcapparse.c
@@ -138,10 +138,8 @@
"Relative timestamp offset (ns) to apply (-1 = use absolute packet time)",
-1, G_MAXINT64, -1, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
- gst_element_class_add_pad_template (element_class,
- gst_static_pad_template_get (&sink_template));
- gst_element_class_add_pad_template (element_class,
- gst_static_pad_template_get (&src_template));
+ gst_element_class_add_static_pad_template (element_class, &sink_template);
+ gst_element_class_add_static_pad_template (element_class, &src_template);
element_class->change_state = gst_pcap_parse_change_state;
diff --git a/gst/pnm/Makefile.in b/gst/pnm/Makefile.in
index deecc99..db106aa 100644
--- a/gst/pnm/Makefile.in
+++ b/gst/pnm/Makefile.in
@@ -304,6 +304,8 @@
DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
DSYMUTIL = @DSYMUTIL@
DTLS_CFLAGS = @DTLS_CFLAGS@
DTLS_LIBS = @DTLS_LIBS@
@@ -519,6 +521,8 @@
LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
LIPO = @LIPO@
LN_S = @LN_S@
LOCALEDIR = @LOCALEDIR@
@@ -645,8 +649,6 @@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
SNDIO_LIBS = @SNDIO_LIBS@
@@ -691,6 +693,8 @@
WAYLAND_LIBS = @WAYLAND_LIBS@
WEBP_CFLAGS = @WEBP_CFLAGS@
WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
WGET = @WGET@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
diff --git a/gst/pnm/gstpnmdec.c b/gst/pnm/gstpnmdec.c
index 93c4140..1b5ea51 100644
--- a/gst/pnm/gstpnmdec.c
+++ b/gst/pnm/gstpnmdec.c
@@ -44,6 +44,7 @@
#include <stdio.h>
static gboolean gst_pnmdec_start (GstVideoDecoder * decoder);
+static GstFlowReturn gst_pnmdec_finish (GstVideoDecoder * decoder);
static gboolean gst_pnmdec_set_format (GstVideoDecoder * decoder,
GstVideoCodecState * state);
static gboolean gst_pnmdec_stop (GstVideoDecoder * decoder);
@@ -57,11 +58,14 @@
G_DEFINE_TYPE (GstPnmdec, gst_pnmdec, GST_TYPE_VIDEO_DECODER);
static GstStaticPadTemplate gst_pnmdec_src_pad_template =
- GST_STATIC_PAD_TEMPLATE ("src",
+GST_STATIC_PAD_TEMPLATE ("src",
GST_PAD_SRC,
GST_PAD_ALWAYS,
- GST_STATIC_CAPS (GST_VIDEO_CAPS_MAKE ("RGB") "; "
- GST_VIDEO_CAPS_MAKE ("GRAY8")));
+ GST_STATIC_CAPS (GST_VIDEO_CAPS_MAKE
+ ("{ RGB, GRAY8, GRAY16_BE, GRAY16_LE }")));
+
+static GstStaticCaps gst_pnmdec_gray16_caps =
+GST_STATIC_CAPS (GST_VIDEO_CAPS_MAKE ("{ GRAY16_BE, GRAY16_LE }"));
static GstStaticPadTemplate gst_pnmdec_sink_pad_template =
GST_STATIC_PAD_TEMPLATE ("sink",
@@ -69,6 +73,8 @@
GST_PAD_ALWAYS,
GST_STATIC_CAPS (MIME_ALL));
+GST_DEBUG_CATEGORY (pnmdecoder_debug);
+#define GST_CAT_DEFAULT pnmdecoder_debug
static void
gst_pnmdec_class_init (GstPnmdecClass * klass)
@@ -76,16 +82,20 @@
GstElementClass *element_class = GST_ELEMENT_CLASS (klass);
GstVideoDecoderClass *vdec_class = (GstVideoDecoderClass *) klass;
- gst_element_class_add_pad_template (element_class,
- gst_static_pad_template_get (&gst_pnmdec_src_pad_template));
- gst_element_class_add_pad_template (element_class,
- gst_static_pad_template_get (&gst_pnmdec_sink_pad_template));
+ GST_DEBUG_CATEGORY_INIT (pnmdecoder_debug, "pnmdec", 0, "PNM Video Decoder");
+
+ gst_element_class_add_static_pad_template (element_class,
+ &gst_pnmdec_src_pad_template);
+ gst_element_class_add_static_pad_template (element_class,
+ &gst_pnmdec_sink_pad_template);
+
gst_element_class_set_static_metadata (element_class, "PNM image decoder",
"Codec/Decoder/Image",
"Decodes images in portable pixmap/graymap/bitmap/anymamp (PNM) format",
"Lutz Mueller <lutz@users.sourceforge.net>");
vdec_class->start = gst_pnmdec_start;
+ vdec_class->finish = gst_pnmdec_finish;
vdec_class->stop = gst_pnmdec_stop;
vdec_class->parse = gst_pnmdec_parse;
vdec_class->handle_frame = gst_pnmdec_handle_frame;
@@ -116,11 +126,91 @@
GST_PAD_SET_ACCEPT_TEMPLATE (GST_VIDEO_DECODER_SINK_PAD (s));
}
+static GstFlowReturn
+gst_pnmdec_negotiate (GstVideoDecoder * decoder)
+{
+ GstPnmdec *pnmdec = (GstPnmdec *) decoder;
+ GstVideoFormat fmt = GST_VIDEO_FORMAT_UNKNOWN;
+ GstVideoCodecState *output_state;
+
+ switch (pnmdec->mngr.info.type) {
+ case GST_PNM_TYPE_BITMAP:
+ if (pnmdec->mngr.info.encoding == GST_PNM_ENCODING_ASCII) {
+ return GST_FLOW_ERROR;
+ }
+ pnmdec->size = pnmdec->mngr.info.width * pnmdec->mngr.info.height * 1;
+ fmt = GST_VIDEO_FORMAT_GRAY8;
+ break;
+ case GST_PNM_TYPE_GRAYMAP:
+ if (pnmdec->mngr.info.max > 255) {
+ GstCaps *gray16_caps = gst_static_caps_get (&gst_pnmdec_gray16_caps);
+ GstCaps *peercaps;
+ GstStructure *peerstruct;
+ const gchar *fmtstr;
+
+ pnmdec->size = pnmdec->mngr.info.width * pnmdec->mngr.info.height * 2;
+ /* perform some basic negotiation to resolve which endianess,
+ * if any, is supported by the component downstream. Query
+ * the peer caps, intersecting with our preferred caps
+ */
+ peercaps =
+ gst_pad_peer_query_caps (GST_VIDEO_DECODER_SRC_PAD (decoder),
+ gray16_caps);
+ gst_caps_unref (gray16_caps);
+
+ GST_DEBUG ("Received caps from peer: %" GST_PTR_FORMAT, peercaps);
+ if (gst_caps_is_empty (peercaps)) {
+ gst_caps_unref (peercaps);
+ return FALSE;
+ }
+
+ if (!gst_caps_is_fixed (peercaps))
+ peercaps = gst_caps_fixate (peercaps);
+
+ peerstruct = gst_caps_get_structure (peercaps, 0);
+ fmtstr = gst_structure_get_string (peerstruct, "format");
+ if (fmtstr) {
+ if (g_str_equal (fmtstr, "GRAY16_BE")) {
+ fmt = GST_VIDEO_FORMAT_GRAY16_BE;
+ } else if (g_str_equal (fmtstr, "GRAY16_LE")) {
+ fmt = GST_VIDEO_FORMAT_GRAY16_LE;
+ }
+ }
+ gst_caps_unref (peercaps);
+ } else {
+ pnmdec->size = pnmdec->mngr.info.width * pnmdec->mngr.info.height * 1;
+ fmt = GST_VIDEO_FORMAT_GRAY8;
+ }
+ break;
+ case GST_PNM_TYPE_PIXMAP:
+ pnmdec->size = pnmdec->mngr.info.width * pnmdec->mngr.info.height * 3;
+ fmt = GST_VIDEO_FORMAT_RGB;
+ break;
+ }
+
+ if (fmt == GST_VIDEO_FORMAT_UNKNOWN)
+ return GST_FLOW_NOT_NEGOTIATED;
+
+ pnmdec->out_format = fmt;
+
+ output_state =
+ gst_video_decoder_set_output_state (decoder, fmt,
+ pnmdec->mngr.info.width, pnmdec->mngr.info.height, pnmdec->input_state);
+ gst_video_codec_state_unref (output_state);
+
+ if (gst_video_decoder_negotiate (decoder) == FALSE)
+ return GST_FLOW_NOT_NEGOTIATED;
+
+ return GST_FLOW_OK;
+}
+
static gboolean
gst_pnmdec_set_format (GstVideoDecoder * decoder, GstVideoCodecState * state)
{
GstPnmdec *pnmdec = (GstPnmdec *) decoder;
+ gst_pnmdec_negotiate (decoder);
+
if (pnmdec->input_state)
gst_video_codec_state_unref (pnmdec->input_state);
pnmdec->input_state = gst_video_codec_state_ref (state);
@@ -150,7 +240,7 @@
{
GScanner *scanner;
guint i = 0;
- guint target;
+ guint target, last_val = 0;
GstMapInfo map;
guint8 *outdata;
@@ -158,42 +248,78 @@
gst_buffer_map (s->buf, &map, GST_MAP_WRITE);
- /* leave the number of bytes already parsed */
- outdata = map.data + s->current_size;
- if (!bs) {
- goto drop_ok;
+ if (bs) {
+ GST_MEMDUMP_OBJECT (s, "Starting parse:", b, MIN (16, bs));
}
- if (s->last_byte) {
- while (*b >= '0' && *b <= '9') {
- s->last_byte = 10 * s->last_byte + *b - '0';
+ /* leave the number of bytes already parsed */
+ outdata = map.data + s->current_size;
+
+ if (s->have_last_val) {
+ while (bs && *b >= '0' && *b <= '9') {
+ s->last_val = 10 * s->last_val + *b - '0';
b++;
if (!--bs) {
goto drop_error;
}
}
- if (s->last_byte > 255) {
+ if (s->last_val > s->mngr.info.max) {
GST_DEBUG_OBJECT (s, "Corrupt ASCII encoded PNM file.");
goto drop_error;
}
+
+ GST_LOG_OBJECT (s, "Collected partial value from previous parse - %u",
+ s->last_val);
+ if (s->mngr.info.max > 255) {
+ if (i + 1 >= target) {
+ GST_DEBUG_OBJECT (s, "PNM file contains too much data.");
+ goto drop_error;
+ }
+ if (s->out_format == GST_VIDEO_FORMAT_GRAY16_BE)
+ GST_WRITE_UINT16_BE (outdata + i, s->last_val);
+ else
+ GST_WRITE_UINT16_LE (outdata + i, s->last_val);
+ i += 2;
+ } else {
+ outdata[i++] = s->last_val;
+ }
+ last_val = s->last_val;
+ s->have_last_val = FALSE;
}
- if (s->last_byte) {
- outdata[i++] = s->last_byte;
- s->last_byte = 0;
- }
+ /* Might be no data if we're at EOS */
+ if (!bs)
+ goto done;
scanner = g_scanner_new (NULL);
g_scanner_input_text (scanner, (gchar *) b, bs);
while (!g_scanner_eof (scanner)) {
switch (g_scanner_get_next_token (scanner)) {
case G_TOKEN_INT:
- if (i == target) {
- GST_DEBUG_OBJECT (s, "PNM file contains too much data.");
- g_scanner_destroy (scanner);
- goto drop_error;
+ if (s->mngr.info.max > 255) {
+ if (i + 1 >= target) {
+ GST_DEBUG_OBJECT (s,
+ "PNM file contains too much data after line %u col %u.",
+ scanner->line, scanner->position);
+ g_scanner_destroy (scanner);
+ goto done; // drop_error;
+ }
+ if (s->out_format == GST_VIDEO_FORMAT_GRAY16_BE)
+ GST_WRITE_UINT16_BE (outdata + i, scanner->value.v_int);
+ else
+ GST_WRITE_UINT16_LE (outdata + i, scanner->value.v_int);
+ i += 2;
+ } else {
+ if (i == target) {
+ GST_DEBUG_OBJECT (s,
+ "PNM file contains too much data after line %u col %u.",
+ scanner->line, scanner->position);
+ g_scanner_destroy (scanner);
+ goto drop_error;
+ }
+ outdata[i++] = scanner->value.v_int;
}
- outdata[i++] = scanner->value.v_int;
+ last_val = scanner->value.v_int;
break;
default:
/* Should we care? */ ;
@@ -202,18 +328,25 @@
g_scanner_destroy (scanner);
/* If we didn't get the whole image, handle the last byte with care. */
- if (i && i < target && b[bs - 1] > '0' && b[bs - 1] <= '9') {
- s->last_byte = outdata[--i];
+ if (i && i < target && b[bs - 1] >= '0' && b[bs - 1] <= '9') {
+ s->last_val = last_val;
+ s->have_last_val = TRUE;
+ if (s->mngr.info.max > 255)
+ i -= 2;
+ else
+ i--;
+ GST_LOG_OBJECT (s, "Stored last value %u for next parse cycle",
+ s->last_val);
}
- /* Update the number of bytes parsed in this scan */
+done:
+ /* Update the number of output bytes parsed in this scan */
s->current_size += i;
+ GST_LOG_OBJECT (s, "Parsed %u bytes, now have %u bytes of %u output",
+ i, s->current_size, s->size);
gst_buffer_unmap (s->buf, &map);
return GST_FLOW_OK;
-drop_ok:
- gst_buffer_unmap (s->buf, &map);
- return GST_FLOW_OK;
drop_error:
gst_buffer_unmap (s->buf, &map);
@@ -269,7 +402,10 @@
i_rowstride = 3 * s->mngr.info.width;
o_rowstride = GST_ROUND_UP_4 (i_rowstride);
} else {
- i_rowstride = s->mngr.info.width;
+ if (s->mngr.info.max > 255)
+ i_rowstride = s->mngr.info.width * 2;
+ else
+ i_rowstride = s->mngr.info.width;
o_rowstride = GST_ROUND_UP_4 (i_rowstride);
}
@@ -283,8 +419,28 @@
}
if (s->mngr.info.type != GST_PNM_TYPE_BITMAP) {
- /* Convert the pixels from 0 - max range to 0 - 255 range */
- if (s->mngr.info.max < 255) {
+ if (s->mngr.info.max > 255 && s->mngr.info.max < 65535) {
+ /* Convert the pixels from 0 - max range to 0 - 65535 range
+ * and appropriate endianness (input is always BE) */
+ guint8 *data = omap.data;
+ gint max = s->mngr.info.max;
+ if (s->out_format == GST_VIDEO_FORMAT_GRAY16_BE) {
+ for (i = 0; i < total_bytes; i += 2) {
+ /* Clamp to 65535 */
+ guint16 val = GST_READ_UINT16_BE (data + i);
+ val = (val > max) ? 65535 : 65535 * val / max;
+ GST_WRITE_UINT16_BE (data + i, val);
+ }
+ } else {
+ for (i = 0; i < total_bytes; i += 2) {
+ /* Clamp to 65535 */
+ guint16 val = GST_READ_UINT16_BE (data + i);
+ val = (val > max) ? 65535 : 65535 * val / max;
+ GST_WRITE_UINT16_LE (data + i, val);
+ }
+ }
+ } else if (s->mngr.info.max < 255) {
+ /* Convert the pixels from 0 - max range to 0 - 255 range */
gint max = s->mngr.info.max;
for (i = 0; i < total_bytes; i++) {
if (omap.data[i] <= max) {
@@ -305,6 +461,8 @@
}
gst_buffer_unmap (frame->output_buffer, &omap);
+ s->current_size = 0;
+
r = gst_video_decoder_finish_frame (GST_VIDEO_DECODER (s), frame);
out:
@@ -321,21 +479,23 @@
GstPnmdec *s = GST_PNMDEC (decoder);
GstFlowReturn r = GST_FLOW_OK;
guint offset = 0;
- GstVideoFormat format = GST_VIDEO_FORMAT_UNKNOWN;
- const guint8 *raw_data;
- GstVideoCodecState *output_state;
+ const guint8 *raw_data = NULL;
GST_VIDEO_CODEC_FRAME_SET_SYNC_POINT (frame);
size = gst_adapter_available (adapter);
- if (size < 8) {
- goto need_more_data;
- }
- raw_data = gst_adapter_map (adapter, size);
+ if (size > 0)
+ raw_data = gst_adapter_map (adapter, size);
+
+ GST_LOG_OBJECT (s, "Entering parse with %" G_GSIZE_FORMAT " bytes. at_eos %d",
+ size, at_eos);
if (s->mngr.info.fields != GST_PNM_INFO_FIELDS_ALL) {
GstPnmInfoMngrResult res;
+ if (size < 8)
+ goto need_more_data;
+
res = gst_pnm_info_mngr_scan (&s->mngr, raw_data, size);
switch (res) {
@@ -346,38 +506,16 @@
r = GST_FLOW_OK;
goto out;
case GST_PNM_INFO_MNGR_RESULT_FINISHED:
- switch (s->mngr.info.type) {
- case GST_PNM_TYPE_BITMAP:
- if (s->mngr.info.encoding == GST_PNM_ENCODING_ASCII) {
- r = GST_FLOW_ERROR;
- goto out;
- }
- s->size = s->mngr.info.width * s->mngr.info.height * 1;
- format = GST_VIDEO_FORMAT_GRAY8;
- break;
- case GST_PNM_TYPE_GRAYMAP:
- s->size = s->mngr.info.width * s->mngr.info.height * 1;
- format = GST_VIDEO_FORMAT_GRAY8;
- break;
- case GST_PNM_TYPE_PIXMAP:
- s->size = s->mngr.info.width * s->mngr.info.height * 3;
- format = GST_VIDEO_FORMAT_RGB;
- break;
- }
- output_state =
- gst_video_decoder_set_output_state (GST_VIDEO_DECODER (s), format,
- s->mngr.info.width, s->mngr.info.height, s->input_state);
- gst_video_codec_state_unref (output_state);
- if (gst_video_decoder_negotiate (GST_VIDEO_DECODER (s)) == FALSE) {
- r = GST_FLOW_NOT_NEGOTIATED;
+
+ r = gst_pnmdec_negotiate (decoder);
+ if (r != GST_FLOW_OK)
goto out;
- }
if (s->mngr.info.encoding == GST_PNM_ENCODING_ASCII) {
- s->mngr.data_offset++;
/* It is not possible to know the size of input ascii data to parse.
So we have to parse and know the number of pixels parsed and
then finally decide when we have full frame */
+ GST_DEBUG_OBJECT (s, "Allocating output frame of size %u", s->size);
s->buf = gst_buffer_new_and_alloc (s->size);
}
offset = s->mngr.data_offset;
@@ -387,8 +525,9 @@
}
if (s->mngr.info.encoding == GST_PNM_ENCODING_ASCII) {
- /* Parse ASCII data dn populate s->current_size with the number of
+ /* Parse ASCII data and populate s->current_size with the number of
bytes actually parsed from the input data */
+ GST_DEBUG_OBJECT (s, "Parsing %u bytes at offset %u", (guint) size, offset);
r = gst_pnmdec_parse_ascii (s, raw_data + offset, size);
} else {
/* Bitmap Contains 8 pixels in a byte */
@@ -417,7 +556,25 @@
gst_pnmdec_start (GstVideoDecoder * decoder)
{
GstPnmdec *pnmdec = (GstPnmdec *) decoder;
-
gst_video_decoder_set_packetized (GST_VIDEO_DECODER (pnmdec), FALSE);
+ gst_pnmdec_flush (pnmdec);
return TRUE;
}
+
+static GstFlowReturn
+gst_pnmdec_finish (GstVideoDecoder * decoder)
+{
+ GstPnmdec *s = (GstPnmdec *) decoder;
+
+ GST_LOG_OBJECT (s, "finishing");
+
+ if (s->mngr.info.encoding == GST_PNM_ENCODING_ASCII) {
+ /* One last go at outputting any final value */
+ gst_pnmdec_parse_ascii (s, 0, 0);
+ if (s->size <= s->current_size) {
+ return gst_video_decoder_have_frame (decoder);
+ }
+ }
+
+ return GST_FLOW_OK;
+}
diff --git a/gst/pnm/gstpnmdec.h b/gst/pnm/gstpnmdec.h
index 28a3c50..b5aac35 100644
--- a/gst/pnm/gstpnmdec.h
+++ b/gst/pnm/gstpnmdec.h
@@ -42,8 +42,10 @@
GstVideoDecoder decoder;
GstPnmInfoMngr mngr;
GstVideoCodecState *input_state;
- guint size, last_byte, current_size ;
+ guint size, last_val, current_size ;
+ gboolean have_last_val;
GstBuffer *buf;
+ GstVideoFormat out_format;
};
struct _GstPnmdecClass
diff --git a/gst/pnm/gstpnmenc.c b/gst/pnm/gstpnmenc.c
index 32fd6f6..2c45191 100644
--- a/gst/pnm/gstpnmenc.c
+++ b/gst/pnm/gstpnmenc.c
@@ -24,7 +24,7 @@
* To enable ASCII encoding, set the parameter ascii to TRUE. If you omit
* the parameter or set it to FALSE, the output will be raw encoded.
*
- * <refsect>
+ * <refsect2>
* <title>Example launch line</title>
* |[
* gst-launch-1.0 videotestsrc num_buffers=1 ! videoconvert ! "video/x-raw,format=GRAY8" ! pnmenc ascii=true ! filesink location=test.pnm
@@ -53,10 +53,12 @@
/* Add here. */
};
+
+
static GstStaticPadTemplate sink_pad_template =
- GST_STATIC_PAD_TEMPLATE ("sink", GST_PAD_SINK, GST_PAD_ALWAYS,
- GST_STATIC_CAPS (GST_VIDEO_CAPS_MAKE ("RGB") "; "
- GST_VIDEO_CAPS_MAKE ("GRAY8")));
+GST_STATIC_PAD_TEMPLATE ("sink", GST_PAD_SINK, GST_PAD_ALWAYS,
+ GST_STATIC_CAPS (GST_VIDEO_CAPS_MAKE
+ ("{ RGB, GRAY8, GRAY16_BE, GRAY16_LE }")));
static GstStaticPadTemplate src_pad_template =
@@ -134,16 +136,27 @@
gboolean ret = TRUE;
GstVideoInfo *info;
GstVideoCodecState *output_state;
+ const gchar *mime_type = NULL;
pnmenc = GST_PNMENC (encoder);
info = &state->info;
switch (GST_VIDEO_INFO_FORMAT (info)) {
case GST_VIDEO_FORMAT_RGB:
+ pnmenc->info.max = 255;
pnmenc->info.type = GST_PNM_TYPE_PIXMAP;
+ mime_type = MIME_PM;
break;
case GST_VIDEO_FORMAT_GRAY8:
+ pnmenc->info.max = 255;
pnmenc->info.type = GST_PNM_TYPE_GRAYMAP;
+ mime_type = MIME_GM;
+ break;
+ case GST_VIDEO_FORMAT_GRAY16_BE:
+ case GST_VIDEO_FORMAT_GRAY16_LE:
+ pnmenc->info.max = 65535;
+ pnmenc->info.type = GST_PNM_TYPE_GRAYMAP;
+ mime_type = MIME_GM;
break;
default:
ret = FALSE;
@@ -152,8 +165,6 @@
pnmenc->info.width = GST_VIDEO_INFO_WIDTH (info);
pnmenc->info.height = GST_VIDEO_INFO_HEIGHT (info);
- /* Supported max value is only one, that is 255 */
- pnmenc->info.max = 255;
if (pnmenc->input_state)
gst_video_codec_state_unref (pnmenc->input_state);
@@ -161,7 +172,7 @@
output_state =
gst_video_encoder_set_output_state (encoder,
- gst_caps_new_empty_simple ("image/pnm"), state);
+ gst_caps_new_empty_simple (mime_type), state);
gst_video_codec_state_unref (output_state);
done:
@@ -172,7 +183,7 @@
gst_pnmenc_handle_frame (GstVideoEncoder * encoder, GstVideoCodecFrame * frame)
{
GstPnmenc *pnmenc;
- guint size, pixels;
+ guint size, pixels, bytesize;
GstMapInfo omap, imap;
gchar *header = NULL;
GstVideoInfo *info;
@@ -180,16 +191,34 @@
guint i_rowstride, o_rowstride;
guint bytes = 0, index, head_size;
guint i, j;
-
+ guint maxbytes_per_pixel, str_len;
+ gchar format_str[4];
pnmenc = GST_PNMENC (encoder);
info = &pnmenc->input_state->info;
switch (GST_VIDEO_INFO_FORMAT (info)) {
case GST_VIDEO_FORMAT_RGB:
pixels = size = pnmenc->info.width * pnmenc->info.height * 3;
+ bytesize = 1;
+ maxbytes_per_pixel = 4;
+ str_len = 3;
+ g_strlcpy (format_str, "%3i", 4);
break;
case GST_VIDEO_FORMAT_GRAY8:
pixels = size = pnmenc->info.width * pnmenc->info.height * 1;
+ bytesize = 1;
+ maxbytes_per_pixel = 4;
+ str_len = 3;
+ g_strlcpy (format_str, "%3i", 4);
+ break;
+ case GST_VIDEO_FORMAT_GRAY16_LE:
+ case GST_VIDEO_FORMAT_GRAY16_BE:
+ pixels = pnmenc->info.width * pnmenc->info.height * 1;
+ bytesize = 2;
+ size = pixels * bytesize;
+ maxbytes_per_pixel = 6;
+ str_len = 5;
+ g_strlcpy (format_str, "%5i", 4);
break;
default:
ret = FALSE;
@@ -222,58 +251,111 @@
ret = GST_FLOW_ERROR;
goto done;
}
- memcpy (omap.data, header, strlen (header));
-
+ /* Copy out the header first */
head_size = strlen (header);
+ memcpy (omap.data, header, head_size);
+
if (pnmenc->info.encoding == GST_PNM_ENCODING_ASCII) {
/* We need to convert to ASCII */
- if (pnmenc->info.width % 4 != 0) {
- /* Convert from gstreamer rowstride to PNM rowstride */
- if (pnmenc->info.type == GST_PNM_TYPE_PIXMAP) {
- o_rowstride = 3 * pnmenc->info.width;
- } else {
- o_rowstride = pnmenc->info.width;
- }
- i_rowstride = GST_VIDEO_FRAME_COMP_STRIDE (pnmenc->input_state, 0);
-
- for (i = 0; i < pnmenc->info.height; i++) {
- index = i * i_rowstride;
- for (j = 0; j < o_rowstride; j++, bytes++, index++) {
- g_snprintf ((char *) omap.data + head_size, 4, "%3i",
- imap.data[index]);
- head_size += 3;
- omap.data[head_size++] = ' ';
- /* Add new line so that file will not end up with sinle big line */
- if (!((bytes + 1) % 20))
- omap.data[head_size++] = '\n';
- }
- }
+ /* Convert from gstreamer rowstride to PNM rowstride as we go */
+ if (pnmenc->info.type == GST_PNM_TYPE_PIXMAP) {
+ o_rowstride = 3 * pnmenc->info.width;
} else {
- for (i = 0; i < pixels; i++) {
- g_snprintf ((char *) omap.data + head_size, 4, "%3i", imap.data[i]);
- head_size += 3;
- omap.data[head_size++] = ' ';
- if (!((i + 1) % 20))
- omap.data[head_size++] = '\n';
- }
+ o_rowstride = pnmenc->info.width;
}
- } else {
- /* Need to convert from GStreamer rowstride to PNM rowstride */
- if (pnmenc->info.width % 4 != 0) {
- if (pnmenc->info.type == GST_PNM_TYPE_PIXMAP) {
- o_rowstride = 3 * pnmenc->info.width;
- } else {
- o_rowstride = pnmenc->info.width;
- }
- i_rowstride = GST_VIDEO_FRAME_COMP_STRIDE (pnmenc->input_state, 0);
+ i_rowstride = GST_VIDEO_FRAME_COMP_STRIDE (pnmenc->input_state, 0);
- for (i = 0; i < pnmenc->info.height; i++)
- memcpy (omap.data + head_size + o_rowstride * i,
- imap.data + i_rowstride * i, o_rowstride);
+ switch (GST_VIDEO_INFO_FORMAT (info)) {
+ case GST_VIDEO_FORMAT_RGB:
+ case GST_VIDEO_FORMAT_GRAY8:
+ for (i = 0; i < pnmenc->info.height; i++) {
+ index = i * i_rowstride;
+ for (j = 0; j < o_rowstride; j++, bytes++, index++) {
+ g_snprintf ((char *) omap.data + head_size, maxbytes_per_pixel,
+ format_str, imap.data[index]);
+ head_size += str_len;
+ omap.data[head_size++] = ' ';
+ /* Add new line so that file will not end up with single big line */
+ if (!((bytes + 1) % 20))
+ omap.data[head_size++] = '\n';
+ }
+ }
+ break;
+ case GST_VIDEO_FORMAT_GRAY16_BE:
+ for (i = 0; i < pnmenc->info.height; i++) {
+ index = i * i_rowstride;
+ for (j = 0; j < o_rowstride; j++, bytes++, index += 2) {
+ g_snprintf ((char *) omap.data + head_size, maxbytes_per_pixel,
+ format_str, GST_READ_UINT16_BE (imap.data + index));
+ head_size += str_len;
+ omap.data[head_size++] = ' ';
+ /* Add new line so that file will not end up with single big line */
+ if (!((bytes + 1) % 20))
+ omap.data[head_size++] = '\n';
+ }
+ }
+ break;
+ case GST_VIDEO_FORMAT_GRAY16_LE:
+ for (i = 0; i < pnmenc->info.height; i++) {
+ index = i * i_rowstride;
+ for (j = 0; j < o_rowstride; j++, bytes++, index += 2) {
+ g_snprintf ((char *) omap.data + head_size, maxbytes_per_pixel,
+ format_str, GST_READ_UINT16_LE (imap.data + index));
+ head_size += str_len;
+ omap.data[head_size++] = ' ';
+ /* Add new line so that file will not end up with single big line */
+ if (!((bytes + 1) % 20))
+ omap.data[head_size++] = '\n';
+ }
+ }
+ break;
+ default:
+ GST_ERROR_OBJECT (encoder, "Unhandled format %s",
+ gst_video_format_to_string (GST_VIDEO_INFO_FORMAT (info)));
+ gst_buffer_unmap (frame->output_buffer, &omap);
+ gst_buffer_unmap (frame->input_buffer, &imap);
+ g_free (header);
+ return GST_FLOW_ERROR;
+ }
+
+ gst_buffer_set_size (frame->output_buffer, head_size);
+ } else {
+ guint out_index = head_size;
+
+ /* Binary output. 8-bit, or 16-bit BE */
+ if (pnmenc->info.type == GST_PNM_TYPE_PIXMAP) {
+ o_rowstride = 3 * pnmenc->info.width * bytesize;
} else {
- /* size contains complete image size inlcuding header size,
- Exclude header size while copying data */
- memcpy (omap.data + strlen (header), imap.data, (size - head_size));
+ o_rowstride = pnmenc->info.width * bytesize;
+ }
+ i_rowstride = GST_VIDEO_FRAME_COMP_STRIDE (pnmenc->input_state, 0);
+
+ switch (GST_VIDEO_INFO_FORMAT (info)) {
+ case GST_VIDEO_FORMAT_GRAY16_BE:
+ for (i = 0; i < pnmenc->info.height; i++) {
+ index = i * i_rowstride;
+ for (j = 0; j < o_rowstride; j += 2, index += 2) {
+ guint16 val = GST_READ_UINT16_LE (imap.data + index);
+ GST_WRITE_UINT16_BE (omap.data + out_index, val);
+ out_index += 2;
+ }
+ }
+ break;
+ case GST_VIDEO_FORMAT_GRAY16_LE:
+ for (i = 0; i < pnmenc->info.height; i++) {
+ index = i * i_rowstride;
+ for (j = 0; j < o_rowstride; j += 2, index += 2) {
+ guint16 val = GST_READ_UINT16_LE (imap.data + index);
+ GST_WRITE_UINT16_BE (omap.data + out_index, val);
+ out_index += 2;
+ }
+ }
+ break;
+ default:
+ for (i = 0; i < pnmenc->info.height; i++) {
+ memcpy (omap.data + head_size + o_rowstride * i,
+ imap.data + i_rowstride * i, o_rowstride);
+ }
}
}
@@ -303,11 +385,8 @@
g_param_spec_boolean ("ascii", "ASCII Encoding", "The output will be "
"ASCII encoded", FALSE, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
- gst_element_class_add_pad_template (element_class,
- gst_static_pad_template_get (&sink_pad_template));
-
- gst_element_class_add_pad_template (element_class,
- gst_static_pad_template_get (&src_pad_template));
+ gst_element_class_add_static_pad_template (element_class, &sink_pad_template);
+ gst_element_class_add_static_pad_template (element_class, &src_pad_template);
gst_element_class_set_static_metadata (element_class, "PNM image encoder",
"Codec/Encoder/Image",
diff --git a/gst/pnm/gstpnmutils.c b/gst/pnm/gstpnmutils.c
index b7441cd..a72e423 100644
--- a/gst/pnm/gstpnmutils.c
+++ b/gst/pnm/gstpnmutils.c
@@ -178,7 +178,11 @@
case ' ':
/* Check for maximum and minimum supported bit depth and
return error if its out of range */
- if ((mngr->info.max > 255) || (mngr->info.max < 1)) {
+ if (mngr->info.type == GST_PNM_TYPE_GRAYMAP) {
+ if ((mngr->info.max > 65535) || (mngr->info.max < 1)) {
+ return GST_PNM_INFO_MNGR_RESULT_FAILED;
+ }
+ } else if ((mngr->info.max > 255) || (mngr->info.max < 1)) {
return GST_PNM_INFO_MNGR_RESULT_FAILED;
}
mngr->info.fields |= GST_PNM_INFO_FIELDS_MAX;
diff --git a/gst/rawparse/Makefile.am b/gst/rawparse/Makefile.am
index 03eeb48..3bd8438 100644
--- a/gst/rawparse/Makefile.am
+++ b/gst/rawparse/Makefile.am
@@ -3,6 +3,7 @@
libgstrawparse_la_SOURCES = \
gstrawparse.c \
+ gstunalignedaudioparse.c \
gstaudioparse.c \
gstvideoparse.c \
plugin.c
@@ -19,6 +20,8 @@
libgstrawparse_la_LIBTOOLFLAGS = $(GST_PLUGIN_LIBTOOLFLAGS)
noinst_HEADERS = \
+ unalignedaudio.h \
+ gstunalignedaudioparse.h \
gstaudioparse.h \
gstrawparse.h \
gstvideoparse.h
diff --git a/gst/rawparse/Makefile.in b/gst/rawparse/Makefile.in
index cff1ba5..1883e2a 100644
--- a/gst/rawparse/Makefile.in
+++ b/gst/rawparse/Makefile.in
@@ -166,6 +166,7 @@
libgstrawparse_la_DEPENDENCIES = $(am__DEPENDENCIES_1) \
$(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1)
am_libgstrawparse_la_OBJECTS = libgstrawparse_la-gstrawparse.lo \
+ libgstrawparse_la-gstunalignedaudioparse.lo \
libgstrawparse_la-gstaudioparse.lo \
libgstrawparse_la-gstvideoparse.lo libgstrawparse_la-plugin.lo
libgstrawparse_la_OBJECTS = $(am_libgstrawparse_la_OBJECTS)
@@ -304,6 +305,8 @@
DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
DSYMUTIL = @DSYMUTIL@
DTLS_CFLAGS = @DTLS_CFLAGS@
DTLS_LIBS = @DTLS_LIBS@
@@ -519,6 +522,8 @@
LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
LIPO = @LIPO@
LN_S = @LN_S@
LOCALEDIR = @LOCALEDIR@
@@ -645,8 +650,6 @@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
SNDIO_LIBS = @SNDIO_LIBS@
@@ -691,6 +694,8 @@
WAYLAND_LIBS = @WAYLAND_LIBS@
WEBP_CFLAGS = @WEBP_CFLAGS@
WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
WGET = @WGET@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
@@ -782,6 +787,7 @@
plugin_LTLIBRARIES = libgstrawparse.la
libgstrawparse_la_SOURCES = \
gstrawparse.c \
+ gstunalignedaudioparse.c \
gstaudioparse.c \
gstvideoparse.c \
plugin.c
@@ -800,6 +806,8 @@
libgstrawparse_la_LDFLAGS = $(GST_PLUGIN_LDFLAGS)
libgstrawparse_la_LIBTOOLFLAGS = $(GST_PLUGIN_LIBTOOLFLAGS)
noinst_HEADERS = \
+ unalignedaudio.h \
+ gstunalignedaudioparse.h \
gstaudioparse.h \
gstrawparse.h \
gstvideoparse.h
@@ -884,6 +892,7 @@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstrawparse_la-gstaudioparse.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstrawparse_la-gstrawparse.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstrawparse_la-gstunalignedaudioparse.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstrawparse_la-gstvideoparse.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstrawparse_la-plugin.Plo@am__quote@
@@ -918,6 +927,13 @@
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstrawparse_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstrawparse_la_CFLAGS) $(CFLAGS) -c -o libgstrawparse_la-gstrawparse.lo `test -f 'gstrawparse.c' || echo '$(srcdir)/'`gstrawparse.c
+libgstrawparse_la-gstunalignedaudioparse.lo: gstunalignedaudioparse.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstrawparse_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstrawparse_la_CFLAGS) $(CFLAGS) -MT libgstrawparse_la-gstunalignedaudioparse.lo -MD -MP -MF $(DEPDIR)/libgstrawparse_la-gstunalignedaudioparse.Tpo -c -o libgstrawparse_la-gstunalignedaudioparse.lo `test -f 'gstunalignedaudioparse.c' || echo '$(srcdir)/'`gstunalignedaudioparse.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgstrawparse_la-gstunalignedaudioparse.Tpo $(DEPDIR)/libgstrawparse_la-gstunalignedaudioparse.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gstunalignedaudioparse.c' object='libgstrawparse_la-gstunalignedaudioparse.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 $(libgstrawparse_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstrawparse_la_CFLAGS) $(CFLAGS) -c -o libgstrawparse_la-gstunalignedaudioparse.lo `test -f 'gstunalignedaudioparse.c' || echo '$(srcdir)/'`gstunalignedaudioparse.c
+
libgstrawparse_la-gstaudioparse.lo: gstaudioparse.c
@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstrawparse_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstrawparse_la_CFLAGS) $(CFLAGS) -MT libgstrawparse_la-gstaudioparse.lo -MD -MP -MF $(DEPDIR)/libgstrawparse_la-gstaudioparse.Tpo -c -o libgstrawparse_la-gstaudioparse.lo `test -f 'gstaudioparse.c' || echo '$(srcdir)/'`gstaudioparse.c
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgstrawparse_la-gstaudioparse.Tpo $(DEPDIR)/libgstrawparse_la-gstaudioparse.Plo
diff --git a/gst/rawparse/gstaudioparse.c b/gst/rawparse/gstaudioparse.c
index 04477f5..b60118b 100644
--- a/gst/rawparse/gstaudioparse.c
+++ b/gst/rawparse/gstaudioparse.c
@@ -33,6 +33,7 @@
#define GLIB_DISABLE_DEPRECATION_WARNINGS
#include "gstaudioparse.h"
+#include "unalignedaudio.h"
#include <string.h>
@@ -159,6 +160,7 @@
caps = gst_caps_from_string (GST_AUDIO_CAPS_MAKE (GST_AUDIO_FORMATS_ALL)
", layout = (string) { interleaved, non-interleaved }; "
+ GST_UNALIGNED_RAW_AUDIO_CAPS "; "
"audio/x-alaw, rate=(int)[1,MAX], channels=(int)[1,MAX]; "
"audio/x-mulaw, rate=(int)[1,MAX], channels=(int)[1,MAX]");
@@ -371,11 +373,24 @@
if (ap->use_sink_caps) {
gint rate;
GstCaps *caps = gst_pad_get_current_caps (rp->sinkpad);
+ GstStructure *structure;
+
if (!caps) {
GST_WARNING_OBJECT (ap,
"Sink pad has no caps, but we were asked to use its caps");
return NULL;
}
+
+ /* For unaligned raw data, the output caps stay the same,
+ * except that audio/x-unaligned-raw becomes audio/x-raw,
+ * since audioparse aligns the sample data */
+ structure = gst_caps_get_structure (caps, 0);
+ if (gst_structure_has_name (structure, "audio/x-unaligned-raw")) {
+ caps = gst_caps_make_writable (caps);
+ structure = gst_caps_get_structure (caps, 0);
+ gst_structure_set_name (structure, "audio/x-raw");
+ }
+
if (!gst_audio_info_from_caps (&info, caps)) {
GST_WARNING_OBJECT (ap, "Failed to parse caps %" GST_PTR_FORMAT, caps);
gst_caps_unref (caps);
diff --git a/gst/rawparse/gstrawparse.c b/gst/rawparse/gstrawparse.c
index a6468d9..bd2ee11 100644
--- a/gst/rawparse/gstrawparse.c
+++ b/gst/rawparse/gstrawparse.c
@@ -106,8 +106,8 @@
gstelement_class->change_state =
GST_DEBUG_FUNCPTR (gst_raw_parse_change_state);
- gst_element_class_add_pad_template (gstelement_class,
- gst_static_pad_template_get (&gst_raw_parse_sink_pad_template));
+ gst_element_class_add_static_pad_template (gstelement_class,
+ &gst_raw_parse_sink_pad_template);
GST_DEBUG_CATEGORY_INIT (gst_raw_parse_debug, "rawparse", 0,
"rawparse element");
diff --git a/gst/rawparse/gstunalignedaudioparse.c b/gst/rawparse/gstunalignedaudioparse.c
new file mode 100644
index 0000000..62a83f3
--- /dev/null
+++ b/gst/rawparse/gstunalignedaudioparse.c
@@ -0,0 +1,125 @@
+/* GStreamer
+ * Copyright (C) 2016 Carlos Rafael Giani <dv@pseudoterminal.org>
+ *
+ * gstunalignedaudioparse.c:
+ *
+ * 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.
+ */
+
+#include <string.h>
+#include <stdio.h>
+#include <gst/gst.h>
+#include <gst/audio/audio.h>
+#include "gstunalignedaudioparse.h"
+#include "unalignedaudio.h"
+
+
+GST_DEBUG_CATEGORY (unaligned_audio_parse_debug);
+#define GST_CAT_DEFAULT unaligned_audio_parse_debug
+
+
+struct _GstUnalignedAudioParse
+{
+ GstBin parent;
+ GstElement *inner_parser;
+};
+
+
+struct _GstUnalignedAudioParseClass
+{
+ GstBinClass parent_class;
+};
+
+
+static GstStaticPadTemplate static_sink_template =
+GST_STATIC_PAD_TEMPLATE ("sink",
+ GST_PAD_SINK,
+ GST_PAD_ALWAYS,
+ GST_STATIC_CAPS (GST_UNALIGNED_RAW_AUDIO_CAPS)
+ );
+
+
+static GstStaticPadTemplate static_src_template =
+GST_STATIC_PAD_TEMPLATE ("src",
+ GST_PAD_SRC,
+ GST_PAD_ALWAYS,
+ GST_STATIC_CAPS (GST_AUDIO_CAPS_MAKE (GST_AUDIO_FORMATS_ALL)
+ ", layout = (string) { interleaved, non-interleaved }")
+ );
+
+
+
+
+G_DEFINE_TYPE (GstUnalignedAudioParse, gst_unaligned_audio_parse, GST_TYPE_BIN);
+
+
+static void
+gst_unaligned_audio_parse_class_init (GstUnalignedAudioParseClass * klass)
+{
+ GstElementClass *element_class;
+
+ GST_DEBUG_CATEGORY_INIT (unaligned_audio_parse_debug, "unalignedaudioparse",
+ 0, "Unaligned raw audio parser");
+
+ element_class = GST_ELEMENT_CLASS (klass);
+
+ gst_element_class_add_pad_template (element_class,
+ gst_static_pad_template_get (&static_sink_template));
+ gst_element_class_add_pad_template (element_class,
+ gst_static_pad_template_get (&static_src_template));
+
+ gst_element_class_set_static_metadata (element_class,
+ "unalignedaudioparse",
+ "Codec/Parser/Bin/Audio",
+ "Parse unaligned raw audio data",
+ "Carlos Rafael Giani <dv@pseudoterminal.org>");
+}
+
+
+static void
+gst_unaligned_audio_parse_init (GstUnalignedAudioParse * unaligned_audio_parse)
+{
+ GstPad *inner_pad;
+ GstPad *ghostpad;
+
+ unaligned_audio_parse->inner_parser =
+ gst_element_factory_make ("audioparse", "inner_parser");
+ g_assert (unaligned_audio_parse->inner_parser != NULL);
+
+ g_object_set (G_OBJECT (unaligned_audio_parse->inner_parser),
+ "use-sink-caps", TRUE, NULL);
+
+ gst_bin_add (GST_BIN (unaligned_audio_parse),
+ unaligned_audio_parse->inner_parser);
+
+ inner_pad =
+ gst_element_get_static_pad (unaligned_audio_parse->inner_parser, "sink");
+ ghostpad =
+ gst_ghost_pad_new_from_template ("sink", inner_pad,
+ gst_element_class_get_pad_template (GST_ELEMENT_GET_CLASS
+ (unaligned_audio_parse), "sink"));
+ gst_element_add_pad (GST_ELEMENT (unaligned_audio_parse), ghostpad);
+ gst_object_unref (GST_OBJECT (inner_pad));
+
+ inner_pad = gst_element_get_static_pad (unaligned_audio_parse->inner_parser,
+ "src");
+ ghostpad =
+ gst_ghost_pad_new_from_template ("src", inner_pad,
+ gst_element_class_get_pad_template (GST_ELEMENT_GET_CLASS
+ (unaligned_audio_parse), "src"));
+ gst_element_add_pad (GST_ELEMENT (unaligned_audio_parse), ghostpad);
+ gst_object_unref (GST_OBJECT (inner_pad));
+}
diff --git a/gst/rawparse/gstunalignedaudioparse.h b/gst/rawparse/gstunalignedaudioparse.h
new file mode 100644
index 0000000..a07bee7
--- /dev/null
+++ b/gst/rawparse/gstunalignedaudioparse.h
@@ -0,0 +1,49 @@
+/* GStreamer
+ * Copyright (C) 2016 Carlos Rafael Giani <dv@pseudoterminal.org>
+ *
+ * gstunalignedaudioparse.h:
+ *
+ * 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.
+ */
+
+#ifndef __GST_UNALIGNED_AUDIO_PARSE_H___
+#define __GST_UNALIGNED_AUDIO_PARSE_H___
+
+#include <gst/gst.h>
+
+G_BEGIN_DECLS
+
+#define GST_TYPE_UNALIGNED_AUDIO_PARSE \
+ (gst_unaligned_audio_parse_get_type())
+#define GST_UNALIGNED_AUDIO_PARSE(obj) \
+ (G_TYPE_CHECK_INSTANCE_CAST((obj), GST_TYPE_UNALIGNED_AUDIO_PARSE, GstUnalignedAudioParse))
+#define GST_UNALIGNED_AUDIO_PARSE_CLASS(klass) \
+ (G_TYPE_CHECK_CLASS_CAST((klass), GST_TYPE_UNALIGNED_AUDIO_PARSE, GstUnalignedAudioParseClass))
+#define GST_UNALIGNED_AUDIO_PARSE_CAST(obj) \
+ ((GstUnalignedAudioParse *)(obj))
+#define GST_IS_UNALIGNED_AUDIO_PARSE(obj) \
+ (G_TYPE_CHECK_INSTANCE_TYPE((obj), GST_TYPE_UNALIGNED_AUDIO_PARSE))
+#define GST_IS_UNALIGNED_AUDIO_PARSE_CLASS(klass) \
+ (G_TYPE_CHECK_CLASS_TYPE((klass), GST_TYPE_UNALIGNED_AUDIO_PARSE))
+
+typedef struct _GstUnalignedAudioParse GstUnalignedAudioParse;
+typedef struct _GstUnalignedAudioParseClass GstUnalignedAudioParseClass;
+
+GType gst_unaligned_audio_parse_get_type (void);
+
+G_END_DECLS
+
+#endif /* __GST_UNALIGNED_AUDIO_PARSE_H___ */
diff --git a/gst/rawparse/plugin.c b/gst/rawparse/plugin.c
index dc860e1..bb21f77 100644
--- a/gst/rawparse/plugin.c
+++ b/gst/rawparse/plugin.c
@@ -3,6 +3,7 @@
#endif
#include <gst/gst.h>
+#include "gstunalignedaudioparse.h"
#include "gstaudioparse.h"
#include "gstvideoparse.h"
@@ -15,6 +16,8 @@
gst_video_parse_get_type ());
ret &= gst_element_register (plugin, "audioparse", GST_RANK_NONE,
gst_audio_parse_get_type ());
+ ret &= gst_element_register (plugin, "unalignedaudioparse", GST_RANK_MARGINAL,
+ gst_unaligned_audio_parse_get_type ());
return ret;
}
diff --git a/gst/rawparse/unalignedaudio.h b/gst/rawparse/unalignedaudio.h
new file mode 100644
index 0000000..15d4995
--- /dev/null
+++ b/gst/rawparse/unalignedaudio.h
@@ -0,0 +1,35 @@
+/* GStreamer
+ * Copyright (C) 2016 Carlos Rafael Giani <dv@pseudoterminal.org>
+ *
+ * unalignedaudio.h:
+ *
+ * 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.
+ */
+
+#ifndef __GST_UNALIGNED_AUDIO_H__
+#define __GST_UNALIGNED_AUDIO_H__
+
+#include <gst/gst.h>
+#include <gst/audio/audio.h>
+
+#define GST_UNALIGNED_RAW_AUDIO_CAPS \
+ "audio/x-unaligned-raw" \
+ ", format = (string) " GST_AUDIO_FORMATS_ALL \
+ ", rate = (int) [ 1, MAX ]" \
+ ", channels = (int) [ 1, MAX ]" \
+ ", layout = (string) { interleaved, non-interleaved }"
+
+#endif /* __GST_UNALIGNED_AUDIO_H__ */
diff --git a/gst/removesilence/Makefile.in b/gst/removesilence/Makefile.in
index 8ea401d..f6b317a 100644
--- a/gst/removesilence/Makefile.in
+++ b/gst/removesilence/Makefile.in
@@ -304,6 +304,8 @@
DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
DSYMUTIL = @DSYMUTIL@
DTLS_CFLAGS = @DTLS_CFLAGS@
DTLS_LIBS = @DTLS_LIBS@
@@ -519,6 +521,8 @@
LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
LIPO = @LIPO@
LN_S = @LN_S@
LOCALEDIR = @LOCALEDIR@
@@ -645,8 +649,6 @@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
SNDIO_LIBS = @SNDIO_LIBS@
@@ -691,6 +693,8 @@
WAYLAND_LIBS = @WAYLAND_LIBS@
WEBP_CFLAGS = @WEBP_CFLAGS@
WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
WGET = @WGET@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
diff --git a/gst/removesilence/gstremovesilence.c b/gst/removesilence/gstremovesilence.c
index 7707817..98456ff 100644
--- a/gst/removesilence/gstremovesilence.c
+++ b/gst/removesilence/gstremovesilence.c
@@ -128,10 +128,8 @@
"Tiago Katcipis <tiagokatcipis@gmail.com>\n \
Paulo Pizarro <paulo.pizarro@gmail.com>");
- gst_element_class_add_pad_template (gstelement_class,
- gst_static_pad_template_get (&src_template));
- gst_element_class_add_pad_template (gstelement_class,
- gst_static_pad_template_get (&sink_template));
+ gst_element_class_add_static_pad_template (gstelement_class, &src_template);
+ gst_element_class_add_static_pad_template (gstelement_class, &sink_template);
GST_BASE_TRANSFORM_CLASS (klass)->transform_ip =
GST_DEBUG_FUNCPTR (gst_remove_silence_transform_ip);
diff --git a/gst/sdi/Makefile.in b/gst/sdi/Makefile.in
index 025e857..345397c 100644
--- a/gst/sdi/Makefile.in
+++ b/gst/sdi/Makefile.in
@@ -303,6 +303,8 @@
DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
DSYMUTIL = @DSYMUTIL@
DTLS_CFLAGS = @DTLS_CFLAGS@
DTLS_LIBS = @DTLS_LIBS@
@@ -518,6 +520,8 @@
LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
LIPO = @LIPO@
LN_S = @LN_S@
LOCALEDIR = @LOCALEDIR@
@@ -644,8 +648,6 @@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
SNDIO_LIBS = @SNDIO_LIBS@
@@ -690,6 +692,8 @@
WAYLAND_LIBS = @WAYLAND_LIBS@
WEBP_CFLAGS = @WEBP_CFLAGS@
WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
WGET = @WGET@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
diff --git a/gst/sdi/gstsdidemux.c b/gst/sdi/gstsdidemux.c
index 9de97a9..70184f4 100644
--- a/gst/sdi/gstsdidemux.c
+++ b/gst/sdi/gstsdidemux.c
@@ -105,10 +105,10 @@
{
GstElementClass *element_class = GST_ELEMENT_CLASS (g_class);
- gst_element_class_add_pad_template (element_class,
- gst_static_pad_template_get (&gst_sdi_demux_src_template));
- gst_element_class_add_pad_template (element_class,
- gst_static_pad_template_get (&gst_sdi_demux_sink_template));
+ gst_element_class_add_static_pad_template (element_class,
+ &gst_sdi_demux_src_template);
+ gst_element_class_add_static_pad_template (element_class,
+ &gst_sdi_demux_sink_template);
gst_element_class_set_static_metadata (element_class,
"SDI Demuxer",
diff --git a/gst/sdi/gstsdimux.c b/gst/sdi/gstsdimux.c
index b9f4159..7734bad 100644
--- a/gst/sdi/gstsdimux.c
+++ b/gst/sdi/gstsdimux.c
@@ -108,10 +108,10 @@
{
GstElementClass *element_class = GST_ELEMENT_CLASS (g_class);
- gst_element_class_add_pad_template (element_class,
- gst_static_pad_template_get (&gst_sdi_mux_src_template));
- gst_element_class_add_pad_template (element_class,
- gst_static_pad_template_get (&gst_sdi_mux_sink_template));
+ gst_element_class_add_static_pad_template (element_class,
+ &gst_sdi_mux_src_template);
+ gst_element_class_add_static_pad_template (element_class,
+ &gst_sdi_mux_sink_template);
gst_element_class_set_static_metadata (element_class, "SDI Muxer",
"Muxer",
diff --git a/gst/sdp/Makefile.am b/gst/sdp/Makefile.am
index 395b857..ce14d50 100644
--- a/gst/sdp/Makefile.am
+++ b/gst/sdp/Makefile.am
@@ -1,12 +1,13 @@
plugin_LTLIBRARIES = libgstsdpelem.la
-libgstsdpelem_la_SOURCES = gstsdpelem.c gstsdpdemux.h gstsdpdemux.c
+libgstsdpelem_la_SOURCES = gstsdpelem.c gstsdpsrc.c gstsdpdemux.c
libgstsdpelem_la_CFLAGS = $(GST_PLUGINS_BASE_CFLAGS) $(GST_CFLAGS) $(GIO_CFLAGS)
libgstsdpelem_la_LIBADD = $(GST_PLUGINS_BASE_LIBS) $(GST_BASE_LIBS) $(GIO_LIBS) \
-lgstrtp-@GST_API_VERSION@ -lgstsdp-@GST_API_VERSION@ \
+ -lgstapp-@GST_API_VERSION@ \
$(GST_LIBS) $(WINSOCK2_LIBS)
libgstsdpelem_la_LDFLAGS = $(GST_PLUGIN_LDFLAGS)
libgstsdpelem_la_LIBTOOLFLAGS = $(GST_PLUGIN_LIBTOOLFLAGS)
-noinst_HEADERS = gstsdpdemux.h
+noinst_HEADERS = gstsdpdemux.h gstsdpsrc.h
diff --git a/gst/sdp/Makefile.in b/gst/sdp/Makefile.in
index 087a85b..f8c434d 100644
--- a/gst/sdp/Makefile.in
+++ b/gst/sdp/Makefile.in
@@ -167,7 +167,7 @@
$(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \
$(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1)
am_libgstsdpelem_la_OBJECTS = libgstsdpelem_la-gstsdpelem.lo \
- libgstsdpelem_la-gstsdpdemux.lo
+ libgstsdpelem_la-gstsdpsrc.lo libgstsdpelem_la-gstsdpdemux.lo
libgstsdpelem_la_OBJECTS = $(am_libgstsdpelem_la_OBJECTS)
AM_V_lt = $(am__v_lt_@AM_V@)
am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@)
@@ -304,6 +304,8 @@
DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
DSYMUTIL = @DSYMUTIL@
DTLS_CFLAGS = @DTLS_CFLAGS@
DTLS_LIBS = @DTLS_LIBS@
@@ -519,6 +521,8 @@
LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
LIPO = @LIPO@
LN_S = @LN_S@
LOCALEDIR = @LOCALEDIR@
@@ -645,8 +649,6 @@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
SNDIO_LIBS = @SNDIO_LIBS@
@@ -691,6 +693,8 @@
WAYLAND_LIBS = @WAYLAND_LIBS@
WEBP_CFLAGS = @WEBP_CFLAGS@
WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
WGET = @WGET@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
@@ -780,15 +784,16 @@
top_srcdir = @top_srcdir@
wayland_scanner = @wayland_scanner@
plugin_LTLIBRARIES = libgstsdpelem.la
-libgstsdpelem_la_SOURCES = gstsdpelem.c gstsdpdemux.h gstsdpdemux.c
+libgstsdpelem_la_SOURCES = gstsdpelem.c gstsdpsrc.c gstsdpdemux.c
libgstsdpelem_la_CFLAGS = $(GST_PLUGINS_BASE_CFLAGS) $(GST_CFLAGS) $(GIO_CFLAGS)
libgstsdpelem_la_LIBADD = $(GST_PLUGINS_BASE_LIBS) $(GST_BASE_LIBS) $(GIO_LIBS) \
-lgstrtp-@GST_API_VERSION@ -lgstsdp-@GST_API_VERSION@ \
+ -lgstapp-@GST_API_VERSION@ \
$(GST_LIBS) $(WINSOCK2_LIBS)
libgstsdpelem_la_LDFLAGS = $(GST_PLUGIN_LDFLAGS)
libgstsdpelem_la_LIBTOOLFLAGS = $(GST_PLUGIN_LIBTOOLFLAGS)
-noinst_HEADERS = gstsdpdemux.h
+noinst_HEADERS = gstsdpdemux.h gstsdpsrc.h
all: all-am
.SUFFIXES:
@@ -869,6 +874,7 @@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstsdpelem_la-gstsdpdemux.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstsdpelem_la-gstsdpelem.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstsdpelem_la-gstsdpsrc.Plo@am__quote@
.c.o:
@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\
@@ -901,6 +907,13 @@
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstsdpelem_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstsdpelem_la_CFLAGS) $(CFLAGS) -c -o libgstsdpelem_la-gstsdpelem.lo `test -f 'gstsdpelem.c' || echo '$(srcdir)/'`gstsdpelem.c
+libgstsdpelem_la-gstsdpsrc.lo: gstsdpsrc.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstsdpelem_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstsdpelem_la_CFLAGS) $(CFLAGS) -MT libgstsdpelem_la-gstsdpsrc.lo -MD -MP -MF $(DEPDIR)/libgstsdpelem_la-gstsdpsrc.Tpo -c -o libgstsdpelem_la-gstsdpsrc.lo `test -f 'gstsdpsrc.c' || echo '$(srcdir)/'`gstsdpsrc.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgstsdpelem_la-gstsdpsrc.Tpo $(DEPDIR)/libgstsdpelem_la-gstsdpsrc.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gstsdpsrc.c' object='libgstsdpelem_la-gstsdpsrc.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 $(libgstsdpelem_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstsdpelem_la_CFLAGS) $(CFLAGS) -c -o libgstsdpelem_la-gstsdpsrc.lo `test -f 'gstsdpsrc.c' || echo '$(srcdir)/'`gstsdpsrc.c
+
libgstsdpelem_la-gstsdpdemux.lo: gstsdpdemux.c
@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstsdpelem_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstsdpelem_la_CFLAGS) $(CFLAGS) -MT libgstsdpelem_la-gstsdpdemux.lo -MD -MP -MF $(DEPDIR)/libgstsdpelem_la-gstsdpdemux.Tpo -c -o libgstsdpelem_la-gstsdpdemux.lo `test -f 'gstsdpdemux.c' || echo '$(srcdir)/'`gstsdpdemux.c
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgstsdpelem_la-gstsdpdemux.Tpo $(DEPDIR)/libgstsdpelem_la-gstsdpdemux.Plo
diff --git a/gst/sdp/gstsdpdemux.c b/gst/sdp/gstsdpdemux.c
index ae3bbe4..1f80fcc 100644
--- a/gst/sdp/gstsdpdemux.c
+++ b/gst/sdp/gstsdpdemux.c
@@ -150,10 +150,8 @@
DEFAULT_REDIRECT,
G_PARAM_READWRITE | G_PARAM_CONSTRUCT | G_PARAM_STATIC_STRINGS));
- gst_element_class_add_pad_template (gstelement_class,
- gst_static_pad_template_get (&sinktemplate));
- gst_element_class_add_pad_template (gstelement_class,
- gst_static_pad_template_get (&rtptemplate));
+ gst_element_class_add_static_pad_template (gstelement_class, &sinktemplate);
+ gst_element_class_add_static_pad_template (gstelement_class, &rtptemplate);
gst_element_class_set_static_metadata (gstelement_class, "SDP session setup",
"Codec/Demuxer/Network/RTP",
diff --git a/gst/sdp/gstsdpelem.c b/gst/sdp/gstsdpelem.c
index 8ab0d11..d0f0333 100644
--- a/gst/sdp/gstsdpelem.c
+++ b/gst/sdp/gstsdpelem.c
@@ -22,6 +22,7 @@
#endif
#include "gstsdpdemux.h"
+#include "gstsdpsrc.h"
static gboolean
plugin_init (GstPlugin * plugin)
@@ -29,6 +30,8 @@
if (!gst_element_register (plugin, "sdpdemux", GST_RANK_NONE,
GST_TYPE_SDP_DEMUX))
return FALSE;
+ if (!gst_element_register (plugin, "sdpsrc", GST_RANK_NONE, GST_TYPE_SDP_SRC))
+ return FALSE;
return TRUE;
}
diff --git a/gst/sdp/gstsdpsrc.c b/gst/sdp/gstsdpsrc.c
new file mode 100644
index 0000000..ea9a5bc
--- /dev/null
+++ b/gst/sdp/gstsdpsrc.c
@@ -0,0 +1,332 @@
+/*
+ * Copyright (C) 2016 Sebastian Dröge <sebastian@centricular.com>
+ *
+ * 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.
+ */
+
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#include "gstsdpsrc.h"
+#include <gst/app/app.h>
+#include <string.h>
+
+GST_DEBUG_CATEGORY_STATIC (sdp_src_debug);
+#define GST_CAT_DEFAULT sdp_src_debug
+
+static GstStaticPadTemplate src_template = GST_STATIC_PAD_TEMPLATE ("stream_%u",
+ GST_PAD_SRC,
+ GST_PAD_SOMETIMES,
+ GST_STATIC_CAPS ("application/x-rtp"));
+
+enum
+{
+ PROP_0,
+ PROP_LOCATION,
+ PROP_SDP
+};
+
+static void gst_sdp_src_handler_init (gpointer g_iface, gpointer iface_data);
+
+#define gst_sdp_src_parent_class parent_class
+G_DEFINE_TYPE_WITH_CODE (GstSdpSrc, gst_sdp_src, GST_TYPE_BIN,
+ G_IMPLEMENT_INTERFACE (GST_TYPE_URI_HANDLER, gst_sdp_src_handler_init));
+
+static void
+gst_sdp_src_finalize (GObject * object)
+{
+ GstSdpSrc *self = GST_SDP_SRC_CAST (object);
+
+ if (self->sdp_buffer)
+ gst_buffer_unref (self->sdp_buffer);
+ g_free (self->location);
+ g_free (self->sdp);
+
+ G_OBJECT_CLASS (parent_class)->finalize (object);
+}
+
+static void
+gst_sdp_src_get_property (GObject * object, guint prop_id,
+ GValue * value, GParamSpec * pspec)
+{
+ GstSdpSrc *self = GST_SDP_SRC_CAST (object);
+
+ switch (prop_id) {
+ case PROP_LOCATION:
+ g_value_set_string (value, self->location);
+ break;
+ case PROP_SDP:
+ g_value_set_string (value, self->sdp);
+ break;
+ default:
+ G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+ break;
+ }
+}
+
+static void
+gst_sdp_src_set_property (GObject * object, guint prop_id,
+ const GValue * value, GParamSpec * pspec)
+{
+ GstSdpSrc *self = GST_SDP_SRC_CAST (object);
+
+ switch (prop_id) {
+ case PROP_LOCATION:
+ g_free (self->location);
+ self->location = g_value_dup_string (value);
+ break;
+ case PROP_SDP:
+ g_free (self->sdp);
+ self->sdp = g_value_dup_string (value);
+ break;
+ default:
+ G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+ break;
+ }
+}
+
+static void
+pad_added_cb (GstElement * element, GstPad * pad, gpointer user_data)
+{
+ GstSdpSrc *self = GST_SDP_SRC_CAST (user_data);
+ GstPad *ghost;
+
+ ghost =
+ gst_ghost_pad_new_from_template (GST_PAD_NAME (pad), pad,
+ gst_static_pad_template_get (&src_template));
+ gst_pad_set_active (ghost, TRUE);
+ gst_element_add_pad (GST_ELEMENT_CAST (self), ghost);
+}
+
+static void
+pad_removed_cb (GstElement * element, GstPad * pad, gpointer user_data)
+{
+ GstSdpSrc *self = GST_SDP_SRC_CAST (user_data);
+ GstPad *peer;
+
+ peer = gst_pad_get_peer (pad);
+ if (peer) {
+ GstPad *ghost =
+ GST_PAD_CAST (gst_proxy_pad_get_internal (GST_PROXY_PAD (peer)));
+
+ if (ghost) {
+ gst_ghost_pad_set_target (GST_GHOST_PAD_CAST (ghost), NULL);
+ gst_element_remove_pad (GST_ELEMENT_CAST (self), ghost);
+ gst_object_unref (ghost);
+ }
+
+ gst_object_unref (peer);
+ }
+}
+
+static void
+no_more_pads_cb (GstElement * element, gpointer user_data)
+{
+ gst_element_no_more_pads (GST_ELEMENT_CAST (user_data));
+}
+
+static void
+remove_pad (const GValue * item, gpointer user_data)
+{
+ GstElement *self = user_data;
+ GstPad *pad = g_value_get_object (item);
+
+ gst_element_remove_pad (self, pad);
+}
+
+static GstStateChangeReturn
+gst_sdp_src_change_state (GstElement * element, GstStateChange transition)
+{
+ GstSdpSrc *self = GST_SDP_SRC_CAST (element);
+ GstStateChangeReturn ret = GST_STATE_CHANGE_SUCCESS;
+
+ switch (transition) {
+ case GST_STATE_CHANGE_NULL_TO_READY:
+ GST_OBJECT_LOCK (self);
+ if (self->sdp_buffer)
+ gst_buffer_unref (self->sdp_buffer);
+ self->sdp_buffer = NULL;
+
+ if (self->location && strcmp (self->location, "sdp://") != 0) {
+ /* Do nothing */
+ } else if (self->sdp) {
+ self->sdp_buffer =
+ gst_buffer_new_wrapped (self->sdp, strlen (self->sdp) + 1);
+ } else {
+ ret = GST_STATE_CHANGE_FAILURE;
+ }
+ GST_OBJECT_UNLOCK (self);
+
+ if (ret != GST_STATE_CHANGE_FAILURE) {
+ if (self->sdp_buffer) {
+ GstCaps *caps = gst_caps_new_empty_simple ("application/sdp");
+
+ self->src = gst_element_factory_make ("appsrc", NULL);
+ g_object_set (self->src, "caps", caps, "emit-signals", FALSE, NULL);
+ gst_caps_unref (caps);
+ } else {
+ self->src = gst_element_factory_make ("filesrc", NULL);
+ g_object_set (self->src, "location", self->location + 6, NULL);
+ }
+
+ self->demux = gst_element_factory_make ("sdpdemux", NULL);
+ g_signal_connect (self->demux, "pad-added", G_CALLBACK (pad_added_cb),
+ self);
+ g_signal_connect (self->demux, "pad-removed",
+ G_CALLBACK (pad_removed_cb), self);
+ g_signal_connect (self->demux, "no-more-pads",
+ G_CALLBACK (no_more_pads_cb), self);
+ gst_bin_add_many (GST_BIN_CAST (self), self->src, self->demux, NULL);
+ gst_element_link_pads (self->src, "src", self->demux, "sink");
+ }
+ break;
+ default:
+ break;
+ }
+
+ if (ret == GST_STATE_CHANGE_FAILURE)
+ return ret;
+ ret = GST_ELEMENT_CLASS (parent_class)->change_state (element, transition);
+ if (ret == GST_STATE_CHANGE_FAILURE)
+ return ret;
+
+ switch (transition) {
+ case GST_STATE_CHANGE_READY_TO_NULL:{
+ GstIterator *it;
+
+ it = gst_element_iterate_src_pads (GST_ELEMENT_CAST (self));
+ while (gst_iterator_foreach (it, remove_pad, self) == GST_ITERATOR_RESYNC)
+ gst_iterator_resync (it);
+ gst_iterator_free (it);
+
+ if (self->src) {
+ gst_bin_remove (GST_BIN_CAST (self), self->src);
+ self->src = NULL;
+ }
+ if (self->demux) {
+ gst_bin_remove (GST_BIN_CAST (self), self->demux);
+ self->demux = NULL;
+ }
+ break;
+ }
+ case GST_STATE_CHANGE_READY_TO_PAUSED:
+ if (ret != GST_STATE_CHANGE_FAILURE)
+ ret = GST_STATE_CHANGE_NO_PREROLL;
+ if (self->sdp_buffer) {
+ if (gst_app_src_push_buffer (GST_APP_SRC_CAST (self->src),
+ gst_buffer_ref (self->sdp_buffer)) != GST_FLOW_OK)
+ ret = GST_STATE_CHANGE_FAILURE;
+ else
+ gst_app_src_end_of_stream (GST_APP_SRC_CAST (self->src));
+ }
+ break;
+ default:
+ break;
+ }
+
+ return ret;
+}
+
+static void
+gst_sdp_src_class_init (GstSdpSrcClass * klass)
+{
+ GObjectClass *gobject_class = (GObjectClass *) klass;
+ GstElementClass *element_class = (GstElementClass *) klass;
+
+ GST_DEBUG_CATEGORY_INIT (sdp_src_debug, "sdpsrc", 0, "SDP Source");
+
+ gobject_class->finalize = gst_sdp_src_finalize;
+ gobject_class->set_property = gst_sdp_src_set_property;
+ gobject_class->get_property = gst_sdp_src_get_property;
+
+ g_object_class_install_property (gobject_class, PROP_LOCATION,
+ g_param_spec_string ("location",
+ "Location",
+ "URI to SDP file (sdp:///path/to/file)", NULL,
+ G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
+
+ g_object_class_install_property (gobject_class, PROP_SDP,
+ g_param_spec_string ("sdp",
+ "SDP",
+ "SDP description used instead of location", NULL,
+ G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
+
+ gst_element_class_add_pad_template (element_class,
+ gst_static_pad_template_get (&src_template));
+
+ gst_element_class_set_static_metadata (element_class, "SDP Source",
+ "Source/Network/RTP",
+ "Stream RTP based on an SDP",
+ "Sebastian Dröge <sebastian@centricular.com>");
+
+ element_class->change_state = GST_DEBUG_FUNCPTR (gst_sdp_src_change_state);
+}
+
+static void
+gst_sdp_src_init (GstSdpSrc * self)
+{
+}
+
+static GstURIType
+gst_sdp_src_get_uri_type (GType type)
+{
+ return GST_URI_SRC;
+}
+
+static const gchar *const *
+gst_sdp_src_get_protocols (GType type)
+{
+ static const gchar *protocols[] = { "sdp", 0 };
+
+ return protocols;
+}
+
+static gchar *
+gst_sdp_src_get_uri (GstURIHandler * handler)
+{
+ gchar *uri = NULL;
+
+ g_object_get (handler, "location", &uri, NULL);
+
+ return uri;
+}
+
+static gboolean
+gst_sdp_src_set_uri (GstURIHandler * handler, const gchar * uri,
+ GError ** error)
+{
+ if (uri && !g_str_has_prefix (uri, "sdp://")) {
+ g_set_error (error, GST_URI_ERROR, GST_URI_ERROR_BAD_URI,
+ "Invalid SDP URI");
+ return FALSE;
+ }
+
+ g_object_set (handler, "location", uri, NULL);
+
+ return TRUE;
+}
+
+static void
+gst_sdp_src_handler_init (gpointer g_iface, gpointer iface_data)
+{
+ GstURIHandlerInterface *iface = (GstURIHandlerInterface *) g_iface;
+
+ iface->get_type = gst_sdp_src_get_uri_type;
+ iface->get_protocols = gst_sdp_src_get_protocols;
+ iface->get_uri = gst_sdp_src_get_uri;
+ iface->set_uri = gst_sdp_src_set_uri;
+}
diff --git a/gst/sdp/gstsdpsrc.h b/gst/sdp/gstsdpsrc.h
new file mode 100644
index 0000000..05f2074
--- /dev/null
+++ b/gst/sdp/gstsdpsrc.h
@@ -0,0 +1,62 @@
+/* GStreamer
+ * Copyright (C) 2016 Sebastian Dröge <sebastian@centricular.com>
+ *
+ * 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.
+ */
+
+#ifndef __GST_SDP_SRC_H__
+#define __GST_SDP_SRC_H__
+
+#include <gst/gst.h>
+
+G_BEGIN_DECLS
+#define GST_TYPE_SDP_SRC \
+ (gst_sdp_src_get_type())
+#define GST_SDP_SRC(obj) \
+ (G_TYPE_CHECK_INSTANCE_CAST ((obj), GST_TYPE_SDP_SRC, GstSdpSrc))
+#define GST_SDP_SRC_CAST(obj) \
+ ((GstSdpSrc *) obj)
+#define GST_SDP_SRC_CLASS(klass) \
+ (G_TYPE_CHECK_CLASS_CAST ((klass), GST_TYPE_SDP_SRC, GstSdpSrcClass))
+#define GST_IS_SDP_SRC(obj) \
+ (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GST_TYPE_SDP_SRC))
+#define GST_IS_SDP_SRC_CLASS(klass) \
+ (G_TYPE_CHECK_CLASS_TYPE ((klass), GST_TYPE_SDP_SRC))
+
+typedef struct _GstSdpSrc GstSdpSrc;
+typedef struct _GstSdpSrcClass GstSdpSrcClass;
+
+struct _GstSdpSrc
+{
+ GstBin parent;
+
+ gchar *location;
+ gchar *sdp;
+
+ GstBuffer *sdp_buffer;
+ GstElement *src;
+ GstElement *demux;
+};
+
+struct _GstSdpSrcClass
+{
+ GstBinClass parent;
+};
+
+GType gst_sdp_src_get_type (void);
+
+G_END_DECLS
+#endif /* __GST_SDP_SRC_H__ */
diff --git a/gst/segmentclip/Makefile.in b/gst/segmentclip/Makefile.in
index 45a5577..fd77fe3 100644
--- a/gst/segmentclip/Makefile.in
+++ b/gst/segmentclip/Makefile.in
@@ -306,6 +306,8 @@
DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
DSYMUTIL = @DSYMUTIL@
DTLS_CFLAGS = @DTLS_CFLAGS@
DTLS_LIBS = @DTLS_LIBS@
@@ -521,6 +523,8 @@
LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
LIPO = @LIPO@
LN_S = @LN_S@
LOCALEDIR = @LOCALEDIR@
@@ -647,8 +651,6 @@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
SNDIO_LIBS = @SNDIO_LIBS@
@@ -693,6 +695,8 @@
WAYLAND_LIBS = @WAYLAND_LIBS@
WEBP_CFLAGS = @WEBP_CFLAGS@
WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
WGET = @WGET@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
diff --git a/gst/segmentclip/gstaudiosegmentclip.c b/gst/segmentclip/gstaudiosegmentclip.c
index 21fcd46..434424a 100644
--- a/gst/segmentclip/gstaudiosegmentclip.c
+++ b/gst/segmentclip/gstaudiosegmentclip.c
@@ -67,10 +67,8 @@
"Clips audio buffers to the configured segment",
"Sebastian Dröge <sebastian.droege@collabora.co.uk>");
- gst_element_class_add_pad_template (element_class,
- gst_static_pad_template_get (&sink_pad_template));
- gst_element_class_add_pad_template (element_class,
- gst_static_pad_template_get (&src_pad_template));
+ gst_element_class_add_static_pad_template (element_class, &sink_pad_template);
+ gst_element_class_add_static_pad_template (element_class, &src_pad_template);
}
static void
diff --git a/gst/segmentclip/gstvideosegmentclip.c b/gst/segmentclip/gstvideosegmentclip.c
index 0b168e4..34ba58b 100644
--- a/gst/segmentclip/gstvideosegmentclip.c
+++ b/gst/segmentclip/gstvideosegmentclip.c
@@ -61,10 +61,8 @@
"Clips video buffers to the configured segment",
"Sebastian Dröge <sebastian.droege@collabora.co.uk>");
- gst_element_class_add_pad_template (element_class,
- gst_static_pad_template_get (&sink_pad_template));
- gst_element_class_add_pad_template (element_class,
- gst_static_pad_template_get (&src_pad_template));
+ gst_element_class_add_static_pad_template (element_class, &sink_pad_template);
+ gst_element_class_add_static_pad_template (element_class, &src_pad_template);
segment_clip_klass->reset = GST_DEBUG_FUNCPTR (gst_video_segment_clip_reset);
segment_clip_klass->set_caps =
diff --git a/gst/siren/Makefile.in b/gst/siren/Makefile.in
index 00b5506..402e9ad 100644
--- a/gst/siren/Makefile.in
+++ b/gst/siren/Makefile.in
@@ -304,6 +304,8 @@
DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
DSYMUTIL = @DSYMUTIL@
DTLS_CFLAGS = @DTLS_CFLAGS@
DTLS_LIBS = @DTLS_LIBS@
@@ -519,6 +521,8 @@
LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
LIPO = @LIPO@
LN_S = @LN_S@
LOCALEDIR = @LOCALEDIR@
@@ -645,8 +649,6 @@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
SNDIO_LIBS = @SNDIO_LIBS@
@@ -691,6 +693,8 @@
WAYLAND_LIBS = @WAYLAND_LIBS@
WEBP_CFLAGS = @WEBP_CFLAGS@
WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
WGET = @WGET@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
diff --git a/gst/siren/gstsirendec.c b/gst/siren/gstsirendec.c
index ab0635a..93aadf0 100644
--- a/gst/siren/gstsirendec.c
+++ b/gst/siren/gstsirendec.c
@@ -73,10 +73,8 @@
GST_DEBUG_CATEGORY_INIT (sirendec_debug, "sirendec", 0, "sirendec");
- gst_element_class_add_pad_template (element_class,
- gst_static_pad_template_get (&srctemplate));
- gst_element_class_add_pad_template (element_class,
- gst_static_pad_template_get (&sinktemplate));
+ gst_element_class_add_static_pad_template (element_class, &srctemplate);
+ gst_element_class_add_static_pad_template (element_class, &sinktemplate);
gst_element_class_set_static_metadata (element_class, "Siren Decoder element",
"Codec/Decoder/Audio ",
diff --git a/gst/siren/gstsirenenc.c b/gst/siren/gstsirenenc.c
index 69b4d80..0be5cd3 100644
--- a/gst/siren/gstsirenenc.c
+++ b/gst/siren/gstsirenenc.c
@@ -71,10 +71,8 @@
GST_DEBUG_CATEGORY_INIT (sirenenc_debug, "sirenenc", 0, "sirenenc");
- gst_element_class_add_pad_template (element_class,
- gst_static_pad_template_get (&srctemplate));
- gst_element_class_add_pad_template (element_class,
- gst_static_pad_template_get (&sinktemplate));
+ gst_element_class_add_static_pad_template (element_class, &srctemplate);
+ gst_element_class_add_static_pad_template (element_class, &sinktemplate);
gst_element_class_set_static_metadata (element_class, "Siren Encoder element",
"Codec/Encoder/Audio ",
diff --git a/gst/smooth/Makefile.in b/gst/smooth/Makefile.in
index 21135e6..eb7c5d6 100644
--- a/gst/smooth/Makefile.in
+++ b/gst/smooth/Makefile.in
@@ -302,6 +302,8 @@
DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
DSYMUTIL = @DSYMUTIL@
DTLS_CFLAGS = @DTLS_CFLAGS@
DTLS_LIBS = @DTLS_LIBS@
@@ -517,6 +519,8 @@
LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
LIPO = @LIPO@
LN_S = @LN_S@
LOCALEDIR = @LOCALEDIR@
@@ -643,8 +647,6 @@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
SNDIO_LIBS = @SNDIO_LIBS@
@@ -689,6 +691,8 @@
WAYLAND_LIBS = @WAYLAND_LIBS@
WEBP_CFLAGS = @WEBP_CFLAGS@
WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
WGET = @WGET@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
diff --git a/gst/smooth/gstsmooth.c b/gst/smooth/gstsmooth.c
index cfdf51a..3bc233a 100644
--- a/gst/smooth/gstsmooth.c
+++ b/gst/smooth/gstsmooth.c
@@ -89,13 +89,12 @@
g_param_spec_boolean ("luma-only", "luma-only", "only filter luma part",
TRUE, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
- gst_element_class_add_pad_template (gstelement_class,
- gst_static_pad_template_get (&gst_smooth_sink_template));
- gst_element_class_add_pad_template (gstelement_class,
- gst_static_pad_template_get (&gst_smooth_src_template));
+ gst_element_class_add_static_pad_template (gstelement_class,
+ &gst_smooth_sink_template);
+ gst_element_class_add_static_pad_template (gstelement_class,
+ &gst_smooth_src_template);
gst_element_class_set_static_metadata (gstelement_class, "Smooth effect",
- "Filter/Effect/Video",
- "Apply a smooth filter to an image",
+ "Filter/Effect/Video", "Apply a smooth filter to an image",
"Wim Taymans <wim.taymans@chello.be>");
vfilter_class->transform_frame =
diff --git a/gst/speed/Makefile.in b/gst/speed/Makefile.in
index 22a00e6..b4a4028 100644
--- a/gst/speed/Makefile.in
+++ b/gst/speed/Makefile.in
@@ -302,6 +302,8 @@
DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
DSYMUTIL = @DSYMUTIL@
DTLS_CFLAGS = @DTLS_CFLAGS@
DTLS_LIBS = @DTLS_LIBS@
@@ -517,6 +519,8 @@
LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
LIPO = @LIPO@
LN_S = @LN_S@
LOCALEDIR = @LOCALEDIR@
@@ -643,8 +647,6 @@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
SNDIO_LIBS = @SNDIO_LIBS@
@@ -689,6 +691,8 @@
WAYLAND_LIBS = @WAYLAND_LIBS@
WEBP_CFLAGS = @WEBP_CFLAGS@
WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
WGET = @WGET@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
diff --git a/gst/speed/gstspeed.c b/gst/speed/gstspeed.c
index c0f9198..72a907d 100644
--- a/gst/speed/gstspeed.c
+++ b/gst/speed/gstspeed.c
@@ -399,10 +399,10 @@
"Andy Wingo <apwingo@eos.ncsu.edu>, "
"Tim-Philipp Müller <tim@centricular.net>");
- gst_element_class_add_pad_template (gstelement_class,
- gst_static_pad_template_get (&gst_speed_src_template));
- gst_element_class_add_pad_template (gstelement_class,
- gst_static_pad_template_get (&gst_speed_sink_template));
+ gst_element_class_add_static_pad_template (gstelement_class,
+ &gst_speed_src_template);
+ gst_element_class_add_static_pad_template (gstelement_class,
+ &gst_speed_sink_template);
}
static void
diff --git a/gst/stereo/Makefile.in b/gst/stereo/Makefile.in
index 1f73f05..5e47739 100644
--- a/gst/stereo/Makefile.in
+++ b/gst/stereo/Makefile.in
@@ -302,6 +302,8 @@
DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
DSYMUTIL = @DSYMUTIL@
DTLS_CFLAGS = @DTLS_CFLAGS@
DTLS_LIBS = @DTLS_LIBS@
@@ -517,6 +519,8 @@
LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
LIPO = @LIPO@
LN_S = @LN_S@
LOCALEDIR = @LOCALEDIR@
@@ -643,8 +647,6 @@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
SNDIO_LIBS = @SNDIO_LIBS@
@@ -689,6 +691,8 @@
WAYLAND_LIBS = @WAYLAND_LIBS@
WEBP_CFLAGS = @WEBP_CFLAGS@
WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
WGET = @WGET@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
diff --git a/gst/subenc/Makefile.in b/gst/subenc/Makefile.in
index eb67032..128de90 100644
--- a/gst/subenc/Makefile.in
+++ b/gst/subenc/Makefile.in
@@ -302,6 +302,8 @@
DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
DSYMUTIL = @DSYMUTIL@
DTLS_CFLAGS = @DTLS_CFLAGS@
DTLS_LIBS = @DTLS_LIBS@
@@ -517,6 +519,8 @@
LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
LIPO = @LIPO@
LN_S = @LN_S@
LOCALEDIR = @LOCALEDIR@
@@ -643,8 +647,6 @@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
SNDIO_LIBS = @SNDIO_LIBS@
@@ -689,6 +691,8 @@
WAYLAND_LIBS = @WAYLAND_LIBS@
WEBP_CFLAGS = @WEBP_CFLAGS@
WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
WGET = @WGET@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
diff --git a/gst/subenc/gstsrtenc.c b/gst/subenc/gstsrtenc.c
index 079fc44..c16e6ed 100644
--- a/gst/subenc/gstsrtenc.c
+++ b/gst/subenc/gstsrtenc.c
@@ -246,10 +246,8 @@
0,
G_PARAM_READWRITE | GST_PARAM_CONTROLLABLE | G_PARAM_STATIC_STRINGS));
- gst_element_class_add_pad_template (element_class,
- gst_static_pad_template_get (&sink_template));
- gst_element_class_add_pad_template (element_class,
- gst_static_pad_template_get (&src_template));
+ gst_element_class_add_static_pad_template (element_class, &sink_template);
+ gst_element_class_add_static_pad_template (element_class, &src_template);
gst_element_class_set_static_metadata (element_class,
"Srt encoder", "Codec/Encoder/Subtitle",
diff --git a/gst/subenc/gstwebvttenc.c b/gst/subenc/gstwebvttenc.c
index 67b6305..eefc78d 100644
--- a/gst/subenc/gstwebvttenc.c
+++ b/gst/subenc/gstwebvttenc.c
@@ -266,10 +266,8 @@
0,
G_PARAM_READWRITE | GST_PARAM_CONTROLLABLE | G_PARAM_STATIC_STRINGS));
- gst_element_class_add_pad_template (element_class,
- gst_static_pad_template_get (&sink_template));
- gst_element_class_add_pad_template (element_class,
- gst_static_pad_template_get (&src_template));
+ gst_element_class_add_static_pad_template (element_class, &sink_template);
+ gst_element_class_add_static_pad_template (element_class, &src_template);
gst_element_class_set_static_metadata (element_class,
"WebVTT encoder", "Codec/Encoder/Subtitle",
diff --git a/gst/tta/Makefile.in b/gst/tta/Makefile.in
index 034146d..d0c8910 100644
--- a/gst/tta/Makefile.in
+++ b/gst/tta/Makefile.in
@@ -303,6 +303,8 @@
DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
DSYMUTIL = @DSYMUTIL@
DTLS_CFLAGS = @DTLS_CFLAGS@
DTLS_LIBS = @DTLS_LIBS@
@@ -518,6 +520,8 @@
LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
LIPO = @LIPO@
LN_S = @LN_S@
LOCALEDIR = @LOCALEDIR@
@@ -644,8 +648,6 @@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
SNDIO_LIBS = @SNDIO_LIBS@
@@ -690,6 +692,8 @@
WAYLAND_LIBS = @WAYLAND_LIBS@
WEBP_CFLAGS = @WEBP_CFLAGS@
WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
WGET = @WGET@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
diff --git a/gst/tta/gstttadec.c b/gst/tta/gstttadec.c
index f4e29a2..1aa9d95 100644
--- a/gst/tta/gstttadec.c
+++ b/gst/tta/gstttadec.c
@@ -171,10 +171,8 @@
GstElementClass *element_class = GST_ELEMENT_CLASS (klass);
- gst_element_class_add_pad_template (element_class,
- gst_static_pad_template_get (&src_factory));
- gst_element_class_add_pad_template (element_class,
- gst_static_pad_template_get (&sink_factory));
+ gst_element_class_add_static_pad_template (element_class, &src_factory);
+ gst_element_class_add_static_pad_template (element_class, &sink_factory);
gst_element_class_set_static_metadata (element_class, "TTA audio decoder",
"Codec/Decoder/Audio",
"Decode TTA audio data", "Arwed v. Merkatz <v.merkatz@gmx.net>");
diff --git a/gst/tta/gstttaparse.c b/gst/tta/gstttaparse.c
index 9d3b8b4..5479350 100644
--- a/gst/tta/gstttaparse.c
+++ b/gst/tta/gstttaparse.c
@@ -92,10 +92,8 @@
GstElementClass *element_class = GST_ELEMENT_CLASS (klass);
- gst_element_class_add_pad_template (element_class,
- gst_static_pad_template_get (&src_factory));
- gst_element_class_add_pad_template (element_class,
- gst_static_pad_template_get (&sink_factory));
+ gst_element_class_add_static_pad_template (element_class, &src_factory);
+ gst_element_class_add_static_pad_template (element_class, &sink_factory);
gst_element_class_set_static_metadata (element_class, "TTA file parser",
"Codec/Demuxer/Audio",
"Parses TTA files", "Arwed v. Merkatz <v.merkatz@gmx.net>");
diff --git a/gst/videofilters/Makefile.in b/gst/videofilters/Makefile.in
index 65f842a..1554116 100644
--- a/gst/videofilters/Makefile.in
+++ b/gst/videofilters/Makefile.in
@@ -308,6 +308,8 @@
DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
DSYMUTIL = @DSYMUTIL@
DTLS_CFLAGS = @DTLS_CFLAGS@
DTLS_LIBS = @DTLS_LIBS@
@@ -523,6 +525,8 @@
LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
LIPO = @LIPO@
LN_S = @LN_S@
LOCALEDIR = @LOCALEDIR@
@@ -649,8 +653,6 @@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
SNDIO_LIBS = @SNDIO_LIBS@
@@ -695,6 +697,8 @@
WAYLAND_LIBS = @WAYLAND_LIBS@
WEBP_CFLAGS = @WEBP_CFLAGS@
WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
WGET = @WGET@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
diff --git a/gst/videofilters/gstvideodiff.c b/gst/videofilters/gstvideodiff.c
index 6f5b35e..457ebd1 100644
--- a/gst/videofilters/gstvideodiff.c
+++ b/gst/videofilters/gstvideodiff.c
@@ -1,5 +1,5 @@
/* GStreamer
- * Copyright (C) 2013 FIXME <fixme@example.com>
+ * Copyright (C) 2013 David Schleef <ds@schleef.org>
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Library General Public
@@ -19,14 +19,14 @@
/**
* SECTION:element-gstvideodiff
*
- * The videodiff element does FIXME stuff.
+ * The videodiff element highlights the difference between a frame and its
+ * previous on the luma plane.
*
* <refsect2>
* <title>Example launch line</title>
* |[
- * gst-launch-1.0 -v fakesrc ! videodiff ! FIXME ! fakesink
+ * gst-launch-1.0 -v videotestsrc pattern=ball ! videodiff ! videoconvert ! autovideosink
* ]|
- * FIXME Describe what the pipeline does.
* </refsect2>
*/
@@ -47,24 +47,13 @@
static GstFlowReturn gst_video_diff_transform_frame (GstVideoFilter * filter,
GstVideoFrame * inframe, GstVideoFrame * outframe);
-enum
-{
- PROP_0
-};
-
-/* pad templates */
-
-/* FIXME: add/remove formats you can handle */
#define VIDEO_SRC_CAPS \
- GST_VIDEO_CAPS_MAKE("{ I420, Y444, Y42B, UYVY, RGBA }")
+ GST_VIDEO_CAPS_MAKE("{ I420, Y444, Y42B, Y41B }")
-/* FIXME: add/remove formats you can handle */
#define VIDEO_SINK_CAPS \
- GST_VIDEO_CAPS_MAKE("{ I420, Y444, Y42B, UYVY, RGBA }")
+ GST_VIDEO_CAPS_MAKE("{ I420, Y444, Y42B, Y41B }")
-/* class initialization */
-
G_DEFINE_TYPE_WITH_CODE (GstVideoDiff, gst_video_diff, GST_TYPE_VIDEO_FILTER,
GST_DEBUG_CATEGORY_INIT (gst_video_diff_debug_category, "videodiff", 0,
"debug category for videodiff element"));
@@ -74,8 +63,6 @@
{
GstVideoFilterClass *video_filter_class = GST_VIDEO_FILTER_CLASS (klass);
- /* Setting up pads and setting metadata should be moved to
- base_class_init if you intend to subclass this class. */
gst_element_class_add_pad_template (GST_ELEMENT_CLASS (klass),
gst_pad_template_new ("src", GST_PAD_SRC, GST_PAD_ALWAYS,
gst_caps_from_string (VIDEO_SRC_CAPS)));
@@ -84,12 +71,12 @@
gst_caps_from_string (VIDEO_SINK_CAPS)));
gst_element_class_set_static_metadata (GST_ELEMENT_CLASS (klass),
- "FIXME Long name", "Generic", "FIXME Description",
- "FIXME <fixme@example.com>");
+ "Video Diff", "Video/Filter",
+ "Visualize differences between adjacent video frames",
+ "David Schleef <ds@schleef.org>");
video_filter_class->transform_frame =
GST_DEBUG_FUNCPTR (gst_video_diff_transform_frame);
-
}
static void
diff --git a/gst/videofilters/gstvideodiff.h b/gst/videofilters/gstvideodiff.h
index c91844a..8d76d70 100644
--- a/gst/videofilters/gstvideodiff.h
+++ b/gst/videofilters/gstvideodiff.h
@@ -1,5 +1,5 @@
/* GStreamer
- * Copyright (C) 2013 FIXME <fixme@example.com>
+ * Copyright (C) 2013 David Schleef <ds@schleef.org>
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Library General Public
diff --git a/gst/videoframe_audiolevel/Makefile.in b/gst/videoframe_audiolevel/Makefile.in
index 61b80d8..c1f0304 100644
--- a/gst/videoframe_audiolevel/Makefile.in
+++ b/gst/videoframe_audiolevel/Makefile.in
@@ -305,6 +305,8 @@
DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
DSYMUTIL = @DSYMUTIL@
DTLS_CFLAGS = @DTLS_CFLAGS@
DTLS_LIBS = @DTLS_LIBS@
@@ -520,6 +522,8 @@
LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
LIPO = @LIPO@
LN_S = @LN_S@
LOCALEDIR = @LOCALEDIR@
@@ -646,8 +650,6 @@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
SNDIO_LIBS = @SNDIO_LIBS@
@@ -692,6 +694,8 @@
WAYLAND_LIBS = @WAYLAND_LIBS@
WEBP_CFLAGS = @WEBP_CFLAGS@
WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
WGET = @WGET@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
diff --git a/gst/videoframe_audiolevel/gstvideoframe-audiolevel.c b/gst/videoframe_audiolevel/gstvideoframe-audiolevel.c
index ade9966..46fda77 100644
--- a/gst/videoframe_audiolevel/gstvideoframe-audiolevel.c
+++ b/gst/videoframe_audiolevel/gstvideoframe-audiolevel.c
@@ -122,15 +122,15 @@
gobject_class->finalize = gst_videoframe_audiolevel_finalize;
gstelement_class->change_state = gst_videoframe_audiolevel_change_state;
- gst_element_class_add_pad_template (gstelement_class,
- gst_static_pad_template_get (&audio_src_template));
- gst_element_class_add_pad_template (gstelement_class,
- gst_static_pad_template_get (&audio_sink_template));
+ gst_element_class_add_static_pad_template (gstelement_class,
+ &audio_src_template);
+ gst_element_class_add_static_pad_template (gstelement_class,
+ &audio_sink_template);
- gst_element_class_add_pad_template (gstelement_class,
- gst_static_pad_template_get (&video_src_template));
- gst_element_class_add_pad_template (gstelement_class,
- gst_static_pad_template_get (&video_sink_template));
+ gst_element_class_add_static_pad_template (gstelement_class,
+ &video_src_template);
+ gst_element_class_add_static_pad_template (gstelement_class,
+ &video_sink_template);
}
static void
diff --git a/gst/videomeasure/Makefile.in b/gst/videomeasure/Makefile.in
index d99030c..32add82 100644
--- a/gst/videomeasure/Makefile.in
+++ b/gst/videomeasure/Makefile.in
@@ -306,6 +306,8 @@
DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
DSYMUTIL = @DSYMUTIL@
DTLS_CFLAGS = @DTLS_CFLAGS@
DTLS_LIBS = @DTLS_LIBS@
@@ -521,6 +523,8 @@
LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
LIPO = @LIPO@
LN_S = @LN_S@
LOCALEDIR = @LOCALEDIR@
@@ -647,8 +651,6 @@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
SNDIO_LIBS = @SNDIO_LIBS@
@@ -693,6 +695,8 @@
WAYLAND_LIBS = @WAYLAND_LIBS@
WEBP_CFLAGS = @WEBP_CFLAGS@
WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
WGET = @WGET@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
diff --git a/gst/videomeasure/gstvideomeasure_collector.c b/gst/videomeasure/gstvideomeasure_collector.c
index 448adc4..3778bbf 100644
--- a/gst/videomeasure/gstvideomeasure_collector.c
+++ b/gst/videomeasure/gstvideomeasure_collector.c
@@ -320,10 +320,10 @@
"Collect measurements from a measuring element",
"Руслан Ижбулатов <lrn _at_ gmail _dot_ com>");
- gst_element_class_add_pad_template (element_class,
- gst_static_pad_template_get (&gst_measure_collector_sink_template));
- gst_element_class_add_pad_template (element_class,
- gst_static_pad_template_get (&gst_measure_collector_src_template));
+ gst_element_class_add_static_pad_template (element_class,
+ &gst_measure_collector_sink_template);
+ gst_element_class_add_static_pad_template (element_class,
+ &gst_measure_collector_src_template);
}
static void
diff --git a/gst/videomeasure/gstvideomeasure_ssim.c b/gst/videomeasure/gstvideomeasure_ssim.c
index 13ba035..d0a2c9d 100644
--- a/gst/videomeasure/gstvideomeasure_ssim.c
+++ b/gst/videomeasure/gstvideomeasure_ssim.c
@@ -1095,15 +1095,14 @@
"(only when using Gaussian window).",
G_MINFLOAT, 10, 1.5, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
- gst_element_class_add_pad_template (gstelement_class,
- gst_static_pad_template_get (&gst_ssim_src_template));
- gst_element_class_add_pad_template (gstelement_class,
- gst_static_pad_template_get (&gst_ssim_sink_original_template));
- gst_element_class_add_pad_template (gstelement_class,
- gst_static_pad_template_get (&gst_ssim_sink_modified_template));
+ gst_element_class_add_static_pad_template (gstelement_class,
+ &gst_ssim_src_template);
+ gst_element_class_add_static_pad_template (gstelement_class,
+ &gst_ssim_sink_original_template);
+ gst_element_class_add_static_pad_template (gstelement_class,
+ &gst_ssim_sink_modified_template);
gst_element_class_set_static_metadata (gstelement_class, "SSim",
- "Filter/Analyzer/Video",
- "Calculate Y-SSIM for n+2 YUV video streams",
+ "Filter/Analyzer/Video", "Calculate Y-SSIM for n+2 YUV video streams",
"Руслан Ижбулатов <lrn1986 _at_ gmail _dot_ com>");
parent_class = g_type_class_peek_parent (klass);
diff --git a/gst/videoparsers/Makefile.am b/gst/videoparsers/Makefile.am
index f1b0a11..f81cc0e 100644
--- a/gst/videoparsers/Makefile.am
+++ b/gst/videoparsers/Makefile.am
@@ -5,6 +5,7 @@
gstdiracparse.c dirac_parse.c \
gsth264parse.c gstmpegvideoparse.c \
gstmpeg4videoparse.c \
+ gstjpeg2000parse.c \
gstpngparse.c \
gstvc1parse.c \
gsth265parse.c
@@ -29,6 +30,7 @@
gstdiracparse.h dirac_parse.h \
gsth264parse.h gstmpegvideoparse.h \
gstmpeg4videoparse.h \
+ gstjpeg2000parse.h \
gstpngparse.h \
gstvc1parse.h \
gsth265parse.h
diff --git a/gst/videoparsers/Makefile.in b/gst/videoparsers/Makefile.in
index 9b99433..3a9327a 100644
--- a/gst/videoparsers/Makefile.in
+++ b/gst/videoparsers/Makefile.in
@@ -175,6 +175,7 @@
libgstvideoparsersbad_la-gsth264parse.lo \
libgstvideoparsersbad_la-gstmpegvideoparse.lo \
libgstvideoparsersbad_la-gstmpeg4videoparse.lo \
+ libgstvideoparsersbad_la-gstjpeg2000parse.lo \
libgstvideoparsersbad_la-gstpngparse.lo \
libgstvideoparsersbad_la-gstvc1parse.lo \
libgstvideoparsersbad_la-gsth265parse.lo
@@ -315,6 +316,8 @@
DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
DSYMUTIL = @DSYMUTIL@
DTLS_CFLAGS = @DTLS_CFLAGS@
DTLS_LIBS = @DTLS_LIBS@
@@ -530,6 +533,8 @@
LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
LIPO = @LIPO@
LN_S = @LN_S@
LOCALEDIR = @LOCALEDIR@
@@ -656,8 +661,6 @@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
SNDIO_LIBS = @SNDIO_LIBS@
@@ -702,6 +705,8 @@
WAYLAND_LIBS = @WAYLAND_LIBS@
WEBP_CFLAGS = @WEBP_CFLAGS@
WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
WGET = @WGET@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
@@ -796,6 +801,7 @@
gstdiracparse.c dirac_parse.c \
gsth264parse.c gstmpegvideoparse.c \
gstmpeg4videoparse.c \
+ gstjpeg2000parse.c \
gstpngparse.c \
gstvc1parse.c \
gsth265parse.c
@@ -821,6 +827,7 @@
gstdiracparse.h dirac_parse.h \
gsth264parse.h gstmpegvideoparse.h \
gstmpeg4videoparse.h \
+ gstjpeg2000parse.h \
gstpngparse.h \
gstvc1parse.h \
gsth265parse.h
@@ -908,6 +915,7 @@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstvideoparsersbad_la-gsth263parse.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstvideoparsersbad_la-gsth264parse.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstvideoparsersbad_la-gsth265parse.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstvideoparsersbad_la-gstjpeg2000parse.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstvideoparsersbad_la-gstmpeg4videoparse.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstvideoparsersbad_la-gstmpegvideoparse.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstvideoparsersbad_la-gstpngparse.Plo@am__quote@
@@ -995,6 +1003,13 @@
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstvideoparsersbad_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstvideoparsersbad_la_CFLAGS) $(CFLAGS) -c -o libgstvideoparsersbad_la-gstmpeg4videoparse.lo `test -f 'gstmpeg4videoparse.c' || echo '$(srcdir)/'`gstmpeg4videoparse.c
+libgstvideoparsersbad_la-gstjpeg2000parse.lo: gstjpeg2000parse.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstvideoparsersbad_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstvideoparsersbad_la_CFLAGS) $(CFLAGS) -MT libgstvideoparsersbad_la-gstjpeg2000parse.lo -MD -MP -MF $(DEPDIR)/libgstvideoparsersbad_la-gstjpeg2000parse.Tpo -c -o libgstvideoparsersbad_la-gstjpeg2000parse.lo `test -f 'gstjpeg2000parse.c' || echo '$(srcdir)/'`gstjpeg2000parse.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgstvideoparsersbad_la-gstjpeg2000parse.Tpo $(DEPDIR)/libgstvideoparsersbad_la-gstjpeg2000parse.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gstjpeg2000parse.c' object='libgstvideoparsersbad_la-gstjpeg2000parse.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 $(libgstvideoparsersbad_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstvideoparsersbad_la_CFLAGS) $(CFLAGS) -c -o libgstvideoparsersbad_la-gstjpeg2000parse.lo `test -f 'gstjpeg2000parse.c' || echo '$(srcdir)/'`gstjpeg2000parse.c
+
libgstvideoparsersbad_la-gstpngparse.lo: gstpngparse.c
@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstvideoparsersbad_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstvideoparsersbad_la_CFLAGS) $(CFLAGS) -MT libgstvideoparsersbad_la-gstpngparse.lo -MD -MP -MF $(DEPDIR)/libgstvideoparsersbad_la-gstpngparse.Tpo -c -o libgstvideoparsersbad_la-gstpngparse.lo `test -f 'gstpngparse.c' || echo '$(srcdir)/'`gstpngparse.c
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgstvideoparsersbad_la-gstpngparse.Tpo $(DEPDIR)/libgstvideoparsersbad_la-gstpngparse.Plo
diff --git a/gst/videoparsers/gstdiracparse.c b/gst/videoparsers/gstdiracparse.c
index 93f00c6..c674cb8 100644
--- a/gst/videoparsers/gstdiracparse.c
+++ b/gst/videoparsers/gstdiracparse.c
@@ -109,10 +109,10 @@
gobject_class->dispose = gst_dirac_parse_dispose;
gobject_class->finalize = gst_dirac_parse_finalize;
- gst_element_class_add_pad_template (element_class,
- gst_static_pad_template_get (&gst_dirac_parse_src_template));
- gst_element_class_add_pad_template (element_class,
- gst_static_pad_template_get (&gst_dirac_parse_sink_template));
+ gst_element_class_add_static_pad_template (element_class,
+ &gst_dirac_parse_src_template);
+ gst_element_class_add_static_pad_template (element_class,
+ &gst_dirac_parse_sink_template);
gst_element_class_set_static_metadata (element_class, "Dirac parser",
"Codec/Parser/Video", "Parses Dirac streams",
diff --git a/gst/videoparsers/gsth263parse.c b/gst/videoparsers/gsth263parse.c
index 370cbb1..0f4d42e 100644
--- a/gst/videoparsers/gsth263parse.c
+++ b/gst/videoparsers/gsth263parse.c
@@ -73,10 +73,8 @@
GST_DEBUG_CATEGORY_INIT (h263_parse_debug, "h263parse", 0, "h263 parser");
- gst_element_class_add_pad_template (gstelement_class,
- gst_static_pad_template_get (&srctemplate));
- gst_element_class_add_pad_template (gstelement_class,
- gst_static_pad_template_get (&sinktemplate));
+ gst_element_class_add_static_pad_template (gstelement_class, &srctemplate);
+ gst_element_class_add_static_pad_template (gstelement_class, &sinktemplate);
gst_element_class_set_static_metadata (gstelement_class, "H.263 parser",
"Codec/Parser/Video",
"Parses H.263 streams",
diff --git a/gst/videoparsers/gsth264parse.c b/gst/videoparsers/gsth264parse.c
index 05b6b75..e09fd99 100644
--- a/gst/videoparsers/gsth264parse.c
+++ b/gst/videoparsers/gsth264parse.c
@@ -129,11 +129,12 @@
gobject_class->get_property = gst_h264_parse_get_property;
g_object_class_install_property (gobject_class, PROP_CONFIG_INTERVAL,
- g_param_spec_uint ("config-interval",
+ g_param_spec_int ("config-interval",
"SPS PPS Send Interval",
"Send SPS and PPS Insertion Interval in seconds (sprop parameter sets "
- "will be multiplexed in the data stream when detected.) (0 = disabled)",
- 0, 3600, DEFAULT_CONFIG_INTERVAL,
+ "will be multiplexed in the data stream when detected.) "
+ "(0 = disabled, -1 = send with every IDR frame)",
+ -1, 3600, DEFAULT_CONFIG_INTERVAL,
G_PARAM_READWRITE | G_PARAM_CONSTRUCT | G_PARAM_STATIC_STRINGS));
/* Override BaseParse vfuncs */
@@ -147,10 +148,8 @@
parse_class->sink_event = GST_DEBUG_FUNCPTR (gst_h264_parse_event);
parse_class->src_event = GST_DEBUG_FUNCPTR (gst_h264_parse_src_event);
- gst_element_class_add_pad_template (gstelement_class,
- gst_static_pad_template_get (&srctemplate));
- gst_element_class_add_pad_template (gstelement_class,
- gst_static_pad_template_get (&sinktemplate));
+ gst_element_class_add_static_pad_template (gstelement_class, &srctemplate);
+ gst_element_class_add_static_pad_template (gstelement_class, &sinktemplate);
gst_element_class_set_static_metadata (gstelement_class, "H.264 parser",
"Codec/Parser/Converter/Video",
@@ -1054,6 +1053,7 @@
GstH264NalUnit nalu;
GstH264ParserResult pres;
gint framesize;
+ GstFlowReturn ret;
if (G_UNLIKELY (GST_BUFFER_FLAG_IS_SET (frame->buffer,
GST_BUFFER_FLAG_DISCONT))) {
@@ -1087,7 +1087,9 @@
GST_LOG_OBJECT (h264parse, "resuming frame parsing");
}
- drain = GST_BASE_PARSE_DRAINING (parse);
+ /* Always consume the entire input buffer when in_align == ALIGN_AU */
+ drain = GST_BASE_PARSE_DRAINING (parse)
+ || h264parse->in_align == GST_H264_PARSE_ALIGN_AU;
nonext = FALSE;
current_off = h264parse->current_off;
@@ -1104,6 +1106,22 @@
switch (pres) {
case GST_H264_PARSER_OK:
if (nalu.sc_offset > 0) {
+ int i;
+ gboolean is_filler_data = TRUE;
+ /* Handle filler data */
+ for (i = 0; i < nalu.sc_offset; i++) {
+ if (data[i] != 0x00) {
+ is_filler_data = FALSE;
+ break;
+ }
+ }
+ if (is_filler_data) {
+ GST_DEBUG_OBJECT (parse, "Dropping filler data %d", nalu.sc_offset);
+ frame->flags |= GST_BASE_PARSE_FRAME_FLAG_DROP;
+ gst_buffer_unmap (buffer, &map);
+ ret = gst_base_parse_finish_frame (parse, frame, nalu.sc_offset);
+ goto drop;
+ }
*skipsize = nalu.sc_offset;
goto skip;
}
@@ -1239,6 +1257,10 @@
gst_buffer_unmap (buffer, &map);
return GST_FLOW_OK;
+drop:
+ GST_DEBUG_OBJECT (h264parse, "Dropped data");
+ return ret;
+
skip:
GST_DEBUG_OBJECT (h264parse, "skipping %d", *skipsize);
/* If we are collecting access units, we need to preserve the initial
@@ -1919,6 +1941,8 @@
g_return_if_fail (out_ts != NULL);
upstream = *out_ts;
+ GST_LOG_OBJECT (h264parse, "Upstream ts %" GST_TIME_FORMAT,
+ GST_TIME_ARGS (upstream));
if (!frame) {
GST_LOG_OBJECT (h264parse, "no frame data -> 0 duration");
@@ -2201,6 +2225,92 @@
parse->push_codec = TRUE;
}
+static gboolean
+gst_h264_parse_handle_sps_pps_nals (GstH264Parse * h264parse,
+ GstBuffer * buffer, GstBaseParseFrame * frame)
+{
+ GstBuffer *codec_nal;
+ gint i;
+ gboolean send_done = FALSE;
+ GstClockTime timestamp = GST_BUFFER_TIMESTAMP (buffer);
+
+ if (h264parse->align == GST_H264_PARSE_ALIGN_NAL) {
+ /* send separate config NAL buffers */
+ GST_DEBUG_OBJECT (h264parse, "- sending SPS/PPS");
+ for (i = 0; i < GST_H264_MAX_SPS_COUNT; i++) {
+ if ((codec_nal = h264parse->sps_nals[i])) {
+ GST_DEBUG_OBJECT (h264parse, "sending SPS nal");
+ gst_h264_parse_push_codec_buffer (h264parse, codec_nal, timestamp);
+ send_done = TRUE;
+ }
+ }
+ for (i = 0; i < GST_H264_MAX_PPS_COUNT; i++) {
+ if ((codec_nal = h264parse->pps_nals[i])) {
+ GST_DEBUG_OBJECT (h264parse, "sending PPS nal");
+ gst_h264_parse_push_codec_buffer (h264parse, codec_nal, timestamp);
+ send_done = TRUE;
+ }
+ }
+ } else {
+ /* insert config NALs into AU */
+ GstByteWriter bw;
+ GstBuffer *new_buf;
+ const gboolean bs = h264parse->format == GST_H264_PARSE_FORMAT_BYTE;
+ const gint nls = 4 - h264parse->nal_length_size;
+ gboolean ok;
+
+ gst_byte_writer_init_with_size (&bw, gst_buffer_get_size (buffer), FALSE);
+ ok = gst_byte_writer_put_buffer (&bw, buffer, 0, h264parse->idr_pos);
+ GST_DEBUG_OBJECT (h264parse, "- inserting SPS/PPS");
+ for (i = 0; i < GST_H264_MAX_SPS_COUNT; i++) {
+ if ((codec_nal = h264parse->sps_nals[i])) {
+ gsize nal_size = gst_buffer_get_size (codec_nal);
+ GST_DEBUG_OBJECT (h264parse, "inserting SPS nal");
+ if (bs) {
+ ok &= gst_byte_writer_put_uint32_be (&bw, 1);
+ } else {
+ ok &= gst_byte_writer_put_uint32_be (&bw, (nal_size << (nls * 8)));
+ ok &= gst_byte_writer_set_pos (&bw,
+ gst_byte_writer_get_pos (&bw) - nls);
+ }
+
+ ok &= gst_byte_writer_put_buffer (&bw, codec_nal, 0, nal_size);
+ send_done = TRUE;
+ }
+ }
+ for (i = 0; i < GST_H264_MAX_PPS_COUNT; i++) {
+ if ((codec_nal = h264parse->pps_nals[i])) {
+ gsize nal_size = gst_buffer_get_size (codec_nal);
+ GST_DEBUG_OBJECT (h264parse, "inserting PPS nal");
+ if (bs) {
+ ok &= gst_byte_writer_put_uint32_be (&bw, 1);
+ } else {
+ ok &= gst_byte_writer_put_uint32_be (&bw, (nal_size << (nls * 8)));
+ ok &= gst_byte_writer_set_pos (&bw,
+ gst_byte_writer_get_pos (&bw) - nls);
+ }
+ ok &= gst_byte_writer_put_buffer (&bw, codec_nal, 0, nal_size);
+ send_done = TRUE;
+ }
+ }
+ ok &= gst_byte_writer_put_buffer (&bw, buffer, h264parse->idr_pos, -1);
+ /* collect result and push */
+ new_buf = gst_byte_writer_reset_and_get_buffer (&bw);
+ gst_buffer_copy_into (new_buf, buffer, GST_BUFFER_COPY_METADATA, 0, -1);
+ /* should already be keyframe/IDR, but it may not have been,
+ * so mark it as such to avoid being discarded by picky decoder */
+ GST_BUFFER_FLAG_UNSET (new_buf, GST_BUFFER_FLAG_DELTA_UNIT);
+ gst_buffer_replace (&frame->out_buffer, new_buf);
+ gst_buffer_unref (new_buf);
+ /* some result checking seems to make some compilers happy */
+ if (G_UNLIKELY (!ok)) {
+ GST_ERROR_OBJECT (h264parse, "failed to insert SPS/PPS");
+ }
+ }
+
+ return send_done;
+}
+
static GstFlowReturn
gst_h264_parse_pre_push_frame (GstBaseParse * parse, GstBaseParseFrame * frame)
{
@@ -2276,93 +2386,14 @@
if (GST_TIME_AS_SECONDS (diff) >= h264parse->interval ||
initial_frame || h264parse->push_codec) {
- GstBuffer *codec_nal;
- gint i;
GstClockTime new_ts;
/* avoid overwriting a perfectly fine timestamp */
new_ts = GST_CLOCK_TIME_IS_VALID (timestamp) ? timestamp :
h264parse->last_report;
- if (h264parse->align == GST_H264_PARSE_ALIGN_NAL) {
- /* send separate config NAL buffers */
- GST_DEBUG_OBJECT (h264parse, "- sending SPS/PPS");
- for (i = 0; i < GST_H264_MAX_SPS_COUNT; i++) {
- if ((codec_nal = h264parse->sps_nals[i])) {
- GST_DEBUG_OBJECT (h264parse, "sending SPS nal");
- gst_h264_parse_push_codec_buffer (h264parse, codec_nal,
- timestamp);
- h264parse->last_report = new_ts;
- }
- }
- for (i = 0; i < GST_H264_MAX_PPS_COUNT; i++) {
- if ((codec_nal = h264parse->pps_nals[i])) {
- GST_DEBUG_OBJECT (h264parse, "sending PPS nal");
- gst_h264_parse_push_codec_buffer (h264parse, codec_nal,
- timestamp);
- h264parse->last_report = new_ts;
- }
- }
- } else {
- /* insert config NALs into AU */
- GstByteWriter bw;
- GstBuffer *new_buf;
- const gboolean bs = h264parse->format == GST_H264_PARSE_FORMAT_BYTE;
- const gint nls = 4 - h264parse->nal_length_size;
- gboolean ok;
-
- gst_byte_writer_init_with_size (&bw, gst_buffer_get_size (buffer),
- FALSE);
- ok = gst_byte_writer_put_buffer (&bw, buffer, 0, h264parse->idr_pos);
- GST_DEBUG_OBJECT (h264parse, "- inserting SPS/PPS");
- for (i = 0; i < GST_H264_MAX_SPS_COUNT; i++) {
- if ((codec_nal = h264parse->sps_nals[i])) {
- gsize nal_size = gst_buffer_get_size (codec_nal);
- GST_DEBUG_OBJECT (h264parse, "inserting SPS nal");
- if (bs) {
- ok &= gst_byte_writer_put_uint32_be (&bw, 1);
- } else {
- ok &= gst_byte_writer_put_uint32_be (&bw,
- (nal_size << (nls * 8)));
- ok &= gst_byte_writer_set_pos (&bw,
- gst_byte_writer_get_pos (&bw) - nls);
- }
-
- ok &= gst_byte_writer_put_buffer (&bw, codec_nal, 0, nal_size);
- h264parse->last_report = new_ts;
- }
- }
- for (i = 0; i < GST_H264_MAX_PPS_COUNT; i++) {
- if ((codec_nal = h264parse->pps_nals[i])) {
- gsize nal_size = gst_buffer_get_size (codec_nal);
- GST_DEBUG_OBJECT (h264parse, "inserting PPS nal");
- if (bs) {
- ok &= gst_byte_writer_put_uint32_be (&bw, 1);
- } else {
- ok &= gst_byte_writer_put_uint32_be (&bw,
- (nal_size << (nls * 8)));
- ok &= gst_byte_writer_set_pos (&bw,
- gst_byte_writer_get_pos (&bw) - nls);
- }
- ok &= gst_byte_writer_put_buffer (&bw, codec_nal, 0, nal_size);
- h264parse->last_report = new_ts;
- }
- }
- ok &=
- gst_byte_writer_put_buffer (&bw, buffer, h264parse->idr_pos, -1);
- /* collect result and push */
- new_buf = gst_byte_writer_reset_and_get_buffer (&bw);
- gst_buffer_copy_into (new_buf, buffer, GST_BUFFER_COPY_METADATA, 0,
- -1);
- /* should already be keyframe/IDR, but it may not have been,
- * so mark it as such to avoid being discarded by picky decoder */
- GST_BUFFER_FLAG_UNSET (new_buf, GST_BUFFER_FLAG_DELTA_UNIT);
- gst_buffer_replace (&frame->out_buffer, new_buf);
- gst_buffer_unref (new_buf);
- /* some result checking seems to make some compilers happy */
- if (G_UNLIKELY (!ok)) {
- GST_ERROR_OBJECT (h264parse, "failed to insert SPS/PPS");
- }
+ if (gst_h264_parse_handle_sps_pps_nals (h264parse, buffer, frame)) {
+ h264parse->last_report = new_ts;
}
}
/* we pushed whatever we had */
@@ -2371,6 +2402,18 @@
h264parse->have_pps = FALSE;
h264parse->state &= GST_H264_PARSE_STATE_VALID_PICTURE_HEADERS;
}
+ } else if (h264parse->interval == -1) {
+ if (h264parse->idr_pos >= 0) {
+ GST_LOG_OBJECT (h264parse, "IDR nal at offset %d", h264parse->idr_pos);
+
+ gst_h264_parse_handle_sps_pps_nals (h264parse, buffer, frame);
+
+ /* we pushed whatever we had */
+ h264parse->push_codec = FALSE;
+ h264parse->have_sps = FALSE;
+ h264parse->have_pps = FALSE;
+ h264parse->state &= GST_H264_PARSE_STATE_VALID_PICTURE_HEADERS;
+ }
}
/* Fixme: setting passthrough mode casuing multiple issues:
@@ -2593,6 +2636,8 @@
h264parse->packetized = TRUE;
}
+ h264parse->in_align = align;
+
return TRUE;
/* ERRORS */
@@ -2801,7 +2846,7 @@
switch (prop_id) {
case PROP_CONFIG_INTERVAL:
- parse->interval = g_value_get_uint (value);
+ parse->interval = g_value_get_int (value);
break;
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
@@ -2819,7 +2864,7 @@
switch (prop_id) {
case PROP_CONFIG_INTERVAL:
- g_value_set_uint (value, parse->interval);
+ g_value_set_int (value, parse->interval);
break;
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
diff --git a/gst/videoparsers/gsth264parse.h b/gst/videoparsers/gsth264parse.h
index 58d818c..c71990b 100644
--- a/gst/videoparsers/gsth264parse.h
+++ b/gst/videoparsers/gsth264parse.h
@@ -71,6 +71,7 @@
/* state */
GstH264NalParser *nalparser;
guint state;
+ guint in_align;
guint align;
guint format;
gint current_off;
@@ -118,7 +119,7 @@
gboolean picture_start;
/* props */
- guint interval;
+ gint interval;
GstClockTime pending_key_unit_ts;
GstEvent *force_key_unit_event;
diff --git a/gst/videoparsers/gsth265parse.c b/gst/videoparsers/gsth265parse.c
index 26e7c48..7954793 100644
--- a/gst/videoparsers/gsth265parse.c
+++ b/gst/videoparsers/gsth265parse.c
@@ -124,10 +124,8 @@
parse_class->sink_event = GST_DEBUG_FUNCPTR (gst_h265_parse_event);
parse_class->src_event = GST_DEBUG_FUNCPTR (gst_h265_parse_src_event);
- gst_element_class_add_pad_template (gstelement_class,
- gst_static_pad_template_get (&srctemplate));
- gst_element_class_add_pad_template (gstelement_class,
- gst_static_pad_template_get (&sinktemplate));
+ gst_element_class_add_static_pad_template (gstelement_class, &srctemplate);
+ gst_element_class_add_static_pad_template (gstelement_class, &sinktemplate);
gst_element_class_set_static_metadata (gstelement_class, "H.265 parser",
"Codec/Parser/Converter/Video",
@@ -1146,7 +1144,7 @@
GST_WRITE_UINT16_BE (data, num_vps);
data += 2;
- for (i = 0; i < num_vps; i++) {
+ for (i = 0; i < GST_H265_MAX_VPS_COUNT; i++) {
if ((nal = h265parse->vps_nals[i])) {
gsize nal_size = gst_buffer_get_size (nal);
GST_WRITE_UINT16_BE (data, nal_size);
@@ -1165,7 +1163,7 @@
GST_WRITE_UINT16_BE (data, num_sps);
data += 2;
- for (i = 0; i < num_sps; i++) {
+ for (i = 0; i < GST_H265_MAX_SPS_COUNT; i++) {
if ((nal = h265parse->sps_nals[i])) {
gsize nal_size = gst_buffer_get_size (nal);
GST_WRITE_UINT16_BE (data, nal_size);
@@ -1184,7 +1182,7 @@
GST_WRITE_UINT16_BE (data, num_pps);
data += 2;
- for (i = 0; i < num_pps; i++) {
+ for (i = 0; i < GST_H265_MAX_PPS_COUNT; i++) {
if ((nal = h265parse->pps_nals[i])) {
gsize nal_size = gst_buffer_get_size (nal);
GST_WRITE_UINT16_BE (data, nal_size);
diff --git a/gst/videoparsers/gstjpeg2000parse.c b/gst/videoparsers/gstjpeg2000parse.c
new file mode 100644
index 0000000..9388771
--- /dev/null
+++ b/gst/videoparsers/gstjpeg2000parse.c
@@ -0,0 +1,532 @@
+/* GStreamer JPEG 2000 Parser
+ * Copyright (C) <2016> Grok Image Compession Inc.
+ * @author Aaron Boxer <boxerab@gmail.com>
+ *
+ * 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.
+ */
+
+#ifdef HAVE_CONFIG_H
+# include "config.h"
+#endif
+
+#include "gstjpeg2000parse.h"
+#include <gst/base/base.h>
+
+
+
+static void
+gst_jpeg2000_parse_get_subsampling (GstJPEG2000Sampling sampling, guint8 * dx,
+ guint8 * dy)
+{
+ *dx = 1;
+ *dy = 1;
+ if (sampling == GST_JPEG2000_SAMPLING_YBR422) {
+ *dx = 2;
+ } else if (sampling == GST_JPEG2000_SAMPLING_YBR420) {
+ *dx = 2;
+ *dy = 2;
+ } else if (sampling == GST_JPEG2000_SAMPLING_YBR410) {
+ *dx = 4;
+ *dy = 2;
+ }
+}
+
+#define GST_JPEG2000_JP2_SIZE_OF_BOX_ID 4
+#define GST_JPEG2000_JP2_SIZE_OF_BOX_LEN 4
+#define GST_JPEG2000_MARKER_SIZE 4
+
+
+/* J2C has 8 bytes preceding J2K magic: 4 for size of box, and 4 for fourcc */
+#define GST_JPEG2000_PARSE_SIZE_OF_J2C_PREFIX_BYTES (GST_JPEG2000_JP2_SIZE_OF_BOX_LEN + GST_JPEG2000_JP2_SIZE_OF_BOX_ID)
+
+/* SOC marker plus minimum size of SIZ marker */
+#define GST_JPEG2000_PARSE_MIN_FRAME_SIZE (GST_JPEG2000_MARKER_SIZE + GST_JPEG2000_PARSE_SIZE_OF_J2C_PREFIX_BYTES + 36)
+
+#define GST_JPEG2000_PARSE_J2K_MAGIC 0xFF4FFF51
+
+GST_DEBUG_CATEGORY (jpeg2000_parse_debug);
+#define GST_CAT_DEFAULT jpeg2000_parse_debug
+
+static GstStaticPadTemplate srctemplate =
+ GST_STATIC_PAD_TEMPLATE ("src", GST_PAD_SRC,
+ GST_PAD_ALWAYS,
+ GST_STATIC_CAPS ("image/x-jpc,"
+ " width = (int)[1, MAX], height = (int)[1, MAX],"
+ GST_JPEG2000_SAMPLING_LIST ","
+ GST_JPEG2000_COLORSPACE_LIST ","
+ " parsed = (boolean) true;"
+ "image/x-j2c,"
+ " width = (int)[1, MAX], height = (int)[1, MAX],"
+ GST_JPEG2000_SAMPLING_LIST ","
+ GST_JPEG2000_COLORSPACE_LIST "," " parsed = (boolean) true")
+ );
+
+static GstStaticPadTemplate sinktemplate =
+ GST_STATIC_PAD_TEMPLATE ("sink", GST_PAD_SINK,
+ GST_PAD_ALWAYS,
+ GST_STATIC_CAPS ("image/x-jpc,"
+ GST_JPEG2000_SAMPLING_LIST ";"
+ "image/x-jpc, "
+ GST_JPEG2000_COLORSPACE_LIST ";"
+ "image/x-j2c,"
+ GST_JPEG2000_SAMPLING_LIST ";"
+ "image/x-j2c, " GST_JPEG2000_COLORSPACE_LIST)
+ );
+
+#define parent_class gst_jpeg2000_parse_parent_class
+G_DEFINE_TYPE (GstJPEG2000Parse, gst_jpeg2000_parse, GST_TYPE_BASE_PARSE);
+
+static gboolean gst_jpeg2000_parse_start (GstBaseParse * parse);
+static gboolean gst_jpeg2000_parse_event (GstBaseParse * parse,
+ GstEvent * event);
+static GstFlowReturn gst_jpeg2000_parse_handle_frame (GstBaseParse * parse,
+ GstBaseParseFrame * frame, gint * skipsize);
+static gboolean gst_jpeg2000_parse_set_sink_caps (GstBaseParse * parse,
+ GstCaps * caps);
+
+static void
+gst_jpeg2000_parse_class_init (GstJPEG2000ParseClass * klass)
+{
+ GstElementClass *gstelement_class = GST_ELEMENT_CLASS (klass);
+ GstBaseParseClass *parse_class = GST_BASE_PARSE_CLASS (klass);
+
+ GST_DEBUG_CATEGORY_INIT (jpeg2000_parse_debug, "jpeg2000parse", 0,
+ "jpeg 2000 parser");
+
+ gst_element_class_add_static_pad_template (gstelement_class, &srctemplate);
+ gst_element_class_add_static_pad_template (gstelement_class, &sinktemplate);
+ gst_element_class_set_static_metadata (gstelement_class, "JPEG 2000 parser",
+ "Codec/Parser/Video/Image",
+ "Parses JPEG 2000 files", "Aaron Boxer <boxerab@gmail.com>");
+
+ /* Override BaseParse vfuncs */
+ parse_class->set_sink_caps =
+ GST_DEBUG_FUNCPTR (gst_jpeg2000_parse_set_sink_caps);
+ parse_class->start = GST_DEBUG_FUNCPTR (gst_jpeg2000_parse_start);
+ parse_class->sink_event = GST_DEBUG_FUNCPTR (gst_jpeg2000_parse_event);
+ parse_class->handle_frame =
+ GST_DEBUG_FUNCPTR (gst_jpeg2000_parse_handle_frame);
+}
+
+static gboolean
+gst_jpeg2000_parse_start (GstBaseParse * parse)
+{
+ GstJPEG2000Parse *jpeg2000parse = GST_JPEG2000_PARSE (parse);
+ GST_DEBUG_OBJECT (jpeg2000parse, "start");
+ gst_base_parse_set_min_frame_size (parse, GST_JPEG2000_PARSE_MIN_FRAME_SIZE);
+
+ jpeg2000parse->width = 0;
+ jpeg2000parse->height = 0;
+
+ jpeg2000parse->sampling = GST_JPEG2000_SAMPLING_NONE;
+ jpeg2000parse->colorspace = GST_JPEG2000_COLORSPACE_NONE;
+ jpeg2000parse->codec_format = GST_JPEG2000_PARSE_NO_CODEC;
+ return TRUE;
+}
+
+
+static void
+gst_jpeg2000_parse_init (GstJPEG2000Parse * jpeg2000parse)
+{
+ GST_PAD_SET_ACCEPT_INTERSECT (GST_BASE_PARSE_SINK_PAD (jpeg2000parse));
+ GST_PAD_SET_ACCEPT_TEMPLATE (GST_BASE_PARSE_SINK_PAD (jpeg2000parse));
+}
+
+static gboolean
+gst_jpeg2000_parse_set_sink_caps (GstBaseParse * parse, GstCaps * caps)
+{
+ GstJPEG2000Parse *jpeg2000parse = GST_JPEG2000_PARSE (parse);
+ GstStructure *caps_struct = gst_caps_get_structure (caps, 0);
+
+ if (gst_structure_has_name (caps_struct, "image/jp2")) {
+ jpeg2000parse->codec_format = GST_JPEG2000_PARSE_JP2;
+ } else if (gst_structure_has_name (caps_struct, "image/x-j2c")) {
+ jpeg2000parse->codec_format = GST_JPEG2000_PARSE_J2C;
+ } else if (gst_structure_has_name (caps_struct, "image/x-jpc")) {
+ jpeg2000parse->codec_format = GST_JPEG2000_PARSE_JPC;
+ }
+
+ return TRUE;
+}
+
+static gboolean
+gst_jpeg2000_parse_event (GstBaseParse * parse, GstEvent * event)
+{
+ gboolean res = GST_BASE_PARSE_CLASS (parent_class)->sink_event (parse, event);
+ switch (GST_EVENT_TYPE (event)) {
+ case GST_EVENT_FLUSH_STOP:
+ gst_base_parse_set_min_frame_size (parse,
+ GST_JPEG2000_PARSE_MIN_FRAME_SIZE);
+ break;
+ default:
+ break;
+ }
+ return res;
+}
+
+static GstFlowReturn
+gst_jpeg2000_parse_handle_frame (GstBaseParse * parse,
+ GstBaseParseFrame * frame, gint * skipsize)
+{
+ GstJPEG2000Parse *jpeg2000parse = GST_JPEG2000_PARSE (parse);
+ GstMapInfo map;
+ GstByteReader reader;
+ GstFlowReturn ret = GST_FLOW_OK;
+ guint eoc_offset = 0;
+ GstCaps *current_caps = NULL;
+ GstStructure *current_caps_struct = NULL;
+ GstJPEG2000Colorspace colorspace = GST_JPEG2000_COLORSPACE_NONE;
+ guint x0, y0, x1, y1;
+ guint width = 0, height = 0;
+ guint8 dx[GST_JPEG2000_PARSE_MAX_SUPPORTED_COMPONENTS];
+ guint8 dy[GST_JPEG2000_PARSE_MAX_SUPPORTED_COMPONENTS];
+ guint16 numcomps;
+ guint16 compno;
+ GstJPEG2000Sampling parsed_sampling = GST_JPEG2000_SAMPLING_NONE;
+ GstJPEG2000Sampling sink_sampling = GST_JPEG2000_SAMPLING_NONE;
+ GstJPEG2000Sampling source_sampling = GST_JPEG2000_SAMPLING_NONE;
+ guint magic_offset = 0;
+ guint j2c_box_id_offset = 0;
+ guint num_prefix_bytes = 0; /* number of bytes to skip before actual code stream */
+ GstCaps *src_caps = NULL;
+ guint frame_size = 0;
+ gboolean is_j2c = jpeg2000parse->codec_format == GST_JPEG2000_PARSE_J2C;
+
+ if (!gst_buffer_map (frame->buffer, &map, GST_MAP_READ)) {
+ GST_ERROR_OBJECT (jpeg2000parse, "Unable to map buffer");
+ return GST_FLOW_ERROR;
+ }
+
+ gst_byte_reader_init (&reader, map.data, map.size);
+ num_prefix_bytes = GST_JPEG2000_MARKER_SIZE;
+
+ if (is_j2c) {
+ num_prefix_bytes +=
+ GST_JPEG2000_JP2_SIZE_OF_BOX_LEN + GST_JPEG2000_JP2_SIZE_OF_BOX_ID;
+ /* check for "jp2c" */
+ j2c_box_id_offset = gst_byte_reader_masked_scan_uint32 (&reader, 0xffffffff,
+ GST_MAKE_FOURCC ('j', 'p', '2', 'c'), 0,
+ gst_byte_reader_get_remaining (&reader));
+
+ if (j2c_box_id_offset == -1) {
+ GST_ELEMENT_ERROR (jpeg2000parse, STREAM, DECODE, NULL,
+ ("Missing contiguous code stream box for j2c stream"));
+ ret = GST_FLOW_ERROR;
+ goto beach;
+ }
+ }
+
+ /* Look for magic. If found, skip to beginning of frame */
+ magic_offset = gst_byte_reader_masked_scan_uint32 (&reader, 0xffffffff,
+ GST_JPEG2000_PARSE_J2K_MAGIC, 0, gst_byte_reader_get_remaining (&reader));
+ if (magic_offset == -1) {
+ *skipsize = gst_byte_reader_get_size (&reader) - num_prefix_bytes;
+ goto beach;
+ }
+
+ /* see if we need to skip any bytes at beginning of frame */
+ GST_DEBUG_OBJECT (jpeg2000parse, "Found magic at offset = %d", magic_offset);
+ if (magic_offset > 0) {
+ *skipsize = magic_offset;
+ /* J2C has 8 bytes preceding J2K magic */
+ if (is_j2c)
+ *skipsize -= GST_JPEG2000_PARSE_SIZE_OF_J2C_PREFIX_BYTES;
+ if (*skipsize > 0)
+ goto beach;
+ }
+
+ if (is_j2c) {
+ /* sanity check on box id offset */
+ if (j2c_box_id_offset + GST_JPEG2000_JP2_SIZE_OF_BOX_ID != magic_offset) {
+ GST_ELEMENT_ERROR (jpeg2000parse, STREAM, DECODE, NULL,
+ ("Corrupt contiguous code stream box for j2c stream"));
+ ret = GST_FLOW_ERROR;
+ goto beach;
+ }
+
+ /* check that we have enough bytes for the J2C box length */
+ if (j2c_box_id_offset < GST_JPEG2000_JP2_SIZE_OF_BOX_LEN) {
+ *skipsize = gst_byte_reader_get_size (&reader) - num_prefix_bytes;
+ goto beach;
+ }
+
+ if (!gst_byte_reader_skip (&reader,
+ j2c_box_id_offset - GST_JPEG2000_JP2_SIZE_OF_BOX_LEN))
+ goto beach;
+
+ /* read the box length, and adjust num_prefix_bytes accordingly */
+ if (!gst_byte_reader_get_uint32_be (&reader, &frame_size))
+ goto beach;
+ num_prefix_bytes -= GST_JPEG2000_JP2_SIZE_OF_BOX_LEN;
+
+ /* bail out if not enough data for frame */
+ if ((gst_byte_reader_get_size (&reader) < frame_size))
+ goto beach;
+ }
+
+ /* 2 to skip marker size, and another 2 to skip rsiz field */
+ if (!gst_byte_reader_skip (&reader, num_prefix_bytes + 2 + 2))
+ goto beach;
+
+ if (!gst_byte_reader_get_uint32_be (&reader, &x1))
+ goto beach;
+
+ if (!gst_byte_reader_get_uint32_be (&reader, &y1))
+ goto beach;
+
+ if (!gst_byte_reader_get_uint32_be (&reader, &x0))
+ goto beach;
+
+ if (!gst_byte_reader_get_uint32_be (&reader, &y0))
+ goto beach;
+
+ /* sanity check on image dimensions */
+ if (x1 < x0 || y1 < y0) {
+ GST_ELEMENT_ERROR (jpeg2000parse, STREAM, DECODE, NULL,
+ ("Nonsensical image dimensions %d,%d,%d,%d", x0, y0, x1, y1));
+ ret = GST_FLOW_ERROR;
+ goto beach;
+ }
+
+ width = x1 - x0;
+ height = y1 - y0;
+
+ GST_DEBUG_OBJECT (jpeg2000parse, "Parsed image dimensions %d,%d", width,
+ height);
+
+ /* skip tile dimensions */
+ if (!gst_byte_reader_skip (&reader, 4 * 4))
+ goto beach;
+
+ /* read number of components */
+ if (!gst_byte_reader_get_uint16_be (&reader, &numcomps))
+ goto beach;
+
+ if (numcomps == 2 || numcomps > GST_JPEG2000_PARSE_MAX_SUPPORTED_COMPONENTS) {
+ GST_ELEMENT_ERROR (jpeg2000parse, STREAM, DECODE, NULL,
+ ("Unsupported number of components %d", numcomps));
+ ret = GST_FLOW_NOT_NEGOTIATED;
+ goto beach;
+ }
+
+ current_caps = gst_pad_get_current_caps (GST_BASE_PARSE_SINK_PAD (parse));
+ if (!current_caps) {
+ GST_ERROR_OBJECT (jpeg2000parse, "Unable to get current caps");
+ ret = GST_FLOW_NOT_NEGOTIATED;
+ goto beach;
+ }
+
+ current_caps_struct = gst_caps_get_structure (current_caps, 0);
+ if (!current_caps_struct) {
+ GST_ERROR_OBJECT (jpeg2000parse,
+ "Unable to get structure of current caps struct");
+ ret = GST_FLOW_NOT_NEGOTIATED;
+ goto beach;
+ }
+
+ colorspace =
+ gst_jpeg2000_colorspace_from_string (gst_structure_get_string
+ (current_caps_struct, "colorspace"));
+ sink_sampling =
+ gst_jpeg2000_sampling_from_string (gst_structure_get_string
+ (current_caps_struct, "sampling"));
+
+ for (compno = 0; compno < numcomps; ++compno) {
+
+ /* skip Ssiz (precision and signed/unsigned bit ) */
+ if (!gst_byte_reader_skip (&reader, 1))
+ goto beach;
+
+ if (!gst_byte_reader_get_uint8 (&reader, dx + compno))
+ goto beach;
+
+ if (!gst_byte_reader_get_uint8 (&reader, dy + compno))
+ goto beach;
+
+ GST_DEBUG_OBJECT (jpeg2000parse,
+ "Parsed sub-sampling %d,%d for component %d", dx[compno], dy[compno],
+ compno);
+ }
+
+ /*** sanity check on sub-sampling *****/
+ if (dx[0] != 1 || dy[0] != 1) {
+ GST_WARNING_OBJECT (jpeg2000parse, "Sub-sampled luma channel");
+ }
+ if (dx[1] != dx[2] || dy[1] != dy[2]) {
+ GST_WARNING_OBJECT (jpeg2000parse,
+ "Chroma channel sub-sampling factors are not equal");
+ }
+ for (compno = 0; compno < numcomps; ++compno) {
+ if (colorspace != GST_JPEG2000_COLORSPACE_NONE
+ && (colorspace != GST_JPEG2000_COLORSPACE_YUV)
+ && (dx[compno] > 1 || dy[compno] > 1)) {
+ GST_WARNING_OBJECT (jpeg2000parse,
+ "Sub-sampled RGB or monochrome color spaces");
+ }
+ if (sink_sampling != GST_JPEG2000_SAMPLING_NONE) {
+ guint8 dx_caps, dy_caps;
+ gst_jpeg2000_parse_get_subsampling (sink_sampling, &dx_caps, &dy_caps);
+ if (dx_caps != dx[compno] || dy_caps != dy[compno]) {
+ GstJPEG2000Colorspace inferred_colorspace =
+ GST_JPEG2000_COLORSPACE_NONE;
+ GST_WARNING_OBJECT (jpeg2000parse,
+ "Sink caps sub-sampling %d,%d for channel %d does not match stream sub-sampling %d,%d",
+ dx_caps, dy_caps, compno, dx[compno], dy[compno]);
+ /* try to guess correct color space */
+ if (gst_jpeg2000_sampling_is_mono (sink_sampling))
+ inferred_colorspace = GST_JPEG2000_COLORSPACE_GRAY;
+ else if (gst_jpeg2000_sampling_is_rgb (sink_sampling))
+ inferred_colorspace = GST_JPEG2000_COLORSPACE_RGB;
+ else if (gst_jpeg2000_sampling_is_yuv (sink_sampling))
+ inferred_colorspace = GST_JPEG2000_COLORSPACE_YUV;
+ else if (colorspace)
+ inferred_colorspace = colorspace;
+ if (inferred_colorspace != GST_JPEG2000_COLORSPACE_NONE) {
+ sink_sampling = GST_JPEG2000_SAMPLING_NONE;
+ colorspace = inferred_colorspace;
+ break;
+ } else {
+ /* unrecognized sink_sampling and no colorspace */
+ GST_ERROR_OBJECT (jpeg2000parse,
+ "Unrecognized sink sampling field and no sink colorspace field");
+ ret = GST_FLOW_NOT_NEGOTIATED;
+ goto beach;
+ }
+ }
+ }
+ }
+ /*************************************/
+
+ /* if colorspace is present, we can work out the parsed_sampling field */
+ if (colorspace != GST_JPEG2000_COLORSPACE_NONE) {
+ if (colorspace == GST_JPEG2000_COLORSPACE_YUV) {
+ if (numcomps == 4) {
+ guint i;
+ parsed_sampling = GST_JPEG2000_SAMPLING_YBRA4444_EXT;
+ for (i = 0; i < 4; ++i) {
+ if (dx[i] > 1 || dy[i] > 1) {
+ GST_WARNING_OBJECT (jpeg2000parse, "Sub-sampled YUVA images");
+ }
+ }
+ } else if (numcomps == 3) {
+ /* use sub-sampling from U chroma channel */
+ if (dx[1] == 1 && dy[1] == 1) {
+ parsed_sampling = GST_JPEG2000_SAMPLING_YBR444;
+ } else if (dx[1] == 2 && dy[1] == 2) {
+ parsed_sampling = GST_JPEG2000_SAMPLING_YBR420;
+ } else if (dx[1] == 4 && dy[1] == 2) {
+ parsed_sampling = GST_JPEG2000_SAMPLING_YBR410;
+ } else if (dx[1] == 2 && dy[1] == 1) {
+ parsed_sampling = GST_JPEG2000_SAMPLING_YBR422;
+ } else {
+ GST_WARNING_OBJECT (jpeg2000parse,
+ "Unsupported sub-sampling factors %d,%d", dx[1], dy[1]);
+ /* best effort */
+ parsed_sampling = GST_JPEG2000_SAMPLING_YBR444;
+ }
+ }
+ } else if (colorspace == GST_JPEG2000_COLORSPACE_GRAY) {
+ parsed_sampling = GST_JPEG2000_SAMPLING_GRAYSCALE;
+ } else {
+ parsed_sampling =
+ (numcomps ==
+ 4) ? GST_JPEG2000_SAMPLING_RGBA : GST_JPEG2000_COLORSPACE_RGB;
+ }
+ } else {
+ if (gst_jpeg2000_sampling_is_mono (sink_sampling)) {
+ colorspace = GST_JPEG2000_COLORSPACE_GRAY;
+ } else if (gst_jpeg2000_sampling_is_rgb (sink_sampling)) {
+ colorspace = GST_JPEG2000_COLORSPACE_RGB;
+ } else {
+ /* best effort */
+ colorspace = GST_JPEG2000_COLORSPACE_YUV;
+ }
+ }
+
+ /* now we can set the source caps, if something has changed */
+ source_sampling =
+ sink_sampling !=
+ GST_JPEG2000_SAMPLING_NONE ? sink_sampling : parsed_sampling;
+ if (width != jpeg2000parse->width || height != jpeg2000parse->height
+ || jpeg2000parse->sampling != source_sampling
+ || jpeg2000parse->colorspace != colorspace) {
+ gint fr_num = 0, fr_denom = 0;
+
+ jpeg2000parse->width = width;
+ jpeg2000parse->height = height;
+ jpeg2000parse->sampling = source_sampling;
+ jpeg2000parse->colorspace = colorspace;
+
+ src_caps =
+ gst_caps_new_simple (gst_structure_get_name (current_caps_struct),
+ "width", G_TYPE_INT, width, "height", G_TYPE_INT, height,
+ "colorspace", G_TYPE_STRING,
+ gst_jpeg2000_colorspace_to_string (colorspace), "sampling",
+ G_TYPE_STRING, gst_jpeg2000_sampling_to_string (source_sampling), NULL);
+
+ if (gst_structure_get_fraction (current_caps_struct, "framerate", &fr_num,
+ &fr_denom)) {
+ gst_caps_set_simple (src_caps, "framerate", GST_TYPE_FRACTION, fr_num,
+ fr_denom, NULL);
+ } else {
+ GST_WARNING_OBJECT (jpeg2000parse, "No framerate set");
+ }
+ if (!gst_pad_set_caps (GST_BASE_PARSE_SRC_PAD (parse), src_caps)) {
+ GST_ERROR_OBJECT (jpeg2000parse, "Unable to set source caps");
+ ret = GST_FLOW_NOT_NEGOTIATED;
+ gst_caps_unref (src_caps);
+ goto beach;
+ }
+ gst_caps_unref (src_caps);
+ }
+ /*************************************************/
+
+ /* look for EOC to mark frame end */
+ /* look for EOC end of codestream marker */
+ eoc_offset = gst_byte_reader_masked_scan_uint32 (&reader, 0x0000ffff,
+ 0xFFD9, 0, gst_byte_reader_get_remaining (&reader));
+
+ if (eoc_offset != -1) {
+ /* add 4 for eoc marker and eoc marker size */
+ guint eoc_frame_size = gst_byte_reader_get_pos (&reader) + eoc_offset + 4;
+ GST_DEBUG_OBJECT (jpeg2000parse,
+ "Found EOC at offset = %d, frame size = %d", eoc_offset,
+ eoc_frame_size);
+
+ /* bail out if not enough data for frame */
+ if (gst_byte_reader_get_size (&reader) < eoc_frame_size)
+ goto beach;
+
+ if (frame_size && frame_size != eoc_frame_size) {
+ GST_WARNING_OBJECT (jpeg2000parse,
+ "Frame size %d from contiguous code size does not equal frame size %d signalled by eoc",
+ frame_size, eoc_frame_size);
+ }
+ frame_size = eoc_frame_size;
+ }
+
+ /* clean up and finish frame */
+ if (current_caps)
+ gst_caps_unref (current_caps);
+ gst_buffer_unmap (frame->buffer, &map);
+ return gst_base_parse_finish_frame (parse, frame, frame_size);
+
+beach:
+ if (current_caps)
+ gst_caps_unref (current_caps);
+ gst_buffer_unmap (frame->buffer, &map);
+ return ret;
+}
diff --git a/gst/videoparsers/gstjpeg2000parse.h b/gst/videoparsers/gstjpeg2000parse.h
new file mode 100644
index 0000000..93236db
--- /dev/null
+++ b/gst/videoparsers/gstjpeg2000parse.h
@@ -0,0 +1,79 @@
+/* GStreamer JPEG 2000 Parser
+ * Copyright (C) <2016> Grok Image Compression Inc.
+ * @author Aaron Boxer <boxerab@gmail.com>
+ *
+ * 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.
+ */
+
+#ifndef __GST_JPEG2000_PARSE_H__
+#define __GST_JPEG2000_PARSE_H__
+
+#include <gst/gst.h>
+#include <gst/base/gstadapter.h>
+#include <gst/base/gstbaseparse.h>
+#include <gst/codecparsers/gstjpeg2000sampling.h>
+
+G_BEGIN_DECLS
+#define GST_TYPE_JPEG2000_PARSE \
+ (gst_jpeg2000_parse_get_type())
+#define GST_JPEG2000_PARSE(obj) \
+ (G_TYPE_CHECK_INSTANCE_CAST((obj),GST_TYPE_JPEG2000_PARSE,GstJPEG2000Parse))
+#define GST_JPEG2000_PARSE_CLASS(klass) \
+ (G_TYPE_CHECK_CLASS_CAST((klass),GST_TYPE_JPEG2000_PARSE,GstJPEG2000ParseClass))
+#define GST_IS_JPEG2000_PARSE(obj) \
+ (G_TYPE_CHECK_INSTANCE_TYPE((obj),GST_TYPE_JPEG2000_PARSE))
+#define GST_IS_JPEG2000_PARSE_CLASS(klass) \
+ (G_TYPE_CHECK_CLASS_TYPE((klass),GST_TYPE_JPEG2000_PARSE))
+ GType gst_jpeg2000_parse_get_type (void);
+
+typedef struct _GstJPEG2000Parse GstJPEG2000Parse;
+typedef struct _GstJPEG2000ParseClass GstJPEG2000ParseClass;
+
+#define GST_JPEG2000_PARSE_MAX_SUPPORTED_COMPONENTS 4
+
+typedef enum
+{
+ GST_JPEG2000_PARSE_NO_CODEC,
+ GST_JPEG2000_PARSE_JPC, /* jpeg 2000 code stream */
+ GST_JPEG2000_PARSE_J2C, /* jpeg 2000 contiguous code stream box plus code stream */
+ GST_JPEG2000_PARSE_JP2, /* jpeg 2000 part I file format */
+
+} GstJPEG2000ParseFormats;
+
+
+struct _GstJPEG2000Parse
+{
+ GstBaseParse baseparse;
+
+
+ guint width;
+ guint height;
+
+ GstJPEG2000Sampling sampling;
+ GstJPEG2000Colorspace colorspace;
+ GstJPEG2000ParseFormats codec_format;
+};
+
+struct _GstJPEG2000ParseClass
+{
+ GstBaseParseClass parent_class;
+
+
+};
+
+
+G_END_DECLS
+#endif
diff --git a/gst/videoparsers/gstmpeg4videoparse.c b/gst/videoparsers/gstmpeg4videoparse.c
index a1fd3b2..83f6f94 100644
--- a/gst/videoparsers/gstmpeg4videoparse.c
+++ b/gst/videoparsers/gstmpeg4videoparse.c
@@ -154,10 +154,8 @@
0, 3600, DEFAULT_CONFIG_INTERVAL,
G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
- gst_element_class_add_pad_template (element_class,
- gst_static_pad_template_get (&src_template));
- gst_element_class_add_pad_template (element_class,
- gst_static_pad_template_get (&sink_template));
+ gst_element_class_add_static_pad_template (element_class, &src_template);
+ gst_element_class_add_static_pad_template (element_class, &sink_template);
gst_element_class_set_static_metadata (element_class,
"MPEG 4 video elementary stream parser", "Codec/Parser/Video",
diff --git a/gst/videoparsers/gstmpegvideoparse.c b/gst/videoparsers/gstmpegvideoparse.c
index bf71a3e..6896339 100644
--- a/gst/videoparsers/gstmpegvideoparse.c
+++ b/gst/videoparsers/gstmpegvideoparse.c
@@ -146,10 +146,8 @@
"Split frame when encountering GOP", DEFAULT_PROP_GOP_SPLIT,
G_PARAM_CONSTRUCT | G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
- gst_element_class_add_pad_template (element_class,
- gst_static_pad_template_get (&src_template));
- gst_element_class_add_pad_template (element_class,
- gst_static_pad_template_get (&sink_template));
+ gst_element_class_add_static_pad_template (element_class, &src_template);
+ gst_element_class_add_static_pad_template (element_class, &sink_template);
gst_element_class_set_static_metadata (element_class,
"MPEG video elementary stream parser",
diff --git a/gst/videoparsers/gstpngparse.c b/gst/videoparsers/gstpngparse.c
index e9d0768..6df53bd 100644
--- a/gst/videoparsers/gstpngparse.c
+++ b/gst/videoparsers/gstpngparse.c
@@ -63,10 +63,8 @@
GST_DEBUG_CATEGORY_INIT (png_parse_debug, "pngparse", 0, "png parser");
- gst_element_class_add_pad_template (gstelement_class,
- gst_static_pad_template_get (&srctemplate));
- gst_element_class_add_pad_template (gstelement_class,
- gst_static_pad_template_get (&sinktemplate));
+ gst_element_class_add_static_pad_template (gstelement_class, &srctemplate);
+ gst_element_class_add_static_pad_template (gstelement_class, &sinktemplate);
gst_element_class_set_static_metadata (gstelement_class, "PNG parser",
"Codec/Parser/Video/Image",
"Parses PNG files", "Olivier Crete <olivier.crete@collabora.com>");
diff --git a/gst/videoparsers/gstvc1parse.c b/gst/videoparsers/gstvc1parse.c
index e72f4f6..915e0fc 100644
--- a/gst/videoparsers/gstvc1parse.c
+++ b/gst/videoparsers/gstvc1parse.c
@@ -222,10 +222,8 @@
gobject_class->finalize = gst_vc1_parse_finalize;
- gst_element_class_add_pad_template (element_class,
- gst_static_pad_template_get (&srctemplate));
- gst_element_class_add_pad_template (element_class,
- gst_static_pad_template_get (&sinktemplate));
+ gst_element_class_add_static_pad_template (element_class, &srctemplate);
+ gst_element_class_add_static_pad_template (element_class, &sinktemplate);
gst_element_class_set_static_metadata (element_class, "VC1 parser",
"Codec/Parser/Converter/Video",
diff --git a/gst/videoparsers/plugin.c b/gst/videoparsers/plugin.c
index 79d1df6..2deddf4 100644
--- a/gst/videoparsers/plugin.c
+++ b/gst/videoparsers/plugin.c
@@ -28,6 +28,7 @@
#include "gstmpegvideoparse.h"
#include "gstmpeg4videoparse.h"
#include "gstpngparse.h"
+#include "gstjpeg2000parse.h"
#include "gstvc1parse.h"
#include "gsth265parse.h"
@@ -48,6 +49,8 @@
GST_RANK_PRIMARY + 1, GST_TYPE_MPEG4VIDEO_PARSE);
ret |= gst_element_register (plugin, "pngparse",
GST_RANK_PRIMARY, GST_TYPE_PNG_PARSE);
+ ret |= gst_element_register (plugin, "jpeg2000parse",
+ GST_RANK_PRIMARY, GST_TYPE_JPEG2000_PARSE);
ret |= gst_element_register (plugin, "h265parse",
GST_RANK_SECONDARY, GST_TYPE_H265_PARSE);
ret |= gst_element_register (plugin, "vc1parse",
diff --git a/gst/videosignal/Makefile.in b/gst/videosignal/Makefile.in
index 2561d03..54fe672 100644
--- a/gst/videosignal/Makefile.in
+++ b/gst/videosignal/Makefile.in
@@ -303,6 +303,8 @@
DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
DSYMUTIL = @DSYMUTIL@
DTLS_CFLAGS = @DTLS_CFLAGS@
DTLS_LIBS = @DTLS_LIBS@
@@ -518,6 +520,8 @@
LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
LIPO = @LIPO@
LN_S = @LN_S@
LOCALEDIR = @LOCALEDIR@
@@ -644,8 +648,6 @@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
SNDIO_LIBS = @SNDIO_LIBS@
@@ -690,6 +692,8 @@
WAYLAND_LIBS = @WAYLAND_LIBS@
WEBP_CFLAGS = @WEBP_CFLAGS@
WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
WGET = @WGET@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
diff --git a/gst/vmnc/Makefile.in b/gst/vmnc/Makefile.in
index c0c3e00..1d80e67 100644
--- a/gst/vmnc/Makefile.in
+++ b/gst/vmnc/Makefile.in
@@ -302,6 +302,8 @@
DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
DSYMUTIL = @DSYMUTIL@
DTLS_CFLAGS = @DTLS_CFLAGS@
DTLS_LIBS = @DTLS_LIBS@
@@ -517,6 +519,8 @@
LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
LIPO = @LIPO@
LN_S = @LN_S@
LOCALEDIR = @LOCALEDIR@
@@ -643,8 +647,6 @@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
SNDIO_LIBS = @SNDIO_LIBS@
@@ -689,6 +691,8 @@
WAYLAND_LIBS = @WAYLAND_LIBS@
WEBP_CFLAGS = @WEBP_CFLAGS@
WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
WGET = @WGET@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
diff --git a/gst/vmnc/vmncdec.c b/gst/vmnc/vmncdec.c
index 5504302..e8d498c 100644
--- a/gst/vmnc/vmncdec.c
+++ b/gst/vmnc/vmncdec.c
@@ -93,13 +93,12 @@
decoder_class->set_format = gst_vmnc_dec_set_format;
decoder_class->sink_event = gst_vmnc_dec_sink_event;
- gst_element_class_add_pad_template (gstelement_class,
- gst_static_pad_template_get (&vmnc_dec_src_factory));
- gst_element_class_add_pad_template (gstelement_class,
- gst_static_pad_template_get (&vmnc_dec_sink_factory));
+ gst_element_class_add_static_pad_template (gstelement_class,
+ &vmnc_dec_src_factory);
+ gst_element_class_add_static_pad_template (gstelement_class,
+ &vmnc_dec_sink_factory);
gst_element_class_set_static_metadata (gstelement_class, "VMnc video decoder",
- "Codec/Decoder/Video",
- "Decode VmWare video to raw (RGB) video",
+ "Codec/Decoder/Video", "Decode VmWare video to raw (RGB) video",
"Michael Smith <msmith@xiph.org>");
GST_DEBUG_CATEGORY_INIT (vmnc_debug, "vmncdec", 0, "VMnc decoder");
diff --git a/gst/y4m/Makefile.in b/gst/y4m/Makefile.in
index eb19efb..e861810 100644
--- a/gst/y4m/Makefile.in
+++ b/gst/y4m/Makefile.in
@@ -302,6 +302,8 @@
DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
DSYMUTIL = @DSYMUTIL@
DTLS_CFLAGS = @DTLS_CFLAGS@
DTLS_LIBS = @DTLS_LIBS@
@@ -517,6 +519,8 @@
LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
LIPO = @LIPO@
LN_S = @LN_S@
LOCALEDIR = @LOCALEDIR@
@@ -643,8 +647,6 @@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
SNDIO_LIBS = @SNDIO_LIBS@
@@ -689,6 +691,8 @@
WAYLAND_LIBS = @WAYLAND_LIBS@
WEBP_CFLAGS = @WEBP_CFLAGS@
WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
WGET = @WGET@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
diff --git a/gst/y4m/gsty4mdec.c b/gst/y4m/gsty4mdec.c
index c6b2065..30966b0 100644
--- a/gst/y4m/gsty4mdec.c
+++ b/gst/y4m/gsty4mdec.c
@@ -106,10 +106,10 @@
element_class->change_state = GST_DEBUG_FUNCPTR (gst_y4m_dec_change_state);
- gst_element_class_add_pad_template (element_class,
- gst_static_pad_template_get (&gst_y4m_dec_src_template));
- gst_element_class_add_pad_template (element_class,
- gst_static_pad_template_get (&gst_y4m_dec_sink_template));
+ gst_element_class_add_static_pad_template (element_class,
+ &gst_y4m_dec_src_template);
+ gst_element_class_add_static_pad_template (element_class,
+ &gst_y4m_dec_sink_template);
gst_element_class_set_static_metadata (element_class,
"YUV4MPEG demuxer/decoder", "Codec/Demuxer",
diff --git a/gst/yadif/Makefile.in b/gst/yadif/Makefile.in
index 724c7f7..4a54932 100644
--- a/gst/yadif/Makefile.in
+++ b/gst/yadif/Makefile.in
@@ -300,6 +300,8 @@
DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
DSYMUTIL = @DSYMUTIL@
DTLS_CFLAGS = @DTLS_CFLAGS@
DTLS_LIBS = @DTLS_LIBS@
@@ -515,6 +517,8 @@
LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
LIPO = @LIPO@
LN_S = @LN_S@
LOCALEDIR = @LOCALEDIR@
@@ -641,8 +645,6 @@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
SNDIO_LIBS = @SNDIO_LIBS@
@@ -687,6 +689,8 @@
WAYLAND_LIBS = @WAYLAND_LIBS@
WEBP_CFLAGS = @WEBP_CFLAGS@
WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
WGET = @WGET@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
diff --git a/gst/yadif/gstyadif.c b/gst/yadif/gstyadif.c
index 1dcf2ca..b75894e 100644
--- a/gst/yadif/gstyadif.c
+++ b/gst/yadif/gstyadif.c
@@ -131,10 +131,10 @@
/* Setting up pads and setting metadata should be moved to
base_class_init if you intend to subclass this class. */
- gst_element_class_add_pad_template (GST_ELEMENT_CLASS (klass),
- gst_static_pad_template_get (&gst_yadif_sink_template));
- gst_element_class_add_pad_template (GST_ELEMENT_CLASS (klass),
- gst_static_pad_template_get (&gst_yadif_src_template));
+ gst_element_class_add_static_pad_template (GST_ELEMENT_CLASS (klass),
+ &gst_yadif_sink_template);
+ gst_element_class_add_static_pad_template (GST_ELEMENT_CLASS (klass),
+ &gst_yadif_src_template);
gst_element_class_set_static_metadata (GST_ELEMENT_CLASS (klass),
"YADIF deinterlacer", "Video/Filter",
diff --git a/m4/Makefile.in b/m4/Makefile.in
index 83c49f2..33f94dd 100644
--- a/m4/Makefile.in
+++ b/m4/Makefile.in
@@ -216,6 +216,8 @@
DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
DSYMUTIL = @DSYMUTIL@
DTLS_CFLAGS = @DTLS_CFLAGS@
DTLS_LIBS = @DTLS_LIBS@
@@ -431,6 +433,8 @@
LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
LIPO = @LIPO@
LN_S = @LN_S@
LOCALEDIR = @LOCALEDIR@
@@ -557,8 +561,6 @@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
SNDIO_LIBS = @SNDIO_LIBS@
@@ -603,6 +605,8 @@
WAYLAND_LIBS = @WAYLAND_LIBS@
WEBP_CFLAGS = @WEBP_CFLAGS@
WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
WGET = @WGET@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
diff --git a/pkgconfig/Makefile.in b/pkgconfig/Makefile.in
index d70331d..af727b5 100644
--- a/pkgconfig/Makefile.in
+++ b/pkgconfig/Makefile.in
@@ -278,6 +278,8 @@
DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
DSYMUTIL = @DSYMUTIL@
DTLS_CFLAGS = @DTLS_CFLAGS@
DTLS_LIBS = @DTLS_LIBS@
@@ -493,6 +495,8 @@
LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
LIPO = @LIPO@
LN_S = @LN_S@
LOCALEDIR = @LOCALEDIR@
@@ -619,8 +623,6 @@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
SNDIO_LIBS = @SNDIO_LIBS@
@@ -665,6 +667,8 @@
WAYLAND_LIBS = @WAYLAND_LIBS@
WEBP_CFLAGS = @WEBP_CFLAGS@
WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
WGET = @WGET@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
diff --git a/pkgconfig/gstreamer-player-uninstalled.pc.in b/pkgconfig/gstreamer-player-uninstalled.pc.in
index 5a495f4..5c2c0d7 100644
--- a/pkgconfig/gstreamer-player-uninstalled.pc.in
+++ b/pkgconfig/gstreamer-player-uninstalled.pc.in
@@ -5,7 +5,7 @@
Name: GStreamer Player, Uninstalled
Description: GStreamer Player convenience library, uninstalled
-Requires: gstreamer-@GST_API_VERSION@
+Requires: gstreamer-@GST_API_VERSION@ gstreamer-video-@GST_API_VERSION@
Version: @VERSION@
Libs: -L${libdir} -lgstplayer-@GST_API_VERSION@
Cflags: -I${includedir}
diff --git a/pkgconfig/gstreamer-player.pc.in b/pkgconfig/gstreamer-player.pc.in
index f296e7f..6400261 100644
--- a/pkgconfig/gstreamer-player.pc.in
+++ b/pkgconfig/gstreamer-player.pc.in
@@ -5,7 +5,7 @@
Name: GStreamer Player
Description: GStreamer Player convenience library
-Requires: gstreamer-@GST_API_VERSION@
+Requires: gstreamer-@GST_API_VERSION@ gstreamer-video-@GST_API_VERSION@
Version: @VERSION@
Libs: -L${libdir} -lgstplayer-@GST_API_VERSION@
Cflags: -I${includedir}
diff --git a/po/af.gmo b/po/af.gmo
index 1cd8b43..11b3633 100644
--- a/po/af.gmo
+++ b/po/af.gmo
Binary files differ
diff --git a/po/af.po b/po/af.po
index d9d7032..f27267b 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-06-09 11:22+0300\n"
+"POT-Creation-Date: 2016-07-06 11:51+0300\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"
@@ -16,6 +16,12 @@
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
+msgid "failed to draw pattern"
+msgstr ""
+
+msgid "A GL error occured"
+msgstr ""
+
msgid "format wasn't negotiated before get function"
msgstr ""
@@ -130,11 +136,23 @@
msgid "Couldn't load DVB channel configuration file: %s"
msgstr ""
-msgid "DVB channel configuration file doesn't contain any channels"
+#, c-format
+msgid "Couldn't find details for DVB channel %s"
msgstr ""
#, c-format
-msgid "Couldn't find details for DVB channel %s"
+msgid "No properties for the DVB channel %s"
+msgstr ""
+
+#, c-format
+msgid "Failed to set properties for the DVB channel %s"
+msgstr ""
+
+#, c-format
+msgid "Couldn't find DVB channel configuration file: %s"
+msgstr ""
+
+msgid "DVB channel configuration file doesn't contain any channels"
msgstr ""
#~ msgid "Could not write to file \"%s\"."
diff --git a/po/az.gmo b/po/az.gmo
index b2fd744..6167267 100644
--- a/po/az.gmo
+++ b/po/az.gmo
Binary files differ
diff --git a/po/az.po b/po/az.po
index b869900..af87a1f 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-06-09 11:22+0300\n"
+"POT-Creation-Date: 2016-07-06 11:51+0300\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"
@@ -17,6 +17,12 @@
"Content-Transfer-Encoding: 8bit\n"
"X-Generator: KBabel 1.0.2\n"
+msgid "failed to draw pattern"
+msgstr ""
+
+msgid "A GL error occured"
+msgstr ""
+
msgid "format wasn't negotiated before get function"
msgstr ""
@@ -131,11 +137,23 @@
msgid "Couldn't load DVB channel configuration file: %s"
msgstr ""
-msgid "DVB channel configuration file doesn't contain any channels"
+#, c-format
+msgid "Couldn't find details for DVB channel %s"
msgstr ""
#, c-format
-msgid "Couldn't find details for DVB channel %s"
+msgid "No properties for the DVB channel %s"
+msgstr ""
+
+#, c-format
+msgid "Failed to set properties for the DVB channel %s"
+msgstr ""
+
+#, c-format
+msgid "Couldn't find DVB channel configuration file: %s"
+msgstr ""
+
+msgid "DVB channel configuration file doesn't contain any channels"
msgstr ""
#~ msgid "Could not write to file \"%s\"."
diff --git a/po/bg.gmo b/po/bg.gmo
index 06ef3b2..928df85 100644
--- a/po/bg.gmo
+++ b/po/bg.gmo
Binary files differ
diff --git a/po/bg.po b/po/bg.po
index 7af8a32..a5f8f1d 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-06-09 11:22+0300\n"
+"POT-Creation-Date: 2016-07-06 11:51+0300\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"
@@ -18,6 +18,12 @@
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
+msgid "failed to draw pattern"
+msgstr ""
+
+msgid "A GL error occured"
+msgstr ""
+
msgid "format wasn't negotiated before get function"
msgstr "форматът не е бил уточнен преди извикване на функцията за получаване"
@@ -136,11 +142,25 @@
"Файлът с настройките на цифровото видеоръзпръскване (DVB) „%s“ не може да "
"бъде прочетен"
+#, c-format
+msgid "Couldn't find details for DVB channel %s"
+msgstr "Липсват данни за канала за цифрово видеоръзпръскване (DVB) „%s“"
+
+#, fuzzy, c-format
+msgid "No properties for the DVB channel %s"
+msgstr "Липсват данни за канала за цифрово видеоръзпръскване (DVB) „%s“"
+
+#, fuzzy, c-format
+msgid "Failed to set properties for the DVB channel %s"
+msgstr "Липсват данни за канала за цифрово видеоръзпръскване (DVB) „%s“"
+
+#, fuzzy, c-format
+msgid "Couldn't find DVB channel configuration file: %s"
+msgstr ""
+"Файлът с настройките на цифровото видеоръзпръскване (DVB) не може да бъде "
+"открит"
+
msgid "DVB channel configuration file doesn't contain any channels"
msgstr ""
"Файлът с настройките на цифровото видеоръзпръскване (DVB) не съдържа никакви "
"канали"
-
-#, c-format
-msgid "Couldn't find details for DVB channel %s"
-msgstr "Липсват данни за канала за цифрово видеоръзпръскване (DVB) „%s“"
diff --git a/po/ca.gmo b/po/ca.gmo
index 0cdf0e2..814b45b 100644
--- a/po/ca.gmo
+++ b/po/ca.gmo
Binary files differ
diff --git a/po/ca.po b/po/ca.po
index 6813ce2..309de63 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-06-09 11:22+0300\n"
+"POT-Creation-Date: 2016-07-06 11:51+0300\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"
@@ -19,6 +19,12 @@
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
+msgid "failed to draw pattern"
+msgstr ""
+
+msgid "A GL error occured"
+msgstr ""
+
msgid "format wasn't negotiated before get function"
msgstr ""
@@ -132,11 +138,23 @@
msgid "Couldn't load DVB channel configuration file: %s"
msgstr ""
-msgid "DVB channel configuration file doesn't contain any channels"
+#, c-format
+msgid "Couldn't find details for DVB channel %s"
msgstr ""
#, c-format
-msgid "Couldn't find details for DVB channel %s"
+msgid "No properties for the DVB channel %s"
+msgstr ""
+
+#, c-format
+msgid "Failed to set properties for the DVB channel %s"
+msgstr ""
+
+#, c-format
+msgid "Couldn't find DVB channel configuration file: %s"
+msgstr ""
+
+msgid "DVB channel configuration file doesn't contain any channels"
msgstr ""
#~ msgid "Could not write to file \"%s\"."
diff --git a/po/cs.gmo b/po/cs.gmo
index f59177b..9e4fd8f 100644
--- a/po/cs.gmo
+++ b/po/cs.gmo
Binary files differ
diff --git a/po/cs.po b/po/cs.po
index 7747c7f..378a991 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-06-09 11:22+0300\n"
+"POT-Creation-Date: 2016-07-06 11:51+0300\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"
@@ -22,6 +22,12 @@
"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n"
"X-Generator: Gtranslator 2.91.7\n"
+msgid "failed to draw pattern"
+msgstr ""
+
+msgid "A GL error occured"
+msgstr ""
+
msgid "format wasn't negotiated before get function"
msgstr "formát nebyl vyjednán před získáním funkce"
@@ -138,13 +144,25 @@
msgid "Couldn't load DVB channel configuration file: %s"
msgstr "Nelze načíst soubor s nastavením kanálu DVB: %s"
-msgid "DVB channel configuration file doesn't contain any channels"
-msgstr "Soubor s nastavením kanálů DVB neobsahuje žádné kanály"
-
#, c-format
msgid "Couldn't find details for DVB channel %s"
msgstr "Nelze najít podrobnosti ke kanálu DVB %s"
+#, fuzzy, c-format
+msgid "No properties for the DVB channel %s"
+msgstr "Nelze najít podrobnosti ke kanálu DVB %s"
+
+#, fuzzy, c-format
+msgid "Failed to set properties for the DVB channel %s"
+msgstr "Nelze najít podrobnosti ke kanálu DVB %s"
+
+#, fuzzy, c-format
+msgid "Couldn't find DVB channel configuration file: %s"
+msgstr "Nelze najít soubor s nastavením kanálů DVB"
+
+msgid "DVB channel configuration file doesn't contain any channels"
+msgstr "Soubor s nastavením kanálů DVB neobsahuje žádné kanály"
+
#~ msgid "default GStreamer sound events audiosink"
#~ msgstr "výchozí zvukový cíl GStreamer pro zvukové události"
diff --git a/po/da.gmo b/po/da.gmo
index 6a6e56a..20e527b 100644
--- a/po/da.gmo
+++ b/po/da.gmo
Binary files differ
diff --git a/po/da.po b/po/da.po
index 0b9e8de..44bb1cc 100644
--- a/po/da.po
+++ b/po/da.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-06-09 11:22+0300\n"
+"POT-Creation-Date: 2016-07-06 11:51+0300\n"
"PO-Revision-Date: 2015-12-05 11:28+0200\n"
"Last-Translator: Joe Hansen <joedalton2@yahoo.dk>\n"
"Language-Team: Danish <dansk@dansk-gruppen.dk>\n"
@@ -17,6 +17,12 @@
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
+msgid "failed to draw pattern"
+msgstr ""
+
+msgid "A GL error occured"
+msgstr ""
+
msgid "format wasn't negotiated before get function"
msgstr "format blev ikke forhandlet før hent funktion"
@@ -130,13 +136,25 @@
msgid "Couldn't load DVB channel configuration file: %s"
msgstr "Kunne ikke indlæse DVB-kanalens konfigurationsfil: %s"
-msgid "DVB channel configuration file doesn't contain any channels"
-msgstr "DVB-kanalens konfigurationsfil indeholder ikke nogen kanaler"
-
#, c-format
msgid "Couldn't find details for DVB channel %s"
msgstr "Kunne ikke finde detaljer for DVB-kanalen %s"
+#, fuzzy, c-format
+msgid "No properties for the DVB channel %s"
+msgstr "Kunne ikke finde detaljer for DVB-kanalen %s"
+
+#, fuzzy, c-format
+msgid "Failed to set properties for the DVB channel %s"
+msgstr "Kunne ikke finde detaljer for DVB-kanalen %s"
+
+#, fuzzy, c-format
+msgid "Couldn't find DVB channel configuration file: %s"
+msgstr "Kunne ikke finde DVB-kanalens konfigurationsfil"
+
+msgid "DVB channel configuration file doesn't contain any channels"
+msgstr "DVB-kanalens konfigurationsfil indeholder ikke nogen kanaler"
+
#~ msgid "default GStreamer sound events audiosink"
#~ msgstr "standardlydkanal for GStreamers lydhændelser"
diff --git a/po/de.gmo b/po/de.gmo
index d350e28..4b15447 100644
--- a/po/de.gmo
+++ b/po/de.gmo
Binary files differ
diff --git a/po/de.po b/po/de.po
index bf3d4b3..1d773e6 100644
--- a/po/de.po
+++ b/po/de.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-06-09 11:22+0300\n"
+"POT-Creation-Date: 2016-07-06 11:51+0300\n"
"PO-Revision-Date: 2015-10-21 00:15+0200\n"
"Last-Translator: Christian Kirbach <christian.kirbach@gmail.com>\n"
"Language-Team: German <translation-team-de@lists.sourceforge.net>\n"
@@ -19,6 +19,12 @@
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Generator: Poedit 1.8.5\n"
+msgid "failed to draw pattern"
+msgstr ""
+
+msgid "A GL error occured"
+msgstr ""
+
msgid "format wasn't negotiated before get function"
msgstr "das Format wurde vor der get-Funktion nicht ausgehandelt"
@@ -140,13 +146,25 @@
msgid "Couldn't load DVB channel configuration file: %s"
msgstr "DVB Kanal-Konfigurationsdatei konnte nicht geladen werden: %s"
-msgid "DVB channel configuration file doesn't contain any channels"
-msgstr "DVB Kanal-Konfigurationsdatei enthält keine Kanäle"
-
#, c-format
msgid "Couldn't find details for DVB channel %s"
msgstr "Details zu DVB-Kanal %s konnten nicht gefunden werden"
+#, fuzzy, c-format
+msgid "No properties for the DVB channel %s"
+msgstr "Details zu DVB-Kanal %s konnten nicht gefunden werden"
+
+#, fuzzy, c-format
+msgid "Failed to set properties for the DVB channel %s"
+msgstr "Details zu DVB-Kanal %s konnten nicht gefunden werden"
+
+#, fuzzy, c-format
+msgid "Couldn't find DVB channel configuration file: %s"
+msgstr "DVB Kanal-Konfigurationsdatei konnte nicht gefunden werden"
+
+msgid "DVB channel configuration file doesn't contain any channels"
+msgstr "DVB Kanal-Konfigurationsdatei enthält keine Kanäle"
+
#~ msgid "default GStreamer sound events audiosink"
#~ msgstr "Voreingestellte GStreamer Tonereignis-Audioziel"
diff --git a/po/el.gmo b/po/el.gmo
index 1ecde6d..959cf7e 100644
--- a/po/el.gmo
+++ b/po/el.gmo
Binary files differ
diff --git a/po/el.po b/po/el.po
index fb77333..65e1597 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-06-09 11:22+0300\n"
+"POT-Creation-Date: 2016-07-06 11:51+0300\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"
@@ -19,6 +19,12 @@
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n>1;\n"
+msgid "failed to draw pattern"
+msgstr ""
+
+msgid "A GL error occured"
+msgstr ""
+
msgid "format wasn't negotiated before get function"
msgstr ""
@@ -133,11 +139,23 @@
msgid "Couldn't load DVB channel configuration file: %s"
msgstr ""
-msgid "DVB channel configuration file doesn't contain any channels"
+#, c-format
+msgid "Couldn't find details for DVB channel %s"
msgstr ""
#, c-format
-msgid "Couldn't find details for DVB channel %s"
+msgid "No properties for the DVB channel %s"
+msgstr ""
+
+#, c-format
+msgid "Failed to set properties for the DVB channel %s"
+msgstr ""
+
+#, c-format
+msgid "Couldn't find DVB channel configuration file: %s"
+msgstr ""
+
+msgid "DVB channel configuration file doesn't contain any channels"
msgstr ""
#~ msgid "Could not write to file \"%s\"."
diff --git a/po/en_GB.gmo b/po/en_GB.gmo
index 78cb44b..ef22362 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 76b331e..798a6df 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-06-09 11:22+0300\n"
+"POT-Creation-Date: 2016-07-06 11:51+0300\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"
@@ -15,6 +15,12 @@
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
+msgid "failed to draw pattern"
+msgstr ""
+
+msgid "A GL error occured"
+msgstr ""
+
msgid "format wasn't negotiated before get function"
msgstr ""
@@ -129,11 +135,23 @@
msgid "Couldn't load DVB channel configuration file: %s"
msgstr ""
-msgid "DVB channel configuration file doesn't contain any channels"
+#, c-format
+msgid "Couldn't find details for DVB channel %s"
msgstr ""
#, c-format
-msgid "Couldn't find details for DVB channel %s"
+msgid "No properties for the DVB channel %s"
+msgstr ""
+
+#, c-format
+msgid "Failed to set properties for the DVB channel %s"
+msgstr ""
+
+#, c-format
+msgid "Couldn't find DVB channel configuration file: %s"
+msgstr ""
+
+msgid "DVB channel configuration file doesn't contain any channels"
msgstr ""
#~ msgid "Could not write to file \"%s\"."
diff --git a/po/eo.gmo b/po/eo.gmo
index 8c84246..f989a06 100644
--- a/po/eo.gmo
+++ b/po/eo.gmo
Binary files differ
diff --git a/po/eo.po b/po/eo.po
index c24b016..84aac86 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-06-09 11:22+0300\n"
+"POT-Creation-Date: 2016-07-06 11:51+0300\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"
@@ -17,6 +17,12 @@
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1)\n"
+msgid "failed to draw pattern"
+msgstr ""
+
+msgid "A GL error occured"
+msgstr ""
+
msgid "format wasn't negotiated before get function"
msgstr ""
@@ -130,11 +136,23 @@
msgid "Couldn't load DVB channel configuration file: %s"
msgstr ""
-msgid "DVB channel configuration file doesn't contain any channels"
+#, c-format
+msgid "Couldn't find details for DVB channel %s"
msgstr ""
#, c-format
-msgid "Couldn't find details for DVB channel %s"
+msgid "No properties for the DVB channel %s"
+msgstr ""
+
+#, c-format
+msgid "Failed to set properties for the DVB channel %s"
+msgstr ""
+
+#, c-format
+msgid "Couldn't find DVB channel configuration file: %s"
+msgstr ""
+
+msgid "DVB channel configuration file doesn't contain any channels"
msgstr ""
#~ msgid "Could not write to file \"%s\"."
diff --git a/po/es.gmo b/po/es.gmo
index aa8f03a..ce56311 100644
--- a/po/es.gmo
+++ b/po/es.gmo
Binary files differ
diff --git a/po/es.po b/po/es.po
index d23404d..7aa127c 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-06-09 11:22+0300\n"
+"POT-Creation-Date: 2016-07-06 11:51+0300\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"
@@ -17,6 +17,12 @@
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n!=1);\n"
+msgid "failed to draw pattern"
+msgstr ""
+
+msgid "A GL error occured"
+msgstr ""
+
msgid "format wasn't negotiated before get function"
msgstr ""
@@ -131,11 +137,23 @@
msgid "Couldn't load DVB channel configuration file: %s"
msgstr "Configuración del canal del mezclador virtual"
-msgid "DVB channel configuration file doesn't contain any channels"
+#, c-format
+msgid "Couldn't find details for DVB channel %s"
msgstr ""
#, c-format
-msgid "Couldn't find details for DVB channel %s"
+msgid "No properties for the DVB channel %s"
+msgstr ""
+
+#, c-format
+msgid "Failed to set properties for the DVB channel %s"
+msgstr ""
+
+#, fuzzy, c-format
+msgid "Couldn't find DVB channel configuration file: %s"
+msgstr "Configuración del canal del mezclador virtual"
+
+msgid "DVB channel configuration file doesn't contain any channels"
msgstr ""
#~ msgid "Could not write to file \"%s\"."
diff --git a/po/eu.gmo b/po/eu.gmo
index 8eaeef1..4a954ac 100644
--- a/po/eu.gmo
+++ b/po/eu.gmo
Binary files differ
diff --git a/po/eu.po b/po/eu.po
index c306105..88d618e 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-06-09 11:22+0300\n"
+"POT-Creation-Date: 2016-07-06 11:51+0300\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"
@@ -19,6 +19,12 @@
"X-Generator: KBabel 1.11.4\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+msgid "failed to draw pattern"
+msgstr ""
+
+msgid "A GL error occured"
+msgstr ""
+
msgid "format wasn't negotiated before get function"
msgstr ""
@@ -131,11 +137,23 @@
msgid "Couldn't load DVB channel configuration file: %s"
msgstr ""
-msgid "DVB channel configuration file doesn't contain any channels"
+#, c-format
+msgid "Couldn't find details for DVB channel %s"
msgstr ""
#, c-format
-msgid "Couldn't find details for DVB channel %s"
+msgid "No properties for the DVB channel %s"
+msgstr ""
+
+#, c-format
+msgid "Failed to set properties for the DVB channel %s"
+msgstr ""
+
+#, c-format
+msgid "Couldn't find DVB channel configuration file: %s"
+msgstr ""
+
+msgid "DVB channel configuration file doesn't contain any channels"
msgstr ""
#~ msgid "Could not write to file \"%s\"."
diff --git a/po/fi.gmo b/po/fi.gmo
index 534302d..cc023a9 100644
--- a/po/fi.gmo
+++ b/po/fi.gmo
Binary files differ
diff --git a/po/fi.po b/po/fi.po
index 8155237..1dccd65 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-06-09 11:22+0300\n"
+"POT-Creation-Date: 2016-07-06 11:51+0300\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"
@@ -22,6 +22,12 @@
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Generator: KBabel 1.11.2\n"
+msgid "failed to draw pattern"
+msgstr ""
+
+msgid "A GL error occured"
+msgstr ""
+
msgid "format wasn't negotiated before get function"
msgstr ""
@@ -135,11 +141,23 @@
msgid "Couldn't load DVB channel configuration file: %s"
msgstr "Näennäinen mikserikanava-asetus"
-msgid "DVB channel configuration file doesn't contain any channels"
+#, c-format
+msgid "Couldn't find details for DVB channel %s"
msgstr ""
#, c-format
-msgid "Couldn't find details for DVB channel %s"
+msgid "No properties for the DVB channel %s"
+msgstr ""
+
+#, c-format
+msgid "Failed to set properties for the DVB channel %s"
+msgstr ""
+
+#, fuzzy, c-format
+msgid "Couldn't find DVB channel configuration file: %s"
+msgstr "Näennäinen mikserikanava-asetus"
+
+msgid "DVB channel configuration file doesn't contain any channels"
msgstr ""
#~ msgid "Could not write to file \"%s\"."
diff --git a/po/fr.gmo b/po/fr.gmo
index 1412d1f..15f9aa6 100644
--- a/po/fr.gmo
+++ b/po/fr.gmo
Binary files differ
diff --git a/po/fr.po b/po/fr.po
index 67f38ab..da7045f 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-06-09 11:22+0300\n"
+"POT-Creation-Date: 2016-07-06 11:51+0300\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"
@@ -18,6 +18,12 @@
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
+msgid "failed to draw pattern"
+msgstr ""
+
+msgid "A GL error occured"
+msgstr ""
+
msgid "format wasn't negotiated before get function"
msgstr "Format non négocié avant l'appel de la fonction get"
@@ -134,13 +140,25 @@
msgid "Couldn't load DVB channel configuration file: %s"
msgstr "Impossible de charger le fichier de configuration de canal DVB : %s"
-msgid "DVB channel configuration file doesn't contain any channels"
-msgstr "Le fichier de configuration de canal DVB ne contient aucun canal"
-
#, c-format
msgid "Couldn't find details for DVB channel %s"
msgstr "Impossible de trouver des informations sur le canal DVB %s"
+#, fuzzy, c-format
+msgid "No properties for the DVB channel %s"
+msgstr "Impossible de trouver des informations sur le canal DVB %s"
+
+#, fuzzy, c-format
+msgid "Failed to set properties for the DVB channel %s"
+msgstr "Impossible de trouver des informations sur le canal DVB %s"
+
+#, fuzzy, c-format
+msgid "Couldn't find DVB channel configuration file: %s"
+msgstr "Impossible de trouver le fichier de configuration de canal DVB"
+
+msgid "DVB channel configuration file doesn't contain any channels"
+msgstr "Le fichier de configuration de canal DVB ne contient aucun canal"
+
#~ msgid "default GStreamer sound events audiosink"
#~ msgstr "récepteur audio GStreamer par défaut pour les événements sonores"
diff --git a/po/gl.gmo b/po/gl.gmo
index 7f9e1db..cedc61a 100644
--- a/po/gl.gmo
+++ b/po/gl.gmo
Binary files differ
diff --git a/po/gl.po b/po/gl.po
index 8a2bbb7..a205cf7 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-06-09 11:22+0300\n"
+"POT-Creation-Date: 2016-07-06 11:51+0300\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"
@@ -19,6 +19,12 @@
"Plural-Forms: nplurals=2; plural=(n!=1);\n"
"X-Poedit-Language: galego\n"
+msgid "failed to draw pattern"
+msgstr ""
+
+msgid "A GL error occured"
+msgstr ""
+
msgid "format wasn't negotiated before get function"
msgstr ""
@@ -132,11 +138,23 @@
msgid "Couldn't load DVB channel configuration file: %s"
msgstr ""
-msgid "DVB channel configuration file doesn't contain any channels"
+#, c-format
+msgid "Couldn't find details for DVB channel %s"
msgstr ""
#, c-format
-msgid "Couldn't find details for DVB channel %s"
+msgid "No properties for the DVB channel %s"
+msgstr ""
+
+#, c-format
+msgid "Failed to set properties for the DVB channel %s"
+msgstr ""
+
+#, c-format
+msgid "Couldn't find DVB channel configuration file: %s"
+msgstr ""
+
+msgid "DVB channel configuration file doesn't contain any channels"
msgstr ""
#~ msgid "Could not write to file \"%s\"."
diff --git a/po/gst-plugins-bad-1.0.pot b/po/gst-plugins-bad-1.0.pot
index f74921e..d8b99cb 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.8.2\n"
+"Project-Id-Version: gst-plugins-bad 1.9.1\n"
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2016-06-09 11:22+0300\n"
+"POT-Creation-Date: 2016-07-06 11:51+0300\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"
@@ -16,39 +16,47 @@
"Content-Type: text/plain; charset=CHARSET\n"
"Content-Transfer-Encoding: 8bit\n"
-#: ext/gl/gstgltestsrc.c:680
+#: ext/gl/gstgltestsrc.c:519
+msgid "failed to draw pattern"
+msgstr ""
+
+#: ext/gl/gstgltestsrc.c:520
+msgid "A GL error occured"
+msgstr ""
+
+#: ext/gl/gstgltestsrc.c:526
msgid "format wasn't negotiated before get function"
msgstr ""
-#: ext/opencv/gsttemplatematch.cpp:188
+#: ext/opencv/gsttemplatematch.cpp:186
msgid "OpenCV failed to load template image"
msgstr ""
-#: ext/resindvd/resindvdsrc.c:362
+#: ext/resindvd/resindvdsrc.c:361
msgid "Could not read title information for DVD."
msgstr ""
-#: ext/resindvd/resindvdsrc.c:368
+#: ext/resindvd/resindvdsrc.c:367
#, c-format
msgid "Failed to open DVD device '%s'."
msgstr ""
-#: ext/resindvd/resindvdsrc.c:374
+#: ext/resindvd/resindvdsrc.c:373
msgid "Failed to set PGC based seeking."
msgstr ""
-#: ext/resindvd/resindvdsrc.c:1165
+#: ext/resindvd/resindvdsrc.c:1164
msgid ""
"Could not read DVD. This may be because the DVD is encrypted and a DVD "
"decryption library is not installed."
msgstr ""
-#: ext/resindvd/resindvdsrc.c:1170 ext/resindvd/resindvdsrc.c:1179
+#: ext/resindvd/resindvdsrc.c:1169 ext/resindvd/resindvdsrc.c:1178
msgid "Could not read DVD."
msgstr ""
#: ext/smoothstreaming/gstmssdemux.c:405
-#: gst-libs/gst/adaptivedemux/gstadaptivedemux.c:633
+#: gst-libs/gst/adaptivedemux/gstadaptivedemux.c:674
msgid "This file contains no playable streams."
msgstr ""
@@ -56,19 +64,19 @@
msgid "Could not open sndfile stream for reading."
msgstr ""
-#: ext/sndio/sndiosink.c:324 ext/sndio/sndiosrc.c:321
+#: ext/sndio/sndiosink.c:324 ext/sndio/sndiosrc.c:320
msgid "Could not establish connection to sndio"
msgstr ""
-#: ext/sndio/sndiosink.c:331 ext/sndio/sndiosrc.c:328
+#: ext/sndio/sndiosink.c:331 ext/sndio/sndiosrc.c:327
msgid "Failed to query sndio capabilities"
msgstr ""
-#: ext/sndio/sndiosink.c:424 ext/sndio/sndiosrc.c:422
+#: ext/sndio/sndiosink.c:424 ext/sndio/sndiosrc.c:421
msgid "Could not configure sndio"
msgstr ""
-#: ext/sndio/sndiosink.c:430 ext/sndio/sndiosrc.c:428
+#: ext/sndio/sndiosink.c:430 ext/sndio/sndiosrc.c:427
msgid "Could not start sndio"
msgstr ""
@@ -76,12 +84,12 @@
msgid "Internal data flow error."
msgstr ""
-#: gst/asfmux/gstasfmux.c:1832
+#: gst/asfmux/gstasfmux.c:1831
msgid "Generated file has a larger preroll time than its streams duration"
msgstr ""
#: gst/camerabin2/camerabingeneral.c:166 gst/camerabin2/gstcamerabin2.c:1876
-#: gst/camerabin2/gstdigitalzoom.c:282 gst/camerabin2/gstviewfinderbin.c:271
+#: gst/camerabin2/gstdigitalzoom.c:282 gst/camerabin2/gstviewfinderbin.c:270
#, c-format
msgid "Missing element '%s' - check your GStreamer installation."
msgstr ""
@@ -94,22 +102,22 @@
msgid "Digitalzoom element couldn't be created"
msgstr ""
-#: gst/dvdspu/gstdvdspu.c:1040
+#: gst/dvdspu/gstdvdspu.c:1039
msgid "Subpicture format was not configured before data flow"
msgstr ""
-#: gst-libs/gst/adaptivedemux/gstadaptivedemux.c:2656
+#: gst-libs/gst/adaptivedemux/gstadaptivedemux.c:2712
msgid "Failed to get fragment URL."
msgstr ""
-#: gst-libs/gst/adaptivedemux/gstadaptivedemux.c:2891
-#: gst-libs/gst/adaptivedemux/gstadaptivedemux.c:3085
-#: gst/mpegtsdemux/mpegtsbase.c:1383 gst/mpegtsdemux/mpegtsbase.c:1387
-#: gst/nuvdemux/gstnuvdemux.c:736
+#: gst-libs/gst/adaptivedemux/gstadaptivedemux.c:2950
+#: gst-libs/gst/adaptivedemux/gstadaptivedemux.c:3145
+#: gst/mpegtsdemux/mpegtsbase.c:1382 gst/mpegtsdemux/mpegtsbase.c:1386
+#: gst/nuvdemux/gstnuvdemux.c:733
msgid "Internal data stream error."
msgstr ""
-#: gst-libs/gst/adaptivedemux/gstadaptivedemux.c:3003
+#: gst-libs/gst/adaptivedemux/gstadaptivedemux.c:3061
msgid "Couldn't download fragments"
msgstr ""
@@ -127,45 +135,60 @@
msgid "Could not open file \"%s\" for writing."
msgstr ""
-#: sys/dvb/gstdvbsrc.c:1564 sys/dvb/gstdvbsrc.c:1753
+#: sys/dvb/gstdvbsrc.c:1567 sys/dvb/gstdvbsrc.c:1780
#, c-format
msgid "Device \"%s\" does not exist."
msgstr ""
-#: sys/dvb/gstdvbsrc.c:1568
+#: sys/dvb/gstdvbsrc.c:1571
#, c-format
msgid "Could not open frontend device \"%s\"."
msgstr ""
-#: sys/dvb/gstdvbsrc.c:1582
+#: sys/dvb/gstdvbsrc.c:1590
#, c-format
msgid "Could not get settings from frontend device \"%s\"."
msgstr ""
-#: sys/dvb/gstdvbsrc.c:1599
+#: sys/dvb/gstdvbsrc.c:1607
#, c-format
msgid "Cannot enumerate delivery systems from frontend device \"%s\"."
msgstr ""
-#: sys/dvb/gstdvbsrc.c:1757
+#: sys/dvb/gstdvbsrc.c:1784
#, c-format
msgid "Could not open file \"%s\" for reading."
msgstr ""
-#: sys/dvb/parsechannels.c:165
+#: sys/dvb/parsechannels.c:336
msgid "Couldn't find DVB channel configuration file"
msgstr ""
-#: sys/dvb/parsechannels.c:168
+#: sys/dvb/parsechannels.c:339 sys/dvb/parsechannels.c:495
#, c-format
msgid "Couldn't load DVB channel configuration file: %s"
msgstr ""
-#: sys/dvb/parsechannels.c:175
-msgid "DVB channel configuration file doesn't contain any channels"
-msgstr ""
-
-#: sys/dvb/parsechannels.c:449
+#: sys/dvb/parsechannels.c:348 sys/dvb/parsechannels.c:780
#, c-format
msgid "Couldn't find details for DVB channel %s"
msgstr ""
+
+#: sys/dvb/parsechannels.c:358
+#, c-format
+msgid "No properties for the DVB channel %s"
+msgstr ""
+
+#: sys/dvb/parsechannels.c:368
+#, c-format
+msgid "Failed to set properties for the DVB channel %s"
+msgstr ""
+
+#: sys/dvb/parsechannels.c:492
+#, c-format
+msgid "Couldn't find DVB channel configuration file: %s"
+msgstr ""
+
+#: sys/dvb/parsechannels.c:502
+msgid "DVB channel configuration file doesn't contain any channels"
+msgstr ""
diff --git a/po/hr.gmo b/po/hr.gmo
index 849f303..54bbd5c 100644
--- a/po/hr.gmo
+++ b/po/hr.gmo
Binary files differ
diff --git a/po/hr.po b/po/hr.po
index e56751c..94c54f2 100644
--- a/po/hr.po
+++ b/po/hr.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-06-09 11:22+0300\n"
+"POT-Creation-Date: 2016-07-06 11:51+0300\n"
"PO-Revision-Date: 2016-05-27 12:45-0700\n"
"Last-Translator: Božidar Putanec <bozidarp@yahoo.com>\n"
"Language-Team: Croatian <lokalizacija@linux.hr>\n"
@@ -19,6 +19,12 @@
"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2)\n"
"X-Generator: Lokalize 2.0\n"
+msgid "failed to draw pattern"
+msgstr ""
+
+msgid "A GL error occured"
+msgstr ""
+
msgid "format wasn't negotiated before get function"
msgstr "format nije bio dogovoren prije ‘get’ funkcije"
@@ -137,12 +143,24 @@
msgid "Couldn't load DVB channel configuration file: %s"
msgstr "Nije moguće učitati konfiguracijsku datoteku za DVB kanal: %s"
-msgid "DVB channel configuration file doesn't contain any channels"
-msgstr "Konfiguracijska datoteka za DVB kanal ne sadrži nijedan kanal"
-
#, c-format
msgid "Couldn't find details for DVB channel %s"
msgstr "Pojedinosti za DVB kanal %s nije moguće pronaći"
+#, fuzzy, c-format
+msgid "No properties for the DVB channel %s"
+msgstr "Pojedinosti za DVB kanal %s nije moguće pronaći"
+
+#, fuzzy, c-format
+msgid "Failed to set properties for the DVB channel %s"
+msgstr "Pojedinosti za DVB kanal %s nije moguće pronaći"
+
+#, fuzzy, c-format
+msgid "Couldn't find DVB channel configuration file: %s"
+msgstr "Konfiguracijsku datoteku za DVB kanal nije moguće pronaći"
+
+msgid "DVB channel configuration file doesn't contain any channels"
+msgstr "Konfiguracijska datoteka za DVB kanal ne sadrži nijedan kanal"
+
#~ msgid "Could not write to file \"%s\"."
#~ msgstr "Ne mogu pisati u datoteku „%s”."
diff --git a/po/hu.gmo b/po/hu.gmo
index e9abec8..4827a23 100644
--- a/po/hu.gmo
+++ b/po/hu.gmo
Binary files differ
diff --git a/po/hu.po b/po/hu.po
index 253815c..e5b7e0a 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-06-09 11:22+0300\n"
+"POT-Creation-Date: 2016-07-06 11:51+0300\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"
@@ -19,6 +19,12 @@
"X-Generator: Lokalize 1.2\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+msgid "failed to draw pattern"
+msgstr ""
+
+msgid "A GL error occured"
+msgstr ""
+
msgid "format wasn't negotiated before get function"
msgstr "a formátum nem lett egyeztetve a függvény lekérése előtt"
@@ -135,13 +141,25 @@
msgid "Couldn't load DVB channel configuration file: %s"
msgstr "Nem sikerült betölteni a DVB-csatorna beállítófájlt: %s"
-msgid "DVB channel configuration file doesn't contain any channels"
-msgstr "A DVB-csatorna beállítófájl nem tartalmaz egyetlen csatornát sem"
-
#, c-format
msgid "Couldn't find details for DVB channel %s"
msgstr "Nem találhatók a(z) %s DVB-csatorna részletei"
+#, fuzzy, c-format
+msgid "No properties for the DVB channel %s"
+msgstr "Nem találhatók a(z) %s DVB-csatorna részletei"
+
+#, fuzzy, c-format
+msgid "Failed to set properties for the DVB channel %s"
+msgstr "Nem találhatók a(z) %s DVB-csatorna részletei"
+
+#, fuzzy, c-format
+msgid "Couldn't find DVB channel configuration file: %s"
+msgstr "Nem található DVB-csatorna beállítófájl"
+
+msgid "DVB channel configuration file doesn't contain any channels"
+msgstr "A DVB-csatorna beállítófájl nem tartalmaz egyetlen csatornát sem"
+
#~ msgid "default GStreamer sound events audiosink"
#~ msgstr "alapértelmezett GStreamer hangesemények audiosink"
diff --git a/po/id.gmo b/po/id.gmo
index 3cd21ba..35dcac0 100644
--- a/po/id.gmo
+++ b/po/id.gmo
Binary files differ
diff --git a/po/id.po b/po/id.po
index 85114e4..c05e78a 100644
--- a/po/id.po
+++ b/po/id.po
@@ -7,7 +7,7 @@
msgstr ""
"Project-Id-Version: gst-plugins-bad 1.3.2\n"
"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/\n"
-"POT-Creation-Date: 2016-06-09 11:22+0300\n"
+"POT-Creation-Date: 2016-07-06 11:51+0300\n"
"PO-Revision-Date: 2014-05-31 22:16+0700\n"
"Last-Translator: Andhika Padmawan <andhika.padmawan@gmail.com>\n"
"Language-Team: Indonesian <translation-team-id@lists.sourceforge.net>\n"
@@ -17,6 +17,12 @@
"Content-Transfer-Encoding: 8bit\n"
"X-Generator: Poedit 1.5.7\n"
+msgid "failed to draw pattern"
+msgstr ""
+
+msgid "A GL error occured"
+msgstr ""
+
msgid "format wasn't negotiated before get function"
msgstr ""
@@ -132,13 +138,25 @@
msgid "Couldn't load DVB channel configuration file: %s"
msgstr "Tak bisa memuat berka konfigurasi kanal DVB: %s"
-msgid "DVB channel configuration file doesn't contain any channels"
-msgstr "Berkas konfigurasi kanal DVB tak memuat kanal apapun"
-
#, c-format
msgid "Couldn't find details for DVB channel %s"
msgstr "Tak bisa temukan rincian untuk kanal DVB %s"
+#, fuzzy, c-format
+msgid "No properties for the DVB channel %s"
+msgstr "Tak bisa temukan rincian untuk kanal DVB %s"
+
+#, fuzzy, c-format
+msgid "Failed to set properties for the DVB channel %s"
+msgstr "Tak bisa temukan rincian untuk kanal DVB %s"
+
+#, fuzzy, c-format
+msgid "Couldn't find DVB channel configuration file: %s"
+msgstr "Tak bisa temukan berkas konfigurasi kanal DVB"
+
+msgid "DVB channel configuration file doesn't contain any channels"
+msgstr "Berkas konfigurasi kanal DVB tak memuat kanal apapun"
+
#~ msgid "Couldn't get the Manifest's URI"
#~ msgstr "Tak bisa memperoleh URI Manifes"
diff --git a/po/it.gmo b/po/it.gmo
index a340571..45fd955 100644
--- a/po/it.gmo
+++ b/po/it.gmo
Binary files differ
diff --git a/po/it.po b/po/it.po
index b276fba..471c079 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-06-09 11:22+0300\n"
+"POT-Creation-Date: 2016-07-06 11:51+0300\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"
@@ -16,6 +16,12 @@
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
+msgid "failed to draw pattern"
+msgstr ""
+
+msgid "A GL error occured"
+msgstr ""
+
msgid "format wasn't negotiated before get function"
msgstr ""
@@ -128,11 +134,23 @@
msgid "Couldn't load DVB channel configuration file: %s"
msgstr ""
-msgid "DVB channel configuration file doesn't contain any channels"
+#, c-format
+msgid "Couldn't find details for DVB channel %s"
msgstr ""
#, c-format
-msgid "Couldn't find details for DVB channel %s"
+msgid "No properties for the DVB channel %s"
+msgstr ""
+
+#, c-format
+msgid "Failed to set properties for the DVB channel %s"
+msgstr ""
+
+#, c-format
+msgid "Couldn't find DVB channel configuration file: %s"
+msgstr ""
+
+msgid "DVB channel configuration file doesn't contain any channels"
msgstr ""
#~ msgid "Could not write to file \"%s\"."
diff --git a/po/ja.gmo b/po/ja.gmo
index a90873b..7839bf2 100644
--- a/po/ja.gmo
+++ b/po/ja.gmo
Binary files differ
diff --git a/po/ja.po b/po/ja.po
index fb5773b..c8b304a 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-06-09 11:22+0300\n"
+"POT-Creation-Date: 2016-07-06 11:51+0300\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"
@@ -17,6 +17,12 @@
"X-Generator: Lokalize 0.3\n"
"Plural-Forms: nplurals=1; plural=0;\n"
+msgid "failed to draw pattern"
+msgstr ""
+
+msgid "A GL error occured"
+msgstr ""
+
msgid "format wasn't negotiated before get function"
msgstr ""
@@ -131,11 +137,23 @@
msgid "Couldn't load DVB channel configuration file: %s"
msgstr "仮想ミックスチャンネル設定"
-msgid "DVB channel configuration file doesn't contain any channels"
+#, c-format
+msgid "Couldn't find details for DVB channel %s"
msgstr ""
#, c-format
-msgid "Couldn't find details for DVB channel %s"
+msgid "No properties for the DVB channel %s"
+msgstr ""
+
+#, c-format
+msgid "Failed to set properties for the DVB channel %s"
+msgstr ""
+
+#, fuzzy, c-format
+msgid "Couldn't find DVB channel configuration file: %s"
+msgstr "仮想ミックスチャンネル設定"
+
+msgid "DVB channel configuration file doesn't contain any channels"
msgstr ""
#~ msgid "Could not write to file \"%s\"."
diff --git a/po/ky.gmo b/po/ky.gmo
index 1fb6886..3c91f43 100644
--- a/po/ky.gmo
+++ b/po/ky.gmo
Binary files differ
diff --git a/po/ky.po b/po/ky.po
index 8ab2235..9b05a5f 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-06-09 11:22+0300\n"
+"POT-Creation-Date: 2016-07-06 11:51+0300\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"
@@ -17,6 +17,12 @@
"X-Poedit-Language: Kyrgyz\n"
"X-Poedit-Country: KYRGYZSTAN\n"
+msgid "failed to draw pattern"
+msgstr ""
+
+msgid "A GL error occured"
+msgstr ""
+
msgid "format wasn't negotiated before get function"
msgstr ""
@@ -127,9 +133,21 @@
msgid "Couldn't load DVB channel configuration file: %s"
msgstr ""
-msgid "DVB channel configuration file doesn't contain any channels"
+#, c-format
+msgid "Couldn't find details for DVB channel %s"
msgstr ""
#, c-format
-msgid "Couldn't find details for DVB channel %s"
+msgid "No properties for the DVB channel %s"
+msgstr ""
+
+#, c-format
+msgid "Failed to set properties for the DVB channel %s"
+msgstr ""
+
+#, c-format
+msgid "Couldn't find DVB channel configuration file: %s"
+msgstr ""
+
+msgid "DVB channel configuration file doesn't contain any channels"
msgstr ""
diff --git a/po/lt.gmo b/po/lt.gmo
index 71eac18..ad45b89 100644
--- a/po/lt.gmo
+++ b/po/lt.gmo
Binary files differ
diff --git a/po/lt.po b/po/lt.po
index d612f73..f50f38b 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-06-09 11:22+0300\n"
+"POT-Creation-Date: 2016-07-06 11:51+0300\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"
@@ -18,6 +18,12 @@
"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && (n"
"%100<10 || n%100>=20) ? 1 : 2);\n"
+msgid "failed to draw pattern"
+msgstr ""
+
+msgid "A GL error occured"
+msgstr ""
+
msgid "format wasn't negotiated before get function"
msgstr ""
@@ -132,11 +138,23 @@
msgid "Couldn't load DVB channel configuration file: %s"
msgstr ""
-msgid "DVB channel configuration file doesn't contain any channels"
+#, c-format
+msgid "Couldn't find details for DVB channel %s"
msgstr ""
#, c-format
-msgid "Couldn't find details for DVB channel %s"
+msgid "No properties for the DVB channel %s"
+msgstr ""
+
+#, c-format
+msgid "Failed to set properties for the DVB channel %s"
+msgstr ""
+
+#, c-format
+msgid "Couldn't find DVB channel configuration file: %s"
+msgstr ""
+
+msgid "DVB channel configuration file doesn't contain any channels"
msgstr ""
#~ msgid "Could not write to file \"%s\"."
diff --git a/po/lv.gmo b/po/lv.gmo
index 92ddbae..308d904 100644
--- a/po/lv.gmo
+++ b/po/lv.gmo
Binary files differ
diff --git a/po/lv.po b/po/lv.po
index 63da751..287242f 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-06-09 11:22+0300\n"
+"POT-Creation-Date: 2016-07-06 11:51+0300\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"
@@ -22,6 +22,12 @@
"2);\n"
"X-Generator: Lokalize 1.5\n"
+msgid "failed to draw pattern"
+msgstr ""
+
+msgid "A GL error occured"
+msgstr ""
+
msgid "format wasn't negotiated before get function"
msgstr ""
@@ -137,13 +143,25 @@
msgid "Couldn't load DVB channel configuration file: %s"
msgstr "Nevarēja ielādēt DVB kanāla konfigurācijas datni: %s"
-msgid "DVB channel configuration file doesn't contain any channels"
-msgstr "DVB kanāla konfigurācijas datne nesatur nevienu kanālu"
-
#, c-format
msgid "Couldn't find details for DVB channel %s"
msgstr "Nevarēja atrast sīkāku informāciju par DVB kanālu %s"
+#, fuzzy, c-format
+msgid "No properties for the DVB channel %s"
+msgstr "Nevarēja atrast sīkāku informāciju par DVB kanālu %s"
+
+#, fuzzy, c-format
+msgid "Failed to set properties for the DVB channel %s"
+msgstr "Nevarēja atrast sīkāku informāciju par DVB kanālu %s"
+
+#, fuzzy, c-format
+msgid "Couldn't find DVB channel configuration file: %s"
+msgstr "Nevarēja atrast DVB kanāla konfigurācijas datni"
+
+msgid "DVB channel configuration file doesn't contain any channels"
+msgstr "DVB kanāla konfigurācijas datne nesatur nevienu kanālu"
+
#~ msgid "Couldn't get the Manifest's URI"
#~ msgstr "Nevarēja saņemt manifesta URI"
diff --git a/po/mt.gmo b/po/mt.gmo
index 3f6fed8..be30e96 100644
--- a/po/mt.gmo
+++ b/po/mt.gmo
Binary files differ
diff --git a/po/mt.po b/po/mt.po
index a10d92c..e432974 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-06-09 11:22+0300\n"
+"POT-Creation-Date: 2016-07-06 11:51+0300\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"
@@ -18,6 +18,12 @@
"X-Poedit-SourceCharset: utf-8\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+msgid "failed to draw pattern"
+msgstr ""
+
+msgid "A GL error occured"
+msgstr ""
+
msgid "format wasn't negotiated before get function"
msgstr ""
@@ -131,11 +137,23 @@
msgid "Couldn't load DVB channel configuration file: %s"
msgstr "Virtual mixer channel configuration"
-msgid "DVB channel configuration file doesn't contain any channels"
+#, c-format
+msgid "Couldn't find details for DVB channel %s"
msgstr ""
#, c-format
-msgid "Couldn't find details for DVB channel %s"
+msgid "No properties for the DVB channel %s"
+msgstr ""
+
+#, c-format
+msgid "Failed to set properties for the DVB channel %s"
+msgstr ""
+
+#, fuzzy, c-format
+msgid "Couldn't find DVB channel configuration file: %s"
+msgstr "Virtual mixer channel configuration"
+
+msgid "DVB channel configuration file doesn't contain any channels"
msgstr ""
#~ msgid "Could not write to file \"%s\"."
diff --git a/po/nb.gmo b/po/nb.gmo
index 258b3fd..a08df95 100644
--- a/po/nb.gmo
+++ b/po/nb.gmo
Binary files differ
diff --git a/po/nb.po b/po/nb.po
index 59f7566..2cccaf1 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-06-09 11:22+0300\n"
+"POT-Creation-Date: 2016-07-06 11:51+0300\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"
@@ -18,6 +18,12 @@
"Content-Transfer-Encoding: 8bit\n"
"X-Generator: Poedit 1.6.9\n"
+msgid "failed to draw pattern"
+msgstr ""
+
+msgid "A GL error occured"
+msgstr ""
+
msgid "format wasn't negotiated before get function"
msgstr "formatet ble ikke forhandlet før get-funksjon"
@@ -129,13 +135,25 @@
msgid "Couldn't load DVB channel configuration file: %s"
msgstr "Kunne ikke finne DVB-kanalkonfigurasjonsfil: %s"
-msgid "DVB channel configuration file doesn't contain any channels"
-msgstr "DVB-kanalkonfigurasjonsfilen inneholder ingen kanaler"
-
#, c-format
msgid "Couldn't find details for DVB channel %s"
msgstr "Kunne ikke finne detaljer for DVB-kanal %s"
+#, fuzzy, c-format
+msgid "No properties for the DVB channel %s"
+msgstr "Kunne ikke finne detaljer for DVB-kanal %s"
+
+#, fuzzy, c-format
+msgid "Failed to set properties for the DVB channel %s"
+msgstr "Kunne ikke finne detaljer for DVB-kanal %s"
+
+#, fuzzy, c-format
+msgid "Couldn't find DVB channel configuration file: %s"
+msgstr "Kunne ikke finne DVB-kanal-konfigurasjonsfil"
+
+msgid "DVB channel configuration file doesn't contain any channels"
+msgstr "DVB-kanalkonfigurasjonsfilen inneholder ingen kanaler"
+
#~ msgid "default GStreamer sound events audiosink"
#~ msgstr "standard GStreamer lydhendelser-audiosink"
diff --git a/po/nl.gmo b/po/nl.gmo
index ea68798..4b9c60f 100644
--- a/po/nl.gmo
+++ b/po/nl.gmo
Binary files differ
diff --git a/po/nl.po b/po/nl.po
index 7427055..a1a1ba8 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-06-09 11:22+0300\n"
+"POT-Creation-Date: 2016-07-06 11:51+0300\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"
@@ -18,6 +18,12 @@
"X-Generator: Lokalize 1.5\n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
+msgid "failed to draw pattern"
+msgstr ""
+
+msgid "A GL error occured"
+msgstr ""
+
msgid "format wasn't negotiated before get function"
msgstr "formaat is niet onderhandeld vóór get-functie"
@@ -134,13 +140,25 @@
msgid "Couldn't load DVB channel configuration file: %s"
msgstr "Kon het instellingenbestand \"%s\" van het DVB-kanaal niet laden"
-msgid "DVB channel configuration file doesn't contain any channels"
-msgstr "Het instellingenbestand van het DVB-kanaal bevat geen kanalen"
-
#, c-format
msgid "Couldn't find details for DVB channel %s"
msgstr "Kon de details voor het DVB-kanaal %s niet vinden"
+#, fuzzy, c-format
+msgid "No properties for the DVB channel %s"
+msgstr "Kon de details voor het DVB-kanaal %s niet vinden"
+
+#, fuzzy, c-format
+msgid "Failed to set properties for the DVB channel %s"
+msgstr "Kon de details voor het DVB-kanaal %s niet vinden"
+
+#, fuzzy, c-format
+msgid "Couldn't find DVB channel configuration file: %s"
+msgstr "Kon het instellingenbestand van het DVB-kanaal niet vinden"
+
+msgid "DVB channel configuration file doesn't contain any channels"
+msgstr "Het instellingenbestand van het DVB-kanaal bevat geen kanalen"
+
#~ msgid "default GStreamer sound events audiosink"
#~ msgstr "standaard GStreamer audiosink voor geluidsgebeurtenissen"
diff --git a/po/or.gmo b/po/or.gmo
index 7ae6500..7411476 100644
--- a/po/or.gmo
+++ b/po/or.gmo
Binary files differ
diff --git a/po/or.po b/po/or.po
index 611edb5..7cd5f7c 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-06-09 11:22+0300\n"
+"POT-Creation-Date: 2016-07-06 11:51+0300\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"
@@ -17,6 +17,12 @@
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
+msgid "failed to draw pattern"
+msgstr ""
+
+msgid "A GL error occured"
+msgstr ""
+
msgid "format wasn't negotiated before get function"
msgstr ""
@@ -131,11 +137,23 @@
msgid "Couldn't load DVB channel configuration file: %s"
msgstr ""
-msgid "DVB channel configuration file doesn't contain any channels"
+#, c-format
+msgid "Couldn't find details for DVB channel %s"
msgstr ""
#, c-format
-msgid "Couldn't find details for DVB channel %s"
+msgid "No properties for the DVB channel %s"
+msgstr ""
+
+#, c-format
+msgid "Failed to set properties for the DVB channel %s"
+msgstr ""
+
+#, c-format
+msgid "Couldn't find DVB channel configuration file: %s"
+msgstr ""
+
+msgid "DVB channel configuration file doesn't contain any channels"
msgstr ""
#~ msgid "Could not write to file \"%s\"."
diff --git a/po/pl.gmo b/po/pl.gmo
index 99a8880..a39855f 100644
--- a/po/pl.gmo
+++ b/po/pl.gmo
Binary files differ
diff --git a/po/pl.po b/po/pl.po
index fd9f8f6..398bdfc 100644
--- a/po/pl.po
+++ b/po/pl.po
@@ -6,7 +6,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-06-09 11:22+0300\n"
+"POT-Creation-Date: 2016-07-06 11:51+0300\n"
"PO-Revision-Date: 2015-10-15 20:50+0200\n"
"Last-Translator: Jakub Bogusz <qboosh@pld-linux.org>\n"
"Language-Team: Polish <translation-team-pl@lists.sourceforge.net>\n"
@@ -15,6 +15,12 @@
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
+msgid "failed to draw pattern"
+msgstr ""
+
+msgid "A GL error occured"
+msgstr ""
+
msgid "format wasn't negotiated before get function"
msgstr "format nie został wynegocjowany przed funkcją pobrania"
@@ -130,13 +136,25 @@
msgid "Couldn't load DVB channel configuration file: %s"
msgstr "Nie udało się wczytać pliku konfiguracyjnego kanałów DVB: %s"
-msgid "DVB channel configuration file doesn't contain any channels"
-msgstr "Plik konfiguracyjny kanałów DVB nie zawiera żadnych kanałów"
-
#, c-format
msgid "Couldn't find details for DVB channel %s"
msgstr "Nie udało się odnaleźć szczegółów dla kanału DVB %s"
+#, fuzzy, c-format
+msgid "No properties for the DVB channel %s"
+msgstr "Nie udało się odnaleźć szczegółów dla kanału DVB %s"
+
+#, fuzzy, c-format
+msgid "Failed to set properties for the DVB channel %s"
+msgstr "Nie udało się odnaleźć szczegółów dla kanału DVB %s"
+
+#, fuzzy, c-format
+msgid "Couldn't find DVB channel configuration file: %s"
+msgstr "Nie udało się odnaleźć pliku konfiguracyjnego kanałów DVB"
+
+msgid "DVB channel configuration file doesn't contain any channels"
+msgstr "Plik konfiguracyjny kanałów DVB nie zawiera żadnych kanałów"
+
#~ msgid "default GStreamer sound events audiosink"
#~ msgstr "domyślny element GStreamera pochłaniający zdarzenia dźwiękowe"
diff --git a/po/pt_BR.gmo b/po/pt_BR.gmo
index 0ff982c..3ee0c5d 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 297f4cd..7de69cc 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-06-09 11:22+0300\n"
+"POT-Creation-Date: 2016-07-06 11:51+0300\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."
@@ -19,6 +19,12 @@
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
+msgid "failed to draw pattern"
+msgstr ""
+
+msgid "A GL error occured"
+msgstr ""
+
msgid "format wasn't negotiated before get function"
msgstr "O formato não foi negociado antes da chamada da função"
@@ -137,13 +143,25 @@
msgid "Couldn't load DVB channel configuration file: %s"
msgstr "Não foi possível carregar o arquivo de configuração de canal DVB: %s"
-msgid "DVB channel configuration file doesn't contain any channels"
-msgstr "O arquivo de configuração de canal DVB não contém nenhum canal"
-
#, c-format
msgid "Couldn't find details for DVB channel %s"
msgstr "Não foi possível encontrar detalhes para o canal DVB %s"
+#, fuzzy, c-format
+msgid "No properties for the DVB channel %s"
+msgstr "Não foi possível encontrar detalhes para o canal DVB %s"
+
+#, fuzzy, c-format
+msgid "Failed to set properties for the DVB channel %s"
+msgstr "Não foi possível encontrar detalhes para o canal DVB %s"
+
+#, fuzzy, c-format
+msgid "Couldn't find DVB channel configuration file: %s"
+msgstr "Não foi possível encontrar o arquivo de configuração de canal DVB"
+
+msgid "DVB channel configuration file doesn't contain any channels"
+msgstr "O arquivo de configuração de canal DVB não contém nenhum canal"
+
#~ msgid "default GStreamer sound events audiosink"
#~ msgstr "audiosink do GStreamer pré-definido para eventos de som"
diff --git a/po/ro.gmo b/po/ro.gmo
index 33460c5..9e47748 100644
--- a/po/ro.gmo
+++ b/po/ro.gmo
Binary files differ
diff --git a/po/ro.po b/po/ro.po
index 7aa2d0b..e96f5ad 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-06-09 11:22+0300\n"
+"POT-Creation-Date: 2016-07-06 11:51+0300\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"
@@ -17,6 +17,12 @@
"20)) ? 1 : 2);;\n"
"X-Generator: Virtaal 0.6.1\n"
+msgid "failed to draw pattern"
+msgstr ""
+
+msgid "A GL error occured"
+msgstr ""
+
msgid "format wasn't negotiated before get function"
msgstr ""
@@ -129,11 +135,23 @@
msgid "Couldn't load DVB channel configuration file: %s"
msgstr ""
-msgid "DVB channel configuration file doesn't contain any channels"
+#, c-format
+msgid "Couldn't find details for DVB channel %s"
msgstr ""
#, c-format
-msgid "Couldn't find details for DVB channel %s"
+msgid "No properties for the DVB channel %s"
+msgstr ""
+
+#, c-format
+msgid "Failed to set properties for the DVB channel %s"
+msgstr ""
+
+#, c-format
+msgid "Couldn't find DVB channel configuration file: %s"
+msgstr ""
+
+msgid "DVB channel configuration file doesn't contain any channels"
msgstr ""
#~ msgid "Could not write to file \"%s\"."
diff --git a/po/ru.gmo b/po/ru.gmo
index bf22fe4..967c791 100644
--- a/po/ru.gmo
+++ b/po/ru.gmo
Binary files differ
diff --git a/po/ru.po b/po/ru.po
index 8a1510b..35eb3aa 100644
--- a/po/ru.po
+++ b/po/ru.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-06-09 11:22+0300\n"
+"POT-Creation-Date: 2016-07-06 11:51+0300\n"
"PO-Revision-Date: 2015-10-18 13:40+0300\n"
"Last-Translator: Yuri Kozlov <yuray@komyakino.ru>\n"
"Language-Team: Russian <gnu@d07.ru>\n"
@@ -20,6 +20,12 @@
"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"
+msgid "failed to draw pattern"
+msgstr ""
+
+msgid "A GL error occured"
+msgstr ""
+
msgid "format wasn't negotiated before get function"
msgstr "перед функцией получения не был согласован формат"
@@ -134,13 +140,25 @@
msgid "Couldn't load DVB channel configuration file: %s"
msgstr "Не удалось загрузить файл настройки каналов DVB: %s"
-msgid "DVB channel configuration file doesn't contain any channels"
-msgstr "Файл настройки каналов DVB не содержит каналов"
-
#, c-format
msgid "Couldn't find details for DVB channel %s"
msgstr "Не удалось найти настройки DVB-канала %s"
+#, fuzzy, c-format
+msgid "No properties for the DVB channel %s"
+msgstr "Не удалось найти настройки DVB-канала %s"
+
+#, fuzzy, c-format
+msgid "Failed to set properties for the DVB channel %s"
+msgstr "Не удалось найти настройки DVB-канала %s"
+
+#, fuzzy, c-format
+msgid "Couldn't find DVB channel configuration file: %s"
+msgstr "Не удалось найти файл настройки каналов DVB"
+
+msgid "DVB channel configuration file doesn't contain any channels"
+msgstr "Файл настройки каналов DVB не содержит каналов"
+
#~ msgid "default GStreamer sound events audiosink"
#~ msgstr "GStreamer audiosink по умолчанию для звуковых событий"
diff --git a/po/sk.gmo b/po/sk.gmo
index 4dd44c7..c004936 100644
--- a/po/sk.gmo
+++ b/po/sk.gmo
Binary files differ
diff --git a/po/sk.po b/po/sk.po
index 5a3eea1..376710d 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-06-09 11:22+0300\n"
+"POT-Creation-Date: 2016-07-06 11:51+0300\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"
@@ -20,6 +20,12 @@
"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
"X-Generator: Poedit 1.6.10\n"
+msgid "failed to draw pattern"
+msgstr ""
+
+msgid "A GL error occured"
+msgstr ""
+
msgid "format wasn't negotiated before get function"
msgstr "formát nebol dohodnutý pred funkciou stiahnutia"
@@ -135,13 +141,25 @@
msgid "Couldn't load DVB channel configuration file: %s"
msgstr "Nepodarilo sa načítať konfiguračný súbor DVB kanálu: %s"
-msgid "DVB channel configuration file doesn't contain any channels"
-msgstr "Konfiguračný súbor DVB kanála neobsahuje žiadne kanály"
-
#, c-format
msgid "Couldn't find details for DVB channel %s"
msgstr "Nepodarilo sa nájsť podrobnosti o DVB kanáli %s"
+#, fuzzy, c-format
+msgid "No properties for the DVB channel %s"
+msgstr "Nepodarilo sa nájsť podrobnosti o DVB kanáli %s"
+
+#, fuzzy, c-format
+msgid "Failed to set properties for the DVB channel %s"
+msgstr "Nepodarilo sa nájsť podrobnosti o DVB kanáli %s"
+
+#, fuzzy, c-format
+msgid "Couldn't find DVB channel configuration file: %s"
+msgstr "Nepodarilo sa nájsť konfiguračný súbor DVB kanálu"
+
+msgid "DVB channel configuration file doesn't contain any channels"
+msgstr "Konfiguračný súbor DVB kanála neobsahuje žiadne kanály"
+
#~ msgid "Couldn't get the Manifest's URI"
#~ msgstr "Nepodarilo sa získať URI Manifestu"
diff --git a/po/sl.gmo b/po/sl.gmo
index f605561..5d98ad1 100644
--- a/po/sl.gmo
+++ b/po/sl.gmo
Binary files differ
diff --git a/po/sl.po b/po/sl.po
index 9720569..f448710 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-06-09 11:22+0300\n"
+"POT-Creation-Date: 2016-07-06 11:51+0300\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"
@@ -22,6 +22,12 @@
"X-Poedit-Country: SLOVENIA\n"
"X-Poedit-SourceCharset: utf-8\n"
+msgid "failed to draw pattern"
+msgstr ""
+
+msgid "A GL error occured"
+msgstr ""
+
msgid "format wasn't negotiated before get function"
msgstr ""
@@ -135,11 +141,23 @@
msgid "Couldn't load DVB channel configuration file: %s"
msgstr ""
-msgid "DVB channel configuration file doesn't contain any channels"
+#, c-format
+msgid "Couldn't find details for DVB channel %s"
msgstr ""
#, c-format
-msgid "Couldn't find details for DVB channel %s"
+msgid "No properties for the DVB channel %s"
+msgstr ""
+
+#, c-format
+msgid "Failed to set properties for the DVB channel %s"
+msgstr ""
+
+#, c-format
+msgid "Couldn't find DVB channel configuration file: %s"
+msgstr ""
+
+msgid "DVB channel configuration file doesn't contain any channels"
msgstr ""
#~ msgid "Could not write to file \"%s\"."
diff --git a/po/sq.gmo b/po/sq.gmo
index 0096564..3aa0c60 100644
--- a/po/sq.gmo
+++ b/po/sq.gmo
Binary files differ
diff --git a/po/sq.po b/po/sq.po
index 3222b8b..ece9068 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-06-09 11:22+0300\n"
+"POT-Creation-Date: 2016-07-06 11:51+0300\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"
@@ -15,6 +15,12 @@
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
+msgid "failed to draw pattern"
+msgstr ""
+
+msgid "A GL error occured"
+msgstr ""
+
msgid "format wasn't negotiated before get function"
msgstr ""
@@ -129,11 +135,23 @@
msgid "Couldn't load DVB channel configuration file: %s"
msgstr ""
-msgid "DVB channel configuration file doesn't contain any channels"
+#, c-format
+msgid "Couldn't find details for DVB channel %s"
msgstr ""
#, c-format
-msgid "Couldn't find details for DVB channel %s"
+msgid "No properties for the DVB channel %s"
+msgstr ""
+
+#, c-format
+msgid "Failed to set properties for the DVB channel %s"
+msgstr ""
+
+#, c-format
+msgid "Couldn't find DVB channel configuration file: %s"
+msgstr ""
+
+msgid "DVB channel configuration file doesn't contain any channels"
msgstr ""
#~ msgid "Could not write to file \"%s\"."
diff --git a/po/sr.gmo b/po/sr.gmo
index 7e82e22..609d562 100644
--- a/po/sr.gmo
+++ b/po/sr.gmo
Binary files differ
diff --git a/po/sr.po b/po/sr.po
index ebfabfb..7c6f7fa 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-06-09 11:22+0300\n"
+"POT-Creation-Date: 2016-07-06 11:51+0300\n"
"PO-Revision-Date: 2015-12-24 11:34+0200\n"
"Last-Translator: Мирослав Николић <miroslavnikolic@rocketmail.com>\n"
"Language-Team: Serbian <(nothing)>\n"
@@ -18,6 +18,12 @@
"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"
+msgid "failed to draw pattern"
+msgstr ""
+
+msgid "A GL error occured"
+msgstr ""
+
msgid "format wasn't negotiated before get function"
msgstr "запис није договорен пре функције добављања (get)"
@@ -131,13 +137,25 @@
msgid "Couldn't load DVB channel configuration file: %s"
msgstr "Не могу да учитам датотеку подешавања ДВБ канала: %s"
-msgid "DVB channel configuration file doesn't contain any channels"
-msgstr "Датотека подешавања ДВБ канала не садржи ниједан канал"
-
#, c-format
msgid "Couldn't find details for DVB channel %s"
msgstr "Не могу да пронађем податке за ДВБ канал „%s“"
+#, fuzzy, c-format
+msgid "No properties for the DVB channel %s"
+msgstr "Не могу да пронађем податке за ДВБ канал „%s“"
+
+#, fuzzy, c-format
+msgid "Failed to set properties for the DVB channel %s"
+msgstr "Не могу да пронађем податке за ДВБ канал „%s“"
+
+#, fuzzy, c-format
+msgid "Couldn't find DVB channel configuration file: %s"
+msgstr "Не могу да пронађем датотеку подешавања ДВБ канала"
+
+msgid "DVB channel configuration file doesn't contain any channels"
+msgstr "Датотека подешавања ДВБ канала не садржи ниједан канал"
+
#~ msgid "default GStreamer sound events audiosink"
#~ msgstr "основни аудио усклађивач звучних догађаја Гстримера"
diff --git a/po/sv.gmo b/po/sv.gmo
index 8343847..cfd1a2d 100644
--- a/po/sv.gmo
+++ b/po/sv.gmo
Binary files differ
diff --git a/po/sv.po b/po/sv.po
index aac7afb..d255206 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-06-09 11:22+0300\n"
+"POT-Creation-Date: 2016-07-06 11:51+0300\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"
@@ -18,6 +18,12 @@
"Content-Transfer-Encoding: 8bit\n"
"X-Generator: Poedit 1.8.6\n"
+msgid "failed to draw pattern"
+msgstr ""
+
+msgid "A GL error occured"
+msgstr ""
+
msgid "format wasn't negotiated before get function"
msgstr "formatet förhandlades inte fram innan hämtfunktionen"
@@ -129,13 +135,25 @@
msgid "Couldn't load DVB channel configuration file: %s"
msgstr "Kunde ej ladda konfigurationsfil för DVB-kanal: %s"
-msgid "DVB channel configuration file doesn't contain any channels"
-msgstr "Konfigurationsfil för DVB-kanal innehåller inga kanaler"
-
#, c-format
msgid "Couldn't find details for DVB channel %s"
msgstr "Kunde ej hitta detaljer för DVB-kanal %s"
+#, fuzzy, c-format
+msgid "No properties for the DVB channel %s"
+msgstr "Kunde ej hitta detaljer för DVB-kanal %s"
+
+#, fuzzy, c-format
+msgid "Failed to set properties for the DVB channel %s"
+msgstr "Kunde ej hitta detaljer för DVB-kanal %s"
+
+#, fuzzy, c-format
+msgid "Couldn't find DVB channel configuration file: %s"
+msgstr "Kunde ej hitta konfigurationsfil för DVB-kanal"
+
+msgid "DVB channel configuration file doesn't contain any channels"
+msgstr "Konfigurationsfil för DVB-kanal innehåller inga kanaler"
+
#~ msgid "default GStreamer sound events audiosink"
#~ msgstr "standard GStreamer-ljudutgång för ljudhändelser"
diff --git a/po/tr.gmo b/po/tr.gmo
index d226c00..d98a6a2 100644
--- a/po/tr.gmo
+++ b/po/tr.gmo
Binary files differ
diff --git a/po/tr.po b/po/tr.po
index 64a5756..ebd6553 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-06-09 11:22+0300\n"
+"POT-Creation-Date: 2016-07-06 11:51+0300\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"
@@ -18,6 +18,12 @@
"X-Generator: Lokalize 1.5\n"
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
+msgid "failed to draw pattern"
+msgstr ""
+
+msgid "A GL error occured"
+msgstr ""
+
msgid "format wasn't negotiated before get function"
msgstr "get fonksiyonundan önce biçim görüşülemedi"
@@ -131,13 +137,25 @@
msgid "Couldn't load DVB channel configuration file: %s"
msgstr "DVB kanal yapılandırma dosyası yüklenemedi: %s"
-msgid "DVB channel configuration file doesn't contain any channels"
-msgstr "DVB kanal yapılandırma dosyası herhangi bir kanal içermiyor"
-
#, c-format
msgid "Couldn't find details for DVB channel %s"
msgstr "DVB kanalı %s için ayrıntılar bulunamadı"
+#, fuzzy, c-format
+msgid "No properties for the DVB channel %s"
+msgstr "DVB kanalı %s için ayrıntılar bulunamadı"
+
+#, fuzzy, c-format
+msgid "Failed to set properties for the DVB channel %s"
+msgstr "DVB kanalı %s için ayrıntılar bulunamadı"
+
+#, fuzzy, c-format
+msgid "Couldn't find DVB channel configuration file: %s"
+msgstr "DVB kanal yapılandırma dosyası bulunamadı"
+
+msgid "DVB channel configuration file doesn't contain any channels"
+msgstr "DVB kanal yapılandırma dosyası herhangi bir kanal içermiyor"
+
#~ msgid "Couldn't get the Manifest's URI"
#~ msgstr "Manifest URI alınamadı"
diff --git a/po/uk.gmo b/po/uk.gmo
index 04e736f..9d8d2f8 100644
--- a/po/uk.gmo
+++ b/po/uk.gmo
Binary files differ
diff --git a/po/uk.po b/po/uk.po
index fba0fc5..cba3fad 100644
--- a/po/uk.po
+++ b/po/uk.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-06-09 11:22+0300\n"
+"POT-Creation-Date: 2016-07-06 11:51+0300\n"
"PO-Revision-Date: 2015-10-15 20:44+0300\n"
"Last-Translator: Yuri Chornoivan <yurchor@ukr.net>\n"
"Language-Team: Ukrainian <translation-team-uk@lists.sourceforge.net>\n"
@@ -20,6 +20,12 @@
"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
"X-Generator: Lokalize 1.5\n"
+msgid "failed to draw pattern"
+msgstr ""
+
+msgid "A GL error occured"
+msgstr ""
+
msgid "format wasn't negotiated before get function"
msgstr "формат не було узгоджено до виклику функції get"
@@ -139,13 +145,25 @@
msgid "Couldn't load DVB channel configuration file: %s"
msgstr "Не вдалося завантажити файл налаштувань каналів DVB: %s"
-msgid "DVB channel configuration file doesn't contain any channels"
-msgstr "У файлі налаштувань каналів DVB не міститься даних щодо жодного каналу"
-
#, c-format
msgid "Couldn't find details for DVB channel %s"
msgstr "Не вдалося знайти параметрів каналу DVB %s"
+#, fuzzy, c-format
+msgid "No properties for the DVB channel %s"
+msgstr "Не вдалося знайти параметрів каналу DVB %s"
+
+#, fuzzy, c-format
+msgid "Failed to set properties for the DVB channel %s"
+msgstr "Не вдалося знайти параметрів каналу DVB %s"
+
+#, fuzzy, c-format
+msgid "Couldn't find DVB channel configuration file: %s"
+msgstr "Не вдалося знайти файла налаштувань каналів DVB"
+
+msgid "DVB channel configuration file doesn't contain any channels"
+msgstr "У файлі налаштувань каналів DVB не міститься даних щодо жодного каналу"
+
#~ msgid "default GStreamer sound events audiosink"
#~ msgstr "типовий приймач звукових подій GStreamer"
diff --git a/po/vi.gmo b/po/vi.gmo
index a0bf0b1..53af1e1 100644
--- a/po/vi.gmo
+++ b/po/vi.gmo
Binary files differ
diff --git a/po/vi.po b/po/vi.po
index 8742b35..cd4fe49 100644
--- a/po/vi.po
+++ b/po/vi.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-06-09 11:22+0300\n"
+"POT-Creation-Date: 2016-07-06 11:51+0300\n"
"PO-Revision-Date: 2015-10-16 08:27+0700\n"
"Last-Translator: Trần Ngọc Quân <vnwildman@gmail.com>\n"
"Language-Team: Vietnamese <translation-team-vi@lists.sourceforge.net>\n"
@@ -20,6 +20,12 @@
"X-Language-Team-Website: <http://translationproject.org/team/vi.html>\n"
"X-Generator: Gtranslator 2.91.7\n"
+msgid "failed to draw pattern"
+msgstr ""
+
+msgid "A GL error occured"
+msgstr ""
+
msgid "format wasn't negotiated before get function"
msgstr "định dạng không được dàn xếp trước hàm"
@@ -135,13 +141,25 @@
msgid "Couldn't load DVB channel configuration file: %s"
msgstr "Không thể tải tập tin cấu hình kênh DVB: %s"
-msgid "DVB channel configuration file doesn't contain any channels"
-msgstr "Tập tin cấu hình kênh DVB chẳng chứa kênh nào cả"
-
#, c-format
msgid "Couldn't find details for DVB channel %s"
msgstr "Không thể tìm thấy chi tiết cho kênh DVB %s"
+#, fuzzy, c-format
+msgid "No properties for the DVB channel %s"
+msgstr "Không thể tìm thấy chi tiết cho kênh DVB %s"
+
+#, fuzzy, c-format
+msgid "Failed to set properties for the DVB channel %s"
+msgstr "Không thể tìm thấy chi tiết cho kênh DVB %s"
+
+#, fuzzy, c-format
+msgid "Couldn't find DVB channel configuration file: %s"
+msgstr "Không thể tìm thấy tập tin cấu hình kênh DVB"
+
+msgid "DVB channel configuration file doesn't contain any channels"
+msgstr "Tập tin cấu hình kênh DVB chẳng chứa kênh nào cả"
+
#~ msgid "default GStreamer sound events audiosink"
#~ msgstr "các sự kiện âm thanh GStreamer mặc định cho “audiosink”"
diff --git a/po/zh_CN.gmo b/po/zh_CN.gmo
index f01b677..32ac8a5 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 594115d..265bc13 100644
--- a/po/zh_CN.po
+++ b/po/zh_CN.po
@@ -9,7 +9,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-06-09 11:22+0300\n"
+"POT-Creation-Date: 2016-07-06 11:51+0300\n"
"PO-Revision-Date: 2015-10-16 19:27+0800\n"
"Last-Translator: Tianze Wang <zwpwjwtz@126.com>\n"
"Language-Team: Chinese (simplified) <i18n-zh@googlegroups.com>\n"
@@ -19,6 +19,12 @@
"Content-Transfer-Encoding: 8bit\n"
"X-Generator: Poedit 1.8.5\n"
+msgid "failed to draw pattern"
+msgstr ""
+
+msgid "A GL error occured"
+msgstr ""
+
msgid "format wasn't negotiated before get function"
msgstr "在调用get函数之前未确定合适的格式"
@@ -127,13 +133,25 @@
msgid "Couldn't load DVB channel configuration file: %s"
msgstr "无法加载DVB通道配置文件:%s"
-msgid "DVB channel configuration file doesn't contain any channels"
-msgstr "DVB通道配置文件不包含任何通道"
-
#, c-format
msgid "Couldn't find details for DVB channel %s"
msgstr "无法获取DVB通道 %s 的详细信息"
+#, fuzzy, c-format
+msgid "No properties for the DVB channel %s"
+msgstr "无法获取DVB通道 %s 的详细信息"
+
+#, fuzzy, c-format
+msgid "Failed to set properties for the DVB channel %s"
+msgstr "无法获取DVB通道 %s 的详细信息"
+
+#, fuzzy, c-format
+msgid "Couldn't find DVB channel configuration file: %s"
+msgstr "无法找到DVB通道配置文件"
+
+msgid "DVB channel configuration file doesn't contain any channels"
+msgstr "DVB通道配置文件不包含任何通道"
+
#~ msgid "default GStreamer sound events audiosink"
#~ msgstr "默认GStreamer声音事件的音频汇"
diff --git a/sys/Makefile.am b/sys/Makefile.am
index 32f79fb..9a34006 100644
--- a/sys/Makefile.am
+++ b/sys/Makefile.am
@@ -64,6 +64,12 @@
FBDEV_DIR=
endif
+if USE_KMS
+KMS_DIR=kms
+else
+KMS_DIR=
+endif
+
if USE_DVB
DVB_DIR=dvb
else
@@ -148,9 +154,9 @@
TINYALSA_DIR=
endif
-SUBDIRS = $(ACM_DIR) $(ANDROID_MEDIA_DIR) $(APPLE_MEDIA_DIR) $(AVC_DIR) $(BLUEZ_DIR) $(D3DVIDEOSINK_DIR) $(DECKLINK_DIR) $(DIRECTSOUND_DIR) $(WINKS_DIR) $(DVB_DIR) $(FBDEV_DIR) $(LINSYS_DIR) $(OPENSLES_DIR) $(PVR_DIR) $(SHM_DIR) $(UVCH264_DIR) $(VCD_DIR) $(VDPAU_DIR) $(WININET_DIR) $(WINSCREENCAP_DIR) $(WASAPI_DIR) $(NVENC_DIR) $(TINYALSA_DIR)
+SUBDIRS = $(ACM_DIR) $(ANDROID_MEDIA_DIR) $(APPLE_MEDIA_DIR) $(AVC_DIR) $(BLUEZ_DIR) $(D3DVIDEOSINK_DIR) $(DECKLINK_DIR) $(DIRECTSOUND_DIR) $(WINKS_DIR) $(DVB_DIR) $(FBDEV_DIR) $(KMS_DIR) $(LINSYS_DIR) $(OPENSLES_DIR) $(PVR_DIR) $(SHM_DIR) $(UVCH264_DIR) $(VCD_DIR) $(VDPAU_DIR) $(WININET_DIR) $(WINSCREENCAP_DIR) $(WASAPI_DIR) $(NVENC_DIR) $(TINYALSA_DIR)
-DIST_SUBDIRS = acmenc acmmp3dec androidmedia applemedia applemedia-nonpublic avc bluez d3dvideosink decklink directsound dvb linsys fbdev dshowdecwrapper dshowsrcwrapper dshowvideosink \
+DIST_SUBDIRS = acmenc acmmp3dec androidmedia applemedia applemedia-nonpublic avc bluez d3dvideosink decklink directsound dvb linsys fbdev kms dshowdecwrapper dshowsrcwrapper dshowvideosink \
opensles pvr2d shm uvch264 vcd vdpau wasapi wininet winks winscreencap \
nvenc tinyalsa
diff --git a/sys/Makefile.in b/sys/Makefile.in
index 825e341..31a0c6b 100644
--- a/sys/Makefile.in
+++ b/sys/Makefile.in
@@ -281,6 +281,8 @@
DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
DSYMUTIL = @DSYMUTIL@
DTLS_CFLAGS = @DTLS_CFLAGS@
DTLS_LIBS = @DTLS_LIBS@
@@ -496,6 +498,8 @@
LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
LIPO = @LIPO@
LN_S = @LN_S@
LOCALEDIR = @LOCALEDIR@
@@ -622,8 +626,6 @@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
SNDIO_LIBS = @SNDIO_LIBS@
@@ -668,6 +670,8 @@
WAYLAND_LIBS = @WAYLAND_LIBS@
WEBP_CFLAGS = @WEBP_CFLAGS@
WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
WGET = @WGET@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
@@ -778,6 +782,8 @@
@USE_DIRECTSOUND_TRUE@DIRECTSOUND_DIR = directsound
@USE_FBDEV_FALSE@FBDEV_DIR =
@USE_FBDEV_TRUE@FBDEV_DIR = fbdev
+@USE_KMS_FALSE@KMS_DIR =
+@USE_KMS_TRUE@KMS_DIR = kms
@USE_DVB_FALSE@DVB_DIR =
@USE_DVB_TRUE@DVB_DIR = dvb
@USE_LINSYS_FALSE@LINSYS_DIR =
@@ -814,8 +820,8 @@
@USE_NVENC_TRUE@NVENC_DIR = nvenc
@USE_TINYALSA_FALSE@TINYALSA_DIR =
@USE_TINYALSA_TRUE@TINYALSA_DIR = tinyalsa
-SUBDIRS = $(ACM_DIR) $(ANDROID_MEDIA_DIR) $(APPLE_MEDIA_DIR) $(AVC_DIR) $(BLUEZ_DIR) $(D3DVIDEOSINK_DIR) $(DECKLINK_DIR) $(DIRECTSOUND_DIR) $(WINKS_DIR) $(DVB_DIR) $(FBDEV_DIR) $(LINSYS_DIR) $(OPENSLES_DIR) $(PVR_DIR) $(SHM_DIR) $(UVCH264_DIR) $(VCD_DIR) $(VDPAU_DIR) $(WININET_DIR) $(WINSCREENCAP_DIR) $(WASAPI_DIR) $(NVENC_DIR) $(TINYALSA_DIR)
-DIST_SUBDIRS = acmenc acmmp3dec androidmedia applemedia applemedia-nonpublic avc bluez d3dvideosink decklink directsound dvb linsys fbdev dshowdecwrapper dshowsrcwrapper dshowvideosink \
+SUBDIRS = $(ACM_DIR) $(ANDROID_MEDIA_DIR) $(APPLE_MEDIA_DIR) $(AVC_DIR) $(BLUEZ_DIR) $(D3DVIDEOSINK_DIR) $(DECKLINK_DIR) $(DIRECTSOUND_DIR) $(WINKS_DIR) $(DVB_DIR) $(FBDEV_DIR) $(KMS_DIR) $(LINSYS_DIR) $(OPENSLES_DIR) $(PVR_DIR) $(SHM_DIR) $(UVCH264_DIR) $(VCD_DIR) $(VDPAU_DIR) $(WININET_DIR) $(WINSCREENCAP_DIR) $(WASAPI_DIR) $(NVENC_DIR) $(TINYALSA_DIR)
+DIST_SUBDIRS = acmenc acmmp3dec androidmedia applemedia applemedia-nonpublic avc bluez d3dvideosink decklink directsound dvb linsys fbdev kms dshowdecwrapper dshowsrcwrapper dshowvideosink \
opensles pvr2d shm uvch264 vcd vdpau wasapi wininet winks winscreencap \
nvenc tinyalsa
diff --git a/sys/acmenc/Makefile.in b/sys/acmenc/Makefile.in
index ec745ee..9f36020 100644
--- a/sys/acmenc/Makefile.in
+++ b/sys/acmenc/Makefile.in
@@ -299,6 +299,8 @@
DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
DSYMUTIL = @DSYMUTIL@
DTLS_CFLAGS = @DTLS_CFLAGS@
DTLS_LIBS = @DTLS_LIBS@
@@ -514,6 +516,8 @@
LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
LIPO = @LIPO@
LN_S = @LN_S@
LOCALEDIR = @LOCALEDIR@
@@ -640,8 +644,6 @@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
SNDIO_LIBS = @SNDIO_LIBS@
@@ -686,6 +688,8 @@
WAYLAND_LIBS = @WAYLAND_LIBS@
WEBP_CFLAGS = @WEBP_CFLAGS@
WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
WGET = @WGET@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
diff --git a/sys/acmenc/acmenc.c b/sys/acmenc/acmenc.c
index 7a1c1ff..7fed6c7 100644
--- a/sys/acmenc/acmenc.c
+++ b/sys/acmenc/acmenc.c
@@ -485,10 +485,10 @@
g_param_spec_int ("bitrate", "Bitrate", "Bitrate to encode at (in bps)",
0, 1000000, DEFAULT_BITRATE, G_PARAM_READWRITE));
- gst_element_class_add_pad_template (element_class,
- gst_static_pad_template_get (&acmenc_sink_template));
- gst_element_class_add_pad_template (element_class,
- gst_static_pad_template_get (&acmenc_src_template));
+ gst_element_class_add_static_pad_template (element_class,
+ &acmenc_sink_template);
+ gst_element_class_add_static_pad_template (element_class,
+ &acmenc_src_template);
params =
(ACMEncParams *) g_type_get_qdata (G_OBJECT_CLASS_TYPE (klass),
ACMENC_PARAMS_QDATA);
diff --git a/sys/acmmp3dec/Makefile.in b/sys/acmmp3dec/Makefile.in
index 2e0b71d..78cad2b 100644
--- a/sys/acmmp3dec/Makefile.in
+++ b/sys/acmmp3dec/Makefile.in
@@ -299,6 +299,8 @@
DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
DSYMUTIL = @DSYMUTIL@
DTLS_CFLAGS = @DTLS_CFLAGS@
DTLS_LIBS = @DTLS_LIBS@
@@ -514,6 +516,8 @@
LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
LIPO = @LIPO@
LN_S = @LN_S@
LOCALEDIR = @LOCALEDIR@
@@ -640,8 +644,6 @@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
SNDIO_LIBS = @SNDIO_LIBS@
@@ -686,6 +688,8 @@
WAYLAND_LIBS = @WAYLAND_LIBS@
WEBP_CFLAGS = @WEBP_CFLAGS@
WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
WGET = @WGET@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
diff --git a/sys/acmmp3dec/acmmp3dec.c b/sys/acmmp3dec/acmmp3dec.c
index 7537691..4ec3385 100644
--- a/sys/acmmp3dec/acmmp3dec.c
+++ b/sys/acmmp3dec/acmmp3dec.c
@@ -417,13 +417,12 @@
GstElementClass *element_class = GST_ELEMENT_CLASS (klass);
gobjectclass->dispose = acmmp3dec_dispose;
- gst_element_class_add_pad_template (element_class,
- gst_static_pad_template_get (&acmmp3dec_sink_template));
- gst_element_class_add_pad_template (element_class,
- gst_static_pad_template_get (&acmmp3dec_src_template));
+ gst_element_class_add_static_pad_template (element_class,
+ &acmmp3dec_sink_template);
+ gst_element_class_add_static_pad_template (element_class,
+ &acmmp3dec_src_template);
gst_element_class_set_static_metadata (element_class, "ACM MP3 decoder",
- "Codec/Decoder/Audio",
- "Decode MP3 using ACM decoder",
+ "Codec/Decoder/Audio", "Decode MP3 using ACM decoder",
"Pioneers of the Inevitable <songbird@songbirdnest.com");
}
diff --git a/sys/androidmedia/Makefile.am b/sys/androidmedia/Makefile.am
index 7ad9b6e..3bb4ea3 100644
--- a/sys/androidmedia/Makefile.am
+++ b/sys/androidmedia/Makefile.am
@@ -9,7 +9,6 @@
gstamcvideodec.c \
gstamcvideoenc.c \
gst-android-graphics-imageformat.c \
- gst-android-graphics-surfacetexture.c \
gst-android-hardware-camera.c \
gstjniutils.c
@@ -23,7 +22,6 @@
gstamcvideodec.h \
gstamcvideoenc.h \
gst-android-graphics-imageformat.h \
- gst-android-graphics-surfacetexture.h \
gst-android-hardware-camera.h \
gstjniutils.h
diff --git a/sys/androidmedia/Makefile.in b/sys/androidmedia/Makefile.in
index 0f5ca04..cdf845c 100644
--- a/sys/androidmedia/Makefile.in
+++ b/sys/androidmedia/Makefile.in
@@ -177,7 +177,6 @@
libgstandroidmedia_la-gstamcvideodec.lo \
libgstandroidmedia_la-gstamcvideoenc.lo \
libgstandroidmedia_la-gst-android-graphics-imageformat.lo \
- libgstandroidmedia_la-gst-android-graphics-surfacetexture.lo \
libgstandroidmedia_la-gst-android-hardware-camera.lo \
libgstandroidmedia_la-gstjniutils.lo
libgstandroidmedia_la_OBJECTS = $(am_libgstandroidmedia_la_OBJECTS)
@@ -317,6 +316,8 @@
DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
DSYMUTIL = @DSYMUTIL@
DTLS_CFLAGS = @DTLS_CFLAGS@
DTLS_LIBS = @DTLS_LIBS@
@@ -532,6 +533,8 @@
LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
LIPO = @LIPO@
LN_S = @LN_S@
LOCALEDIR = @LOCALEDIR@
@@ -658,8 +661,6 @@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
SNDIO_LIBS = @SNDIO_LIBS@
@@ -704,6 +705,8 @@
WAYLAND_LIBS = @WAYLAND_LIBS@
WEBP_CFLAGS = @WEBP_CFLAGS@
WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
WGET = @WGET@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
@@ -802,7 +805,6 @@
gstamcvideodec.c \
gstamcvideoenc.c \
gst-android-graphics-imageformat.c \
- gst-android-graphics-surfacetexture.c \
gst-android-hardware-camera.c \
gstjniutils.c
@@ -816,7 +818,6 @@
gstamcvideodec.h \
gstamcvideoenc.h \
gst-android-graphics-imageformat.h \
- gst-android-graphics-surfacetexture.h \
gst-android-hardware-camera.h \
gstjniutils.h
@@ -926,7 +927,6 @@
-rm -f *.tab.c
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstandroidmedia_la-gst-android-graphics-imageformat.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstandroidmedia_la-gst-android-graphics-surfacetexture.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstandroidmedia_la-gst-android-hardware-camera.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstandroidmedia_la-gstahcsrc.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstandroidmedia_la-gstamc.Plo@am__quote@
@@ -1017,13 +1017,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 $(libgstandroidmedia_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstandroidmedia_la_CFLAGS) $(CFLAGS) -c -o libgstandroidmedia_la-gst-android-graphics-imageformat.lo `test -f 'gst-android-graphics-imageformat.c' || echo '$(srcdir)/'`gst-android-graphics-imageformat.c
-libgstandroidmedia_la-gst-android-graphics-surfacetexture.lo: gst-android-graphics-surfacetexture.c
-@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstandroidmedia_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstandroidmedia_la_CFLAGS) $(CFLAGS) -MT libgstandroidmedia_la-gst-android-graphics-surfacetexture.lo -MD -MP -MF $(DEPDIR)/libgstandroidmedia_la-gst-android-graphics-surfacetexture.Tpo -c -o libgstandroidmedia_la-gst-android-graphics-surfacetexture.lo `test -f 'gst-android-graphics-surfacetexture.c' || echo '$(srcdir)/'`gst-android-graphics-surfacetexture.c
-@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgstandroidmedia_la-gst-android-graphics-surfacetexture.Tpo $(DEPDIR)/libgstandroidmedia_la-gst-android-graphics-surfacetexture.Plo
-@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gst-android-graphics-surfacetexture.c' object='libgstandroidmedia_la-gst-android-graphics-surfacetexture.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 $(libgstandroidmedia_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstandroidmedia_la_CFLAGS) $(CFLAGS) -c -o libgstandroidmedia_la-gst-android-graphics-surfacetexture.lo `test -f 'gst-android-graphics-surfacetexture.c' || echo '$(srcdir)/'`gst-android-graphics-surfacetexture.c
-
libgstandroidmedia_la-gst-android-hardware-camera.lo: gst-android-hardware-camera.c
@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstandroidmedia_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstandroidmedia_la_CFLAGS) $(CFLAGS) -MT libgstandroidmedia_la-gst-android-hardware-camera.lo -MD -MP -MF $(DEPDIR)/libgstandroidmedia_la-gst-android-hardware-camera.Tpo -c -o libgstandroidmedia_la-gst-android-hardware-camera.lo `test -f 'gst-android-hardware-camera.c' || echo '$(srcdir)/'`gst-android-hardware-camera.c
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgstandroidmedia_la-gst-android-hardware-camera.Tpo $(DEPDIR)/libgstandroidmedia_la-gst-android-hardware-camera.Plo
diff --git a/sys/androidmedia/gst-android-graphics-surfacetexture.c b/sys/androidmedia/gst-android-graphics-surfacetexture.c
deleted file mode 100644
index 84993a8..0000000
--- a/sys/androidmedia/gst-android-graphics-surfacetexture.c
+++ /dev/null
@@ -1,144 +0,0 @@
-/*
- * Copyright (C) 2012, Collabora Ltd.
- * Copyright (C) 2012, Cisco Systems, Inc.
- * Author: Youness Alaoui <youness.alaoui@collabora.co.uk>
- *
- * Copyright (C) 2015, Collabora Ltd.
- * Author: Justin Kim <justin.kim@collabora.com>
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation
- * version 2.1 of the License.
- *
- * 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
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- *
- */
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include "gstjniutils.h"
-
-#include "gst-android-graphics-surfacetexture.h"
-
-static struct
-{
- jclass klass;
- jmethodID constructor;
- jmethodID release;
-} android_graphics_surfacetexture = {
-0};
-
-static gboolean
-_init_classes (void)
-{
- JNIEnv *env;
- GError *err = NULL;
-
- env = gst_amc_jni_get_env ();
-
- /* android.graphics.SurfaceTexture */
- android_graphics_surfacetexture.klass =
- gst_amc_jni_get_class (env, &err, "android/graphics/SurfaceTexture");
-
- if (!android_graphics_surfacetexture.klass) {
- GST_ERROR ("Failed to get android.graphics.SurfaceTexture class: %s",
- err->message);
- g_clear_error (&err);
- return FALSE;
- }
-
- android_graphics_surfacetexture.constructor =
- gst_amc_jni_get_method_id (env, &err,
- android_graphics_surfacetexture.klass, "<init>", "(I)V");
- android_graphics_surfacetexture.release =
- gst_amc_jni_get_method_id (env, &err,
- android_graphics_surfacetexture.klass, "release", "()V");
-
- return TRUE;
-}
-
-gboolean
-gst_android_graphics_surfacetexture_init (void)
-{
- if (!_init_classes ()) {
- gst_android_graphics_surfacetexture_deinit ();
- return FALSE;
- }
-
- return TRUE;
-}
-
-void
-gst_android_graphics_surfacetexture_deinit (void)
-{
- JNIEnv *env = gst_amc_jni_get_env ();
-
- if (android_graphics_surfacetexture.klass)
- (*env)->DeleteGlobalRef (env, android_graphics_surfacetexture.klass);
- android_graphics_surfacetexture.klass = NULL;
-}
-
-/* android.graphics.SurfaceTexture */
-GstAGSurfaceTexture *
-gst_ag_surfacetexture_new (gint texture_id)
-{
- JNIEnv *env = gst_amc_jni_get_env ();
- jobject object = NULL;
- GstAGSurfaceTexture *tex = NULL;
-
- object = (*env)->NewObject (env,
- android_graphics_surfacetexture.klass,
- android_graphics_surfacetexture.constructor, texture_id);
- if ((*env)->ExceptionCheck (env) || !object) {
- GST_ERROR ("Failed to call Java method");
- (*env)->ExceptionClear (env);
- return NULL;
- }
-
- tex = g_slice_new0 (GstAGSurfaceTexture);
- tex->object = (*env)->NewGlobalRef (env, object);
- if (!tex->object) {
- GST_ERROR ("Failed to create global reference");
- (*env)->ExceptionClear (env);
- g_slice_free (GstAGSurfaceTexture, tex);
- tex = NULL;
- }
- (*env)->DeleteLocalRef (env, object);
-
- return tex;
-}
-
-void
-gst_ag_surfacetexture_release (GstAGSurfaceTexture * self)
-{
- JNIEnv *env;
- GError *err = NULL;
-
- env = gst_amc_jni_get_env ();
-
- if (!gst_amc_jni_call_void_method (env, &err, self->object,
- android_graphics_surfacetexture.release)) {
- GST_ERROR ("Failed to call release: %s", err->message);
- g_clear_error (&err);
- }
-
-}
-
-void
-gst_ag_surfacetexture_free (GstAGSurfaceTexture * self)
-{
- JNIEnv *env = gst_amc_jni_get_env ();
-
- (*env)->DeleteGlobalRef (env, self->object);
- g_slice_free (GstAGSurfaceTexture, self);
-}
diff --git a/sys/androidmedia/gst-android-graphics-surfacetexture.h b/sys/androidmedia/gst-android-graphics-surfacetexture.h
deleted file mode 100644
index 3bb80ca..0000000
--- a/sys/androidmedia/gst-android-graphics-surfacetexture.h
+++ /dev/null
@@ -1,54 +0,0 @@
-/*
- * Copyright (C) 2012, Collabora Ltd.
- * Copyright (C) 2012, Cisco Systems, Inc.
- * Author: Youness Alaoui <youness.alaoui@collabora.co.uk>
- *
- * Copyright (C) 2015, Collabora Ltd.
- * Author: Justin Kim <justin.kim@collabora.com>
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation
- * version 2.1 of the License.
- *
- * 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
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- *
- */
-
-#ifndef __GST_ANDROID_GRAPHICS_SURFACETEXTURE_H__
-#define __GST_ANDROID_GRAPHICS_SURFACETEXTURE_H__
-
-#include <gst/gst.h>
-#include <jni.h>
-
-
-G_BEGIN_DECLS
-
-typedef struct _GstAGSurfaceTexture GstAGSurfaceTexture;
-
-/* android.graphics.SurfaceTexture */
-struct _GstAGSurfaceTexture {
- /* < private > */
- jobject object; /* global reference */
-};
-
-
-gboolean gst_android_graphics_surfacetexture_init (void);
-void gst_android_graphics_surfacetexture_deinit (void);
-
-/* android.graphics.SurfaceTexture */
-GstAGSurfaceTexture *gst_ag_surfacetexture_new (gint texture_id);
-void gst_ag_surfacetexture_release (GstAGSurfaceTexture *self);
-void gst_ag_surfacetexture_free (GstAGSurfaceTexture *self);
-
-G_END_DECLS
-
-#endif /* __GST_ANDROID_GRAPHICS_SURFACETEXTURE_H__ */
-
diff --git a/sys/androidmedia/gst-android-hardware-camera.c b/sys/androidmedia/gst-android-hardware-camera.c
index 11c9253..c22129f 100644
--- a/sys/androidmedia/gst-android-hardware-camera.c
+++ b/sys/androidmedia/gst-android-hardware-camera.c
@@ -33,26 +33,6 @@
GST_DEBUG_CATEGORY_STATIC (ahc_debug);
#define GST_CAT_DEFAULT ahc_debug
-#define GST_DVM_STATIC_CALL(error_statement, type, k, method, ...) \
- (*env)->CallStatic##type##Method (env, k.klass, k.method, ## __VA_ARGS__); \
- if ((*env)->ExceptionCheck (env)) { \
- GST_ERROR ("Failed to call Java method"); \
- (*env)->ExceptionDescribe (env); \
- (*env)->ExceptionClear (env); \
- error_statement; \
- }
-
-#define GST_DVM_CALL(error_statement, obj, type, k, method, ...) \
- (*env)->Call##type##Method (env, obj, k.method, ## __VA_ARGS__); \
- if ((*env)->ExceptionCheck (env)) { \
- GST_ERROR ("Failed to call Java method"); \
- (*env)->ExceptionDescribe (env); \
- (*env)->ExceptionClear (env); \
- error_statement; \
- }
-
-
-
static struct
{
jclass klass;
@@ -657,8 +637,7 @@
jobject local = android_hardware_camera_parameters.WHITE_BALANCE_AUTO;
android_hardware_camera_parameters.WHITE_BALANCE_AUTO =
- (*env)->NewGlobalRef (env, local);
- (*env)->DeleteLocalRef (env, local);
+ gst_amc_jni_object_make_global (env, local);
}
fieldID =
@@ -678,8 +657,7 @@
android_hardware_camera_parameters.WHITE_BALANCE_INCANDESCENT;
android_hardware_camera_parameters.WHITE_BALANCE_INCANDESCENT =
- (*env)->NewGlobalRef (env, local);
- (*env)->DeleteLocalRef (env, local);
+ gst_amc_jni_object_make_global (env, local);
}
fieldID =
@@ -699,8 +677,7 @@
android_hardware_camera_parameters.WHITE_BALANCE_FLUORESCENT;
android_hardware_camera_parameters.WHITE_BALANCE_FLUORESCENT =
- (*env)->NewGlobalRef (env, local);
- (*env)->DeleteLocalRef (env, local);
+ gst_amc_jni_object_make_global (env, local);
}
fieldID =
@@ -720,8 +697,7 @@
android_hardware_camera_parameters.WHITE_BALANCE_WARM_FLUORESCENT;
android_hardware_camera_parameters.WHITE_BALANCE_WARM_FLUORESCENT =
- (*env)->NewGlobalRef (env, local);
- (*env)->DeleteLocalRef (env, local);
+ gst_amc_jni_object_make_global (env, local);
}
fieldID =
@@ -740,8 +716,7 @@
jobject local = android_hardware_camera_parameters.WHITE_BALANCE_DAYLIGHT;
android_hardware_camera_parameters.WHITE_BALANCE_DAYLIGHT =
- (*env)->NewGlobalRef (env, local);
- (*env)->DeleteLocalRef (env, local);
+ gst_amc_jni_object_make_global (env, local);
}
fieldID =
@@ -760,8 +735,7 @@
android_hardware_camera_parameters.WHITE_BALANCE_CLOUDY_DAYLIGHT;
android_hardware_camera_parameters.WHITE_BALANCE_CLOUDY_DAYLIGHT =
- (*env)->NewGlobalRef (env, local);
- (*env)->DeleteLocalRef (env, local);
+ gst_amc_jni_object_make_global (env, local);
}
fieldID =
@@ -779,8 +753,7 @@
jobject local = android_hardware_camera_parameters.WHITE_BALANCE_TWILIGHT;
android_hardware_camera_parameters.WHITE_BALANCE_TWILIGHT =
- (*env)->NewGlobalRef (env, local);
- (*env)->DeleteLocalRef (env, local);
+ gst_amc_jni_object_make_global (env, local);
}
fieldID =
@@ -799,8 +772,7 @@
jobject local = android_hardware_camera_parameters.WHITE_BALANCE_SHADE;
android_hardware_camera_parameters.WHITE_BALANCE_SHADE =
- (*env)->NewGlobalRef (env, local);
- (*env)->DeleteLocalRef (env, local);
+ gst_amc_jni_object_make_global (env, local);
}
fieldID =
@@ -819,8 +791,7 @@
jobject local = android_hardware_camera_parameters.EFFECT_NONE;
android_hardware_camera_parameters.EFFECT_NONE =
- (*env)->NewGlobalRef (env, local);
- (*env)->DeleteLocalRef (env, local);
+ gst_amc_jni_object_make_global (env, local);
}
fieldID =
@@ -839,8 +810,7 @@
jobject local = android_hardware_camera_parameters.EFFECT_MONO;
android_hardware_camera_parameters.EFFECT_MONO =
- (*env)->NewGlobalRef (env, local);
- (*env)->DeleteLocalRef (env, local);
+ gst_amc_jni_object_make_global (env, local);
}
fieldID =
@@ -859,8 +829,7 @@
jobject local = android_hardware_camera_parameters.EFFECT_NEGATIVE;
android_hardware_camera_parameters.EFFECT_NEGATIVE =
- (*env)->NewGlobalRef (env, local);
- (*env)->DeleteLocalRef (env, local);
+ gst_amc_jni_object_make_global (env, local);
}
fieldID =
@@ -879,8 +848,7 @@
jobject local = android_hardware_camera_parameters.EFFECT_SOLARIZE;
android_hardware_camera_parameters.EFFECT_SOLARIZE =
- (*env)->NewGlobalRef (env, local);
- (*env)->DeleteLocalRef (env, local);
+ gst_amc_jni_object_make_global (env, local);
}
fieldID =
@@ -899,8 +867,7 @@
jobject local = android_hardware_camera_parameters.EFFECT_SEPIA;
android_hardware_camera_parameters.EFFECT_SEPIA =
- (*env)->NewGlobalRef (env, local);
- (*env)->DeleteLocalRef (env, local);
+ gst_amc_jni_object_make_global (env, local);
}
fieldID =
@@ -919,8 +886,7 @@
jobject local = android_hardware_camera_parameters.EFFECT_POSTERIZE;
android_hardware_camera_parameters.EFFECT_POSTERIZE =
- (*env)->NewGlobalRef (env, local);
- (*env)->DeleteLocalRef (env, local);
+ gst_amc_jni_object_make_global (env, local);
}
fieldID =
@@ -939,8 +905,7 @@
jobject local = android_hardware_camera_parameters.EFFECT_WHITEBOARD;
android_hardware_camera_parameters.EFFECT_WHITEBOARD =
- (*env)->NewGlobalRef (env, local);
- (*env)->DeleteLocalRef (env, local);
+ gst_amc_jni_object_make_global (env, local);
}
fieldID =
@@ -959,8 +924,7 @@
jobject local = android_hardware_camera_parameters.EFFECT_BLACKBOARD;
android_hardware_camera_parameters.EFFECT_BLACKBOARD =
- (*env)->NewGlobalRef (env, local);
- (*env)->DeleteLocalRef (env, local);
+ gst_amc_jni_object_make_global (env, local);
}
fieldID =
@@ -979,8 +943,7 @@
jobject local = android_hardware_camera_parameters.EFFECT_AQUA;
android_hardware_camera_parameters.EFFECT_AQUA =
- (*env)->NewGlobalRef (env, local);
- (*env)->DeleteLocalRef (env, local);
+ gst_amc_jni_object_make_global (env, local);
}
fieldID =
@@ -999,8 +962,7 @@
jobject local = android_hardware_camera_parameters.ANTIBANDING_AUTO;
android_hardware_camera_parameters.ANTIBANDING_AUTO =
- (*env)->NewGlobalRef (env, local);
- (*env)->DeleteLocalRef (env, local);
+ gst_amc_jni_object_make_global (env, local);
}
fieldID =
@@ -1019,8 +981,7 @@
jobject local = android_hardware_camera_parameters.ANTIBANDING_50HZ;
android_hardware_camera_parameters.ANTIBANDING_50HZ =
- (*env)->NewGlobalRef (env, local);
- (*env)->DeleteLocalRef (env, local);
+ gst_amc_jni_object_make_global (env, local);
}
fieldID =
@@ -1039,8 +1000,7 @@
jobject local = android_hardware_camera_parameters.ANTIBANDING_60HZ;
android_hardware_camera_parameters.ANTIBANDING_60HZ =
- (*env)->NewGlobalRef (env, local);
- (*env)->DeleteLocalRef (env, local);
+ gst_amc_jni_object_make_global (env, local);
}
fieldID =
@@ -1059,8 +1019,7 @@
jobject local = android_hardware_camera_parameters.ANTIBANDING_OFF;
android_hardware_camera_parameters.ANTIBANDING_OFF =
- (*env)->NewGlobalRef (env, local);
- (*env)->DeleteLocalRef (env, local);
+ gst_amc_jni_object_make_global (env, local);
}
fieldID =
@@ -1079,8 +1038,7 @@
jobject local = android_hardware_camera_parameters.FLASH_MODE_OFF;
android_hardware_camera_parameters.FLASH_MODE_OFF =
- (*env)->NewGlobalRef (env, local);
- (*env)->DeleteLocalRef (env, local);
+ gst_amc_jni_object_make_global (env, local);
}
fieldID =
@@ -1099,8 +1057,7 @@
jobject local = android_hardware_camera_parameters.FLASH_MODE_AUTO;
android_hardware_camera_parameters.FLASH_MODE_AUTO =
- (*env)->NewGlobalRef (env, local);
- (*env)->DeleteLocalRef (env, local);
+ gst_amc_jni_object_make_global (env, local);
}
fieldID =
@@ -1119,8 +1076,7 @@
jobject local = android_hardware_camera_parameters.FLASH_MODE_ON;
android_hardware_camera_parameters.FLASH_MODE_ON =
- (*env)->NewGlobalRef (env, local);
- (*env)->DeleteLocalRef (env, local);
+ gst_amc_jni_object_make_global (env, local);
}
fieldID =
@@ -1139,8 +1095,7 @@
jobject local = android_hardware_camera_parameters.FLASH_MODE_RED_EYE;
android_hardware_camera_parameters.FLASH_MODE_RED_EYE =
- (*env)->NewGlobalRef (env, local);
- (*env)->DeleteLocalRef (env, local);
+ gst_amc_jni_object_make_global (env, local);
}
fieldID =
@@ -1159,8 +1114,7 @@
jobject local = android_hardware_camera_parameters.FLASH_MODE_TORCH;
android_hardware_camera_parameters.FLASH_MODE_TORCH =
- (*env)->NewGlobalRef (env, local);
- (*env)->DeleteLocalRef (env, local);
+ gst_amc_jni_object_make_global (env, local);
}
fieldID =
@@ -1179,8 +1133,7 @@
jobject local = android_hardware_camera_parameters.SCENE_MODE_AUTO;
android_hardware_camera_parameters.SCENE_MODE_AUTO =
- (*env)->NewGlobalRef (env, local);
- (*env)->DeleteLocalRef (env, local);
+ gst_amc_jni_object_make_global (env, local);
}
fieldID =
@@ -1199,8 +1152,7 @@
jobject local = android_hardware_camera_parameters.SCENE_MODE_ACTION;
android_hardware_camera_parameters.SCENE_MODE_ACTION =
- (*env)->NewGlobalRef (env, local);
- (*env)->DeleteLocalRef (env, local);
+ gst_amc_jni_object_make_global (env, local);
}
fieldID =
@@ -1219,8 +1171,7 @@
jobject local = android_hardware_camera_parameters.SCENE_MODE_PORTRAIT;
android_hardware_camera_parameters.SCENE_MODE_PORTRAIT =
- (*env)->NewGlobalRef (env, local);
- (*env)->DeleteLocalRef (env, local);
+ gst_amc_jni_object_make_global (env, local);
}
fieldID =
@@ -1238,8 +1189,7 @@
jobject local = android_hardware_camera_parameters.SCENE_MODE_LANDSCAPE;
android_hardware_camera_parameters.SCENE_MODE_LANDSCAPE =
- (*env)->NewGlobalRef (env, local);
- (*env)->DeleteLocalRef (env, local);
+ gst_amc_jni_object_make_global (env, local);
}
fieldID =
@@ -1258,8 +1208,7 @@
jobject local = android_hardware_camera_parameters.SCENE_MODE_NIGHT;
android_hardware_camera_parameters.SCENE_MODE_NIGHT =
- (*env)->NewGlobalRef (env, local);
- (*env)->DeleteLocalRef (env, local);
+ gst_amc_jni_object_make_global (env, local);
}
fieldID =
@@ -1278,8 +1227,7 @@
android_hardware_camera_parameters.SCENE_MODE_NIGHT_PORTRAIT;
android_hardware_camera_parameters.SCENE_MODE_NIGHT_PORTRAIT =
- (*env)->NewGlobalRef (env, local);
- (*env)->DeleteLocalRef (env, local);
+ gst_amc_jni_object_make_global (env, local);
}
fieldID =
gst_amc_jni_get_static_field_id (env, &err, klass, "SCENE_MODE_THEATRE",
@@ -1297,8 +1245,7 @@
jobject local = android_hardware_camera_parameters.SCENE_MODE_THEATRE;
android_hardware_camera_parameters.SCENE_MODE_THEATRE =
- (*env)->NewGlobalRef (env, local);
- (*env)->DeleteLocalRef (env, local);
+ gst_amc_jni_object_make_global (env, local);
}
fieldID =
@@ -1317,8 +1264,7 @@
jobject local = android_hardware_camera_parameters.SCENE_MODE_BEACH;
android_hardware_camera_parameters.SCENE_MODE_BEACH =
- (*env)->NewGlobalRef (env, local);
- (*env)->DeleteLocalRef (env, local);
+ gst_amc_jni_object_make_global (env, local);
}
fieldID =
@@ -1337,8 +1283,7 @@
jobject local = android_hardware_camera_parameters.SCENE_MODE_SNOW;
android_hardware_camera_parameters.SCENE_MODE_SNOW =
- (*env)->NewGlobalRef (env, local);
- (*env)->DeleteLocalRef (env, local);
+ gst_amc_jni_object_make_global (env, local);
}
fieldID =
@@ -1358,8 +1303,7 @@
jobject local = android_hardware_camera_parameters.SCENE_MODE_SUNSET;
android_hardware_camera_parameters.SCENE_MODE_SUNSET =
- (*env)->NewGlobalRef (env, local);
- (*env)->DeleteLocalRef (env, local);
+ gst_amc_jni_object_make_global (env, local);
}
fieldID =
@@ -1379,8 +1323,7 @@
jobject local = android_hardware_camera_parameters.SCENE_MODE_STEADYPHOTO;
android_hardware_camera_parameters.SCENE_MODE_STEADYPHOTO =
- (*env)->NewGlobalRef (env, local);
- (*env)->DeleteLocalRef (env, local);
+ gst_amc_jni_object_make_global (env, local);
}
fieldID =
@@ -1399,8 +1342,7 @@
jobject local = android_hardware_camera_parameters.SCENE_MODE_FIREWORKS;
android_hardware_camera_parameters.SCENE_MODE_FIREWORKS =
- (*env)->NewGlobalRef (env, local);
- (*env)->DeleteLocalRef (env, local);
+ gst_amc_jni_object_make_global (env, local);
}
fieldID =
@@ -1420,8 +1362,7 @@
jobject local = android_hardware_camera_parameters.SCENE_MODE_SPORTS;
android_hardware_camera_parameters.SCENE_MODE_SPORTS =
- (*env)->NewGlobalRef (env, local);
- (*env)->DeleteLocalRef (env, local);
+ gst_amc_jni_object_make_global (env, local);
}
fieldID =
@@ -1440,8 +1381,7 @@
jobject local = android_hardware_camera_parameters.SCENE_MODE_PARTY;
android_hardware_camera_parameters.SCENE_MODE_PARTY =
- (*env)->NewGlobalRef (env, local);
- (*env)->DeleteLocalRef (env, local);
+ gst_amc_jni_object_make_global (env, local);
}
fieldID =
@@ -1460,8 +1400,7 @@
jobject local = android_hardware_camera_parameters.SCENE_MODE_CANDLELIGHT;
android_hardware_camera_parameters.SCENE_MODE_CANDLELIGHT =
- (*env)->NewGlobalRef (env, local);
- (*env)->DeleteLocalRef (env, local);
+ gst_amc_jni_object_make_global (env, local);
}
@@ -1481,8 +1420,7 @@
jobject local = android_hardware_camera_parameters.SCENE_MODE_BARCODE;
android_hardware_camera_parameters.SCENE_MODE_BARCODE =
- (*env)->NewGlobalRef (env, local);
- (*env)->DeleteLocalRef (env, local);
+ gst_amc_jni_object_make_global (env, local);
}
fieldID =
@@ -1501,8 +1439,7 @@
jobject local = android_hardware_camera_parameters.FOCUS_MODE_AUTO;
android_hardware_camera_parameters.FOCUS_MODE_AUTO =
- (*env)->NewGlobalRef (env, local);
- (*env)->DeleteLocalRef (env, local);
+ gst_amc_jni_object_make_global (env, local);
}
fieldID =
@@ -1521,8 +1458,7 @@
jobject local = android_hardware_camera_parameters.FOCUS_MODE_INFINITY;
android_hardware_camera_parameters.FOCUS_MODE_INFINITY =
- (*env)->NewGlobalRef (env, local);
- (*env)->DeleteLocalRef (env, local);
+ gst_amc_jni_object_make_global (env, local);
}
fieldID =
@@ -1541,8 +1477,7 @@
jobject local = android_hardware_camera_parameters.FOCUS_MODE_MACRO;
android_hardware_camera_parameters.FOCUS_MODE_MACRO =
- (*env)->NewGlobalRef (env, local);
- (*env)->DeleteLocalRef (env, local);
+ gst_amc_jni_object_make_global (env, local);
}
fieldID =
@@ -1561,8 +1496,7 @@
jobject local = android_hardware_camera_parameters.FOCUS_MODE_FIXED;
android_hardware_camera_parameters.FOCUS_MODE_FIXED =
- (*env)->NewGlobalRef (env, local);
- (*env)->DeleteLocalRef (env, local);
+ gst_amc_jni_object_make_global (env, local);
}
fieldID =
@@ -1581,8 +1515,7 @@
jobject local = android_hardware_camera_parameters.FOCUS_MODE_EDOF;
android_hardware_camera_parameters.FOCUS_MODE_EDOF =
- (*env)->NewGlobalRef (env, local);
- (*env)->DeleteLocalRef (env, local);
+ gst_amc_jni_object_make_global (env, local);
}
fieldID =
@@ -1602,8 +1535,7 @@
android_hardware_camera_parameters.FOCUS_MODE_CONTINUOUS_VIDEO;
android_hardware_camera_parameters.FOCUS_MODE_CONTINUOUS_VIDEO =
- (*env)->NewGlobalRef (env, local);
- (*env)->DeleteLocalRef (env, local);
+ gst_amc_jni_object_make_global (env, local);
}
fieldID =
@@ -1624,8 +1556,7 @@
android_hardware_camera_parameters.FOCUS_MODE_CONTINUOUS_PICTURE;
android_hardware_camera_parameters.FOCUS_MODE_CONTINUOUS_PICTURE =
- (*env)->NewGlobalRef (env, local);
- (*env)->DeleteLocalRef (env, local);
+ gst_amc_jni_object_make_global (env, local);
}
/* java.lang.String */
@@ -1710,19 +1641,19 @@
JNIEnv *env = gst_amc_jni_get_env ();
if (android_hardware_camera.klass)
- (*env)->DeleteGlobalRef (env, android_hardware_camera.klass);
+ gst_amc_jni_object_unref (env, android_hardware_camera.klass);
android_hardware_camera.klass = NULL;
if (android_hardware_camera_camerainfo.klass)
- (*env)->DeleteGlobalRef (env, android_hardware_camera_camerainfo.klass);
+ gst_amc_jni_object_unref (env, android_hardware_camera_camerainfo.klass);
android_hardware_camera_camerainfo.klass = NULL;
if (android_hardware_camera_size.klass)
- (*env)->DeleteGlobalRef (env, android_hardware_camera_size.klass);
+ gst_amc_jni_object_unref (env, android_hardware_camera_size.klass);
android_hardware_camera_size.klass = NULL;
if (android_hardware_camera_parameters.klass)
- (*env)->DeleteGlobalRef (env, android_hardware_camera_parameters.klass);
+ gst_amc_jni_object_unref (env, android_hardware_camera_parameters.klass);
android_hardware_camera_parameters.klass = NULL;
if (Parameters_WHITE_BALANCE_AUTO)
(*env)->ReleaseStringUTFChars (env,
@@ -1730,7 +1661,7 @@
Parameters_WHITE_BALANCE_AUTO);
Parameters_WHITE_BALANCE_AUTO = NULL;
if (android_hardware_camera_parameters.WHITE_BALANCE_AUTO)
- (*env)->DeleteGlobalRef (env,
+ gst_amc_jni_object_unref (env,
android_hardware_camera_parameters.WHITE_BALANCE_AUTO);
android_hardware_camera_parameters.WHITE_BALANCE_AUTO = NULL;
if (Parameters_WHITE_BALANCE_INCANDESCENT)
@@ -1739,7 +1670,7 @@
Parameters_WHITE_BALANCE_INCANDESCENT);
Parameters_WHITE_BALANCE_INCANDESCENT = NULL;
if (android_hardware_camera_parameters.WHITE_BALANCE_INCANDESCENT)
- (*env)->DeleteGlobalRef (env,
+ gst_amc_jni_object_unref (env,
android_hardware_camera_parameters.WHITE_BALANCE_INCANDESCENT);
android_hardware_camera_parameters.WHITE_BALANCE_INCANDESCENT = NULL;
if (Parameters_WHITE_BALANCE_FLUORESCENT)
@@ -1748,7 +1679,7 @@
Parameters_WHITE_BALANCE_FLUORESCENT);
Parameters_WHITE_BALANCE_FLUORESCENT = NULL;
if (android_hardware_camera_parameters.WHITE_BALANCE_FLUORESCENT)
- (*env)->DeleteGlobalRef (env,
+ gst_amc_jni_object_unref (env,
android_hardware_camera_parameters.WHITE_BALANCE_FLUORESCENT);
android_hardware_camera_parameters.WHITE_BALANCE_FLUORESCENT = NULL;
if (Parameters_WHITE_BALANCE_WARM_FLUORESCENT)
@@ -1757,7 +1688,7 @@
Parameters_WHITE_BALANCE_WARM_FLUORESCENT);
Parameters_WHITE_BALANCE_WARM_FLUORESCENT = NULL;
if (android_hardware_camera_parameters.WHITE_BALANCE_WARM_FLUORESCENT)
- (*env)->DeleteGlobalRef (env,
+ gst_amc_jni_object_unref (env,
android_hardware_camera_parameters.WHITE_BALANCE_WARM_FLUORESCENT);
android_hardware_camera_parameters.WHITE_BALANCE_WARM_FLUORESCENT = NULL;
if (Parameters_WHITE_BALANCE_DAYLIGHT)
@@ -1766,7 +1697,7 @@
Parameters_WHITE_BALANCE_DAYLIGHT);
Parameters_WHITE_BALANCE_DAYLIGHT = NULL;
if (android_hardware_camera_parameters.WHITE_BALANCE_DAYLIGHT)
- (*env)->DeleteGlobalRef (env,
+ gst_amc_jni_object_unref (env,
android_hardware_camera_parameters.WHITE_BALANCE_DAYLIGHT);
android_hardware_camera_parameters.WHITE_BALANCE_DAYLIGHT = NULL;
if (Parameters_WHITE_BALANCE_CLOUDY_DAYLIGHT)
@@ -1775,7 +1706,7 @@
Parameters_WHITE_BALANCE_CLOUDY_DAYLIGHT);
Parameters_WHITE_BALANCE_CLOUDY_DAYLIGHT = NULL;
if (android_hardware_camera_parameters.WHITE_BALANCE_CLOUDY_DAYLIGHT)
- (*env)->DeleteGlobalRef (env,
+ gst_amc_jni_object_unref (env,
android_hardware_camera_parameters.WHITE_BALANCE_CLOUDY_DAYLIGHT);
android_hardware_camera_parameters.WHITE_BALANCE_CLOUDY_DAYLIGHT = NULL;
if (Parameters_WHITE_BALANCE_TWILIGHT)
@@ -1784,7 +1715,7 @@
Parameters_WHITE_BALANCE_TWILIGHT);
Parameters_WHITE_BALANCE_TWILIGHT = NULL;
if (android_hardware_camera_parameters.WHITE_BALANCE_TWILIGHT)
- (*env)->DeleteGlobalRef (env,
+ gst_amc_jni_object_unref (env,
android_hardware_camera_parameters.WHITE_BALANCE_TWILIGHT);
android_hardware_camera_parameters.WHITE_BALANCE_TWILIGHT = NULL;
if (Parameters_WHITE_BALANCE_SHADE)
@@ -1793,7 +1724,7 @@
Parameters_WHITE_BALANCE_SHADE);
Parameters_WHITE_BALANCE_SHADE = NULL;
if (android_hardware_camera_parameters.WHITE_BALANCE_SHADE)
- (*env)->DeleteGlobalRef (env,
+ gst_amc_jni_object_unref (env,
android_hardware_camera_parameters.WHITE_BALANCE_SHADE);
android_hardware_camera_parameters.WHITE_BALANCE_SHADE = NULL;
if (Parameters_EFFECT_NONE)
@@ -1801,7 +1732,7 @@
android_hardware_camera_parameters.EFFECT_NONE, Parameters_EFFECT_NONE);
Parameters_EFFECT_NONE = NULL;
if (android_hardware_camera_parameters.EFFECT_NONE)
- (*env)->DeleteGlobalRef (env,
+ gst_amc_jni_object_unref (env,
android_hardware_camera_parameters.EFFECT_NONE);
android_hardware_camera_parameters.EFFECT_NONE = NULL;
if (Parameters_EFFECT_MONO)
@@ -1809,7 +1740,7 @@
android_hardware_camera_parameters.EFFECT_MONO, Parameters_EFFECT_MONO);
Parameters_EFFECT_MONO = NULL;
if (android_hardware_camera_parameters.EFFECT_MONO)
- (*env)->DeleteGlobalRef (env,
+ gst_amc_jni_object_unref (env,
android_hardware_camera_parameters.EFFECT_MONO);
android_hardware_camera_parameters.EFFECT_MONO = NULL;
if (Parameters_EFFECT_NEGATIVE)
@@ -1818,7 +1749,7 @@
Parameters_EFFECT_NEGATIVE);
Parameters_EFFECT_NEGATIVE = NULL;
if (android_hardware_camera_parameters.EFFECT_NEGATIVE)
- (*env)->DeleteGlobalRef (env,
+ gst_amc_jni_object_unref (env,
android_hardware_camera_parameters.EFFECT_NEGATIVE);
android_hardware_camera_parameters.EFFECT_NEGATIVE = NULL;
if (Parameters_EFFECT_SOLARIZE)
@@ -1827,7 +1758,7 @@
Parameters_EFFECT_SOLARIZE);
Parameters_EFFECT_SOLARIZE = NULL;
if (android_hardware_camera_parameters.EFFECT_SOLARIZE)
- (*env)->DeleteGlobalRef (env,
+ gst_amc_jni_object_unref (env,
android_hardware_camera_parameters.EFFECT_SOLARIZE);
android_hardware_camera_parameters.EFFECT_SOLARIZE = NULL;
if (Parameters_EFFECT_SEPIA)
@@ -1836,7 +1767,7 @@
Parameters_EFFECT_SEPIA);
Parameters_EFFECT_SEPIA = NULL;
if (android_hardware_camera_parameters.EFFECT_SEPIA)
- (*env)->DeleteGlobalRef (env,
+ gst_amc_jni_object_unref (env,
android_hardware_camera_parameters.EFFECT_SEPIA);
android_hardware_camera_parameters.EFFECT_SEPIA = NULL;
if (Parameters_EFFECT_POSTERIZE)
@@ -1845,7 +1776,7 @@
Parameters_EFFECT_POSTERIZE);
Parameters_EFFECT_POSTERIZE = NULL;
if (android_hardware_camera_parameters.EFFECT_POSTERIZE)
- (*env)->DeleteGlobalRef (env,
+ gst_amc_jni_object_unref (env,
android_hardware_camera_parameters.EFFECT_POSTERIZE);
android_hardware_camera_parameters.EFFECT_POSTERIZE = NULL;
if (Parameters_EFFECT_WHITEBOARD)
@@ -1854,7 +1785,7 @@
Parameters_EFFECT_WHITEBOARD);
Parameters_EFFECT_WHITEBOARD = NULL;
if (android_hardware_camera_parameters.EFFECT_WHITEBOARD)
- (*env)->DeleteGlobalRef (env,
+ gst_amc_jni_object_unref (env,
android_hardware_camera_parameters.EFFECT_WHITEBOARD);
android_hardware_camera_parameters.EFFECT_WHITEBOARD = NULL;
if (Parameters_EFFECT_BLACKBOARD)
@@ -1863,7 +1794,7 @@
Parameters_EFFECT_BLACKBOARD);
Parameters_EFFECT_BLACKBOARD = NULL;
if (android_hardware_camera_parameters.EFFECT_BLACKBOARD)
- (*env)->DeleteGlobalRef (env,
+ gst_amc_jni_object_unref (env,
android_hardware_camera_parameters.EFFECT_BLACKBOARD);
android_hardware_camera_parameters.EFFECT_BLACKBOARD = NULL;
if (Parameters_EFFECT_AQUA)
@@ -1871,7 +1802,7 @@
android_hardware_camera_parameters.EFFECT_AQUA, Parameters_EFFECT_AQUA);
Parameters_EFFECT_AQUA = NULL;
if (android_hardware_camera_parameters.EFFECT_AQUA)
- (*env)->DeleteGlobalRef (env,
+ gst_amc_jni_object_unref (env,
android_hardware_camera_parameters.EFFECT_AQUA);
android_hardware_camera_parameters.EFFECT_AQUA = NULL;
if (Parameters_ANTIBANDING_AUTO)
@@ -1880,7 +1811,7 @@
Parameters_ANTIBANDING_AUTO);
Parameters_ANTIBANDING_AUTO = NULL;
if (android_hardware_camera_parameters.ANTIBANDING_AUTO)
- (*env)->DeleteGlobalRef (env,
+ gst_amc_jni_object_unref (env,
android_hardware_camera_parameters.ANTIBANDING_AUTO);
android_hardware_camera_parameters.ANTIBANDING_AUTO = NULL;
if (Parameters_ANTIBANDING_50HZ)
@@ -1889,7 +1820,7 @@
Parameters_ANTIBANDING_50HZ);
Parameters_ANTIBANDING_50HZ = NULL;
if (android_hardware_camera_parameters.ANTIBANDING_50HZ)
- (*env)->DeleteGlobalRef (env,
+ gst_amc_jni_object_unref (env,
android_hardware_camera_parameters.ANTIBANDING_50HZ);
android_hardware_camera_parameters.ANTIBANDING_50HZ = NULL;
if (Parameters_ANTIBANDING_60HZ)
@@ -1898,7 +1829,7 @@
Parameters_ANTIBANDING_60HZ);
Parameters_ANTIBANDING_60HZ = NULL;
if (android_hardware_camera_parameters.ANTIBANDING_60HZ)
- (*env)->DeleteGlobalRef (env,
+ gst_amc_jni_object_unref (env,
android_hardware_camera_parameters.ANTIBANDING_60HZ);
android_hardware_camera_parameters.ANTIBANDING_60HZ = NULL;
if (Parameters_ANTIBANDING_OFF)
@@ -1907,7 +1838,7 @@
Parameters_ANTIBANDING_OFF);
Parameters_ANTIBANDING_OFF = NULL;
if (android_hardware_camera_parameters.ANTIBANDING_OFF)
- (*env)->DeleteGlobalRef (env,
+ gst_amc_jni_object_unref (env,
android_hardware_camera_parameters.ANTIBANDING_OFF);
android_hardware_camera_parameters.ANTIBANDING_OFF = NULL;
if (Parameters_FLASH_MODE_OFF)
@@ -1916,7 +1847,7 @@
Parameters_FLASH_MODE_OFF);
Parameters_FLASH_MODE_OFF = NULL;
if (android_hardware_camera_parameters.FLASH_MODE_OFF)
- (*env)->DeleteGlobalRef (env,
+ gst_amc_jni_object_unref (env,
android_hardware_camera_parameters.FLASH_MODE_OFF);
android_hardware_camera_parameters.FLASH_MODE_OFF = NULL;
if (Parameters_FLASH_MODE_AUTO)
@@ -1925,7 +1856,7 @@
Parameters_FLASH_MODE_AUTO);
Parameters_FLASH_MODE_AUTO = NULL;
if (android_hardware_camera_parameters.FLASH_MODE_AUTO)
- (*env)->DeleteGlobalRef (env,
+ gst_amc_jni_object_unref (env,
android_hardware_camera_parameters.FLASH_MODE_AUTO);
android_hardware_camera_parameters.FLASH_MODE_AUTO = NULL;
if (Parameters_FLASH_MODE_ON)
@@ -1934,7 +1865,7 @@
Parameters_FLASH_MODE_ON);
Parameters_FLASH_MODE_ON = NULL;
if (android_hardware_camera_parameters.FLASH_MODE_ON)
- (*env)->DeleteGlobalRef (env,
+ gst_amc_jni_object_unref (env,
android_hardware_camera_parameters.FLASH_MODE_ON);
android_hardware_camera_parameters.FLASH_MODE_ON = NULL;
if (Parameters_FLASH_MODE_RED_EYE)
@@ -1943,7 +1874,7 @@
Parameters_FLASH_MODE_RED_EYE);
Parameters_FLASH_MODE_RED_EYE = NULL;
if (android_hardware_camera_parameters.FLASH_MODE_RED_EYE)
- (*env)->DeleteGlobalRef (env,
+ gst_amc_jni_object_unref (env,
android_hardware_camera_parameters.FLASH_MODE_RED_EYE);
android_hardware_camera_parameters.FLASH_MODE_RED_EYE = NULL;
if (Parameters_FLASH_MODE_TORCH)
@@ -1952,7 +1883,7 @@
Parameters_FLASH_MODE_TORCH);
Parameters_FLASH_MODE_TORCH = NULL;
if (android_hardware_camera_parameters.FLASH_MODE_TORCH)
- (*env)->DeleteGlobalRef (env,
+ gst_amc_jni_object_unref (env,
android_hardware_camera_parameters.FLASH_MODE_TORCH);
android_hardware_camera_parameters.FLASH_MODE_TORCH = NULL;
if (Parameters_SCENE_MODE_AUTO)
@@ -1961,7 +1892,7 @@
Parameters_SCENE_MODE_AUTO);
Parameters_SCENE_MODE_AUTO = NULL;
if (android_hardware_camera_parameters.SCENE_MODE_AUTO)
- (*env)->DeleteGlobalRef (env,
+ gst_amc_jni_object_unref (env,
android_hardware_camera_parameters.SCENE_MODE_AUTO);
android_hardware_camera_parameters.SCENE_MODE_AUTO = NULL;
if (Parameters_SCENE_MODE_ACTION)
@@ -1970,7 +1901,7 @@
Parameters_SCENE_MODE_ACTION);
Parameters_SCENE_MODE_ACTION = NULL;
if (android_hardware_camera_parameters.SCENE_MODE_ACTION)
- (*env)->DeleteGlobalRef (env,
+ gst_amc_jni_object_unref (env,
android_hardware_camera_parameters.SCENE_MODE_ACTION);
android_hardware_camera_parameters.SCENE_MODE_ACTION = NULL;
if (Parameters_SCENE_MODE_PORTRAIT)
@@ -1979,7 +1910,7 @@
Parameters_SCENE_MODE_PORTRAIT);
Parameters_SCENE_MODE_PORTRAIT = NULL;
if (android_hardware_camera_parameters.SCENE_MODE_PORTRAIT)
- (*env)->DeleteGlobalRef (env,
+ gst_amc_jni_object_unref (env,
android_hardware_camera_parameters.SCENE_MODE_PORTRAIT);
android_hardware_camera_parameters.SCENE_MODE_PORTRAIT = NULL;
if (Parameters_SCENE_MODE_LANDSCAPE)
@@ -1988,7 +1919,7 @@
Parameters_SCENE_MODE_LANDSCAPE);
Parameters_SCENE_MODE_LANDSCAPE = NULL;
if (android_hardware_camera_parameters.SCENE_MODE_LANDSCAPE)
- (*env)->DeleteGlobalRef (env,
+ gst_amc_jni_object_unref (env,
android_hardware_camera_parameters.SCENE_MODE_LANDSCAPE);
android_hardware_camera_parameters.SCENE_MODE_LANDSCAPE = NULL;
if (Parameters_SCENE_MODE_NIGHT)
@@ -1997,7 +1928,7 @@
Parameters_SCENE_MODE_NIGHT);
Parameters_SCENE_MODE_NIGHT = NULL;
if (android_hardware_camera_parameters.SCENE_MODE_NIGHT)
- (*env)->DeleteGlobalRef (env,
+ gst_amc_jni_object_unref (env,
android_hardware_camera_parameters.SCENE_MODE_NIGHT);
android_hardware_camera_parameters.SCENE_MODE_NIGHT = NULL;
if (Parameters_SCENE_MODE_NIGHT_PORTRAIT)
@@ -2006,7 +1937,7 @@
Parameters_SCENE_MODE_NIGHT_PORTRAIT);
Parameters_SCENE_MODE_NIGHT_PORTRAIT = NULL;
if (android_hardware_camera_parameters.SCENE_MODE_NIGHT_PORTRAIT)
- (*env)->DeleteGlobalRef (env,
+ gst_amc_jni_object_unref (env,
android_hardware_camera_parameters.SCENE_MODE_NIGHT_PORTRAIT);
android_hardware_camera_parameters.SCENE_MODE_NIGHT_PORTRAIT = NULL;
if (Parameters_SCENE_MODE_THEATRE)
@@ -2015,7 +1946,7 @@
Parameters_SCENE_MODE_THEATRE);
Parameters_SCENE_MODE_THEATRE = NULL;
if (android_hardware_camera_parameters.SCENE_MODE_THEATRE)
- (*env)->DeleteGlobalRef (env,
+ gst_amc_jni_object_unref (env,
android_hardware_camera_parameters.SCENE_MODE_THEATRE);
android_hardware_camera_parameters.SCENE_MODE_THEATRE = NULL;
if (Parameters_SCENE_MODE_BEACH)
@@ -2024,7 +1955,7 @@
Parameters_SCENE_MODE_BEACH);
Parameters_SCENE_MODE_BEACH = NULL;
if (android_hardware_camera_parameters.SCENE_MODE_BEACH)
- (*env)->DeleteGlobalRef (env,
+ gst_amc_jni_object_unref (env,
android_hardware_camera_parameters.SCENE_MODE_BEACH);
android_hardware_camera_parameters.SCENE_MODE_BEACH = NULL;
if (Parameters_SCENE_MODE_SNOW)
@@ -2033,7 +1964,7 @@
Parameters_SCENE_MODE_SNOW);
Parameters_SCENE_MODE_SNOW = NULL;
if (android_hardware_camera_parameters.SCENE_MODE_SNOW)
- (*env)->DeleteGlobalRef (env,
+ gst_amc_jni_object_unref (env,
android_hardware_camera_parameters.SCENE_MODE_SNOW);
android_hardware_camera_parameters.SCENE_MODE_SNOW = NULL;
if (Parameters_SCENE_MODE_SUNSET)
@@ -2042,7 +1973,7 @@
Parameters_SCENE_MODE_SUNSET);
Parameters_SCENE_MODE_SUNSET = NULL;
if (android_hardware_camera_parameters.SCENE_MODE_SUNSET)
- (*env)->DeleteGlobalRef (env,
+ gst_amc_jni_object_unref (env,
android_hardware_camera_parameters.SCENE_MODE_SUNSET);
android_hardware_camera_parameters.SCENE_MODE_SUNSET = NULL;
if (Parameters_SCENE_MODE_STEADYPHOTO)
@@ -2051,7 +1982,7 @@
Parameters_SCENE_MODE_STEADYPHOTO);
Parameters_SCENE_MODE_STEADYPHOTO = NULL;
if (android_hardware_camera_parameters.SCENE_MODE_STEADYPHOTO)
- (*env)->DeleteGlobalRef (env,
+ gst_amc_jni_object_unref (env,
android_hardware_camera_parameters.SCENE_MODE_STEADYPHOTO);
android_hardware_camera_parameters.SCENE_MODE_STEADYPHOTO = NULL;
if (Parameters_SCENE_MODE_FIREWORKS)
@@ -2060,7 +1991,7 @@
Parameters_SCENE_MODE_FIREWORKS);
Parameters_SCENE_MODE_FIREWORKS = NULL;
if (android_hardware_camera_parameters.SCENE_MODE_FIREWORKS)
- (*env)->DeleteGlobalRef (env,
+ gst_amc_jni_object_unref (env,
android_hardware_camera_parameters.SCENE_MODE_FIREWORKS);
android_hardware_camera_parameters.SCENE_MODE_FIREWORKS = NULL;
if (Parameters_SCENE_MODE_SPORTS)
@@ -2069,7 +2000,7 @@
Parameters_SCENE_MODE_SPORTS);
Parameters_SCENE_MODE_SPORTS = NULL;
if (android_hardware_camera_parameters.SCENE_MODE_SPORTS)
- (*env)->DeleteGlobalRef (env,
+ gst_amc_jni_object_unref (env,
android_hardware_camera_parameters.SCENE_MODE_SPORTS);
android_hardware_camera_parameters.SCENE_MODE_SPORTS = NULL;
if (Parameters_SCENE_MODE_PARTY)
@@ -2078,7 +2009,7 @@
Parameters_SCENE_MODE_PARTY);
Parameters_SCENE_MODE_PARTY = NULL;
if (android_hardware_camera_parameters.SCENE_MODE_PARTY)
- (*env)->DeleteGlobalRef (env,
+ gst_amc_jni_object_unref (env,
android_hardware_camera_parameters.SCENE_MODE_PARTY);
android_hardware_camera_parameters.SCENE_MODE_PARTY = NULL;
if (Parameters_SCENE_MODE_CANDLELIGHT)
@@ -2087,7 +2018,7 @@
Parameters_SCENE_MODE_CANDLELIGHT);
Parameters_SCENE_MODE_CANDLELIGHT = NULL;
if (android_hardware_camera_parameters.SCENE_MODE_CANDLELIGHT)
- (*env)->DeleteGlobalRef (env,
+ gst_amc_jni_object_unref (env,
android_hardware_camera_parameters.SCENE_MODE_CANDLELIGHT);
android_hardware_camera_parameters.SCENE_MODE_CANDLELIGHT = NULL;
if (Parameters_SCENE_MODE_BARCODE)
@@ -2096,7 +2027,7 @@
Parameters_SCENE_MODE_BARCODE);
Parameters_SCENE_MODE_BARCODE = NULL;
if (android_hardware_camera_parameters.SCENE_MODE_BARCODE)
- (*env)->DeleteGlobalRef (env,
+ gst_amc_jni_object_unref (env,
android_hardware_camera_parameters.SCENE_MODE_BARCODE);
android_hardware_camera_parameters.SCENE_MODE_BARCODE = NULL;
if (Parameters_FOCUS_MODE_AUTO)
@@ -2105,7 +2036,7 @@
Parameters_FOCUS_MODE_AUTO);
Parameters_FOCUS_MODE_AUTO = NULL;
if (android_hardware_camera_parameters.FOCUS_MODE_AUTO)
- (*env)->DeleteGlobalRef (env,
+ gst_amc_jni_object_unref (env,
android_hardware_camera_parameters.FOCUS_MODE_AUTO);
android_hardware_camera_parameters.FOCUS_MODE_AUTO = NULL;
if (Parameters_FOCUS_MODE_INFINITY)
@@ -2114,7 +2045,7 @@
Parameters_FOCUS_MODE_INFINITY);
Parameters_FOCUS_MODE_INFINITY = NULL;
if (android_hardware_camera_parameters.FOCUS_MODE_INFINITY)
- (*env)->DeleteGlobalRef (env,
+ gst_amc_jni_object_unref (env,
android_hardware_camera_parameters.FOCUS_MODE_INFINITY);
android_hardware_camera_parameters.FOCUS_MODE_INFINITY = NULL;
if (Parameters_FOCUS_MODE_MACRO)
@@ -2123,7 +2054,7 @@
Parameters_FOCUS_MODE_MACRO);
Parameters_FOCUS_MODE_MACRO = NULL;
if (android_hardware_camera_parameters.FOCUS_MODE_MACRO)
- (*env)->DeleteGlobalRef (env,
+ gst_amc_jni_object_unref (env,
android_hardware_camera_parameters.FOCUS_MODE_MACRO);
android_hardware_camera_parameters.FOCUS_MODE_MACRO = NULL;
if (Parameters_FOCUS_MODE_FIXED)
@@ -2132,7 +2063,7 @@
Parameters_FOCUS_MODE_FIXED);
Parameters_FOCUS_MODE_FIXED = NULL;
if (android_hardware_camera_parameters.FOCUS_MODE_FIXED)
- (*env)->DeleteGlobalRef (env,
+ gst_amc_jni_object_unref (env,
android_hardware_camera_parameters.FOCUS_MODE_FIXED);
android_hardware_camera_parameters.FOCUS_MODE_FIXED = NULL;
if (Parameters_FOCUS_MODE_EDOF)
@@ -2141,7 +2072,7 @@
Parameters_FOCUS_MODE_EDOF);
Parameters_FOCUS_MODE_EDOF = NULL;
if (android_hardware_camera_parameters.FOCUS_MODE_EDOF)
- (*env)->DeleteGlobalRef (env,
+ gst_amc_jni_object_unref (env,
android_hardware_camera_parameters.FOCUS_MODE_EDOF);
android_hardware_camera_parameters.FOCUS_MODE_EDOF = NULL;
if (Parameters_FOCUS_MODE_CONTINUOUS_VIDEO)
@@ -2150,7 +2081,7 @@
Parameters_FOCUS_MODE_CONTINUOUS_VIDEO);
Parameters_FOCUS_MODE_CONTINUOUS_VIDEO = NULL;
if (android_hardware_camera_parameters.FOCUS_MODE_CONTINUOUS_VIDEO)
- (*env)->DeleteGlobalRef (env,
+ gst_amc_jni_object_unref (env,
android_hardware_camera_parameters.FOCUS_MODE_CONTINUOUS_VIDEO);
android_hardware_camera_parameters.FOCUS_MODE_CONTINUOUS_VIDEO = NULL;
if (Parameters_FOCUS_MODE_CONTINUOUS_PICTURE)
@@ -2159,51 +2090,51 @@
Parameters_FOCUS_MODE_CONTINUOUS_PICTURE);
Parameters_FOCUS_MODE_CONTINUOUS_PICTURE = NULL;
if (android_hardware_camera_parameters.FOCUS_MODE_CONTINUOUS_PICTURE)
- (*env)->DeleteGlobalRef (env,
+ gst_amc_jni_object_unref (env,
android_hardware_camera_parameters.FOCUS_MODE_CONTINUOUS_PICTURE);
android_hardware_camera_parameters.FOCUS_MODE_CONTINUOUS_PICTURE = NULL;
if (java_lang_string.klass)
- (*env)->DeleteGlobalRef (env, java_lang_string.klass);
+ gst_amc_jni_object_unref (env, java_lang_string.klass);
java_lang_string.klass = NULL;
if (java_util_list.klass)
- (*env)->DeleteGlobalRef (env, java_util_list.klass);
+ gst_amc_jni_object_unref (env, java_util_list.klass);
java_util_list.klass = NULL;
if (java_util_iterator.klass)
- (*env)->DeleteGlobalRef (env, java_util_iterator.klass);
+ gst_amc_jni_object_unref (env, java_util_iterator.klass);
java_util_iterator.klass = NULL;
if (java_lang_integer.klass)
- (*env)->DeleteGlobalRef (env, java_lang_integer.klass);
+ gst_amc_jni_object_unref (env, java_lang_integer.klass);
java_lang_integer.klass = NULL;
if (org_freedesktop_gstreamer_androidmedia_gstahccallback.klass) {
(*env)->UnregisterNatives (env,
org_freedesktop_gstreamer_androidmedia_gstahccallback.klass);
- (*env)->DeleteGlobalRef (env,
+ gst_amc_jni_object_unref (env,
org_freedesktop_gstreamer_androidmedia_gstahccallback.klass);
}
org_freedesktop_gstreamer_androidmedia_gstahccallback.klass = NULL;
}
/* android.hardware.Camera */
-#define AHC_CALL(error_statement, type, method, ...) \
- GST_DVM_CALL (error_statement, self->object, type, android_hardware_camera, \
- method, ## __VA_ARGS__);
-#define AHC_STATIC_CALL(error_statement, type, method, ...) \
- GST_DVM_STATIC_CALL (error_statement, type, android_hardware_camera, \
- method, ## __VA_ARGS__);
-
void
gst_ah_camera_add_callback_buffer (GstAHCamera * self, jbyteArray buffer)
{
JNIEnv *env = gst_amc_jni_get_env ();
+ GError *err = NULL;
GST_DEBUG ("add callback_buffer %p", buffer);
- AHC_CALL (, Void, addCallbackBuffer, buffer);
+ gst_amc_jni_call_void_method (env, &err, self->object,
+ android_hardware_camera.addCallbackBuffer, buffer);
+ if (err) {
+ GST_ERROR ("Failed to call android.hardware.Camera.addCallbackBuffer: %s",
+ err->message);
+ g_clear_error (&err);
+ }
}
gboolean
@@ -2211,27 +2142,38 @@
GstAHCAutoFocusCallback cb, gpointer user_data)
{
JNIEnv *env = gst_amc_jni_get_env ();
+ GError *err = NULL;
jobject object = NULL;
gboolean ret = FALSE;
if (cb) {
- object = (*env)->NewObject (env,
+ object = gst_amc_jni_new_object (env,
+ &err,
+ FALSE,
org_freedesktop_gstreamer_androidmedia_gstahccallback.klass,
org_freedesktop_gstreamer_androidmedia_gstahccallback.constructor,
*((jlong *) & cb), *((jlong *) & user_data));
- if (!object) {
- GST_ERROR ("Failed to create callback object");
- (*env)->ExceptionClear (env);
+ if (err) {
+ GST_ERROR ("Failed to create org.freedesktop.gstreamer.androidmedia.GstAhcCallback object");
+ g_clear_error (&err);
goto done;
}
}
- AHC_CALL (goto done, Void, autoFocus, object);
+ gst_amc_jni_call_void_method (env, &err, self->object,
+ android_hardware_camera.autoFocus, object);
+ if (err) {
+ GST_ERROR ("Failed to call android.hardware.Camera.autoFocus: %s",
+ err->message);
+ goto done;
+ }
ret = TRUE;
done:
+ if (err)
+ g_clear_error(&err);
if (object)
- (*env)->DeleteLocalRef (env, object);
+ gst_amc_jni_object_local_unref (env, object);
return ret;
}
@@ -2240,8 +2182,16 @@
gst_ah_camera_cancel_auto_focus (GstAHCamera * self)
{
JNIEnv *env = gst_amc_jni_get_env ();
+ GError *err = NULL;
- AHC_CALL (return FALSE, Void, cancelAutoFocus);
+ gst_amc_jni_call_void_method (env, &err, self->object,
+ android_hardware_camera.cancelAutoFocus);
+ if (err) {
+ GST_ERROR ("Failed to call android.hardware.Camera.cancelAutoFocus: %s",
+ err->message);
+ g_clear_error (&err);
+ return FALSE;
+ }
return TRUE;
}
@@ -2250,19 +2200,28 @@
gst_ah_camera_get_camera_info (gint camera_id, GstAHCCameraInfo * camera_info)
{
JNIEnv *env = gst_amc_jni_get_env ();
+ GError *err = NULL;
jobject jcamera_info = NULL;
gboolean ret = FALSE;
- jcamera_info = (*env)->NewObject (env,
+ jcamera_info = gst_amc_jni_new_object (env,
+ &err,
+ FALSE,
android_hardware_camera_camerainfo.klass,
android_hardware_camera_camerainfo.constructor);
- if (!jcamera_info) {
- GST_ERROR ("Failed to call Java method");
- (*env)->ExceptionClear (env);
+ if (err) {
+ GST_ERROR ("Failed to create android.hardware.camera.CameraInfo object");
+ g_clear_error (&err);
goto done;
}
- AHC_STATIC_CALL (goto done, Void, getCameraInfo, camera_id, jcamera_info);
+ gst_amc_jni_call_static_void_method (env, &err, android_hardware_camera.klass,
+ android_hardware_camera.getCameraInfo, camera_id, jcamera_info);
+ if (err) {
+ GST_ERROR ("Failed to call android.hardware.Camera.getCameraInfo: %s",
+ err->message);
+ goto done;
+ }
camera_info->facing = (*env)->GetIntField (env, jcamera_info,
android_hardware_camera_camerainfo.facing);
@@ -2282,8 +2241,10 @@
ret = TRUE;
done:
+ if (err)
+ g_clear_error (&err);
if (jcamera_info)
- (*env)->DeleteLocalRef (env, jcamera_info);
+ gst_amc_jni_object_local_unref (env, jcamera_info);
return ret;
}
@@ -2292,9 +2253,17 @@
gst_ah_camera_get_number_of_cameras (void)
{
JNIEnv *env = gst_amc_jni_get_env ();
+ GError *err = NULL;
gint num_cameras;
- num_cameras = AHC_STATIC_CALL (return -1, Int, getNumberOfCameras);
+ gst_amc_jni_call_static_int_method (env, &err, android_hardware_camera.klass,
+ android_hardware_camera.getNumberOfCameras, &num_cameras);
+ if (err) {
+ GST_ERROR ("Failed to call android.hardware.Camera.getNumberOfCameras: %s",
+ err->message);
+ g_clear_error (&err);
+ return -1;
+ }
return num_cameras;
}
@@ -2303,18 +2272,26 @@
gst_ah_camera_get_parameters (GstAHCamera * self)
{
JNIEnv *env = gst_amc_jni_get_env ();
+ GError *err = NULL;
jobject object = NULL;
GstAHCParameters *params = NULL;
- object = AHC_CALL (return NULL, Object, getParameters);
+ gst_amc_jni_call_object_method (env, &err, self->object,
+ android_hardware_camera.getParameters, &object);
+ if (err) {
+ GST_ERROR ("Failed to call android.hardware.Camera.getParameters: %s",
+ err->message);
+ g_clear_error (&err);
+ return NULL;
+ }
if (!object) {
GST_WARNING ("android.hardware.Camera.getParameter is NULL");
return NULL;
}
params = g_slice_new0 (GstAHCParameters);
- params->object = (*env)->NewGlobalRef (env, object);
- (*env)->DeleteLocalRef (env, object);
+ params->object = gst_amc_jni_object_ref (env, object);
+ gst_amc_jni_object_local_unref (env, object);
if (!params->object) {
GST_ERROR ("Failed to create global reference");
(*env)->ExceptionClear (env);
@@ -2331,8 +2308,15 @@
gst_ah_camera_lock (GstAHCamera * self)
{
JNIEnv *env = gst_amc_jni_get_env ();
+ GError *err = NULL;
- AHC_CALL (return FALSE, Void, lock);
+ gst_amc_jni_call_void_method (env, &err, self->object,
+ android_hardware_camera.lock);
+ if (err) {
+ GST_ERROR ("Failed to call android.hardware.Camera.lock: %s", err->message);
+ g_clear_error (&err);
+ return FALSE;
+ }
return TRUE;
}
@@ -2341,14 +2325,24 @@
gst_ah_camera_open (gint camera_id)
{
JNIEnv *env = gst_amc_jni_get_env ();
+ GError *err = NULL;
jobject object = NULL;
GstAHCamera *camera = NULL;
- object = AHC_STATIC_CALL (goto done, Object, open, camera_id);
+ gst_amc_jni_call_static_object_method (env, &err,
+ android_hardware_camera.klass, android_hardware_camera.open, &object,
+ camera_id);
+ if (err) {
+ GST_ERROR ("Failed to call android.hardware.Camera.open: %s",
+ err->message);
+ g_clear_error (&err);
+ goto done;
+ }
+
if (object) {
camera = g_slice_new0 (GstAHCamera);
- camera->object = (*env)->NewGlobalRef (env, object);
- (*env)->DeleteLocalRef (env, object);
+ camera->object = gst_amc_jni_object_ref (env, object);
+ gst_amc_jni_object_local_unref (env, object);
if (!camera->object) {
GST_ERROR ("Failed to create global reference");
(*env)->ExceptionClear (env);
@@ -2365,8 +2359,16 @@
gst_ah_camera_reconnect (GstAHCamera * self)
{
JNIEnv *env = gst_amc_jni_get_env ();
+ GError *err = NULL;
- AHC_CALL (return FALSE, Void, reconnect);
+ gst_amc_jni_call_void_method (env, &err, self->object,
+ android_hardware_camera.reconnect);
+ if (err) {
+ GST_ERROR ("Failed to call android.hardware.Camera.reconnect: %s",
+ err->message);
+ g_clear_error (&err);
+ return FALSE;
+ }
return TRUE;
}
@@ -2375,8 +2377,15 @@
gst_ah_camera_release (GstAHCamera * self)
{
JNIEnv *env = gst_amc_jni_get_env ();
+ GError *err = NULL;
- AHC_CALL (, Void, release);
+ gst_amc_jni_call_void_method (env, &err, self->object,
+ android_hardware_camera.release);
+ if (err) {
+ GST_ERROR ("Failed to call android.hardware.Camera.release: %s",
+ err->message);
+ g_clear_error (&err);
+ }
}
void
@@ -2384,7 +2393,7 @@
{
JNIEnv *env = gst_amc_jni_get_env ();
- (*env)->DeleteGlobalRef (env, self->object);
+ gst_amc_jni_object_unref (env, self->object);
g_slice_free (GstAHCamera, self);
}
@@ -2393,8 +2402,16 @@
gst_ah_camera_set_parameters (GstAHCamera * self, GstAHCParameters * params)
{
JNIEnv *env = gst_amc_jni_get_env ();
+ GError *err = NULL;
- AHC_CALL (return FALSE, Void, setParameters, params->object);
+ gst_amc_jni_call_void_method (env, &err, self->object,
+ android_hardware_camera.setParameters, params->object);
+ if (err) {
+ GST_ERROR ("Failed to call android.hardware.Camera.setParameters: %s",
+ err->message);
+ g_clear_error (&err);
+ return FALSE;
+ }
return TRUE;
}
@@ -2404,27 +2421,38 @@
gpointer user_data)
{
JNIEnv *env = gst_amc_jni_get_env ();
+ GError *err = NULL;
jobject object = NULL;
gboolean ret = FALSE;
if (cb) {
- object = (*env)->NewObject (env,
+ object = gst_amc_jni_new_object (env,
+ &err,
+ FALSE,
org_freedesktop_gstreamer_androidmedia_gstahccallback.klass,
org_freedesktop_gstreamer_androidmedia_gstahccallback.constructor,
*((jlong *) & cb), *((jlong *) & user_data));
- if (!object) {
- GST_ERROR ("Failed to create callback object");
- (*env)->ExceptionClear (env);
+ if (err) {
+ GST_ERROR ("Failed to create org.freedesktop.gstreamer.androidmedia.GstAhcCallback object");
+ g_clear_error (&err);
goto done;
}
}
- AHC_CALL (goto done, Void, setErrorCallback, object);
+ gst_amc_jni_call_void_method (env, &err, self->object,
+ android_hardware_camera.setErrorCallback, object);
+ if (err) {
+ GST_ERROR ("Failed to call android.hardware.Camera.setErrorCallback: %s",
+ err->message);
+ goto done;
+ }
ret = TRUE;
done:
+ if (err)
+ g_clear_error (&err);
if (object)
- (*env)->DeleteLocalRef (env, object);
+ gst_amc_jni_object_local_unref (env, object);
return ret;
}
@@ -2434,46 +2462,72 @@
GstAHCPreviewCallback cb, gpointer user_data)
{
JNIEnv *env = gst_amc_jni_get_env ();
+ GError *err = NULL;
jobject object = NULL;
gboolean ret = FALSE;
if (cb) {
- object = (*env)->NewObject (env,
+ object = gst_amc_jni_new_object (env,
+ &err,
+ FALSE,
org_freedesktop_gstreamer_androidmedia_gstahccallback.klass,
org_freedesktop_gstreamer_androidmedia_gstahccallback.constructor,
*((jlong *) & cb), *((jlong *) & user_data));
- if (!object) {
- GST_ERROR ("Failed to create callback object");
- (*env)->ExceptionClear (env);
+ if (err) {
+ GST_ERROR ("Failed to create org.freedesktop.gstreamer.androidmedia.GstAhcCallback object");
+ g_clear_error (&err);
goto done;
}
}
- AHC_CALL (goto done, Void, setPreviewCallbackWithBuffer, object);
+ gst_amc_jni_call_void_method (env, &err, self->object,
+ android_hardware_camera.setPreviewCallbackWithBuffer, object);
+ if (err) {
+ GST_ERROR ("Failed to call android.hardware.Camera.setPreviewCallbackWithBuffer: %s",
+ err->message);
+ goto done;
+ }
ret = TRUE;
done:
+ if (err)
+ g_clear_error (&err);
if (object)
- (*env)->DeleteLocalRef (env, object);
+ gst_amc_jni_object_local_unref (env, object);
return ret;
}
void
gst_ah_camera_set_preview_texture (GstAHCamera * self,
- GstAGSurfaceTexture * surfaceTexture)
+ GstAmcSurfaceTexture * surfaceTexture)
{
JNIEnv *env = gst_amc_jni_get_env ();
+ GError *err = NULL;
- AHC_CALL (, Void, setPreviewTexture, surfaceTexture->object);
+ gst_amc_jni_call_void_method (env, &err, self->object,
+ android_hardware_camera.setPreviewTexture, surfaceTexture->jobject);
+ if (err) {
+ GST_ERROR ("Failed to call android.hardware.Camera.setPreviewTexture: %s",
+ err->message);
+ g_clear_error (&err);
+ }
}
gboolean
gst_ah_camera_start_preview (GstAHCamera * self)
{
JNIEnv *env = gst_amc_jni_get_env ();
+ GError *err = NULL;
- AHC_CALL (return FALSE, Void, startPreview);
+ gst_amc_jni_call_void_method (env, &err, self->object,
+ android_hardware_camera.startPreview);
+ if (err) {
+ GST_ERROR ("Failed to call android.hardware.Camera.startPreview: %s",
+ err->message);
+ g_clear_error (&err);
+ return FALSE;
+ }
return TRUE;
}
@@ -2482,8 +2536,16 @@
gst_ah_camera_start_smooth_zoom (GstAHCamera * self, gint value)
{
JNIEnv *env = gst_amc_jni_get_env ();
+ GError *err = NULL;
- AHC_CALL (return FALSE, Void, startSmoothZoom, value);
+ gst_amc_jni_call_void_method (env, &err, self->object,
+ android_hardware_camera.startSmoothZoom, value);
+ if (err) {
+ GST_ERROR ("Failed to call android.hardware.Camera.startSmoothZoom: %s",
+ err->message);
+ g_clear_error (&err);
+ return FALSE;
+ }
return TRUE;
}
@@ -2492,8 +2554,16 @@
gst_ah_camera_stop_preview (GstAHCamera * self)
{
JNIEnv *env = gst_amc_jni_get_env ();
+ GError *err = NULL;
- AHC_CALL (return FALSE, Void, stopPreview);
+ gst_amc_jni_call_void_method (env, &err, self->object,
+ android_hardware_camera.stopPreview);
+ if (err) {
+ GST_ERROR ("Failed to call android.hardware.Camera.stopPreview: %s",
+ err->message);
+ g_clear_error (&err);
+ return FALSE;
+ }
return TRUE;
}
@@ -2502,8 +2572,16 @@
gst_ah_camera_stop_smooth_zoom (GstAHCamera * self)
{
JNIEnv *env = gst_amc_jni_get_env ();
+ GError *err = NULL;
- AHC_CALL (return FALSE, Void, stopSmoothZoom);
+ gst_amc_jni_call_void_method (env, &err, self->object,
+ android_hardware_camera.stopSmoothZoom);
+ if (err) {
+ GST_ERROR ("Failed to call android.hardware.Camera.stopSmoothZoom: %s",
+ err->message);
+ g_clear_error (&err);
+ return FALSE;
+ }
return TRUE;
}
@@ -2512,20 +2590,25 @@
gst_ah_camera_unlock (GstAHCamera * self)
{
JNIEnv *env = gst_amc_jni_get_env ();
+ GError *err = NULL;
- AHC_CALL (return FALSE, Void, unlock);
+ gst_amc_jni_call_void_method (env, &err, self->object,
+ android_hardware_camera.unlock);
+ if (err) {
+ GST_ERROR ("Failed to call android.hardware.Camera.unlock: %s",
+ err->message);
+ g_clear_error (&err);
+ return FALSE;
+ }
return TRUE;
}
-#undef AHC_CALL
-#undef AHC_STATIC_CALL
-
/* android.hardware.Camera.Size */
GstAHCSize *
gst_ahc_size_new (gint width, gint height)
{
- GstAHCSize *self = g_slice_new0 (GstAHCSize);
+ GstAHCSize *self = g_slice_new (GstAHCSize);
self->width = width;
self->height = height;
@@ -2575,14 +2658,6 @@
/* android.hardware.Camera.Parameters */
-#define AHCP_CALL(error_statement, type, method, ...) \
- GST_DVM_CALL (error_statement, self->object, type, \
- android_hardware_camera_parameters, method, ## __VA_ARGS__);
-
-#define AHCP_STATIC_CALL(error_statement, type, method, ...) \
- GST_DVM_STATIC_CALL (error_statement, type, \
- android_hardware_camera_parameters, method, ## __VA_ARGS__);
-
static const gchar *
_white_balance_to_gchar (JNIEnv * env, jstring white_balance)
{
@@ -2953,11 +3028,19 @@
gst_ahc_parameters_flatten (GstAHCParameters * self)
{
JNIEnv *env = gst_amc_jni_get_env ();
+ GError *err = NULL;
jstring v_str = NULL;
const gchar *v = NULL;
gchar *ret = NULL;
- v_str = AHCP_CALL (goto done, Object, flatten);
+ gst_amc_jni_call_object_method (env, &err, self->object,
+ android_hardware_camera_parameters.flatten, &v_str);
+ if (err) {
+ GST_ERROR ("Failed to call android.hardware.Camera.Parameters.flatten: %s",
+ err->message);
+ goto done;
+ }
+
v = (*env)->GetStringUTFChars (env, v_str, NULL);
if (!v) {
GST_ERROR ("Failed to convert string to UTF8");
@@ -2967,10 +3050,12 @@
ret = g_strdup (v);
done:
+ if (err)
+ g_clear_error (&err);
if (v)
(*env)->ReleaseStringUTFChars (env, v_str, v);
if (v_str)
- (*env)->DeleteLocalRef (env, v_str);
+ gst_amc_jni_object_local_unref (env, v_str);
return ret;
}
@@ -2979,15 +3064,23 @@
gst_ahc_parameters_get_antibanding (GstAHCParameters * self)
{
JNIEnv *env = gst_amc_jni_get_env ();
+ GError *err = NULL;
const gchar *ret = NULL;
jstring antibanding;
- antibanding = AHCP_CALL (return NULL, Object, getAntibanding);
+ gst_amc_jni_call_object_method (env, &err, self->object,
+ android_hardware_camera_parameters.getAntibanding, &antibanding);
+ if (err) {
+ GST_ERROR ("Failed to call android.hardware.Camera.Parameters.getAntibanding: %s",
+ err->message);
+ g_clear_error (&err);
+ return NULL;
+ }
ret = _antibanding_to_gchar (env, antibanding);
if (antibanding)
- (*env)->DeleteLocalRef (env, antibanding);
+ gst_amc_jni_object_local_unref (env, antibanding);
return ret;
}
@@ -2996,15 +3089,23 @@
gst_ahc_parameters_get_color_effect (GstAHCParameters * self)
{
JNIEnv *env = gst_amc_jni_get_env ();
+ GError *err = NULL;
const gchar *ret = NULL;
jstring color_effect;
- color_effect = AHCP_CALL (return NULL, Object, getColorEffect);
+ gst_amc_jni_call_object_method (env, &err, self->object,
+ android_hardware_camera_parameters.getColorEffect, &color_effect);
+ if (err) {
+ GST_ERROR ("Failed to call android.hardware.Camera.Parameters.getColorEffect: %s",
+ err->message);
+ g_clear_error (&err);
+ return NULL;
+ }
ret = _color_effect_to_gchar (env, color_effect);
if (color_effect)
- (*env)->DeleteLocalRef (env, color_effect);
+ gst_amc_jni_object_local_unref (env, color_effect);
return ret;
}
@@ -3013,9 +3114,17 @@
gst_ahc_parameters_get_exposure_compensation (GstAHCParameters * self)
{
JNIEnv *env = gst_amc_jni_get_env ();
+ GError *err = NULL;
gint ev;
- ev = AHCP_CALL (return -1, Int, getExposureCompensation);
+ gst_amc_jni_call_int_method (env, &err, self->object,
+ android_hardware_camera_parameters.getExposureCompensation, &ev);
+ if (err) {
+ GST_ERROR ("Failed to call android.hardware.Camera.Parameters.getExposureCompensation: %s",
+ err->message);
+ g_clear_error (&err);
+ return -1;
+ }
return ev;
}
@@ -3024,9 +3133,17 @@
gst_ahc_parameters_get_exposure_compensation_step (GstAHCParameters * self)
{
JNIEnv *env = gst_amc_jni_get_env ();
+ GError *err = NULL;
gfloat step;
- step = AHCP_CALL (return 0.0, Float, getExposureCompensationStep);
+ gst_amc_jni_call_float_method (env, &err, self->object,
+ android_hardware_camera_parameters.getExposureCompensationStep, &step);
+ if (err) {
+ GST_ERROR ("Failed to call android.hardware.Camera.Parameters.getExposureCompensationStep: %s",
+ err->message);
+ g_clear_error (&err);
+ return 0.0;
+ }
return step;
}
@@ -3035,15 +3152,23 @@
gst_ahc_parameters_get_flash_mode (GstAHCParameters * self)
{
JNIEnv *env = gst_amc_jni_get_env ();
+ GError *err = NULL;
const gchar *ret = NULL;
jstring flash_mode;
- flash_mode = AHCP_CALL (return NULL, Object, getFlashMode);
+ gst_amc_jni_call_object_method (env, &err, self->object,
+ android_hardware_camera_parameters.getFlashMode, &flash_mode);
+ if (err) {
+ GST_ERROR ("Failed to call android.hardware.Camera.Parameters.getFlashMode: %s",
+ err->message);
+ g_clear_error (&err);
+ return NULL;
+ }
ret = _flash_mode_to_gchar (env, flash_mode);
if (flash_mode)
- (*env)->DeleteLocalRef (env, flash_mode);
+ gst_amc_jni_object_local_unref (env, flash_mode);
return ret;
}
@@ -3052,9 +3177,17 @@
gst_ahc_parameters_get_focal_length (GstAHCParameters * self)
{
JNIEnv *env = gst_amc_jni_get_env ();
+ GError *err = NULL;
gfloat length;
- length = AHCP_CALL (return 0.0, Float, getFocalLength);
+ gst_amc_jni_call_float_method (env, &err, self->object,
+ android_hardware_camera_parameters.getFocalLength, &length);
+ if (err) {
+ GST_ERROR ("Failed to call android.hardware.Camera.Parameters.getFocalLength: %s",
+ err->message);
+ g_clear_error (&err);
+ return 0.0;
+ }
return length;
}
@@ -3063,15 +3196,23 @@
gst_ahc_parameters_get_focus_mode (GstAHCParameters * self)
{
JNIEnv *env = gst_amc_jni_get_env ();
+ GError *err = NULL;
const gchar *ret = NULL;
jstring focus_mode;
- focus_mode = AHCP_CALL (return NULL, Object, getFocusMode);
+ gst_amc_jni_call_object_method (env, &err, self->object,
+ android_hardware_camera_parameters.getFocusMode, &focus_mode);
+ if (err) {
+ GST_ERROR ("Failed to call android.hardware.Camera.Parameters.getFocusMode: %s",
+ err->message);
+ g_clear_error (&err);
+ return NULL;
+ }
ret = _focus_mode_to_gchar (env, focus_mode);
if (focus_mode)
- (*env)->DeleteLocalRef (env, focus_mode);
+ gst_amc_jni_object_local_unref (env, focus_mode);
return ret;
}
@@ -3080,9 +3221,17 @@
gst_ahc_parameters_get_horizontal_view_angle (GstAHCParameters * self)
{
JNIEnv *env = gst_amc_jni_get_env ();
+ GError *err = NULL;
gfloat angle;
- angle = AHCP_CALL (return 0.0, Float, getHorizontalViewAngle);
+ gst_amc_jni_call_float_method (env, &err, self->object,
+ android_hardware_camera_parameters.getHorizontalViewAngle, &angle);
+ if (err) {
+ GST_ERROR ("Failed to call android.hardware.Camera.Parameters.getHorizontalViewAngle: %s",
+ err->message);
+ g_clear_error (&err);
+ return 0.0;
+ }
return angle;
}
@@ -3091,9 +3240,17 @@
gst_ahc_parameters_get_max_exposure_compensation (GstAHCParameters * self)
{
JNIEnv *env = gst_amc_jni_get_env ();
+ GError *err = NULL;
gint max;
- max = AHCP_CALL (return 0, Int, getMaxExposureCompensation);
+ gst_amc_jni_call_int_method (env, &err, self->object,
+ android_hardware_camera_parameters.getMaxExposureCompensation, &max);
+ if (err) {
+ GST_ERROR ("Failed to call android.hardware.Camera.Parameters.getMaxExposureCompensation: %s",
+ err->message);
+ g_clear_error (&err);
+ return 0;
+ }
return max;
}
@@ -3102,9 +3259,17 @@
gst_ahc_parameters_get_max_zoom (GstAHCParameters * self)
{
JNIEnv *env = gst_amc_jni_get_env ();
+ GError *err = NULL;
gint max;
- max = AHCP_CALL (return -1, Int, getMaxZoom);
+ gst_amc_jni_call_int_method (env, &err, self->object,
+ android_hardware_camera_parameters.getMaxZoom, &max);
+ if (err) {
+ GST_ERROR ("Failed to call android.hardware.Camera.Parameters.getMaxZoom: %s",
+ err->message);
+ g_clear_error (&err);
+ return -1;
+ }
return max;
}
@@ -3113,9 +3278,17 @@
gst_ahc_parameters_get_min_exposure_compensation (GstAHCParameters * self)
{
JNIEnv *env = gst_amc_jni_get_env ();
+ GError *err = NULL;
gint min;
- min = AHCP_CALL (return 0, Int, getMinExposureCompensation);
+ gst_amc_jni_call_int_method (env, &err, self->object,
+ android_hardware_camera_parameters.getMinExposureCompensation, &min);
+ if (err) {
+ GST_ERROR ("Failed to call android.hardware.Camera.Parameters.getMinExposureCompensation: %s",
+ err->message);
+ g_clear_error (&err);
+ return 0;
+ }
return min;
}
@@ -3124,9 +3297,17 @@
gst_ahc_parameters_get_preview_format (GstAHCParameters * self)
{
JNIEnv *env = gst_amc_jni_get_env ();
+ GError *err = NULL;
gint format;
- format = AHCP_CALL (return 0, Int, getPreviewFormat);
+ gst_amc_jni_call_int_method (env, &err, self->object,
+ android_hardware_camera_parameters.getPreviewFormat, &format);
+ if (err) {
+ GST_ERROR ("Failed to call android.hardware.Camera.Parameters.getPreviewFormat: %s",
+ err->message);
+ g_clear_error (&err);
+ return 0;
+ }
return format;
}
@@ -3136,6 +3317,7 @@
gint * min, gint * max)
{
JNIEnv *env = gst_amc_jni_get_env ();
+ GError *err = NULL;
gboolean ret = FALSE;
jintArray range = NULL;
jint *fps = NULL;
@@ -3147,7 +3329,13 @@
goto done;
}
- AHCP_CALL (goto done, Void, getPreviewFpsRange, range);
+ gst_amc_jni_call_void_method (env, &err, self->object,
+ android_hardware_camera_parameters.getPreviewFpsRange, range);
+ if (err) {
+ GST_ERROR ("Failed to call android.hardware.Camera.Parameters.getPreviewFpsRange: %s",
+ err->message);
+ goto done;
+ }
fps = (*env)->GetIntArrayElements (env, range, NULL);
if ((*env)->ExceptionCheck (env) || !fps) {
@@ -3162,10 +3350,12 @@
ret = TRUE;
done:
+ if (err)
+ g_clear_error (&err);
if (fps)
(*env)->ReleaseIntArrayElements (env, range, fps, JNI_ABORT);
if (range)
- (*env)->DeleteLocalRef (env, range);
+ gst_amc_jni_object_local_unref (env, range);
return ret;
}
@@ -3174,13 +3364,19 @@
gst_ahc_parameters_get_preview_size (GstAHCParameters * self)
{
JNIEnv *env = gst_amc_jni_get_env ();
+ GError *err = NULL;
jobject jsize = NULL;
GstAHCSize *size = NULL;
- jsize = AHCP_CALL (goto done, Object, getPreviewSize);
+ gst_amc_jni_call_object_method (env, &err, self->object,
+ android_hardware_camera_parameters.getPreviewSize, &jsize);
+ if (err) {
+ GST_ERROR ("Failed to call android.hardware.Camera.Parameters.getPreviewSize: %s",
+ err->message);
+ goto done;
+ }
- size = g_slice_new0 (GstAHCSize);
-
+ size = g_slice_new (GstAHCSize);
size->width = (*env)->GetIntField (env, jsize,
android_hardware_camera_size.width);
if ((*env)->ExceptionCheck (env)) {
@@ -3202,8 +3398,10 @@
}
done:
+ if (err)
+ g_clear_error (&err);
if (jsize)
- (*env)->DeleteLocalRef (env, jsize);
+ gst_amc_jni_object_local_unref (env, jsize);
return size;
}
@@ -3212,15 +3410,23 @@
gst_ahc_parameters_get_scene_mode (GstAHCParameters * self)
{
JNIEnv *env = gst_amc_jni_get_env ();
+ GError *err = NULL;
const gchar *ret = NULL;
jstring scene_mode;
- scene_mode = AHCP_CALL (return NULL, Object, getSceneMode);
+ gst_amc_jni_call_object_method (env, &err, self->object,
+ android_hardware_camera_parameters.getSceneMode, &scene_mode);
+ if (err) {
+ GST_ERROR ("Failed to call android.hardware.Camera.Parameters.getSceneMode: %s",
+ err->message);
+ g_clear_error (&err);
+ return NULL;
+ }
ret = _scene_mode_to_gchar (env, scene_mode);
if (scene_mode)
- (*env)->DeleteLocalRef (env, scene_mode);
+ gst_amc_jni_object_local_unref (env, scene_mode);
return ret;
}
@@ -3229,10 +3435,18 @@
gst_ahc_parameters_get_supported_antibanding (GstAHCParameters * self)
{
JNIEnv *env = gst_amc_jni_get_env ();
+ GError *err = NULL;
jobject list = NULL;
GList *ret = NULL;
- list = AHCP_CALL (return NULL, Object, getSupportedAntibanding);
+ gst_amc_jni_call_object_method (env, &err, self->object,
+ android_hardware_camera_parameters.getSupportedAntibanding, &list);
+ if (err) {
+ GST_ERROR ("Failed to call android.hardware.Camera.Parameters.getSupportedAntibanding: %s",
+ err->message);
+ g_clear_error (&err);
+ return NULL;
+ }
if (list) {
jobject iterator = NULL;
@@ -3246,12 +3460,12 @@
const gchar *value = _antibanding_to_gchar (env, str);
ret = g_list_append (ret, (gchar *) value);
- (*env)->DeleteLocalRef (env, str);
+ gst_amc_jni_object_local_unref (env, str);
}
}
- (*env)->DeleteLocalRef (env, iterator);
+ gst_amc_jni_object_local_unref (env, iterator);
}
- (*env)->DeleteLocalRef (env, list);
+ gst_amc_jni_object_local_unref (env, list);
}
return ret;
@@ -3267,10 +3481,18 @@
gst_ahc_parameters_get_supported_color_effects (GstAHCParameters * self)
{
JNIEnv *env = gst_amc_jni_get_env ();
+ GError *err = NULL;
jobject list = NULL;
GList *ret = NULL;
- list = AHCP_CALL (return NULL, Object, getSupportedColorEffects);
+ gst_amc_jni_call_object_method (env, &err, self->object,
+ android_hardware_camera_parameters.getSupportedColorEffects, &list);
+ if (err) {
+ GST_ERROR ("Failed to call android.hardware.Camera.Parameters.getSupportedColorEffects: %s",
+ err->message);
+ g_clear_error (&err);
+ return NULL;
+ }
if (list) {
jobject iterator = NULL;
@@ -3284,12 +3506,12 @@
const gchar *value = _color_effect_to_gchar (env, str);
ret = g_list_append (ret, (gchar *) value);
- (*env)->DeleteLocalRef (env, str);
+ gst_amc_jni_object_local_unref (env, str);
}
}
- (*env)->DeleteLocalRef (env, iterator);
+ gst_amc_jni_object_local_unref (env, iterator);
}
- (*env)->DeleteLocalRef (env, list);
+ gst_amc_jni_object_local_unref (env, list);
}
return ret;
@@ -3305,10 +3527,18 @@
gst_ahc_parameters_get_supported_flash_modes (GstAHCParameters * self)
{
JNIEnv *env = gst_amc_jni_get_env ();
+ GError *err = NULL;
jobject list = NULL;
GList *ret = NULL;
- list = AHCP_CALL (return NULL, Object, getSupportedFlashModes);
+ gst_amc_jni_call_object_method (env, &err, self->object,
+ android_hardware_camera_parameters.getSupportedFlashModes, &list);
+ if (err) {
+ GST_ERROR ("Failed to call android.hardware.Camera.Parameters.getSupportedFlashModes: %s",
+ err->message);
+ g_clear_error (&err);
+ return NULL;
+ }
if (list) {
jobject iterator = NULL;
@@ -3322,12 +3552,12 @@
const gchar *value = _flash_mode_to_gchar (env, str);
ret = g_list_append (ret, (gchar *) value);
- (*env)->DeleteLocalRef (env, str);
+ gst_amc_jni_object_local_unref (env, str);
}
}
- (*env)->DeleteLocalRef (env, iterator);
+ gst_amc_jni_object_local_unref (env, iterator);
}
- (*env)->DeleteLocalRef (env, list);
+ gst_amc_jni_object_local_unref (env, list);
}
return ret;
@@ -3343,10 +3573,18 @@
gst_ahc_parameters_get_supported_focus_modes (GstAHCParameters * self)
{
JNIEnv *env = gst_amc_jni_get_env ();
+ GError *err = NULL;
jobject list = NULL;
GList *ret = NULL;
- list = AHCP_CALL (return NULL, Object, getSupportedFocusModes);
+ gst_amc_jni_call_object_method (env, &err, self->object,
+ android_hardware_camera_parameters.getSupportedFocusModes, &list);
+ if (err) {
+ GST_ERROR ("Failed to call android.hardware.Camera.Parameters.getSupportedFocusModes: %s",
+ err->message);
+ g_clear_error (&err);
+ return NULL;
+ }
if (list) {
jobject iterator = NULL;
@@ -3360,12 +3598,12 @@
const gchar *value = _focus_mode_to_gchar (env, str);
ret = g_list_append (ret, (gchar *) value);
- (*env)->DeleteLocalRef (env, str);
+ gst_amc_jni_object_local_unref (env, str);
}
}
- (*env)->DeleteLocalRef (env, iterator);
+ gst_amc_jni_object_local_unref (env, iterator);
}
- (*env)->DeleteLocalRef (env, list);
+ gst_amc_jni_object_local_unref (env, list);
}
return ret;
@@ -3381,10 +3619,18 @@
gst_ahc_parameters_get_supported_preview_formats (GstAHCParameters * self)
{
JNIEnv *env = gst_amc_jni_get_env ();
+ GError *err = NULL;
jobject list = NULL;
GList *ret = NULL;
- list = AHCP_CALL (return NULL, Object, getSupportedPreviewFormats);
+ gst_amc_jni_call_object_method (env, &err, self->object,
+ android_hardware_camera_parameters.getSupportedPreviewFormats, &list);
+ if (err) {
+ GST_ERROR ("Failed to call android.hardware.Camera.Parameters.getSupportedPreviewFormats: %s",
+ err->message);
+ g_clear_error (&err);
+ return NULL;
+ }
if (list) {
jobject iterator = NULL;
@@ -3398,12 +3644,12 @@
jint value = java_lang_integer_int_value (env, integer);
ret = g_list_append (ret, GINT_TO_POINTER (value));
- (*env)->DeleteLocalRef (env, integer);
+ gst_amc_jni_object_local_unref (env, integer);
}
}
- (*env)->DeleteLocalRef (env, iterator);
+ gst_amc_jni_object_local_unref (env, iterator);
}
- (*env)->DeleteLocalRef (env, list);
+ gst_amc_jni_object_local_unref (env, list);
}
return ret;
@@ -3419,10 +3665,18 @@
gst_ahc_parameters_get_supported_preview_fps_range (GstAHCParameters * self)
{
JNIEnv *env = gst_amc_jni_get_env ();
+ GError *err = NULL;
jobject list = NULL;
GList *ret = NULL;
- list = AHCP_CALL (return NULL, Object, getSupportedPreviewFpsRange);
+ gst_amc_jni_call_object_method (env, &err, self->object,
+ android_hardware_camera_parameters.getSupportedPreviewFpsRange, &list);
+ if (err) {
+ GST_ERROR ("Failed to call android.hardware.Camera.Parameters.getSupportedPreviewFpsRange: %s",
+ err->message);
+ g_clear_error (&err);
+ return NULL;
+ }
if (list) {
jobject iterator = NULL;
@@ -3437,12 +3691,12 @@
(*env)->GetIntArrayRegion (env, range, 0, 2, fps);
ret = g_list_append (ret, fps);
- (*env)->DeleteLocalRef (env, range);
+ gst_amc_jni_object_local_unref (env, range);
}
}
- (*env)->DeleteLocalRef (env, iterator);
+ gst_amc_jni_object_local_unref (env, iterator);
}
- (*env)->DeleteLocalRef (env, list);
+ gst_amc_jni_object_local_unref (env, list);
}
return ret;
@@ -3459,10 +3713,18 @@
gst_ahc_parameters_get_supported_preview_sizes (GstAHCParameters * self)
{
JNIEnv *env = gst_amc_jni_get_env ();
+ GError *err = NULL;
jobject list = NULL;
GList *ret = NULL;
- list = AHCP_CALL (return NULL, Object, getSupportedPreviewSizes);
+ gst_amc_jni_call_object_method (env, &err, self->object,
+ android_hardware_camera_parameters.getSupportedPreviewSizes, &list);
+ if (err) {
+ GST_ERROR ("Failed to call android.hardware.Camera.Parameters.getSupportedPreviewSizes: %s",
+ err->message);
+ g_clear_error (&err);
+ return NULL;
+ }
if (list) {
jobject iterator = NULL;
@@ -3481,12 +3743,12 @@
android_hardware_camera_size.height);
ret = g_list_append (ret, gst_ahc_size_new (width, height));
- (*env)->DeleteLocalRef (env, jsize);
+ gst_amc_jni_object_local_unref (env, jsize);
}
}
- (*env)->DeleteLocalRef (env, iterator);
+ gst_amc_jni_object_local_unref (env, iterator);
}
- (*env)->DeleteLocalRef (env, list);
+ gst_amc_jni_object_local_unref (env, list);
}
return ret;
@@ -3503,10 +3765,18 @@
gst_ahc_parameters_get_supported_scene_modes (GstAHCParameters * self)
{
JNIEnv *env = gst_amc_jni_get_env ();
+ GError *err = NULL;
jobject list = NULL;
GList *ret = NULL;
- list = AHCP_CALL (return NULL, Object, getSupportedSceneModes);
+ gst_amc_jni_call_object_method (env, &err, self->object,
+ android_hardware_camera_parameters.getSupportedSceneModes, &list);
+ if (err) {
+ GST_ERROR ("Failed to call android.hardware.Camera.Parameters.getSupportedSceneModes: %s",
+ err->message);
+ g_clear_error (&err);
+ return NULL;
+ }
if (list) {
jobject iterator = NULL;
@@ -3520,12 +3790,12 @@
const gchar *value = _scene_mode_to_gchar (env, str);
ret = g_list_append (ret, (gchar *) value);
- (*env)->DeleteLocalRef (env, str);
+ gst_amc_jni_object_local_unref (env, str);
}
}
- (*env)->DeleteLocalRef (env, iterator);
+ gst_amc_jni_object_local_unref (env, iterator);
}
- (*env)->DeleteLocalRef (env, list);
+ gst_amc_jni_object_local_unref (env, list);
}
return ret;
@@ -3541,10 +3811,18 @@
gst_ahc_parameters_get_supported_white_balance (GstAHCParameters * self)
{
JNIEnv *env = gst_amc_jni_get_env ();
+ GError *err = NULL;
jobject list = NULL;
GList *ret = NULL;
- list = AHCP_CALL (return NULL, Object, getSupportedWhiteBalance);
+ gst_amc_jni_call_object_method (env, &err, self->object,
+ android_hardware_camera_parameters.getSupportedWhiteBalance, &list);
+ if (err) {
+ GST_ERROR ("Failed to call android.hardware.Camera.Parameters.getSupportedWhiteBalance: %s",
+ err->message);
+ g_clear_error (&err);
+ return NULL;
+ }
if (list) {
jobject iterator = NULL;
@@ -3558,12 +3836,12 @@
const gchar *value = _white_balance_to_gchar (env, str);
ret = g_list_append (ret, (gchar *) value);
- (*env)->DeleteLocalRef (env, str);
+ gst_amc_jni_object_local_unref (env, str);
}
}
- (*env)->DeleteLocalRef (env, iterator);
+ gst_amc_jni_object_local_unref (env, iterator);
}
- (*env)->DeleteLocalRef (env, list);
+ gst_amc_jni_object_local_unref (env, list);
}
return ret;
@@ -3579,9 +3857,17 @@
gst_ahc_parameters_get_vertical_view_angle (GstAHCParameters * self)
{
JNIEnv *env = gst_amc_jni_get_env ();
+ GError *err = NULL;
gfloat angle;
- angle = AHCP_CALL (return 0.0, Float, getVerticalViewAngle);
+ gst_amc_jni_call_float_method (env, &err, self->object,
+ android_hardware_camera_parameters.getVerticalViewAngle, &angle);
+ if (err) {
+ GST_ERROR ("Failed to call android.hardware.Camera.Parameters.getVerticalViewAngle: %s",
+ err->message);
+ g_clear_error (&err);
+ return 0.0;
+ }
return angle;
}
@@ -3590,9 +3876,17 @@
gst_ahc_parameters_get_video_stabilization (GstAHCParameters * self)
{
JNIEnv *env = gst_amc_jni_get_env ();
+ GError *err = NULL;
gboolean ret;
- ret = AHCP_CALL (return FALSE, Boolean, getVideoStabilization);
+ gst_amc_jni_call_boolean_method (env, &err, self->object,
+ android_hardware_camera_parameters.getVideoStabilization, &ret);
+ if (err) {
+ GST_ERROR ("Failed to call android.hardware.Camera.Parameters.getVideoStabilization: %s",
+ err->message);
+ g_clear_error (&err);
+ return FALSE;
+ }
return ret;
}
@@ -3601,15 +3895,23 @@
gst_ahc_parameters_get_white_balance (GstAHCParameters * self)
{
JNIEnv *env = gst_amc_jni_get_env ();
+ GError *err = NULL;
const gchar *ret = NULL;
jstring white_balance;
- white_balance = AHCP_CALL (return NULL, Object, getWhiteBalance);
+ gst_amc_jni_call_object_method (env, &err, self->object,
+ android_hardware_camera_parameters.getWhiteBalance, &white_balance);
+ if (err) {
+ GST_ERROR ("Failed to call android.hardware.Camera.Parameters.getWhiteBalance: %s",
+ err->message);
+ g_clear_error (&err);
+ return NULL;
+ }
ret = _white_balance_to_gchar (env, white_balance);
if (white_balance)
- (*env)->DeleteLocalRef (env, white_balance);
+ gst_amc_jni_object_local_unref (env, white_balance);
return ret;
}
@@ -3618,9 +3920,17 @@
gst_ahc_parameters_get_zoom (GstAHCParameters * self)
{
JNIEnv *env = gst_amc_jni_get_env ();
+ GError *err = NULL;
gint zoom;
- zoom = AHCP_CALL (return -1, Int, getZoom);
+ gst_amc_jni_call_int_method (env, &err, self->object,
+ android_hardware_camera_parameters.getZoom, &zoom);
+ if (err) {
+ GST_ERROR ("Failed to call android.hardware.Camera.Parameters.getZoom: %s",
+ err->message);
+ g_clear_error (&err);
+ return -1;
+ }
return zoom;
}
@@ -3629,10 +3939,18 @@
gst_ahc_parameters_get_zoom_ratios (GstAHCParameters * self)
{
JNIEnv *env = gst_amc_jni_get_env ();
+ GError *err = NULL;
jobject list = NULL;
GList *ret = NULL;
- list = AHCP_CALL (return NULL, Object, getZoomRatios);
+ gst_amc_jni_call_object_method (env, &err, self->object,
+ android_hardware_camera_parameters.getZoomRatios, &list);
+ if (err) {
+ GST_ERROR ("Failed to call android.hardware.Camera.Parameters.getZoomRatios: %s",
+ err->message);
+ g_clear_error (&err);
+ return NULL;
+ }
if (list) {
jobject iterator = NULL;
@@ -3646,12 +3964,12 @@
jint value = java_lang_integer_int_value (env, integer);
ret = g_list_append (ret, GINT_TO_POINTER (value));
- (*env)->DeleteLocalRef (env, integer);
+ gst_amc_jni_object_local_unref (env, integer);
}
}
- (*env)->DeleteLocalRef (env, iterator);
+ gst_amc_jni_object_local_unref (env, iterator);
}
- (*env)->DeleteLocalRef (env, list);
+ gst_amc_jni_object_local_unref (env, list);
}
return ret;
@@ -3667,9 +3985,17 @@
gst_ahc_parameters_is_smooth_zoom_supported (GstAHCParameters * self)
{
JNIEnv *env = gst_amc_jni_get_env ();
+ GError *err = NULL;
gboolean supported;
- supported = AHCP_CALL (return FALSE, Boolean, isSmoothZoomSupported);
+ gst_amc_jni_call_boolean_method (env, &err, self->object,
+ android_hardware_camera_parameters.isSmoothZoomSupported, &supported);
+ if (err) {
+ GST_ERROR ("Failed to call android.hardware.Camera.Parameters.isSmoothZoomSupported: %s",
+ err->message);
+ g_clear_error (&err);
+ return FALSE;
+ }
return supported;
}
@@ -3678,9 +4004,18 @@
gst_ahc_parameters_is_video_stabilization_supported (GstAHCParameters * self)
{
JNIEnv *env = gst_amc_jni_get_env ();
+ GError *err = NULL;
gboolean supported;
- supported = AHCP_CALL (return FALSE, Boolean, isVideoStabilizationSupported);
+ gst_amc_jni_call_boolean_method (env, &err, self->object,
+ android_hardware_camera_parameters.isVideoStabilizationSupported,
+ &supported);
+ if (err) {
+ GST_ERROR ("Failed to call android.hardware.Camera.Parameters.isVideoStabilizationSupported: %s",
+ err->message);
+ g_clear_error (&err);
+ return FALSE;
+ }
return supported;
}
@@ -3689,9 +4024,17 @@
gst_ahc_parameters_is_zoom_supported (GstAHCParameters * self)
{
JNIEnv *env = gst_amc_jni_get_env ();
+ GError *err = NULL;
gboolean supported;
- supported = AHCP_CALL (return FALSE, Boolean, isZoomSupported);
+ gst_amc_jni_call_boolean_method (env, &err, self->object,
+ android_hardware_camera_parameters.isZoomSupported, &supported);
+ if (err) {
+ GST_ERROR ("Failed to call android.hardware.Camera.Parameters.isZoomSupported: %s",
+ err->message);
+ g_clear_error (&err);
+ return FALSE;
+ }
return supported;
}
@@ -3701,13 +4044,21 @@
const gchar * value)
{
JNIEnv *env = gst_amc_jni_get_env ();
+ GError *err = NULL;
jstring antibanding;
antibanding = _antibanding_to_jstring (value);
if (!antibanding)
return FALSE;
- AHCP_CALL (return FALSE, Void, setAntibanding, antibanding);
+ gst_amc_jni_call_void_method (env, &err, self->object,
+ android_hardware_camera_parameters.setAntibanding, antibanding);
+ if (err) {
+ GST_ERROR ("Failed to call android.hardware.Camera.Parameters.setAntibanding: %s",
+ err->message);
+ g_clear_error (&err);
+ return FALSE;
+ }
return TRUE;
}
@@ -3717,13 +4068,21 @@
const gchar * value)
{
JNIEnv *env = gst_amc_jni_get_env ();
+ GError *err = NULL;
jstring color_effect;
color_effect = _color_effect_to_jstring (value);
if (!color_effect)
return FALSE;
- AHCP_CALL (return FALSE, Void, setColorEffect, color_effect);
+ gst_amc_jni_call_void_method (env, &err, self->object,
+ android_hardware_camera_parameters.setColorEffect, color_effect);
+ if (err) {
+ GST_ERROR ("Failed to call android.hardware.Camera.Parameters.setColorEffect: %s",
+ err->message);
+ g_clear_error (&err);
+ return FALSE;
+ }
return TRUE;
}
@@ -3733,8 +4092,16 @@
gint value)
{
JNIEnv *env = gst_amc_jni_get_env ();
+ GError *err = NULL;
- AHCP_CALL (return FALSE, Void, setExposureCompensation, value);
+ gst_amc_jni_call_void_method (env, &err, self->object,
+ android_hardware_camera_parameters.setExposureCompensation, value);
+ if (err) {
+ GST_ERROR ("Failed to call android.hardware.Camera.Parameters.setExposureCompensation: %s",
+ err->message);
+ g_clear_error (&err);
+ return FALSE;
+ }
return TRUE;
}
@@ -3743,13 +4110,21 @@
gst_ahc_parameters_set_flash_mode (GstAHCParameters * self, const gchar * value)
{
JNIEnv *env = gst_amc_jni_get_env ();
+ GError *err = NULL;
jstring flash_mode;
flash_mode = _flash_mode_to_jstring (value);
if (!flash_mode)
return FALSE;
- AHCP_CALL (return FALSE, Void, setFlashMode, flash_mode);
+ gst_amc_jni_call_void_method (env, &err, self->object,
+ android_hardware_camera_parameters.setFlashMode, flash_mode);
+ if (err) {
+ GST_ERROR ("Failed to call android.hardware.Camera.Parameters.setFlashMode: %s",
+ err->message);
+ g_clear_error (&err);
+ return FALSE;
+ }
return TRUE;
}
@@ -3758,13 +4133,21 @@
gst_ahc_parameters_set_focus_mode (GstAHCParameters * self, const gchar * value)
{
JNIEnv *env = gst_amc_jni_get_env ();
+ GError *err = NULL;
jstring focus_mode;
focus_mode = _focus_mode_to_jstring (value);
if (!focus_mode)
return FALSE;
- AHCP_CALL (return FALSE, Void, setFocusMode, focus_mode);
+ gst_amc_jni_call_void_method (env, &err, self->object,
+ android_hardware_camera_parameters.setFocusMode, focus_mode);
+ if (err) {
+ GST_ERROR ("Failed to call android.hardware.Camera.Parameters.setFocusMode: %s",
+ err->message);
+ g_clear_error (&err);
+ return FALSE;
+ }
return TRUE;
}
@@ -3773,8 +4156,16 @@
gst_ahc_parameters_set_preview_format (GstAHCParameters * self, gint format)
{
JNIEnv *env = gst_amc_jni_get_env ();
+ GError *err = NULL;
- AHCP_CALL (return FALSE, Void, setPreviewFormat, format);
+ gst_amc_jni_call_void_method (env, &err, self->object,
+ android_hardware_camera_parameters.setPreviewFormat, format);
+ if (err) {
+ GST_ERROR ("Failed to call android.hardware.Camera.Parameters.setPreviewFormat: %s",
+ err->message);
+ g_clear_error (&err);
+ return FALSE;
+ }
return TRUE;
}
@@ -3784,8 +4175,16 @@
gint min, gint max)
{
JNIEnv *env = gst_amc_jni_get_env ();
+ GError *err = NULL;
- AHCP_CALL (return FALSE, Void, setPreviewFpsRange, min, max);
+ gst_amc_jni_call_void_method (env, &err, self->object,
+ android_hardware_camera_parameters.setPreviewFpsRange, min, max);
+ if (err) {
+ GST_ERROR ("Failed to call android.hardware.Camera.Parameters.setPreviewFpsRange: %s",
+ err->message);
+ g_clear_error (&err);
+ return FALSE;
+ }
return TRUE;
}
@@ -3795,8 +4194,16 @@
gint width, gint height)
{
JNIEnv *env = gst_amc_jni_get_env ();
+ GError *err = NULL;
- AHCP_CALL (return FALSE, Void, setPreviewSize, width, height);
+ gst_amc_jni_call_void_method (env, &err, self->object,
+ android_hardware_camera_parameters.setPreviewSize, width, height);
+ if (err) {
+ GST_ERROR ("Failed to call android.hardware.Camera.Parameters.setPreviewSize: %s",
+ err->message);
+ g_clear_error (&err);
+ return FALSE;
+ }
return TRUE;
}
@@ -3805,13 +4212,21 @@
gst_ahc_parameters_set_scene_mode (GstAHCParameters * self, const gchar * value)
{
JNIEnv *env = gst_amc_jni_get_env ();
+ GError *err = NULL;
jstring scene_mode;
scene_mode = _scene_mode_to_jstring (value);
if (!scene_mode)
return FALSE;
- AHCP_CALL (return FALSE, Void, setSceneMode, scene_mode);
+ gst_amc_jni_call_void_method (env, &err, self->object,
+ android_hardware_camera_parameters.setSceneMode, scene_mode);
+ if (err) {
+ GST_ERROR ("Failed to call android.hardware.Camera.Parameters.setSceneMode: %s",
+ err->message);
+ g_clear_error (&err);
+ return FALSE;
+ }
return TRUE;
}
@@ -3822,8 +4237,16 @@
gboolean toggle)
{
JNIEnv *env = gst_amc_jni_get_env ();
+ GError *err = NULL;
- AHCP_CALL (return FALSE, Void, setVideoStabilization, toggle);
+ gst_amc_jni_call_void_method (env, &err, self->object,
+ android_hardware_camera_parameters.setVideoStabilization, toggle);
+ if (err) {
+ GST_ERROR ("Failed to call android.hardware.Camera.Parameters.setVideoStabilization: %s",
+ err->message);
+ g_clear_error (&err);
+ return FALSE;
+ }
return TRUE;
}
@@ -3833,13 +4256,21 @@
const gchar * value)
{
JNIEnv *env = gst_amc_jni_get_env ();
+ GError *err = NULL;
jstring white_balance;
white_balance = _white_balance_to_jstring (value);
if (!white_balance)
return FALSE;
- AHCP_CALL (return FALSE, Void, setWhiteBalance, white_balance);
+ gst_amc_jni_call_void_method (env, &err, self->object,
+ android_hardware_camera_parameters.setWhiteBalance, white_balance);
+ if (err) {
+ GST_ERROR ("Failed to call android.hardware.Camera.Parameters.setWhiteBalance: %s",
+ err->message);
+ g_clear_error (&err);
+ return FALSE;
+ }
return TRUE;
}
@@ -3848,8 +4279,16 @@
gst_ahc_parameters_set_zoom (GstAHCParameters * self, gint value)
{
JNIEnv *env = gst_amc_jni_get_env ();
+ GError *err = NULL;
- AHCP_CALL (return FALSE, Void, setZoom, value);
+ gst_amc_jni_call_void_method (env, &err, self->object,
+ android_hardware_camera_parameters.setZoom, value);
+ if (err) {
+ GST_ERROR ("Failed to call android.hardware.Camera.Parameters.setZoom: %s",
+ err->message);
+ g_clear_error (&err);
+ return FALSE;
+ }
return TRUE;
}
@@ -3858,6 +4297,7 @@
gst_ahc_parameters_unflatten (GstAHCParameters * self, const gchar * flattened)
{
JNIEnv *env = gst_amc_jni_get_env ();
+ GError *err = NULL;
jstring v_str = NULL;
gboolean ret = TRUE;
@@ -3865,9 +4305,16 @@
if (v_str == NULL)
return FALSE;
- AHCP_CALL (ret = FALSE, Void, unflatten, v_str);
+ gst_amc_jni_call_void_method (env, &err, self->object,
+ android_hardware_camera_parameters.unflatten, v_str);
+ if (err) {
+ GST_ERROR ("Failed to call android.hardware.Camera.Parameters.unflatten: %s",
+ err->message);
+ g_clear_error (&err);
+ ret = FALSE;
+ }
- (*env)->DeleteLocalRef (env, v_str);
+ gst_amc_jni_object_local_unref (env, self->object);
return ret;
}
@@ -3882,6 +4329,6 @@
GST_DEBUG ("freeing parameters %p", self->object);
- (*env)->DeleteGlobalRef (env, self->object);
+ gst_amc_jni_object_unref (env, self->object);
g_slice_free (GstAHCParameters, self);
}
diff --git a/sys/androidmedia/gst-android-hardware-camera.h b/sys/androidmedia/gst-android-hardware-camera.h
index 44e7842..ab2e25a 100644
--- a/sys/androidmedia/gst-android-hardware-camera.h
+++ b/sys/androidmedia/gst-android-hardware-camera.h
@@ -28,8 +28,8 @@
#include <gst/gst.h>
#include <jni.h>
-#include "gst-android-graphics-surfacetexture.h"
#include "gst-android-graphics-imageformat.h"
+#include "gstamcsurfacetexture.h"
G_BEGIN_DECLS
@@ -150,7 +150,7 @@
gboolean gst_ah_camera_set_preview_callback_with_buffer (GstAHCamera * self,
GstAHCPreviewCallback cb, gpointer user_data);
void gst_ah_camera_set_preview_texture (GstAHCamera * self,
- GstAGSurfaceTexture * surfaceTexture);
+ GstAmcSurfaceTexture * surfaceTexture);
gboolean gst_ah_camera_start_preview (GstAHCamera * self);
gboolean gst_ah_camera_start_smooth_zoom (GstAHCamera * self, gint value);
gboolean gst_ah_camera_stop_preview (GstAHCamera * self);
diff --git a/sys/androidmedia/gstahcsrc.c b/sys/androidmedia/gstahcsrc.c
index 2c351a0..2fa1d6f 100644
--- a/sys/androidmedia/gstahcsrc.c
+++ b/sys/androidmedia/gstahcsrc.c
@@ -81,7 +81,7 @@
const GValue * value, GParamSpec * pspec);
static void gst_ahc_src_get_property (GObject * object, guint prop_id,
GValue * value, GParamSpec * pspec);
-static void gst_ahc_src_dispose (GObject * object);
+static void gst_ahc_src_finalize (GObject * object);
/* GstElement */
static GstStateChangeReturn gst_ahc_src_change_state (GstElement * element,
@@ -272,7 +272,7 @@
gobject_class->set_property = gst_ahc_src_set_property;
gobject_class->get_property = gst_ahc_src_get_property;
- gobject_class->dispose = gst_ahc_src_dispose;
+ gobject_class->finalize = gst_ahc_src_finalize;
element_class->change_state = gst_ahc_src_change_state;
@@ -287,8 +287,8 @@
gstpushsrc_class->create = gst_ahc_src_create;
- gst_element_class_add_pad_template (element_class,
- gst_static_pad_template_get (&gst_ahc_src_pad_template));
+ gst_element_class_add_static_pad_template (element_class,
+ &gst_ahc_src_pad_template);
/**
* GstAHCSrc:device:
@@ -378,7 +378,7 @@
properties[PROP_VERTICAL_VIEW_ANGLE]);
/**
- * GstAHCSrc:video-stabilizatio:
+ * GstAHCSrc:video-stabilization:
*
* Video stabilization reduces the shaking due to the motion of the camera.
*/
@@ -523,10 +523,6 @@
properties[PROP_ANALOG_GAIN] = g_object_class_find_property (gobject_class,
GST_PHOTOGRAPHY_PROP_ANALOG_GAIN);
-
-
- klass->probe_properties = NULL;
-
gst_element_class_set_static_metadata (element_class,
"Android Camera Source",
"Source/Video",
@@ -562,17 +558,14 @@
}
static void
-gst_ahc_src_dispose (GObject * object)
+gst_ahc_src_finalize (GObject * object)
{
GstAHCSrc *self = GST_AHC_SRC (object);
- if (self->queue)
- g_object_unref (self->queue);
- self->queue = NULL;
-
+ g_clear_object (&self->queue);
g_mutex_clear (&self->mutex);
- G_OBJECT_CLASS (parent_class)->dispose (object);
+ G_OBJECT_CLASS (parent_class)->finalize (object);
}
static void
@@ -858,167 +851,6 @@
}
}
-#if 0
-static const GList *
-gst_ahc_src_probe_get_properties (GstPropertyProbe * probe)
-{
- GstAHCSrcClass *ahc_class = GST_AHC_SRC_CLASS (probe);
- GList **list = &ahc_class->probe_properties;
-
- if (!*list) {
- *list = g_list_append (*list, properties[PROP_DEVICE]);
- *list = g_list_append (*list, properties[PROP_EV_COMP]);
- *list = g_list_append (*list, properties[PROP_ZOOM]);
- *list = g_list_append (*list, properties[PROP_WB_MODE]);
- *list = g_list_append (*list, properties[PROP_COLOUR_TONE]);
- *list = g_list_append (*list, properties[PROP_FLASH_MODE]);
- *list = g_list_append (*list, properties[PROP_FOCUS_MODE]);
- *list = g_list_append (*list, properties[PROP_SCENE_MODE]);
- *list = g_list_append (*list, properties[PROP_FLICKER_MODE]);
- }
-
- return *list;
-}
-
-#define PROBE_GET_ENUM_VALUES(name, type, struct_name) \
- if (self->camera) { \
- GstAHCParameters *params; \
- \
- params = gst_ah_camera_get_parameters (self->camera); \
- if (params) { \
- GList *list = gst_ahc_parameters_get_supported_##name (params); \
- \
- if (list) { \
- GValue value = { 0 }; \
- GList *i; \
- \
- array = g_value_array_new (g_list_length (list)); \
- g_value_init (&value, type); \
- for (i = list; i; i = i->next) { \
- struct_name mode; \
- const gchar *name = i->data; \
- \
- if (_##name##_to_enum (name, &mode)) { \
- g_value_set_enum (&value, mode); \
- g_value_array_append (array, &value); \
- } \
- } \
- g_value_unset (&value); \
- } \
- \
- gst_ahc_parameters_supported_##name##_free (list); \
- gst_ahc_parameters_free (params); \
- } \
- }
-
-
-static GValueArray *
-gst_ahc_src_probe_get_values (GstPropertyProbe * probe,
- guint prop_id, const GParamSpec * pspec)
-{
- GstAHCSrc *self = GST_AHC_SRC (probe);
- GValueArray *array = NULL;
-
- /* g_object_class_find_property returns overriden property with
- * param_id == 0, so we can't switch/case the prop_id and
- * we need to check the pspec instead */
- if (pspec == properties[PROP_DEVICE]) {
- GValue value = { 0 };
- gint num_cams = gst_ah_camera_get_number_of_cameras ();
- gint i;
-
- array = g_value_array_new (num_cams);
- g_value_init (&value, G_TYPE_STRING);
- for (i = 0; i < num_cams; i++) {
- g_value_take_string (&value, g_strdup_printf ("%d", i));
- g_value_array_append (array, &value);
- }
- g_value_unset (&value);
- } else if (pspec == properties[PROP_EV_COMP]) {
- if (self->camera) {
- GstAHCParameters *params;
-
- params = gst_ah_camera_get_parameters (self->camera);
- if (params) {
- gint min, max;
- gfloat step;
-
- min = gst_ahc_parameters_get_min_exposure_compensation (params);
- max = gst_ahc_parameters_get_max_exposure_compensation (params);
- step = gst_ahc_parameters_get_exposure_compensation_step (params);
-
- if (step != 0.0 && min != max) {
- GValue value = { 0 };
- gint i;
-
- /* Min and Max are inclusive */
- array = g_value_array_new (max - min + 1);
- g_value_init (&value, G_TYPE_FLOAT);
- for (i = min; i <= max; i++) {
- g_value_set_float (&value, step * i);
- g_value_array_append (array, &value);
- }
- g_value_unset (&value);
- }
-
- gst_ahc_parameters_free (params);
- }
- }
- } else if (pspec == properties[PROP_ZOOM]) {
- if (self->camera) {
- GstAHCParameters *params;
-
- params = gst_ah_camera_get_parameters (self->camera);
- if (params) {
- GList *zoom_ratios = gst_ahc_parameters_get_zoom_ratios (params);
- gint max_zoom = gst_ahc_parameters_get_max_zoom (params);
-
- if (zoom_ratios && g_list_length (zoom_ratios) == (max_zoom + 1)) {
- GValue value = { 0 };
- GList *i;
-
- array = g_value_array_new (max_zoom + 1);
- g_value_init (&value, G_TYPE_FLOAT);
- for (i = zoom_ratios; i; i = i->next) {
- gint zoom_value = GPOINTER_TO_INT (i->data);
- gfloat zoom = (gfloat) zoom_value / 100.0;
-
- g_value_set_float (&value, zoom);
- g_value_array_append (array, &value);
- }
- g_value_unset (&value);
- }
-
- gst_ahc_parameters_zoom_ratios_free (zoom_ratios);
- gst_ahc_parameters_free (params);
- }
- }
- } else if (pspec == properties[PROP_WB_MODE]) {
- PROBE_GET_ENUM_VALUES (white_balance, GST_TYPE_WHITE_BALANCE_MODE,
- GstPhotographyWhiteBalanceMode);
- } else if (pspec == properties[PROP_COLOUR_TONE]) {
- PROBE_GET_ENUM_VALUES (color_effects, GST_TYPE_COLOUR_TONE_MODE,
- GstPhotographyColorToneMode);
- } else if (pspec == properties[PROP_FLASH_MODE]) {
- PROBE_GET_ENUM_VALUES (flash_modes, GST_TYPE_FLASH_MODE,
- GstPhotographyFlashMode);
- } else if (pspec == properties[PROP_FOCUS_MODE]) {
- PROBE_GET_ENUM_VALUES (focus_modes, GST_TYPE_FOCUS_MODE,
- GstPhotographyFocusMode);
- } else if (pspec == properties[PROP_SCENE_MODE]) {
- PROBE_GET_ENUM_VALUES (scene_modes, GST_TYPE_SCENE_MODE,
- GstPhotographySceneMode);
- } else if (pspec == properties[PROP_FLICKER_MODE]) {
- PROBE_GET_ENUM_VALUES (antibanding, GST_TYPE_FLICKER_REDUCTION_MODE,
- GstPhotographyFlickerReductionMode);
- } else {
- G_OBJECT_WARN_INVALID_PROPERTY_ID (probe, prop_id, pspec);
- }
-
- return array;
-}
-#endif
-
static gboolean
_antibanding_to_enum (const gchar * antibanding,
GstPhotographyFlickerReductionMode * mode)
@@ -2290,7 +2122,7 @@
GST_DEBUG_OBJECT (self, "Received data buffer %p", array);
- malloc_data = g_slice_new0 (FreeFuncBuffer);
+ malloc_data = g_slice_new (FreeFuncBuffer);
malloc_data->self = gst_object_ref (self);
malloc_data->array = (*env)->NewGlobalRef (env, array);
malloc_data->data = (*env)->GetByteArrayElements (env, array, NULL);
@@ -2305,7 +2137,7 @@
GST_DEBUG_OBJECT (self, "creating wrapped buffer (size: %d)",
self->buffer_size);
- item = g_slice_new0 (GstDataQueueItem);
+ item = g_slice_new (GstDataQueueItem);
item->object = GST_MINI_OBJECT (buffer);
item->size = gst_buffer_get_size (buffer);
item->duration = GST_BUFFER_DURATION (buffer);
@@ -2338,6 +2170,8 @@
static gboolean
gst_ahc_src_open (GstAHCSrc * self)
{
+ GError *err = NULL;
+
GST_DEBUG_OBJECT (self, "Opening camera");
self->camera = gst_ah_camera_open (self->device);
@@ -2345,29 +2179,44 @@
if (self->camera) {
GST_DEBUG_OBJECT (self, "Opened camera");
- self->texture = gst_ag_surfacetexture_new (0);
+ self->texture = gst_amc_surface_texture_new (&err);
+ if (self->texture == NULL) {
+ GST_ERROR_OBJECT (self,
+ "Failed to create surface texture object: %s", err->message);
+ g_clear_error (&err);
+ goto failed_surfacetexutre;
+ }
gst_ah_camera_set_preview_texture (self->camera, self->texture);
self->buffer_size = 0;
} else {
gint num_cams = gst_ah_camera_get_number_of_cameras ();
if (num_cams > 0 && self->device < num_cams) {
GST_ELEMENT_ERROR (self, RESOURCE, NOT_FOUND,
- ("Unable to open device '%d'.", self->device), GST_ERROR_SYSTEM);
+ ("Unable to open device '%d'.", self->device), (NULL));
} else if (num_cams > 0) {
GST_ELEMENT_ERROR (self, RESOURCE, NOT_FOUND,
- ("Device '%d' does not exist.", self->device), GST_ERROR_SYSTEM);
+ ("Device '%d' does not exist.", self->device), (NULL));
} else {
GST_ELEMENT_ERROR (self, RESOURCE, NOT_FOUND,
- ("There are no cameras available on this device."), GST_ERROR_SYSTEM);
+ ("There are no cameras available on this device."), (NULL));
}
}
return (self->camera != NULL);
+
+failed_surfacetexutre:
+ gst_ah_camera_release (self->camera);
+ gst_ah_camera_free (self->camera);
+ self->camera = NULL;
+
+ return FALSE;
}
static void
gst_ahc_src_close (GstAHCSrc * self)
{
+ GError *err = NULL;
+
if (self->camera) {
gst_ah_camera_set_error_callback (self->camera, NULL, NULL);
gst_ah_camera_set_preview_callback_with_buffer (self->camera, NULL, NULL);
@@ -2376,11 +2225,13 @@
}
self->camera = NULL;
- if (self->texture) {
- gst_ag_surfacetexture_release (self->texture);
- gst_ag_surfacetexture_free (self->texture);
+ if (self->texture && !gst_amc_surface_texture_release (self->texture, &err)) {
+ GST_ERROR_OBJECT (self,
+ "Failed to release surface texture object: %s", err->message);
+ g_clear_error (&err);
}
- self->texture = NULL;
+
+ g_clear_object (&self->texture);
}
static GstStateChangeReturn
diff --git a/sys/androidmedia/gstahcsrc.h b/sys/androidmedia/gstahcsrc.h
index fc24989..dc80beb 100644
--- a/sys/androidmedia/gstahcsrc.h
+++ b/sys/androidmedia/gstahcsrc.h
@@ -30,6 +30,7 @@
#include <gst/base/gstdataqueue.h>
#include "gst-android-hardware-camera.h"
+#include "gstamcsurfacetexture.h"
G_BEGIN_DECLS
@@ -59,7 +60,7 @@
GstPushSrc parent;
GstAHCamera *camera;
- GstAGSurfaceTexture *texture;
+ GstAmcSurfaceTexture *texture;
GList *data;
GstDataQueue *queue;
gint buffer_size;
@@ -80,7 +81,6 @@
struct _GstAHCSrcClass
{
GstPushSrcClass parent_class;
- GList *probe_properties;
};
GType gst_ahc_src_get_type (void);
diff --git a/sys/androidmedia/gstamc.c b/sys/androidmedia/gstamc.c
index 5576855..78fd869 100644
--- a/sys/androidmedia/gstamc.c
+++ b/sys/androidmedia/gstamc.c
@@ -3328,11 +3328,6 @@
if (!register_codecs (plugin))
return FALSE;
- if (!gst_android_graphics_surfacetexture_init ()) {
- GST_ERROR ("Failed to init android surface texture");
- return FALSE;
- }
-
if (!gst_android_graphics_imageformat_init ()) {
GST_ERROR ("Failed to init android image format");
goto failed_surfacetexture;
@@ -3354,7 +3349,6 @@
failed_graphics_imageformat:
gst_android_graphics_imageformat_deinit ();
failed_surfacetexture:
- gst_android_graphics_surfacetexture_deinit ();
return FALSE;
}
diff --git a/sys/androidmedia/gstamcvideodec.c b/sys/androidmedia/gstamcvideodec.c
index 7c99be0..397b585 100644
--- a/sys/androidmedia/gstamcvideodec.c
+++ b/sys/androidmedia/gstamcvideodec.c
@@ -1354,7 +1354,8 @@
(GST_GL_MEMORY_ALLOCATOR_NAME));
params = gst_gl_video_allocation_params_new (self->gl_context, NULL,
- &state->info, 0, NULL, GST_GL_TEXTURE_TARGET_EXTERNAL_OES);
+ &state->info, 0, NULL, GST_GL_TEXTURE_TARGET_EXTERNAL_OES,
+ GST_VIDEO_GL_TEXTURE_TYPE_RGBA);
self->oes_mem = (GstGLMemory *) gst_gl_base_memory_alloc (base_mem_alloc,
(GstGLAllocationParams *) params);
diff --git a/sys/applemedia-nonpublic/Makefile.in b/sys/applemedia-nonpublic/Makefile.in
index 548a94b..e6c6a72 100644
--- a/sys/applemedia-nonpublic/Makefile.in
+++ b/sys/applemedia-nonpublic/Makefile.in
@@ -344,6 +344,8 @@
DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
DSYMUTIL = @DSYMUTIL@
DTLS_CFLAGS = @DTLS_CFLAGS@
DTLS_LIBS = @DTLS_LIBS@
@@ -559,6 +561,8 @@
LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
LIPO = @LIPO@
LN_S = @LN_S@
LOCALEDIR = @LOCALEDIR@
@@ -685,8 +689,6 @@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
SNDIO_LIBS = @SNDIO_LIBS@
@@ -731,6 +733,8 @@
WAYLAND_LIBS = @WAYLAND_LIBS@
WEBP_CFLAGS = @WEBP_CFLAGS@
WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
WGET = @WGET@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
diff --git a/sys/applemedia-nonpublic/coremediabuffer.c b/sys/applemedia-nonpublic/coremediabuffer.c
index a8136ba..bec604a 100644
--- a/sys/applemedia-nonpublic/coremediabuffer.c
+++ b/sys/applemedia-nonpublic/coremediabuffer.c
@@ -19,6 +19,19 @@
#include "coremediabuffer.h"
+static gboolean
+gst_core_media_meta_init (GstCoreMediaMeta * meta, gpointer params,
+ GstBuffer * buf)
+{
+ meta->ctx = NULL;
+ meta->sample_buf = NULL;
+ meta->image_buf = NULL;
+ meta->pixel_buf = NULL;
+ meta->block_buf = NULL;
+
+ return TRUE;
+}
+
static void
gst_core_media_meta_free (GstCoreMediaMeta * meta, GstBuffer * buf)
{
@@ -52,7 +65,7 @@
if (g_once_init_enter (&core_media_meta_info)) {
const GstMetaInfo *meta = gst_meta_register (GST_CORE_MEDIA_META_API_TYPE,
"GstCoreMediaMeta", sizeof (GstCoreMediaMeta),
- (GstMetaInitFunction) NULL,
+ (GstMetaInitFunction) gst_core_media_meta_init,
(GstMetaFreeFunction) gst_core_media_meta_free,
(GstMetaTransformFunction) NULL);
g_once_init_leave (&core_media_meta_info, meta);
diff --git a/sys/applemedia-nonpublic/corevideobuffer.c b/sys/applemedia-nonpublic/corevideobuffer.c
index 072fe6b..26b5643 100644
--- a/sys/applemedia-nonpublic/corevideobuffer.c
+++ b/sys/applemedia-nonpublic/corevideobuffer.c
@@ -19,6 +19,17 @@
#include "corevideobuffer.h"
+static gboolean
+gst_core_video_meta_init (GstCoreVideoMeta * meta, gpointer params,
+ GstBuffer * buf)
+{
+ meta->ctx = NULL;
+ meta->cvbuf = NULL;
+ meta->pixbuf = NULL;
+
+ return TRUE;
+}
+
static void
gst_core_video_meta_free (GstCoreVideoMeta * meta, GstBuffer * buf)
{
@@ -54,7 +65,7 @@
if (g_once_init_enter (&core_video_meta_info)) {
const GstMetaInfo *meta = gst_meta_register (GST_CORE_VIDEO_META_API_TYPE,
"GstCoreVideoMeta", sizeof (GstCoreVideoMeta),
- (GstMetaInitFunction) NULL,
+ (GstMetaInitFunction) gst_core_video_meta_init,
(GstMetaFreeFunction) gst_core_video_meta_free,
(GstMetaTransformFunction) NULL);
g_once_init_leave (&core_video_meta_info, meta);
diff --git a/sys/applemedia/Makefile.am b/sys/applemedia/Makefile.am
index 87b80b5..164f7a9 100644
--- a/sys/applemedia/Makefile.am
+++ b/sys/applemedia/Makefile.am
@@ -72,9 +72,11 @@
vtutil.h \
corevideobuffer.h \
coremediabuffer.h \
+ corevideomemory.h \
videotexturecache.h \
atdec.h \
iosassetsrc.h \
+ iosurfacememory.h \
avfassetsrc.h \
glcontexthelper.h
@@ -96,6 +98,7 @@
libgstapplemedia_la_LDFLAGS += \
-Wl,-framework -Wl,Cocoa \
-Wl,-framework -Wl,QTKit \
+ -Wl,-framework -Wl,OpenGL \
-Wl,-framework -Wl,IOSurface
endif
diff --git a/sys/applemedia/Makefile.in b/sys/applemedia/Makefile.in
index 05c35b8..0cb0dcb 100644
--- a/sys/applemedia/Makefile.in
+++ b/sys/applemedia/Makefile.in
@@ -105,6 +105,7 @@
@HAVE_IOS_FALSE@am__append_5 = \
@HAVE_IOS_FALSE@ -Wl,-framework -Wl,Cocoa \
@HAVE_IOS_FALSE@ -Wl,-framework -Wl,QTKit \
+@HAVE_IOS_FALSE@ -Wl,-framework -Wl,OpenGL \
@HAVE_IOS_FALSE@ -Wl,-framework -Wl,IOSurface
@HAVE_AVFOUNDATION_TRUE@am__append_6 = \
@@ -373,6 +374,8 @@
DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
DSYMUTIL = @DSYMUTIL@
DTLS_CFLAGS = @DTLS_CFLAGS@
DTLS_LIBS = @DTLS_LIBS@
@@ -588,6 +591,8 @@
LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
LIPO = @LIPO@
LN_S = @LN_S@
LOCALEDIR = @LOCALEDIR@
@@ -714,8 +719,6 @@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
SNDIO_LIBS = @SNDIO_LIBS@
@@ -760,6 +763,8 @@
WAYLAND_LIBS = @WAYLAND_LIBS@
WEBP_CFLAGS = @WEBP_CFLAGS@
WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
WGET = @WGET@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
@@ -898,9 +903,11 @@
vtutil.h \
corevideobuffer.h \
coremediabuffer.h \
+ corevideomemory.h \
videotexturecache.h \
atdec.h \
iosassetsrc.h \
+ iosurfacememory.h \
avfassetsrc.h \
glcontexthelper.h
diff --git a/sys/applemedia/atdec.c b/sys/applemedia/atdec.c
index c00f0b7..b14891f 100644
--- a/sys/applemedia/atdec.c
+++ b/sys/applemedia/atdec.c
@@ -93,10 +93,10 @@
GObjectClass *gobject_class = G_OBJECT_CLASS (klass);
GstAudioDecoderClass *audio_decoder_class = GST_AUDIO_DECODER_CLASS (klass);
- gst_element_class_add_pad_template (GST_ELEMENT_CLASS (klass),
- gst_static_pad_template_get (&gst_atdec_src_template));
- gst_element_class_add_pad_template (GST_ELEMENT_CLASS (klass),
- gst_static_pad_template_get (&gst_atdec_sink_template));
+ gst_element_class_add_static_pad_template (GST_ELEMENT_CLASS (klass),
+ &gst_atdec_src_template);
+ gst_element_class_add_static_pad_template (GST_ELEMENT_CLASS (klass),
+ &gst_atdec_sink_template);
gst_element_class_set_static_metadata (GST_ELEMENT_CLASS (klass),
"AudioToolbox based audio decoder",
diff --git a/sys/applemedia/avfassetsrc.m b/sys/applemedia/avfassetsrc.m
index 40496a4..e589cf3 100644
--- a/sys/applemedia/avfassetsrc.m
+++ b/sys/applemedia/avfassetsrc.m
@@ -149,10 +149,8 @@
"Read and decode samples from AVFoundation assets using the AVFAssetReader API",
"Andoni Morales Alastruey amorales@fluendo.com");
- gst_element_class_add_pad_template (gstelement_class,
- gst_static_pad_template_get (&audio_factory));
- gst_element_class_add_pad_template (gstelement_class,
- gst_static_pad_template_get (&video_factory));
+ gst_element_class_add_static_pad_template (gstelement_class, &audio_factory);
+ gst_element_class_add_static_pad_template (gstelement_class, &video_factory);
gobject_class->set_property = gst_avf_asset_src_set_property;
gobject_class->get_property = gst_avf_asset_src_get_property;
@@ -806,15 +804,12 @@
NSString *str;
NSURL *url;
AVAsset *asset;
- gchar *escaped_uri;
gboolean ret = FALSE;
OBJC_CALLOUT_BEGIN ();
- escaped_uri = g_uri_escape_string (uri, ":/", TRUE);
- str = [NSString stringWithUTF8String: escaped_uri];
+ str = [NSString stringWithUTF8String: uri];
url = [[NSURL alloc] initWithString: str];
asset = [AVAsset assetWithURL: url];
- g_free (escaped_uri);
if (asset.playable) {
ret = TRUE;
@@ -822,7 +817,7 @@
self->uri = g_strdup (uri);
} else {
g_set_error (error, GST_URI_ERROR, GST_URI_ERROR_BAD_URI,
- "Invalid URI '%s' for avfassetsrc", self->uri);
+ "Invalid URI '%s' for avfassetsrc", uri);
}
OBJC_CALLOUT_END ();
return ret;
diff --git a/sys/applemedia/avfvideosrc.m b/sys/applemedia/avfvideosrc.m
index 529bd85..a0cc57b 100644
--- a/sys/applemedia/avfvideosrc.m
+++ b/sys/applemedia/avfvideosrc.m
@@ -1180,8 +1180,7 @@
"Reads frames from an iOS AVFoundation device",
"Ole André Vadla Ravnås <oleavr@soundrop.com>");
- gst_element_class_add_pad_template (gstelement_class,
- gst_static_pad_template_get (&src_template));
+ gst_element_class_add_static_pad_template (gstelement_class, &src_template);
g_object_class_install_property (gobject_class, PROP_DEVICE_INDEX,
g_param_spec_int ("device-index", "Device Index",
diff --git a/sys/applemedia/avsamplevideosink.m b/sys/applemedia/avsamplevideosink.m
index 610b40a..ce17e98 100644
--- a/sys/applemedia/avsamplevideosink.m
+++ b/sys/applemedia/avsamplevideosink.m
@@ -106,8 +106,7 @@
"Sink/Video", "A videosink based on AVSampleBuffer's",
"Matthew Waters <matthew@centricular.com>");
- gst_element_class_add_pad_template (element_class,
- gst_static_pad_template_get (&gst_av_sample_video_sink_template));
+ gst_element_class_add_static_pad_template (element_class, &gst_av_sample_video_sink_template);
gobject_class->finalize = gst_av_sample_video_sink_finalize;
@@ -749,7 +748,10 @@
_request_data (av_sink);
g_mutex_unlock (&av_sink->render_lock);
-#if defined(MAC_OS_X_VERSION_MAX_ALLOWED) && MAC_OS_X_VERSION_MAX_ALLOWED >= 1010
+#if defined(MAC_OS_X_VERSION_MAX_ALLOWED) && \
+ MAC_OS_X_VERSION_MAX_ALLOWED >= 1010 && \
+ defined(MAC_OS_X_VERSION_MIN_REQUIRED) && \
+ MAC_OS_X_VERSION_MIN_REQUIRED <= MAC_OS_X_VERSION_10_4
if ([av_sink->layer status] == AVQueuedSampleBufferRenderingStatusFailed) {
GST_ERROR_OBJECT (av_sink, "failed to enqueue buffer on layer, %s",
[[[av_sink->layer error] description] UTF8String]);
diff --git a/sys/applemedia/coremediabuffer.c b/sys/applemedia/coremediabuffer.c
index cf34224..8960de6 100644
--- a/sys/applemedia/coremediabuffer.c
+++ b/sys/applemedia/coremediabuffer.c
@@ -48,6 +48,18 @@
meta->pixel_buf = NULL;
}
+static gboolean
+gst_core_media_meta_init (GstCoreMediaMeta * meta, gpointer params,
+ GstBuffer * buf)
+{
+ meta->sample_buf = NULL;
+ meta->image_buf = NULL;
+ meta->pixel_buf = NULL;
+ meta->block_buf = NULL;
+
+ return TRUE;
+}
+
static void
gst_core_media_meta_free (GstCoreMediaMeta * meta, GstBuffer * buf)
{
@@ -99,7 +111,7 @@
if (g_once_init_enter (&core_media_meta_info)) {
const GstMetaInfo *meta = gst_meta_register (GST_CORE_MEDIA_META_API_TYPE,
"GstCoreMediaMeta", sizeof (GstCoreMediaMeta),
- (GstMetaInitFunction) NULL,
+ (GstMetaInitFunction) gst_core_media_meta_init,
(GstMetaFreeFunction) gst_core_media_meta_free,
(GstMetaTransformFunction) gst_core_media_meta_transform);
g_once_init_leave (&core_media_meta_info, meta);
diff --git a/sys/applemedia/corevideobuffer.c b/sys/applemedia/corevideobuffer.c
index 67d899c..0ad480d 100644
--- a/sys/applemedia/corevideobuffer.c
+++ b/sys/applemedia/corevideobuffer.c
@@ -33,6 +33,16 @@
meta->pixbuf = (CVPixelBufferRef) cvbuf;
}
+static gboolean
+gst_core_video_meta_init (GstCoreVideoMeta * meta, gpointer params,
+ GstBuffer * buf)
+{
+ meta->cvbuf = NULL;
+ meta->pixbuf = NULL;
+
+ return TRUE;
+}
+
static void
gst_core_video_meta_free (GstCoreVideoMeta * meta, GstBuffer * buf)
{
@@ -75,7 +85,7 @@
if (g_once_init_enter (&core_video_meta_info)) {
const GstMetaInfo *meta = gst_meta_register (GST_CORE_VIDEO_META_API_TYPE,
"GstCoreVideoMeta", sizeof (GstCoreVideoMeta),
- (GstMetaInitFunction) NULL,
+ (GstMetaInitFunction) gst_core_video_meta_init,
(GstMetaFreeFunction) gst_core_video_meta_free,
(GstMetaTransformFunction) gst_core_video_meta_transform);
g_once_init_leave (&core_video_meta_info, meta);
diff --git a/sys/applemedia/corevideomemory.h b/sys/applemedia/corevideomemory.h
new file mode 100644
index 0000000..d81781c
--- /dev/null
+++ b/sys/applemedia/corevideomemory.h
@@ -0,0 +1,109 @@
+/* GStreamer Apple Core Video memory
+ * Copyright (C) 2015 Ilya Konstantinov
+ *
+ * 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., 59 Temple Place - Suite 330,
+ * Boston, MA 02111-1307, USA.
+ */
+
+#ifndef __GST_APPLE_CORE_VIDEO_MEMORY_H__
+#define __GST_APPLE_CORE_VIDEO_MEMORY_H__
+
+#include <gst/gst.h>
+
+#include "CoreVideo/CoreVideo.h"
+
+G_BEGIN_DECLS
+
+/**
+ * GstAppleCoreVideoLockState:
+ *
+ * Specifies whether the backing CVPixelBuffer is locked for read-only
+ * or read-write.
+ *
+ * Locking for reading only improves performance by preventing
+ * Core Video from invalidating existing caches of the buffer’s contents.
+ */
+typedef enum
+{
+ GST_APPLE_CORE_VIDEO_MEMORY_UNLOCKED,
+ GST_APPLE_CORE_VIDEO_MEMORY_LOCKED_READONLY,
+ GST_APPLE_CORE_VIDEO_MEMORY_LOCKED_READ_WRITE
+} GstAppleCoreVideoLockState;
+
+/**
+ * GstAppleCoreVideoPixelBuffer:
+ *
+ * This structure wraps CVPixelBuffer, managing its lock states and reference count.
+ * It will be referenced by one or more #GstAppleCoreVideoMemory.
+ */
+typedef struct
+{
+ guint refcount;
+ GMutex mutex;
+ CVPixelBufferRef buf;
+ /* Allows mem_map to refuse Read-Write locking a buffer that was previously
+ * locked for Read-Only. */
+ GstAppleCoreVideoLockState lock_state;
+ /* Counts the number of times the buffer was locked.
+ * Only the first lock affects whether it's just for reading
+ * or for reading and writing, as reflected in @lock_state. */
+ guint lock_count;
+} GstAppleCoreVideoPixelBuffer;
+
+/**
+ * GST_APPLE_CORE_VIDEO_NO_PLANE:
+ *
+ * Indicates a non-planar pixel buffer.
+ */
+#define GST_APPLE_CORE_VIDEO_NO_PLANE ((size_t)-1)
+
+/**
+ * GstAppleCoreVideoMemory:
+ *
+ * Represents a video plane or an entire (non-planar) video image,
+ * backed by a CVPixelBuffer.
+ *
+ * This structure shares a #GstAppleCoreVideoPixelBuffer instance
+ * with other instances.
+ */
+typedef struct
+{
+ GstMemory mem;
+
+ GstAppleCoreVideoPixelBuffer *gpixbuf;
+ size_t plane;
+} GstAppleCoreVideoMemory;
+
+void
+gst_apple_core_video_memory_init (void);
+
+GstAppleCoreVideoPixelBuffer *
+gst_apple_core_video_pixel_buffer_new (CVPixelBufferRef pixbuf);
+
+GstAppleCoreVideoPixelBuffer *
+gst_apple_core_video_pixel_buffer_ref (GstAppleCoreVideoPixelBuffer * shared);
+
+void
+gst_apple_core_video_pixel_buffer_unref (GstAppleCoreVideoPixelBuffer * shared);
+
+gboolean
+gst_is_apple_core_video_memory (GstMemory * mem);
+
+GstMemory *
+gst_apple_core_video_memory_new_wrapped (GstAppleCoreVideoPixelBuffer * shared, gsize plane, gsize size);
+
+G_END_DECLS
+
+#endif /* __GST_APPLE_CORE_VIDEO_MEMORY_H__ */
diff --git a/sys/applemedia/iosassetsrc.m b/sys/applemedia/iosassetsrc.m
index 0539340..e237c2e 100644
--- a/sys/applemedia/iosassetsrc.m
+++ b/sys/applemedia/iosassetsrc.m
@@ -129,8 +129,7 @@
"Read from arbitrary point in a iOS asset",
"Andoni Morales Alastruey <amorales@fluendo.com>");
- gst_element_class_add_pad_template (gstelement_class,
- gst_static_pad_template_get (&srctemplate));
+ gst_element_class_add_static_pad_template (gstelement_class, &srctemplate);
gstbasesrc_class->start = GST_DEBUG_FUNCPTR (gst_ios_asset_src_start);
gstbasesrc_class->stop = GST_DEBUG_FUNCPTR (gst_ios_asset_src_stop);
@@ -207,9 +206,9 @@
url = [[NSURL alloc] initWithString:nsuristr];
if (url == NULL) {
- GST_ERROR_OBJECT (src, "Invalid URI: %s", src->uri);
+ GST_ERROR_OBJECT (src, "Invalid URI: %s", uri);
g_set_error (err, GST_URI_ERROR, GST_URI_ERROR_BAD_URI,
- "Invalid URI: %s", src->uri);
+ "Invalid URI: %s", uri);
return FALSE;
}
diff --git a/sys/applemedia/iosurfacememory.c b/sys/applemedia/iosurfacememory.c
index 694202c..23f03f9 100644
--- a/sys/applemedia/iosurfacememory.c
+++ b/sys/applemedia/iosurfacememory.c
@@ -160,6 +160,7 @@
_io_surface_memory_new (GstGLContext * context,
IOSurfaceRef surface,
GstGLTextureTarget target,
+ GstVideoGLTextureType tex_type,
GstVideoInfo * info,
guint plane,
GstVideoAlignment * valign, gpointer user_data, GDestroyNotify notify)
@@ -170,7 +171,7 @@
mem = g_new0 (GstIOSurfaceMemory, 1);
gst_gl_memory_init (&mem->gl_mem, _io_surface_memory_allocator, NULL, context,
- target, NULL, info, plane, valign, user_data, notify);
+ target, tex_type, NULL, info, plane, valign, user_data, notify);
GST_MINI_OBJECT_FLAG_SET (mem, GST_MEMORY_FLAG_READONLY);
@@ -184,11 +185,12 @@
gst_io_surface_memory_wrapped (GstGLContext * context,
IOSurfaceRef surface,
GstGLTextureTarget target,
+ GstVideoGLTextureType tex_type,
GstVideoInfo * info,
guint plane,
GstVideoAlignment * valign, gpointer user_data, GDestroyNotify notify)
{
- return _io_surface_memory_new (context, surface, target, info,
+ return _io_surface_memory_new (context, surface, target, tex_type, info,
plane, valign, user_data, notify);
}
diff --git a/sys/applemedia/iosurfacememory.h b/sys/applemedia/iosurfacememory.h
new file mode 100644
index 0000000..5d281ac
--- /dev/null
+++ b/sys/applemedia/iosurfacememory.h
@@ -0,0 +1,79 @@
+/*
+ * GStreamer
+ * Copyright (C) 2015 Alessandro Decina <twi@centricular.com>
+ *
+ * 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.
+ */
+
+#ifndef _GST_IO_SURFACE_MEMORY_H_
+#define _GST_IO_SURFACE_MEMORY_H_
+
+#include <IOSurface/IOSurface.h>
+#include <gst/gst.h>
+#include <gst/gstallocator.h>
+#include <gst/video/video.h>
+#include <gst/gl/gl.h>
+
+G_BEGIN_DECLS
+
+#define GST_TYPE_IO_SURFACE_MEMORY_ALLOCATOR (gst_io_surface_memory_allocator_get_type())
+GType gst_io_surface_memory_allocator_get_type(void);
+
+#define GST_IS_IO_SURFACE_MEMORY_ALLOCATOR(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GST_TYPE_IO_SURFACE_MEMORY_ALLOCATOR))
+#define GST_IS_IO_SURFACE_MEMORY_ALLOCATOR_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GST_TYPE_IO_SURFACE_MEMORY_ALLOCATOR))
+#define GST_IO_SURFACE_MEMORY_ALLOCATOR_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GST_TYPE_IO_SURFACE_MEMORY_ALLOCATOR, GstIOSurfaceMemoryAllocatorClass))
+#define GST_IO_SURFACE_MEMORY_ALLOCATOR(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GST_TYPE_IO_SURFACE_MEMORY_ALLOCATOR, GstIOSurfaceMemoryAllocator))
+#define GST_IO_SURFACE_MEMORY_ALLOCATOR_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GST_TYPE_IO_SURFACE_MEMORY_ALLOCATOR, GstIOSurfaceMemoryAllocatorClass))
+#define GST_IO_SURFACE_MEMORY_ALLOCATOR_CAST(obj) ((GstIOSurfaceMemoryAllocator *)(obj))
+
+typedef struct _GstIOSurfaceMemory
+{
+ GstGLMemory gl_mem;
+ IOSurfaceRef surface;
+} GstIOSurfaceMemory;
+
+#define GST_IO_SURFACE_MEMORY_ALLOCATOR_NAME "IOSurfaceMemory"
+
+void gst_ios_surface_memory_init (void);
+
+GstIOSurfaceMemory *
+gst_io_surface_memory_wrapped (GstGLContext * context,
+ IOSurfaceRef surface,
+ GstGLTextureTarget target,
+ GstVideoGLTextureType tex_type,
+ GstVideoInfo * info,
+ guint plane,
+ GstVideoAlignment *valign,
+ gpointer user_data,
+ GDestroyNotify notify);
+
+void gst_io_surface_memory_set_surface (GstIOSurfaceMemory *memory, IOSurfaceRef surface);
+
+gboolean gst_is_io_surface_memory (GstMemory * mem);
+
+typedef struct _GstIOSurfaceMemoryAllocator
+{
+ GstGLMemoryAllocator allocator;
+} GstIOSurfaceMemoryAllocator;
+
+typedef struct _GstIOSurfaceMemoryAllocatorClass
+{
+ GstGLMemoryAllocatorClass parent_class;
+} GstIOSurfaceMemoryAllocatorClass;
+
+G_END_DECLS
+
+#endif /* _GST_IO_SURFACE_MEMORY_H_ */
diff --git a/sys/applemedia/qtkitvideosrc.m b/sys/applemedia/qtkitvideosrc.m
index e6b427f..4017084 100644
--- a/sys/applemedia/qtkitvideosrc.m
+++ b/sys/applemedia/qtkitvideosrc.m
@@ -518,8 +518,7 @@
"Reads frames from a Mac OS X QTKit device",
"Ole André Vadla Ravnås <oleavr@soundrop.com>");
- gst_element_class_add_pad_template (gstelement_class,
- gst_static_pad_template_get (&src_template));
+ gst_element_class_add_static_pad_template (gstelement_class, &src_template);
gobject_class->finalize = gst_qtkit_video_src_finalize;
gobject_class->get_property = gst_qtkit_video_src_get_property;
diff --git a/sys/applemedia/videotexturecache.m b/sys/applemedia/videotexturecache.m
index e1bdb64..4f4ee58 100644
--- a/sys/applemedia/videotexturecache.m
+++ b/sys/applemedia/videotexturecache.m
@@ -171,8 +171,8 @@
gl_target = gst_gl_texture_target_from_gl (CVOpenGLESTextureGetTarget (texture));
params = gst_gl_video_allocation_params_new_wrapped_texture (cache->ctx,
NULL, &cache->input_info, 0, NULL, gl_target,
- CVOpenGLESTextureGetName (texture), texture,
- (GDestroyNotify) CFRelease);
+ GST_VIDEO_GL_TEXTURE_TYPE_RGBA, CVOpenGLESTextureGetName (texture),
+ texture, (GDestroyNotify) CFRelease);
gst_buffer_replace_memory (output_buffer, 0,
(GstMemory *) gst_gl_base_memory_alloc (base_mem_alloc,
@@ -183,7 +183,7 @@
GstVideoGLTextureType textype;
GLenum texifmt, texfmt;
- textype = gst_gl_texture_type_from_format (cache->ctx, GST_VIDEO_FORMAT_NV12, 0);
+ textype = GST_VIDEO_GL_TEXTURE_TYPE_LUMINANCE;
texifmt = gst_gl_format_from_gl_texture_type (textype);
texfmt = gst_gl_sized_gl_format_from_gl_format_type (cache->ctx, texifmt, GL_UNSIGNED_BYTE);
@@ -197,7 +197,7 @@
gl_target = gst_gl_texture_target_from_gl (CVOpenGLESTextureGetTarget (texture));
params = gst_gl_video_allocation_params_new_wrapped_texture (cache->ctx,
- NULL, &cache->input_info, 0, NULL, gl_target,
+ NULL, &cache->input_info, 0, NULL, gl_target, textype,
CVOpenGLESTextureGetName (texture), texture,
(GDestroyNotify) CFRelease);
@@ -206,7 +206,7 @@
(GstGLAllocationParams *) params));
gst_gl_allocation_params_free ((GstGLAllocationParams *) params);
- textype = gst_gl_texture_type_from_format (cache->ctx, GST_VIDEO_FORMAT_NV12, 1);
+ textype = GST_VIDEO_GL_TEXTURE_TYPE_LUMINANCE_ALPHA;
texifmt = gst_gl_format_from_gl_texture_type (textype);
texfmt = gst_gl_sized_gl_format_from_gl_format_type (cache->ctx, texifmt, GL_UNSIGNED_BYTE);
@@ -219,7 +219,7 @@
gl_target = gst_gl_texture_target_from_gl (CVOpenGLESTextureGetTarget (texture));
params = gst_gl_video_allocation_params_new_wrapped_texture (cache->ctx,
- NULL, &cache->input_info, 1, NULL, gl_target,
+ NULL, &cache->input_info, 1, NULL, gl_target, textype,
CVOpenGLESTextureGetName (texture), texture,
(GDestroyNotify) CFRelease);
@@ -255,11 +255,14 @@
gst_buffer_copy_into (data->output_buffer, data->input_buffer, GST_BUFFER_COPY_ALL, 0, -1);
for (int i = 0; i < GST_VIDEO_INFO_N_PLANES (&cache->input_info); i++) {
GstIOSurfaceMemory *mem;
+ GstVideoGLTextureType tex_type =
+ gst_gl_texture_type_from_format (context,
+ GST_VIDEO_INFO_FORMAT (&cache->input_info), i);
CFRetain (pixel_buf);
mem = gst_io_surface_memory_wrapped (cache->ctx,
- surface, GST_GL_TEXTURE_TARGET_RECTANGLE, &cache->input_info,
- i, NULL, pixel_buf, (GDestroyNotify) CFRelease);
+ surface, GST_GL_TEXTURE_TARGET_RECTANGLE, tex_type,
+ &cache->input_info, i, NULL, pixel_buf, (GDestroyNotify) CFRelease);
gst_buffer_replace_memory (data->output_buffer, i, (GstMemory *) mem);
}
diff --git a/sys/applemedia/vtdec.c b/sys/applemedia/vtdec.c
index ae8a8e1..e9c7bdd 100644
--- a/sys/applemedia/vtdec.c
+++ b/sys/applemedia/vtdec.c
@@ -126,8 +126,8 @@
/* Setting up pads and setting metadata should be moved to
base_class_init if you intend to subclass this class. */
- gst_element_class_add_pad_template (element_class,
- gst_static_pad_template_get (&gst_vtdec_sink_template));
+ gst_element_class_add_static_pad_template (element_class,
+ &gst_vtdec_sink_template);
gst_element_class_add_pad_template (element_class,
gst_pad_template_new ("src", GST_PAD_SRC, GST_PAD_ALWAYS,
gst_caps_from_string (VIDEO_SRC_CAPS)));
@@ -232,12 +232,30 @@
vtdec = GST_VTDEC (decoder);
if (vtdec->session)
gst_vtdec_push_frames_if_needed (vtdec, TRUE, FALSE);
- templcaps =
- gst_pad_get_pad_template_caps (GST_VIDEO_DECODER_SRC_PAD (decoder));
+
+ output_state = gst_video_decoder_get_output_state (GST_VIDEO_DECODER (vtdec));
+ if (output_state) {
+ prevcaps = gst_caps_ref (output_state->caps);
+ gst_video_codec_state_unref (output_state);
+ }
+
peercaps = gst_pad_peer_query_caps (GST_VIDEO_DECODER_SRC_PAD (vtdec), NULL);
- caps =
- gst_caps_intersect_full (peercaps, templcaps, GST_CAPS_INTERSECT_FIRST);
- gst_caps_unref (templcaps);
+ if (prevcaps && gst_caps_can_intersect (prevcaps, peercaps)) {
+ /* The hardware decoder can become (temporarily) unavailable across
+ * VTDecompressionSessionCreate/Destroy calls. So if the currently configured
+ * caps are still accepted by downstream we keep them so we don't have to
+ * destroy and recreate the session.
+ */
+ GST_INFO_OBJECT (vtdec,
+ "current and peer caps are compatible, keeping current caps");
+ caps = gst_caps_ref (prevcaps);
+ } else {
+ templcaps =
+ gst_pad_get_pad_template_caps (GST_VIDEO_DECODER_SRC_PAD (decoder));
+ caps =
+ gst_caps_intersect_full (peercaps, templcaps, GST_CAPS_INTERSECT_FIRST);
+ gst_caps_unref (templcaps);
+ }
gst_caps_unref (peercaps);
caps = gst_caps_truncate (gst_caps_make_writable (caps));
@@ -248,12 +266,6 @@
if (features)
features = gst_caps_features_copy (features);
- output_state = gst_video_decoder_get_output_state (GST_VIDEO_DECODER (vtdec));
- if (output_state) {
- prevcaps = gst_caps_ref (output_state->caps);
- gst_video_codec_state_unref (output_state);
- }
-
output_state = gst_video_decoder_set_output_state (GST_VIDEO_DECODER (vtdec),
format, vtdec->video_info.width, vtdec->video_info.height,
vtdec->input_state);
diff --git a/sys/applemedia/vtenc.c b/sys/applemedia/vtenc.c
index de60272..39b7813 100644
--- a/sys/applemedia/vtenc.c
+++ b/sys/applemedia/vtenc.c
@@ -47,6 +47,9 @@
const CFStringRef
kVTVideoEncoderSpecification_EnableHardwareAcceleratedVideoEncoder =
CFSTR ("EnableHardwareAcceleratedVideoEncoder");
+const CFStringRef
+ kVTVideoEncoderSpecification_RequireHardwareAcceleratedVideoEncoder =
+CFSTR ("RequireHardwareAcceleratedVideoEncoder");
const CFStringRef kVTCompressionPropertyKey_ProfileLevel =
CFSTR ("ProfileLevel");
const CFStringRef kVTProfileLevel_H264_Baseline_AutoLevel =
@@ -57,6 +60,12 @@
const CFStringRef kVTCompressionPropertyKey_Quality = CFSTR ("Quality");
#endif
+#ifdef HAVE_VIDEOTOOLBOX_10_9_6
+extern OSStatus
+VTCompressionSessionPrepareToEncodeFrames (VTCompressionSessionRef session)
+ __attribute__ ((weak_import));
+#endif
+
enum
{
PROP_0,
@@ -642,7 +651,7 @@
self->session = session;
GST_OBJECT_UNLOCK (self);
- return TRUE;
+ return session != NULL;
}
static gboolean
@@ -780,6 +789,8 @@
VTCompressionSessionRef session = NULL;
CFMutableDictionaryRef encoder_spec = NULL, pb_attrs;
OSStatus status;
+ const GstVTEncoderDetails *codec_details =
+ GST_VTENC_CLASS_GET_CODEC_DETAILS (G_OBJECT_GET_CLASS (self));
#if !HAVE_IOS
encoder_spec =
@@ -787,6 +798,10 @@
&kCFTypeDictionaryValueCallBacks);
gst_vtutil_dict_set_boolean (encoder_spec,
kVTVideoEncoderSpecification_EnableHardwareAcceleratedVideoEncoder, true);
+ if (codec_details->require_hardware)
+ gst_vtutil_dict_set_boolean (encoder_spec,
+ kVTVideoEncoderSpecification_RequireHardwareAcceleratedVideoEncoder,
+ TRUE);
#endif
pb_attrs = CFDictionaryCreateMutable (NULL, 0, &kCFTypeDictionaryKeyCallBacks,
@@ -1392,7 +1407,10 @@
}
static const GstVTEncoderDetails gst_vtenc_codecs[] = {
- {"H.264", "h264", "video/x-h264", kCMVideoCodecType_H264},
+ {"H.264", "h264", "video/x-h264", kCMVideoCodecType_H264, FALSE},
+#ifndef HAVE_IOS
+ {"H.264 (HW only)", "h264_hw", "video/x-h264", kCMVideoCodecType_H264, TRUE},
+#endif
};
void
diff --git a/sys/applemedia/vtenc.h b/sys/applemedia/vtenc.h
index 3bbe3c6..4c61000 100644
--- a/sys/applemedia/vtenc.h
+++ b/sys/applemedia/vtenc.h
@@ -44,6 +44,7 @@
const gchar * element_name;
const gchar * mimetype;
CMVideoCodecType format_id;
+ gboolean require_hardware;
};
struct _GstVTEncClass
diff --git a/sys/avc/Makefile.in b/sys/avc/Makefile.in
index 6724b6e..a1c2cb2 100644
--- a/sys/avc/Makefile.in
+++ b/sys/avc/Makefile.in
@@ -303,6 +303,8 @@
DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
DSYMUTIL = @DSYMUTIL@
DTLS_CFLAGS = @DTLS_CFLAGS@
DTLS_LIBS = @DTLS_LIBS@
@@ -518,6 +520,8 @@
LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
LIPO = @LIPO@
LN_S = @LN_S@
LOCALEDIR = @LOCALEDIR@
@@ -644,8 +648,6 @@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
SNDIO_LIBS = @SNDIO_LIBS@
@@ -690,6 +692,8 @@
WAYLAND_LIBS = @WAYLAND_LIBS@
WEBP_CFLAGS = @WEBP_CFLAGS@
WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
WGET = @WGET@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
diff --git a/sys/avc/gstavcsrc.cpp b/sys/avc/gstavcsrc.cpp
index 6d926dc..09d3f05 100644
--- a/sys/avc/gstavcsrc.cpp
+++ b/sys/avc/gstavcsrc.cpp
@@ -99,8 +99,7 @@
{
GstElementClass *element_class = GST_ELEMENT_CLASS (g_class);
- gst_element_class_add_pad_template (element_class,
- gst_static_pad_template_get (&gst_avc_src_src_template));
+ gst_element_class_add_static_pad_template (element_class, &gst_avc_src_src_template);
gst_element_class_set_static_metadata (element_class,
"AVC Video Services Source", "Video/Source",
diff --git a/sys/bluez/Makefile.in b/sys/bluez/Makefile.in
index 862d62f..5699ff6 100644
--- a/sys/bluez/Makefile.in
+++ b/sys/bluez/Makefile.in
@@ -308,6 +308,8 @@
DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
DSYMUTIL = @DSYMUTIL@
DTLS_CFLAGS = @DTLS_CFLAGS@
DTLS_LIBS = @DTLS_LIBS@
@@ -523,6 +525,8 @@
LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
LIPO = @LIPO@
LN_S = @LN_S@
LOCALEDIR = @LOCALEDIR@
@@ -649,8 +653,6 @@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
SNDIO_LIBS = @SNDIO_LIBS@
@@ -695,6 +697,8 @@
WAYLAND_LIBS = @WAYLAND_LIBS@
WEBP_CFLAGS = @WEBP_CFLAGS@
WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
WGET = @WGET@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
diff --git a/sys/bluez/gsta2dpsink.c b/sys/bluez/gsta2dpsink.c
index 424b56c..a7ffd29 100644
--- a/sys/bluez/gsta2dpsink.c
+++ b/sys/bluez/gsta2dpsink.c
@@ -288,6 +288,9 @@
self->autoconnect, NULL);
ret = gst_element_set_state (GST_ELEMENT (self->sink), GST_STATE_READY);
+ if (ret == GST_STATE_CHANGE_FAILURE) {
+ g_clear_object (&self->sink);
+ }
break;
default:
break;
@@ -366,8 +369,8 @@
GST_DEBUG_CATEGORY_INIT (gst_a2dp_sink_debug, "a2dpsink", 0,
"A2DP sink element");
- gst_element_class_add_pad_template (element_class,
- gst_static_pad_template_get (&gst_a2dp_sink_factory));
+ gst_element_class_add_static_pad_template (element_class,
+ &gst_a2dp_sink_factory);
}
GstCaps *
diff --git a/sys/bluez/gstavdtpsink.c b/sys/bluez/gstavdtpsink.c
index 0f72a74..e91aed3 100644
--- a/sys/bluez/gstavdtpsink.c
+++ b/sys/bluez/gstavdtpsink.c
@@ -381,8 +381,8 @@
GST_DEBUG_CATEGORY_INIT (avdtp_sink_debug, "avdtpsink", 0,
"A2DP headset sink element");
- gst_element_class_add_pad_template (element_class,
- gst_static_pad_template_get (&avdtp_sink_factory));
+ gst_element_class_add_static_pad_template (element_class,
+ &avdtp_sink_factory);
gst_element_class_set_static_metadata (element_class, "Bluetooth AVDTP sink",
"Sink/Audio", "Plays audio to an A2DP device",
diff --git a/sys/bluez/gstavdtpsrc.c b/sys/bluez/gstavdtpsrc.c
index fee5505..00c807a 100644
--- a/sys/bluez/gstavdtpsrc.c
+++ b/sys/bluez/gstavdtpsrc.c
@@ -108,8 +108,8 @@
GST_DEBUG_CATEGORY_INIT (avdtpsrc_debug, "avdtpsrc", 0,
"Bluetooth AVDTP Source");
- gst_element_class_add_pad_template (element_class,
- gst_static_pad_template_get (&gst_avdtp_src_template));
+ gst_element_class_add_static_pad_template (element_class,
+ &gst_avdtp_src_template);
}
static void
diff --git a/sys/d3dvideosink/Makefile.in b/sys/d3dvideosink/Makefile.in
index e14d0ce..2f728b9 100644
--- a/sys/d3dvideosink/Makefile.in
+++ b/sys/d3dvideosink/Makefile.in
@@ -304,6 +304,8 @@
DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
DSYMUTIL = @DSYMUTIL@
DTLS_CFLAGS = @DTLS_CFLAGS@
DTLS_LIBS = @DTLS_LIBS@
@@ -519,6 +521,8 @@
LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
LIPO = @LIPO@
LN_S = @LN_S@
LOCALEDIR = @LOCALEDIR@
@@ -645,8 +649,6 @@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
SNDIO_LIBS = @SNDIO_LIBS@
@@ -691,6 +693,8 @@
WAYLAND_LIBS = @WAYLAND_LIBS@
WEBP_CFLAGS = @WEBP_CFLAGS@
WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
WGET = @WGET@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
diff --git a/sys/d3dvideosink/d3dhelpers.c b/sys/d3dvideosink/d3dhelpers.c
index 5091c06..4ed089d 100644
--- a/sys/d3dvideosink/d3dhelpers.c
+++ b/sys/d3dvideosink/d3dhelpers.c
@@ -810,9 +810,7 @@
#ifndef GST_DISABLE_GST_DEBUG
{
- gchar *tmp = gst_caps_to_string (caps);
- GST_DEBUG_OBJECT (sink, "Supported caps: %s", tmp);
- g_free (tmp);
+ GST_DEBUG_OBJECT (sink, "Supported caps: %" GST_PTR_FORMAT, caps);
}
#endif
diff --git a/sys/d3dvideosink/d3dhelpers.h b/sys/d3dvideosink/d3dhelpers.h
index 4145f78..3662329 100644
--- a/sys/d3dvideosink/d3dhelpers.h
+++ b/sys/d3dvideosink/d3dhelpers.h
@@ -44,7 +44,6 @@
#endif
#include <d3d9.h>
-#include <d3dx9tex.h>
typedef struct _GstD3DVideoSink GstD3DVideoSink;
typedef struct _GstD3DVideoSinkClass GstD3DVideoSinkClass;
diff --git a/sys/d3dvideosink/d3dvideosink.c b/sys/d3dvideosink/d3dvideosink.c
index 29d1c7a..88e201e 100644
--- a/sys/d3dvideosink/d3dvideosink.c
+++ b/sys/d3dvideosink/d3dvideosink.c
@@ -156,8 +156,7 @@
"Display data using a Direct3D video renderer",
"David Hoyt <dhoyt@hoytsoft.org>, Roland Krikava <info@bluedigits.com>");
- gst_element_class_add_pad_template (gstelement_class,
- gst_static_pad_template_get (&sink_template));
+ gst_element_class_add_static_pad_template (gstelement_class, &sink_template);
g_rec_mutex_init (&klass->lock);
}
@@ -277,14 +276,11 @@
gint video_par_n, video_par_d; /* video's PAR */
gint display_par_n = 1, display_par_d = 1; /* display's PAR */
guint num, den;
- gchar *tmp = NULL;
GstBufferPool *newpool, *oldpool;
GstBufferPool *newfbpool, *oldfbpool;
GstStructure *config;
- GST_DEBUG_OBJECT (bsink, " ");
-
- GST_DEBUG_OBJECT (bsink, "Caps: %s", (tmp = gst_caps_to_string (caps)));
+ GST_DEBUG_OBJECT (bsink, "Caps: %" GST_PTR_FORMAT, caps);
sink = GST_D3DVIDEOSINK (bsink);
sink_caps = d3d_supported_caps (sink);
@@ -357,9 +353,7 @@
sink->width = video_width;
sink->height = video_height;
- GST_DEBUG_OBJECT (bsink, "Selected caps: %s", (tmp =
- gst_caps_to_string (caps)));
- g_free (tmp);
+ GST_DEBUG_OBJECT (bsink, "Selected caps: %" GST_PTR_FORMAT, caps);
if (!d3d_set_render_format (sink))
goto incompatible_caps;
@@ -413,10 +407,8 @@
}
invalid_format:
{
- gchar *caps_txt = gst_caps_to_string (caps);
GST_DEBUG_OBJECT (sink,
- "Could not locate image format from caps %s", caps_txt);
- g_free (caps_txt);
+ "Could not locate image format from caps %" GST_PTR_FORMAT, caps);
return FALSE;
}
no_disp_ratio:
diff --git a/sys/decklink/Makefile.in b/sys/decklink/Makefile.in
index b05c31c..01e112a 100644
--- a/sys/decklink/Makefile.in
+++ b/sys/decklink/Makefile.in
@@ -324,6 +324,8 @@
DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
DSYMUTIL = @DSYMUTIL@
DTLS_CFLAGS = @DTLS_CFLAGS@
DTLS_LIBS = @DTLS_LIBS@
@@ -539,6 +541,8 @@
LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
LIPO = @LIPO@
LN_S = @LN_S@
LOCALEDIR = @LOCALEDIR@
@@ -665,8 +669,6 @@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
SNDIO_LIBS = @SNDIO_LIBS@
@@ -711,6 +713,8 @@
WAYLAND_LIBS = @WAYLAND_LIBS@
WEBP_CFLAGS = @WEBP_CFLAGS@
WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
WGET = @WGET@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
diff --git a/sys/decklink/gstdecklink.cpp b/sys/decklink/gstdecklink.cpp
index 8df23af..203fe4e 100644
--- a/sys/decklink/gstdecklink.cpp
+++ b/sys/decklink/gstdecklink.cpp
@@ -38,44 +38,44 @@
{
static gsize id = 0;
static const GEnumValue modes[] = {
- {GST_DECKLINK_MODE_AUTO, "auto", "Automatic detection"},
+ {GST_DECKLINK_MODE_AUTO, "Automatic detection", "auto"},
- {GST_DECKLINK_MODE_NTSC, "ntsc", "NTSC SD 60i"},
- {GST_DECKLINK_MODE_NTSC2398, "ntsc2398", "NTSC SD 60i (24 fps)"},
- {GST_DECKLINK_MODE_PAL, "pal", "PAL SD 50i"},
- {GST_DECKLINK_MODE_NTSC_P, "ntsc-p", "NTSC SD 60p"},
- {GST_DECKLINK_MODE_PAL_P, "pal-p", "PAL SD 50p"},
+ {GST_DECKLINK_MODE_NTSC, "NTSC SD 60i", "ntsc"},
+ {GST_DECKLINK_MODE_NTSC2398, "NTSC SD 60i (24 fps)", "ntsc2398"},
+ {GST_DECKLINK_MODE_PAL, "PAL SD 50i", "pal"},
+ {GST_DECKLINK_MODE_NTSC_P, "NTSC SD 60p", "ntsc-p"},
+ {GST_DECKLINK_MODE_PAL_P, "PAL SD 50p", "pal-p"},
- {GST_DECKLINK_MODE_1080p2398, "1080p2398", "HD1080 23.98p"},
- {GST_DECKLINK_MODE_1080p24, "1080p24", "HD1080 24p"},
- {GST_DECKLINK_MODE_1080p25, "1080p25", "HD1080 25p"},
- {GST_DECKLINK_MODE_1080p2997, "1080p2997", "HD1080 29.97p"},
- {GST_DECKLINK_MODE_1080p30, "1080p30", "HD1080 30p"},
+ {GST_DECKLINK_MODE_1080p2398, "HD1080 23.98p", "1080p2398"},
+ {GST_DECKLINK_MODE_1080p24, "HD1080 24p", "1080p24"},
+ {GST_DECKLINK_MODE_1080p25, "HD1080 25p", "1080p25"},
+ {GST_DECKLINK_MODE_1080p2997, "HD1080 29.97p", "1080p2997"},
+ {GST_DECKLINK_MODE_1080p30, "HD1080 30p", "1080p30"},
- {GST_DECKLINK_MODE_1080i50, "1080i50", "HD1080 50i"},
- {GST_DECKLINK_MODE_1080i5994, "1080i5994", "HD1080 59.94i"},
- {GST_DECKLINK_MODE_1080i60, "1080i60", "HD1080 60i"},
+ {GST_DECKLINK_MODE_1080i50, "HD1080 50i", "1080i50"},
+ {GST_DECKLINK_MODE_1080i5994, "HD1080 59.94i", "1080i5994"},
+ {GST_DECKLINK_MODE_1080i60, "HD1080 60i", "1080i60"},
- {GST_DECKLINK_MODE_1080p50, "1080p50", "HD1080 50p"},
- {GST_DECKLINK_MODE_1080p5994, "1080p5994", "HD1080 59.94p"},
- {GST_DECKLINK_MODE_1080p60, "1080p60", "HD1080 60p"},
+ {GST_DECKLINK_MODE_1080p50, "HD1080 50p", "1080p50"},
+ {GST_DECKLINK_MODE_1080p5994, "HD1080 59.94p", "1080p5994"},
+ {GST_DECKLINK_MODE_1080p60, "HD1080 60p", "1080p60"},
- {GST_DECKLINK_MODE_720p50, "720p50", "HD720 50p"},
- {GST_DECKLINK_MODE_720p5994, "720p5994", "HD720 59.94p"},
- {GST_DECKLINK_MODE_720p60, "720p60", "HD720 60p"},
+ {GST_DECKLINK_MODE_720p50, "HD720 50p", "720p50"},
+ {GST_DECKLINK_MODE_720p5994, "HD720 59.94p", "720p5994"},
+ {GST_DECKLINK_MODE_720p60, "HD720 60p", "720p60"},
- {GST_DECKLINK_MODE_1556p2398, "1556p2398", "2k 23.98p"},
- {GST_DECKLINK_MODE_1556p24, "1556p24", "2k 24p"},
- {GST_DECKLINK_MODE_1556p25, "1556p25", "2k 25p"},
+ {GST_DECKLINK_MODE_1556p2398, "2k 23.98p", "1556p2398"},
+ {GST_DECKLINK_MODE_1556p24, "2k 24p", "1556p24"},
+ {GST_DECKLINK_MODE_1556p25, "2k 25p", "1556p25"},
- {GST_DECKLINK_MODE_2160p2398, "2160p2398", "4k 23.98p"},
- {GST_DECKLINK_MODE_2160p24, "2160p24", "4k 24p"},
- {GST_DECKLINK_MODE_2160p25, "2160p25", "4k 25p"},
- {GST_DECKLINK_MODE_2160p2997, "2160p2997", "4k 29.97p"},
- {GST_DECKLINK_MODE_2160p30, "2160p30", "4k 30p"},
- {GST_DECKLINK_MODE_2160p50, "2160p50", "4k 50p"},
- {GST_DECKLINK_MODE_2160p5994, "2160p5994", "4k 59.94p"},
- {GST_DECKLINK_MODE_2160p60, "2160p60", "4k 60p"},
+ {GST_DECKLINK_MODE_2160p2398, "4k 23.98p", "2160p2398"},
+ {GST_DECKLINK_MODE_2160p24, "4k 24p", "2160p24"},
+ {GST_DECKLINK_MODE_2160p25, "4k 25p", "2160p25"},
+ {GST_DECKLINK_MODE_2160p2997, "4k 29.97p", "2160p2997"},
+ {GST_DECKLINK_MODE_2160p30, "4k 30p", "2160p30"},
+ {GST_DECKLINK_MODE_2160p50, "4k 50p", "2160p50"},
+ {GST_DECKLINK_MODE_2160p5994, "4k 59.94p", "2160p5994"},
+ {GST_DECKLINK_MODE_2160p60, "4k 60p", "2160p60"},
{0, NULL, NULL}
};
@@ -93,13 +93,13 @@
{
static gsize id = 0;
static const GEnumValue connections[] = {
- {GST_DECKLINK_CONNECTION_AUTO, "auto", "Auto"},
- {GST_DECKLINK_CONNECTION_SDI, "sdi", "SDI"},
- {GST_DECKLINK_CONNECTION_HDMI, "hdmi", "HDMI"},
- {GST_DECKLINK_CONNECTION_OPTICAL_SDI, "optical-sdi", "Optical SDI"},
- {GST_DECKLINK_CONNECTION_COMPONENT, "component", "Component"},
- {GST_DECKLINK_CONNECTION_COMPOSITE, "composite", "Composite"},
- {GST_DECKLINK_CONNECTION_SVIDEO, "svideo", "S-Video"},
+ {GST_DECKLINK_CONNECTION_AUTO, "Auto", "auto"},
+ {GST_DECKLINK_CONNECTION_SDI, "SDI", "sdi"},
+ {GST_DECKLINK_CONNECTION_HDMI, "HDMI", "hdmi"},
+ {GST_DECKLINK_CONNECTION_OPTICAL_SDI, "Optical SDI", "optical-sdi"},
+ {GST_DECKLINK_CONNECTION_COMPONENT, "Component", "component"},
+ {GST_DECKLINK_CONNECTION_COMPOSITE, "Composite", "composite"},
+ {GST_DECKLINK_CONNECTION_SVIDEO, "S-Video", "svideo"},
{0, NULL, NULL}
};
@@ -112,19 +112,47 @@
}
GType
+gst_decklink_video_format_get_type (void)
+{
+ static gsize id = 0;
+ static const GEnumValue types[] = {
+ {GST_DECKLINK_VIDEO_FORMAT_AUTO, "Auto", "auto"},
+ {GST_DECKLINK_VIDEO_FORMAT_8BIT_YUV, "bmdFormat8BitYUV", "8bit-yuv"},
+ {GST_DECKLINK_VIDEO_FORMAT_10BIT_YUV, "bmdFormat10BitYUV", "10bit-yuv"},
+ {GST_DECKLINK_VIDEO_FORMAT_8BIT_ARGB, "bmdFormat8BitARGB", "8bit-argb"},
+ {GST_DECKLINK_VIDEO_FORMAT_8BIT_BGRA, "bmdFormat8BitBGRA", "8bit-bgra"},
+ /* Not yet supported:
+ {GST_DECKLINK_VIDEO_FORMAT_10BIT_RGB, "bmdFormat10BitRGB", "10bit-rgb"},
+ {GST_DECKLINK_VIDEO_FORMAT_12BIT_RGB, "bmdFormat12BitRGB", "12bit-rgb"},
+ {GST_DECKLINK_VIDEO_FORMAT_12BIT_RGBLE, "bmdFormat12BitRGBLE", "12bit-rgble"},
+ {GST_DECKLINK_VIDEO_FORMAT_10BIT_RGBXLE, "bmdFormat10BitRGBXLE", "10bit-rgbxle"},
+ {GST_DECKLINK_VIDEO_FORMAT_10BIT_RGBX, "bmdFormat10BitRGBX", "10bit-rgbx"},
+ */
+ {0, NULL, NULL}
+ };
+
+ if (g_once_init_enter (&id)) {
+ GType tmp = g_enum_register_static ("GstDecklinkVideoFormat", types);
+ g_once_init_leave (&id, tmp);
+ }
+
+ return (GType) id;
+}
+
+GType
gst_decklink_audio_connection_get_type (void)
{
static gsize id = 0;
static const GEnumValue connections[] = {
- {GST_DECKLINK_AUDIO_CONNECTION_AUTO, "auto", "Automatic"},
- {GST_DECKLINK_AUDIO_CONNECTION_EMBEDDED, "embedded",
- "SDI/HDMI embedded audio"},
- {GST_DECKLINK_AUDIO_CONNECTION_AES_EBU, "aes", "AES/EBU input"},
- {GST_DECKLINK_AUDIO_CONNECTION_ANALOG, "analog", "Analog input"},
- {GST_DECKLINK_AUDIO_CONNECTION_ANALOG_XLR, "analog-xlr",
- "Analog input (XLR)"},
- {GST_DECKLINK_AUDIO_CONNECTION_ANALOG_RCA, "analog-rca",
- "Analog input (RCA)"},
+ {GST_DECKLINK_AUDIO_CONNECTION_AUTO, "Automatic", "auto"},
+ {GST_DECKLINK_AUDIO_CONNECTION_EMBEDDED, "SDI/HDMI embedded audio",
+ "embedded"},
+ {GST_DECKLINK_AUDIO_CONNECTION_AES_EBU, "AES/EBU input", "aes"},
+ {GST_DECKLINK_AUDIO_CONNECTION_ANALOG, "Analog input", "analog"},
+ {GST_DECKLINK_AUDIO_CONNECTION_ANALOG_XLR, "Analog input (XLR)",
+ "analog-xlr"},
+ {GST_DECKLINK_AUDIO_CONNECTION_ANALOG_RCA, "Analog input (RCA)",
+ "analog-rca"},
{0, NULL, NULL}
};
@@ -183,6 +211,27 @@
{bmdMode4K2160p60, 3840, 2160, 60, 1, false, UHD}
};
+static const struct
+{
+ BMDPixelFormat format;
+ gint bpp;
+ GstVideoFormat vformat;
+} formats[] = {
+ /* *INDENT-OFF* */
+ {bmdFormat8BitYUV, 2, GST_VIDEO_FORMAT_UYVY}, /* auto */
+ {bmdFormat8BitYUV, 2, GST_VIDEO_FORMAT_UYVY},
+ {bmdFormat10BitYUV, 4, GST_VIDEO_FORMAT_v210},
+ {bmdFormat8BitARGB, 4, GST_VIDEO_FORMAT_ARGB},
+ {bmdFormat8BitBGRA, 4, GST_VIDEO_FORMAT_BGRA},
+/* Not yet supported
+ {bmdFormat10BitRGB, FIXME, FIXME},
+ {bmdFormat12BitRGB, FIXME, FIXME},
+ {bmdFormat12BitRGBLE, FIXME, FIXME},
+ {bmdFormat10BitRGBXLE, FIXME, FIXME},
+ {bmdFormat10BitRGBX, FIXME, FIXME} */
+ /* *INDENT-ON* */
+};
+
const GstDecklinkMode *
gst_decklink_get_mode (GstDecklinkModeEnum e)
{
@@ -293,6 +342,31 @@
return displayMode;
}
+const BMDPixelFormat
+gst_decklink_pixel_format_from_type (GstDecklinkVideoFormat t)
+{
+ return formats[t].format;
+}
+
+const gint
+gst_decklink_bpp_from_type (GstDecklinkVideoFormat t)
+{
+ return formats[t].bpp;
+}
+
+const GstDecklinkVideoFormat
+gst_decklink_type_from_video_format (GstVideoFormat f)
+{
+ guint i;
+
+ for (i = 1; i < G_N_ELEMENTS (formats); i++) {
+ if (formats[i].vformat == f)
+ return (GstDecklinkVideoFormat) i;
+ }
+ g_assert_not_reached ();
+ return GST_DECKLINK_VIDEO_FORMAT_AUTO;
+}
+
static const BMDVideoConnection connections[] = {
0, /* auto */
bmdVideoConnectionSDI,
@@ -315,6 +389,21 @@
return connections[e];
}
+static gboolean
+gst_decklink_caps_get_pixel_format (GstCaps * caps, BMDPixelFormat * format)
+{
+ GstVideoInfo vinfo;
+ GstVideoFormat f;
+
+ if (gst_video_info_from_caps (&vinfo, caps) == FALSE) {
+ GST_ERROR ("Could not get video info from caps: %" GST_PTR_FORMAT, caps);
+ return FALSE;
+ }
+
+ f = vinfo.finfo->format;
+ return gst_decklink_type_from_video_format (f);
+}
+
static GstStructure *
gst_decklink_mode_get_structure (GstDecklinkModeEnum e, BMDPixelFormat f)
{
@@ -323,29 +412,30 @@
"width", G_TYPE_INT, mode->width,
"height", G_TYPE_INT, mode->height,
"pixel-aspect-ratio", GST_TYPE_FRACTION, mode->par_n, mode->par_d,
- "interlace-mode", G_TYPE_STRING, mode->interlaced ? "interleaved" : "progressive",
+ "interlace-mode", G_TYPE_STRING,
+ mode->interlaced ? "interleaved" : "progressive",
"framerate", GST_TYPE_FRACTION, mode->fps_n, mode->fps_d, NULL);
switch (f) {
- case bmdFormat8BitYUV: /* '2vuy' */
+ case bmdFormat8BitYUV: /* '2vuy' */
gst_structure_set (s, "format", G_TYPE_STRING, "UYVY",
"colorimetry", G_TYPE_STRING, mode->colorimetry,
"chroma-site", G_TYPE_STRING, "mpeg2", NULL);
break;
- case bmdFormat10BitYUV: /* 'v210' */
+ case bmdFormat10BitYUV: /* 'v210' */
gst_structure_set (s, "format", G_TYPE_STRING, "v210", NULL);
break;
- case bmdFormat8BitARGB: /* 'ARGB' */
+ case bmdFormat8BitARGB: /* 'ARGB' */
gst_structure_set (s, "format", G_TYPE_STRING, "ARGB", NULL);
break;
- case bmdFormat8BitBGRA: /* 'BGRA' */
+ case bmdFormat8BitBGRA: /* 'BGRA' */
gst_structure_set (s, "format", G_TYPE_STRING, "BGRA", NULL);
break;
- case bmdFormat10BitRGB: /* 'r210' Big-endian RGB 10-bit per component with SMPTE video levels (64-960). Packed as 2:10:10:10 */
- case bmdFormat12BitRGB: /* 'R12B' Big-endian RGB 12-bit per component with full range (0-4095). Packed as 12-bit per component */
- case bmdFormat12BitRGBLE: /* 'R12L' Little-endian RGB 12-bit per component with full range (0-4095). Packed as 12-bit per component */
+ case bmdFormat10BitRGB: /* 'r210' Big-endian RGB 10-bit per component with SMPTE video levels (64-960). Packed as 2:10:10:10 */
+ case bmdFormat12BitRGB: /* 'R12B' Big-endian RGB 12-bit per component with full range (0-4095). Packed as 12-bit per component */
+ case bmdFormat12BitRGBLE: /* 'R12L' Little-endian RGB 12-bit per component with full range (0-4095). Packed as 12-bit per component */
case bmdFormat10BitRGBXLE: /* 'R10l' Little-endian 10-bit RGB with SMPTE video levels (64-940) */
- case bmdFormat10BitRGBX: /* 'R10b' Big-endian 10-bit RGB with SMPTE video levels (64-940) */
+ case bmdFormat10BitRGBX: /* 'R10b' Big-endian 10-bit RGB with SMPTE video levels (64-940) */
default:
GST_WARNING ("format not supported %d", f);
gst_structure_free (s);
@@ -362,7 +452,39 @@
GstCaps *caps;
caps = gst_caps_new_empty ();
- gst_caps_append_structure (caps, gst_decklink_mode_get_structure (e, f));
+ caps =
+ gst_caps_merge_structure (caps, gst_decklink_mode_get_structure (e, f));
+
+ return caps;
+}
+
+GstCaps *
+gst_decklink_mode_get_caps_all_formats (GstDecklinkModeEnum e)
+{
+ GstCaps *caps;
+ guint i;
+
+ caps = gst_caps_new_empty ();
+ for (i = 1; i < G_N_ELEMENTS (formats); i++)
+ caps =
+ gst_caps_merge_structure (caps, gst_decklink_mode_get_structure (e,
+ formats[i].format));
+
+ return caps;
+}
+
+GstCaps *
+gst_decklink_pixel_format_get_caps (BMDPixelFormat f)
+{
+ int i;
+ GstCaps *caps;
+ GstStructure *s;
+
+ caps = gst_caps_new_empty ();
+ for (i = 1; i < (int) G_N_ELEMENTS (modes); i++) {
+ s = gst_decklink_mode_get_structure ((GstDecklinkModeEnum) i, f);
+ caps = gst_caps_merge_structure (caps, s);
+ }
return caps;
}
@@ -372,27 +494,29 @@
{
int i;
GstCaps *caps;
- GstStructure *s;
caps = gst_caps_new_empty ();
- for (i = 1; i < (int) G_N_ELEMENTS (modes); i++) {
- s = gst_decklink_mode_get_structure ((GstDecklinkModeEnum) i, bmdFormat8BitYUV);
- gst_caps_append_structure (caps, s);
- s = gst_decklink_mode_get_structure ((GstDecklinkModeEnum) i, bmdFormat8BitARGB);
- gst_caps_append_structure (caps, s);
- }
+ for (i = 1; i < (int) G_N_ELEMENTS (modes); i++)
+ caps =
+ gst_caps_merge (caps,
+ gst_decklink_mode_get_caps_all_formats ((GstDecklinkModeEnum) i));
return caps;
}
const GstDecklinkMode *
-gst_decklink_find_mode_for_caps (GstCaps * caps)
+gst_decklink_find_mode_and_format_for_caps (GstCaps * caps,
+ BMDPixelFormat * format)
{
int i;
GstCaps *mode_caps;
+ g_return_val_if_fail (gst_caps_is_fixed (caps), NULL);
+ if (!gst_decklink_caps_get_pixel_format (caps, format))
+ return NULL;
+
for (i = 1; i < (int) G_N_ELEMENTS (modes); i++) {
- mode_caps = gst_decklink_mode_get_caps ((GstDecklinkModeEnum) i, bmdFormat8BitYUV);
+ mode_caps = gst_decklink_mode_get_caps ((GstDecklinkModeEnum) i, *format);
if (gst_caps_can_intersect (caps, mode_caps)) {
gst_caps_unref (mode_caps);
return gst_decklink_get_mode ((GstDecklinkModeEnum) i);
@@ -403,6 +527,14 @@
return NULL;
}
+const GstDecklinkMode *
+gst_decklink_find_mode_for_caps (GstCaps * caps)
+{
+ BMDPixelFormat format;
+
+ return gst_decklink_find_mode_and_format_for_caps (caps, &format);
+}
+
#define GST_TYPE_DECKLINK_CLOCK \
(gst_decklink_clock_get_type())
#define GST_DECKLINK_CLOCK(obj) \
@@ -530,9 +662,11 @@
IDeckLinkVideoInputFrame * frame, GstDecklinkModeEnum mode,
GstClockTime capture_time, GstClockTime capture_duration) = NULL;
void (*got_audio_packet) (GstElement * videosrc,
- IDeckLinkAudioInputPacket * packet, GstClockTime capture_time, gboolean discont) = NULL;
+ IDeckLinkAudioInputPacket * packet, GstClockTime capture_time,
+ gboolean discont) = NULL;
GstDecklinkModeEnum mode;
- BMDTimeValue capture_time = GST_CLOCK_TIME_NONE, capture_duration = GST_CLOCK_TIME_NONE;
+ BMDTimeValue capture_time = GST_CLOCK_TIME_NONE, capture_duration =
+ GST_CLOCK_TIME_NONE;
HRESULT res;
if (video_frame == NULL)
@@ -576,14 +710,16 @@
capture_duration);
}
-no_video_frame:
+ no_video_frame:
if (got_audio_packet && audiosrc && audio_packet) {
- m_input->got_audio_packet (audiosrc, audio_packet, capture_time, m_input->audio_discont);
+ m_input->got_audio_packet (audiosrc, audio_packet, capture_time,
+ m_input->audio_discont);
m_input->audio_discont = FALSE;
} else {
m_input->audio_discont = TRUE;
if (!audio_packet)
- GST_DEBUG ("Received no audio packet at %" GST_TIME_FORMAT, GST_TIME_ARGS (capture_time));
+ GST_DEBUG ("Received no audio packet at %" GST_TIME_FORMAT,
+ GST_TIME_ARGS (capture_time));
}
gst_object_replace ((GstObject **) & videosrc, NULL);
diff --git a/sys/decklink/gstdecklink.h b/sys/decklink/gstdecklink.h
index bfe7d9f..6559206 100644
--- a/sys/decklink/gstdecklink.h
+++ b/sys/decklink/gstdecklink.h
@@ -23,6 +23,7 @@
#define _GST_DECKLINK_H_
#include <gst/gst.h>
+#include <gst/video/video.h>
#ifdef G_OS_UNIX
#include "linux/DeckLinkAPI.h"
#endif
@@ -109,6 +110,25 @@
#define GST_TYPE_DECKLINK_AUDIO_CONNECTION (gst_decklink_audio_connection_get_type ())
GType gst_decklink_audio_connection_get_type (void);
+typedef enum {
+ GST_DECKLINK_VIDEO_FORMAT_AUTO,
+ GST_DECKLINK_VIDEO_FORMAT_8BIT_YUV, /* bmdFormat8BitYUV */
+ GST_DECKLINK_VIDEO_FORMAT_10BIT_YUV, /* bmdFormat10BitYUV */
+ GST_DECKLINK_VIDEO_FORMAT_8BIT_ARGB, /* bmdFormat8BitARGB */
+ GST_DECKLINK_VIDEO_FORMAT_8BIT_BGRA, /* bmdFormat8BitBGRA */
+ GST_DECKLINK_VIDEO_FORMAT_10BIT_RGB, /* bmdFormat10BitRGB */
+ GST_DECKLINK_VIDEO_FORMAT_12BIT_RGB, /* bmdFormat12BitRGB */
+ GST_DECKLINK_VIDEO_FORMAT_12BIT_RGBLE, /* bmdFormat12BitRGBLE */
+ GST_DECKLINK_VIDEO_FORMAT_10BIT_RGBXLE, /* bmdFormat10BitRGBXLE */
+ GST_DECKLINK_VIDEO_FORMAT_10BIT_RGBX, /* bmdFormat10BitRGBX */
+} GstDecklinkVideoFormat;
+#define GST_TYPE_DECKLINK_VIDEO_FORMAT (gst_decklink_video_format_get_type ())
+GType gst_decklink_video_format_get_type (void);
+
+const BMDPixelFormat gst_decklink_pixel_format_from_type (GstDecklinkVideoFormat t);
+const gint gst_decklink_bpp_from_type (GstDecklinkVideoFormat t);
+const GstDecklinkVideoFormat gst_decklink_type_from_video_format (GstVideoFormat f);
+
typedef struct _GstDecklinkMode GstDecklinkMode;
struct _GstDecklinkMode {
BMDDisplayMode mode;
@@ -195,5 +215,8 @@
void gst_decklink_release_nth_input (gint n, GstElement * src, gboolean is_audio);
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);
#endif
diff --git a/sys/decklink/gstdecklinkaudiosink.cpp b/sys/decklink/gstdecklinkaudiosink.cpp
index 1db9339..54cb257 100644
--- a/sys/decklink/gstdecklinkaudiosink.cpp
+++ b/sys/decklink/gstdecklinkaudiosink.cpp
@@ -561,8 +561,7 @@
(GParamFlags) (G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS |
G_PARAM_CONSTRUCT)));
- gst_element_class_add_pad_template (element_class,
- gst_static_pad_template_get (&sink_template));
+ gst_element_class_add_static_pad_template (element_class, &sink_template);
gst_element_class_set_static_metadata (element_class, "Decklink Audio Sink",
"Audio/Sink", "Decklink Sink", "David Schleef <ds@entropywave.com>, "
diff --git a/sys/decklink/gstdecklinkaudiosrc.cpp b/sys/decklink/gstdecklinkaudiosrc.cpp
index be52175..4a66e96 100644
--- a/sys/decklink/gstdecklinkaudiosrc.cpp
+++ b/sys/decklink/gstdecklinkaudiosrc.cpp
@@ -171,8 +171,7 @@
G_MAXINT, DEFAULT_BUFFER_SIZE,
(GParamFlags) (G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)));
- gst_element_class_add_pad_template (element_class,
- gst_static_pad_template_get (&sink_template));
+ gst_element_class_add_static_pad_template (element_class, &sink_template);
gst_element_class_set_static_metadata (element_class, "Decklink Audio Source",
"Audio/Src", "Decklink Source", "David Schleef <ds@entropywave.com>, "
@@ -492,8 +491,10 @@
sample_count = p->packet->GetSampleFrameCount ();
data_size = self->info.bpf * sample_count;
- if (p->capture_time == GST_CLOCK_TIME_NONE && self->next_offset == (guint64) - 1) {
- GST_DEBUG_OBJECT (self, "Got packet without timestamp before initial "
+ if (p->capture_time == GST_CLOCK_TIME_NONE
+ && self->next_offset == (guint64) - 1) {
+ GST_DEBUG_OBJECT (self,
+ "Got packet without timestamp before initial "
"timestamp after discont - dropping");
capture_packet_free (p);
goto retry;
diff --git a/sys/decklink/gstdecklinkvideosink.cpp b/sys/decklink/gstdecklinkvideosink.cpp
index eebeff3..551e5d7 100644
--- a/sys/decklink/gstdecklinkvideosink.cpp
+++ b/sys/decklink/gstdecklinkvideosink.cpp
@@ -118,7 +118,8 @@
{
PROP_0,
PROP_MODE,
- PROP_DEVICE_NUMBER
+ PROP_DEVICE_NUMBER,
+ PROP_VIDEO_FORMAT
};
static void gst_decklink_video_sink_set_property (GObject * object,
@@ -205,6 +206,13 @@
(GParamFlags) (G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS |
G_PARAM_CONSTRUCT)));
+ g_object_class_install_property (gobject_class, PROP_VIDEO_FORMAT,
+ g_param_spec_enum ("video-format", "Video format",
+ "Video format type to use for playback",
+ GST_TYPE_DECKLINK_VIDEO_FORMAT, GST_DECKLINK_VIDEO_FORMAT_8BIT_YUV,
+ (GParamFlags) (G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS |
+ G_PARAM_CONSTRUCT)));
+
templ_caps = gst_decklink_mode_get_template_caps ();
templ_caps = gst_caps_make_writable (templ_caps);
/* For output we support any framerate and only really care about timestamps */
@@ -226,6 +234,7 @@
{
self->mode = GST_DECKLINK_MODE_NTSC;
self->device_number = 0;
+ self->video_format = GST_DECKLINK_VIDEO_FORMAT_8BIT_YUV;
gst_base_sink_set_max_lateness (GST_BASE_SINK_CAST (self), 20 * GST_MSECOND);
gst_base_sink_set_qos_enabled (GST_BASE_SINK_CAST (self), TRUE);
@@ -244,6 +253,21 @@
case PROP_DEVICE_NUMBER:
self->device_number = g_value_get_int (value);
break;
+ case PROP_VIDEO_FORMAT:
+ self->video_format = (GstDecklinkVideoFormat) g_value_get_enum (value);
+ switch (self->video_format) {
+ case GST_DECKLINK_VIDEO_FORMAT_AUTO:
+ case GST_DECKLINK_VIDEO_FORMAT_8BIT_YUV:
+ case GST_DECKLINK_VIDEO_FORMAT_10BIT_YUV:
+ case GST_DECKLINK_VIDEO_FORMAT_8BIT_ARGB:
+ case GST_DECKLINK_VIDEO_FORMAT_8BIT_BGRA:
+ break;
+ default:
+ GST_ELEMENT_WARNING (GST_ELEMENT (self), CORE, NOT_IMPLEMENTED,
+ ("Format %d not supported", self->video_format), (NULL));
+ break;
+ }
+ break;
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
break;
@@ -263,6 +287,9 @@
case PROP_DEVICE_NUMBER:
g_value_set_int (value, self->device_number);
break;
+ case PROP_VIDEO_FORMAT:
+ g_value_set_enum (value, self->video_format);
+ break;
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
break;
@@ -293,13 +320,23 @@
GStreamerVideoOutputCallback (self));
if (self->mode == GST_DECKLINK_MODE_AUTO) {
- mode = gst_decklink_find_mode_for_caps (caps);
+ BMDPixelFormat f;
+ mode = gst_decklink_find_mode_and_format_for_caps (caps, &f);
if (mode == NULL) {
GST_WARNING_OBJECT (self,
"Failed to find compatible mode for caps %" GST_PTR_FORMAT, caps);
return FALSE;
}
+ if (self->video_format != GST_DECKLINK_VIDEO_FORMAT_AUTO &&
+ gst_decklink_pixel_format_from_type (self->video_format) != f) {
+ GST_WARNING_OBJECT (self, "Failed to set pixel format to %d",
+ self->video_format);
+ return FALSE;
+ }
} else {
+ /* We don't have to give the format in EnableVideoOutput. Therefore,
+ * even if it's AUTO, we have it stored in self->info and set it in
+ * gst_decklink_video_sink_prepare */
mode = gst_decklink_get_mode (self->mode);
g_assert (mode != NULL);
};
@@ -327,10 +364,19 @@
GstDecklinkVideoSink *self = GST_DECKLINK_VIDEO_SINK_CAST (bsink);
GstCaps *mode_caps, *caps;
- if (self->mode == GST_DECKLINK_MODE_AUTO)
+ if (self->mode == GST_DECKLINK_MODE_AUTO
+ && self->video_format == GST_DECKLINK_VIDEO_FORMAT_AUTO)
mode_caps = gst_decklink_mode_get_template_caps ();
+ else if (self->video_format == GST_DECKLINK_VIDEO_FORMAT_AUTO)
+ mode_caps = gst_decklink_mode_get_caps_all_formats (self->mode);
+ 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));
else
- mode_caps = gst_decklink_mode_get_caps (self->mode, bmdFormat8BitYUV);
+ mode_caps =
+ gst_decklink_mode_get_caps (self->mode,
+ gst_decklink_pixel_format_from_type (self->video_format));
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);
@@ -454,6 +500,9 @@
GstClockTime latency, render_delay;
GstClockTimeDiff ts_offset;
gint i;
+ GstDecklinkVideoFormat caps_format;
+ BMDPixelFormat format;
+ gint bpp;
GST_DEBUG_OBJECT (self, "Preparing buffer %p", buffer);
@@ -462,6 +511,10 @@
return GST_FLOW_ERROR;
}
+ caps_format = gst_decklink_type_from_video_format (self->info.finfo->format);
+ format = gst_decklink_pixel_format_from_type (caps_format);
+ bpp = gst_decklink_bpp_from_type (caps_format);
+
timestamp = GST_BUFFER_TIMESTAMP (buffer);
duration = GST_BUFFER_DURATION (buffer);
if (duration == GST_CLOCK_TIME_NONE) {
@@ -499,8 +552,8 @@
running_time = 0;
ret = self->output->output->CreateVideoFrame (self->info.width,
- self->info.height, self->info.stride[0], bmdFormat8BitYUV,
- bmdFrameFlagDefault, &frame);
+ self->info.height, self->info.stride[0], format, bmdFrameFlagDefault,
+ &frame);
if (ret != S_OK) {
GST_ELEMENT_ERROR (self, STREAM, FAILED,
(NULL), ("Failed to create video frame: 0x%08x", ret));
@@ -516,7 +569,7 @@
frame->GetBytes ((void **) &outdata);
indata = (guint8 *) GST_VIDEO_FRAME_PLANE_DATA (&vframe, 0);
for (i = 0; i < self->info.height; i++) {
- memcpy (outdata, indata, GST_VIDEO_FRAME_WIDTH (&vframe) * 2);
+ memcpy (outdata, indata, GST_VIDEO_FRAME_WIDTH (&vframe) * bpp);
indata += GST_VIDEO_FRAME_PLANE_STRIDE (&vframe, 0);
outdata += frame->GetRowBytes ();
}
diff --git a/sys/decklink/gstdecklinkvideosink.h b/sys/decklink/gstdecklinkvideosink.h
index 16b2fbb..fb95591 100644
--- a/sys/decklink/gstdecklinkvideosink.h
+++ b/sys/decklink/gstdecklinkvideosink.h
@@ -51,6 +51,7 @@
GstDecklinkModeEnum mode;
gint device_number;
+ GstDecklinkVideoFormat video_format;
GstVideoInfo info;
diff --git a/sys/decklink/gstdecklinkvideosrc.cpp b/sys/decklink/gstdecklinkvideosrc.cpp
index 2b304f9..15ea0c8 100644
--- a/sys/decklink/gstdecklinkvideosrc.cpp
+++ b/sys/decklink/gstdecklinkvideosrc.cpp
@@ -39,7 +39,8 @@
PROP_MODE,
PROP_CONNECTION,
PROP_DEVICE_NUMBER,
- PROP_BUFFER_SIZE
+ PROP_BUFFER_SIZE,
+ PROP_VIDEO_FORMAT
};
typedef struct
@@ -161,6 +162,13 @@
G_MAXINT, DEFAULT_BUFFER_SIZE,
(GParamFlags) (G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)));
+ g_object_class_install_property (gobject_class, PROP_VIDEO_FORMAT,
+ g_param_spec_enum ("video-format", "Video format",
+ "Video format type to use for input (Only use auto for mode=auto)",
+ GST_TYPE_DECKLINK_VIDEO_FORMAT, GST_DECKLINK_VIDEO_FORMAT_AUTO,
+ (GParamFlags) (G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS |
+ G_PARAM_CONSTRUCT)));
+
templ_caps = gst_decklink_mode_get_template_caps ();
gst_element_class_add_pad_template (element_class,
gst_pad_template_new ("src", GST_PAD_SRC, GST_PAD_ALWAYS, templ_caps));
@@ -183,6 +191,7 @@
self->connection = DEFAULT_CONNECTION;
self->device_number = 0;
self->buffer_size = DEFAULT_BUFFER_SIZE;
+ self->video_format = GST_DECKLINK_VIDEO_FORMAT_AUTO;
gst_base_src_set_live (GST_BASE_SRC (self), TRUE);
gst_base_src_set_format (GST_BASE_SRC (self), GST_FORMAT_TIME);
@@ -202,6 +211,13 @@
switch (property_id) {
case PROP_MODE:
self->mode = (GstDecklinkModeEnum) g_value_get_enum (value);
+ /* setting the default value for caps_mode here: if mode==auto then we
+ * configure caps_mode from the caps, if mode!=auto we set caps_mode to
+ * the same value as the mode. so self->caps_mode is essentially
+ * self->mode with mode=auto filtered into whatever we got from the
+ * negotiation */
+ if (self->mode != GST_DECKLINK_MODE_AUTO)
+ self->caps_mode = self->mode;
break;
case PROP_CONNECTION:
self->connection = (GstDecklinkConnectionEnum) g_value_get_enum (value);
@@ -212,6 +228,23 @@
case PROP_BUFFER_SIZE:
self->buffer_size = g_value_get_uint (value);
break;
+ case PROP_VIDEO_FORMAT:
+ self->video_format = (GstDecklinkVideoFormat) g_value_get_enum (value);
+ switch (self->video_format) {
+ case GST_DECKLINK_VIDEO_FORMAT_8BIT_YUV:
+ case GST_DECKLINK_VIDEO_FORMAT_10BIT_YUV:
+ case GST_DECKLINK_VIDEO_FORMAT_8BIT_ARGB:
+ case GST_DECKLINK_VIDEO_FORMAT_8BIT_BGRA:
+ self->caps_format =
+ gst_decklink_pixel_format_from_type (self->video_format);
+ case GST_DECKLINK_VIDEO_FORMAT_AUTO:
+ break;
+ default:
+ GST_ELEMENT_WARNING (GST_ELEMENT (self), CORE, NOT_IMPLEMENTED,
+ ("Format %d not supported", self->video_format), (NULL));
+ break;
+ }
+ break;
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
break;
@@ -237,6 +270,9 @@
case PROP_BUFFER_SIZE:
g_value_set_uint (value, self->buffer_size);
break;
+ case PROP_VIDEO_FORMAT:
+ g_value_set_enum (value, self->video_format);
+ break;
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
break;
@@ -262,6 +298,7 @@
const GstDecklinkMode *mode;
BMDVideoInputFlags flags;
HRESULT ret;
+ BMDPixelFormat format;
GST_DEBUG_OBJECT (self, "Setting caps %" GST_PTR_FORMAT, caps);
@@ -329,8 +366,8 @@
mode = gst_decklink_get_mode (self->mode);
g_assert (mode != NULL);
- ret = self->input->input->EnableVideoInput (mode->mode,
- bmdFormat8BitYUV, flags);
+ format = self->caps_format;
+ ret = self->input->input->EnableVideoInput (mode->mode, format, flags);
if (ret != S_OK) {
GST_WARNING_OBJECT (self, "Failed to enable video input");
return FALSE;
@@ -351,14 +388,16 @@
{
GstDecklinkVideoSrc *self = GST_DECKLINK_VIDEO_SRC_CAST (bsrc);
GstCaps *mode_caps, *caps;
+ BMDPixelFormat format;
+ GstDecklinkModeEnum mode;
g_mutex_lock (&self->lock);
- if (self->caps_mode != GST_DECKLINK_MODE_AUTO)
- mode_caps = gst_decklink_mode_get_caps (self->caps_mode, self->caps_format);
- else
- mode_caps = gst_decklink_mode_get_caps (self->mode, self->caps_format);
+ mode = self->caps_mode;
+ format = self->caps_format;
g_mutex_unlock (&self->lock);
+ mode_caps = gst_decklink_mode_get_caps (mode, format);
+
if (filter) {
caps =
gst_caps_intersect_full (filter, mode_caps, GST_CAPS_INTERSECT_FIRST);
@@ -501,6 +540,7 @@
VideoFrame *vf;
CaptureFrame *f;
GstCaps *caps;
+ gboolean caps_changed = FALSE;
g_mutex_lock (&self->lock);
while (g_queue_is_empty (&self->current_frames) && !self->flushing) {
@@ -517,22 +557,50 @@
return GST_FLOW_FLUSHING;
}
+ // If we're not flushing, we should have a valid frame from the queue
+ g_assert (f != NULL);
+
g_mutex_lock (&self->lock);
- if (self->mode == GST_DECKLINK_MODE_AUTO &&
- (self->caps_mode != f->mode || self->caps_format != f->format)) {
- GST_DEBUG_OBJECT (self, "Mode/Format changed from %d/%d to %d/%d",
- self->caps_mode, self->caps_format, f->mode, f->format);
- self->caps_mode = f->mode;
- self->caps_format = f->format;
- g_mutex_unlock (&self->lock);
+ if (self->caps_mode != f->mode) {
+ if (self->mode == GST_DECKLINK_MODE_AUTO) {
+ GST_DEBUG_OBJECT (self, "Mode changed from %d to %d", self->caps_mode,
+ f->mode);
+ caps_changed = TRUE;
+ self->caps_mode = f->mode;
+ } else {
+ g_mutex_unlock (&self->lock);
+ GST_ELEMENT_ERROR (self, CORE, NEGOTIATION,
+ ("Invalid mode in captured frame"),
+ ("Mode set to %d but captured %d", self->caps_mode, f->mode));
+ capture_frame_free (f);
+ return GST_FLOW_NOT_NEGOTIATED;
+ }
+ }
+ if (self->caps_format != f->format) {
+ if (self->video_format == GST_DECKLINK_VIDEO_FORMAT_AUTO) {
+ GST_DEBUG_OBJECT (self, "Format changed from %d to %d", self->caps_format,
+ f->format);
+ caps_changed = TRUE;
+ self->caps_format = f->format;
+ } else {
+ g_mutex_unlock (&self->lock);
+ GST_ELEMENT_ERROR (self, CORE, NEGOTIATION,
+ ("Invalid pixel format in captured frame"),
+ ("Format set to %d but captured %d", self->caps_format, f->format));
+ capture_frame_free (f);
+ return GST_FLOW_NOT_NEGOTIATED;
+ }
+ }
+
+ g_mutex_unlock (&self->lock);
+ if (caps_changed) {
caps = gst_decklink_mode_get_caps (f->mode, f->format);
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),
gst_message_new_latency (GST_OBJECT_CAST (self)));
gst_caps_unref (caps);
- } else {
- g_mutex_unlock (&self->lock);
+
}
f->frame->GetBytes ((gpointer *) & data);
@@ -576,10 +644,7 @@
const GstDecklinkMode *mode;
g_mutex_lock (&self->lock);
- if (self->caps_mode != GST_DECKLINK_MODE_AUTO)
- mode = gst_decklink_get_mode (self->caps_mode);
- else
- mode = gst_decklink_get_mode (self->mode);
+ mode = gst_decklink_get_mode (self->caps_mode);
g_mutex_unlock (&self->lock);
min = gst_util_uint64_scale_ceil (GST_SECOND, mode->fps_d, mode->fps_n);
@@ -754,6 +819,11 @@
ret = GST_STATE_CHANGE_FAILURE;
goto out;
}
+ if (self->mode == GST_DECKLINK_MODE_AUTO &&
+ self->video_format != GST_DECKLINK_VIDEO_FORMAT_AUTO) {
+ GST_WARNING_OBJECT (self, "Warning: mode=auto and format!=auto may \
+ not work");
+ }
break;
case GST_STATE_CHANGE_READY_TO_PAUSED:
g_mutex_lock (&self->input->lock);
diff --git a/sys/decklink/gstdecklinkvideosrc.h b/sys/decklink/gstdecklinkvideosrc.h
index b83495f..1309364 100644
--- a/sys/decklink/gstdecklinkvideosrc.h
+++ b/sys/decklink/gstdecklinkvideosrc.h
@@ -57,6 +57,7 @@
gint device_number;
GstVideoInfo info;
+ GstDecklinkVideoFormat video_format;
GstDecklinkInput *input;
diff --git a/sys/directsound/Makefile.in b/sys/directsound/Makefile.in
index 38f85a0..cab8f60 100644
--- a/sys/directsound/Makefile.in
+++ b/sys/directsound/Makefile.in
@@ -306,6 +306,8 @@
DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
DSYMUTIL = @DSYMUTIL@
DTLS_CFLAGS = @DTLS_CFLAGS@
DTLS_LIBS = @DTLS_LIBS@
@@ -521,6 +523,8 @@
LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
LIPO = @LIPO@
LN_S = @LN_S@
LOCALEDIR = @LOCALEDIR@
@@ -647,8 +651,6 @@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
SNDIO_LIBS = @SNDIO_LIBS@
@@ -693,6 +695,8 @@
WAYLAND_LIBS = @WAYLAND_LIBS@
WEBP_CFLAGS = @WEBP_CFLAGS@
WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
WGET = @WGET@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
diff --git a/sys/directsound/gstdirectsoundsrc.c b/sys/directsound/gstdirectsoundsrc.c
index 8f31f22..8687e86 100644
--- a/sys/directsound/gstdirectsoundsrc.c
+++ b/sys/directsound/gstdirectsoundsrc.c
@@ -213,8 +213,8 @@
"Capture from a soundcard via DirectSound",
"Joni Valtanen <joni.valtanen@movial.fi>");
- gst_element_class_add_pad_template (gstelement_class,
- gst_static_pad_template_get (&directsound_src_src_factory));
+ gst_element_class_add_static_pad_template (gstelement_class,
+ &directsound_src_src_factory);
g_object_class_install_property
(gobject_class, PROP_DEVICE_NAME,
diff --git a/sys/dshowdecwrapper/Makefile.in b/sys/dshowdecwrapper/Makefile.in
index 3693411..8f4f070 100644
--- a/sys/dshowdecwrapper/Makefile.in
+++ b/sys/dshowdecwrapper/Makefile.in
@@ -308,6 +308,8 @@
DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
DSYMUTIL = @DSYMUTIL@
DTLS_CFLAGS = @DTLS_CFLAGS@
DTLS_LIBS = @DTLS_LIBS@
@@ -523,6 +525,8 @@
LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
LIPO = @LIPO@
LN_S = @LN_S@
LOCALEDIR = @LOCALEDIR@
@@ -649,8 +653,6 @@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
SNDIO_LIBS = @SNDIO_LIBS@
@@ -695,6 +697,8 @@
WAYLAND_LIBS = @WAYLAND_LIBS@
WEBP_CFLAGS = @WEBP_CFLAGS@
WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
WGET = @WGET@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
diff --git a/sys/dshowsrcwrapper/Makefile.in b/sys/dshowsrcwrapper/Makefile.in
index 027dde7..b4076c6 100644
--- a/sys/dshowsrcwrapper/Makefile.in
+++ b/sys/dshowsrcwrapper/Makefile.in
@@ -219,6 +219,8 @@
DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
DSYMUTIL = @DSYMUTIL@
DTLS_CFLAGS = @DTLS_CFLAGS@
DTLS_LIBS = @DTLS_LIBS@
@@ -434,6 +436,8 @@
LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
LIPO = @LIPO@
LN_S = @LN_S@
LOCALEDIR = @LOCALEDIR@
@@ -560,8 +564,6 @@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
SNDIO_LIBS = @SNDIO_LIBS@
@@ -606,6 +608,8 @@
WAYLAND_LIBS = @WAYLAND_LIBS@
WEBP_CFLAGS = @WEBP_CFLAGS@
WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
WGET = @WGET@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
diff --git a/sys/dshowsrcwrapper/gstdshow.cpp b/sys/dshowsrcwrapper/gstdshow.cpp
index 705adc9..421e49c 100644
--- a/sys/dshowsrcwrapper/gstdshow.cpp
+++ b/sys/dshowsrcwrapper/gstdshow.cpp
@@ -406,6 +406,18 @@
if (gst_dshow_check_mediatype (mediatype, MEDIASUBTYPE_UYVY, FORMAT_VideoInfo))
return GST_VIDEO_FORMAT_UYVY;
+ if (gst_dshow_check_mediatype (mediatype, MEDIASUBTYPE_RGB32, FORMAT_VideoInfo))
+ return GST_VIDEO_FORMAT_BGRx;
+
+ if (gst_dshow_check_mediatype (mediatype, MEDIASUBTYPE_RGB565, FORMAT_VideoInfo))
+ return GST_VIDEO_FORMAT_BGR16;
+
+ if (gst_dshow_check_mediatype (mediatype, MEDIASUBTYPE_RGB555, FORMAT_VideoInfo))
+ return GST_VIDEO_FORMAT_BGR15;
+
+ if (gst_dshow_check_mediatype (mediatype, MEDIASUBTYPE_RGB8, FORMAT_VideoInfo))
+ return GST_VIDEO_FORMAT_GRAY8;
+
return GST_VIDEO_FORMAT_UNKNOWN;
}
@@ -449,6 +461,18 @@
case GST_VIDEO_FORMAT_UYVY:
video_caps = gst_caps_from_string (GST_VIDEO_CAPS_MAKE ("UYVY"));
break;
+ case GST_VIDEO_FORMAT_BGRx:
+ video_caps = gst_caps_from_string (GST_VIDEO_CAPS_MAKE ("BGRx"));
+ break;
+ case GST_VIDEO_FORMAT_BGR16:
+ video_caps = gst_caps_from_string (GST_VIDEO_CAPS_MAKE ("BGR16"));
+ break;
+ case GST_VIDEO_FORMAT_BGR15:
+ video_caps = gst_caps_from_string (GST_VIDEO_CAPS_MAKE ("BGR15"));
+ break;
+ case GST_VIDEO_FORMAT_GRAY8:
+ video_caps = gst_caps_from_string (GST_VIDEO_CAPS_MAKE ("GRAY8"));
+ break;
default:
break;
}
diff --git a/sys/dshowsrcwrapper/gstdshowaudiosrc.cpp b/sys/dshowsrcwrapper/gstdshowaudiosrc.cpp
index c4d33e5..d78f139 100644
--- a/sys/dshowsrcwrapper/gstdshowaudiosrc.cpp
+++ b/sys/dshowsrcwrapper/gstdshowaudiosrc.cpp
@@ -122,8 +122,7 @@
"Human-readable name of the sound device", NULL,
static_cast < GParamFlags > (G_PARAM_READWRITE)));
- gst_element_class_add_pad_template (gstelement_class,
- gst_static_pad_template_get (&src_template));
+ gst_element_class_add_static_pad_template (gstelement_class, &src_template);
gst_element_class_set_static_metadata (gstelement_class,
"Directshow audio capture source", "Source/Audio",
diff --git a/sys/dshowsrcwrapper/gstdshowfakesink.cpp b/sys/dshowsrcwrapper/gstdshowfakesink.cpp
index c524c7c..3c5fca8 100644
--- a/sys/dshowsrcwrapper/gstdshowfakesink.cpp
+++ b/sys/dshowsrcwrapper/gstdshowfakesink.cpp
@@ -46,12 +46,19 @@
HRESULT CDshowFakeSink::CheckMediaType (const CMediaType * pmt)
{
- if (pmt != NULL) {
- if (*pmt == m_MediaType)
- return S_OK;
- }
+ if (!IsEqualGUID(pmt->majortype, m_MediaType.majortype) ||
+ !IsEqualGUID(pmt->subtype, m_MediaType.subtype) ||
+ !IsEqualGUID(pmt->formattype, m_MediaType.formattype) ||
+ (pmt->cbFormat != m_MediaType.cbFormat))
+ return S_FALSE;
- return S_FALSE;
+ VIDEOINFOHEADER *info1 = (VIDEOINFOHEADER*)pmt->pbFormat;
+ VIDEOINFOHEADER *info2 = (VIDEOINFOHEADER*)m_MediaType.pbFormat;
+
+ if (memcmp(&info1->bmiHeader, &info2->bmiHeader, sizeof(BITMAPINFOHEADER)))
+ return S_FALSE;
+
+ return S_OK;
}
HRESULT CDshowFakeSink::DoRenderSample (IMediaSample * pMediaSample)
diff --git a/sys/dshowsrcwrapper/gstdshowvideosrc.cpp b/sys/dshowsrcwrapper/gstdshowvideosrc.cpp
index 7725fcb..9b478db 100644
--- a/sys/dshowsrcwrapper/gstdshowvideosrc.cpp
+++ b/sys/dshowsrcwrapper/gstdshowvideosrc.cpp
@@ -144,8 +144,7 @@
"Human-readable name of the sound device", NULL,
static_cast < GParamFlags > (G_PARAM_READWRITE)));
- gst_element_class_add_pad_template (gstelement_class,
- gst_static_pad_template_get (&src_template));
+ gst_element_class_add_static_pad_template (gstelement_class, &src_template);
gst_element_class_set_static_metadata (gstelement_class,
"DirectShow video capture source", "Source/Video",
@@ -683,6 +682,12 @@
src->filter_graph->Disconnect (input_pin);
}
+ hres = src->pVSC->SetFormat(pin_mediatype->mediatype);
+ if (FAILED (hres)) {
+ GST_ERROR ("Failed to set capture pin format (error=0x%x)", hres);
+ goto error;
+ }
+
hres = src->filter_graph->ConnectDirect (pin_mediatype->capture_pin,
input_pin, pin_mediatype->mediatype);
input_pin->Release ();
diff --git a/sys/dshowvideosink/Makefile.in b/sys/dshowvideosink/Makefile.in
index f38fed8..0714b41 100644
--- a/sys/dshowvideosink/Makefile.in
+++ b/sys/dshowvideosink/Makefile.in
@@ -219,6 +219,8 @@
DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
DSYMUTIL = @DSYMUTIL@
DTLS_CFLAGS = @DTLS_CFLAGS@
DTLS_LIBS = @DTLS_LIBS@
@@ -434,6 +436,8 @@
LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
LIPO = @LIPO@
LN_S = @LN_S@
LOCALEDIR = @LOCALEDIR@
@@ -560,8 +564,6 @@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
SNDIO_LIBS = @SNDIO_LIBS@
@@ -606,6 +608,8 @@
WAYLAND_LIBS = @WAYLAND_LIBS@
WEBP_CFLAGS = @WEBP_CFLAGS@
WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
WGET = @WGET@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
diff --git a/sys/dshowvideosink/dshowvideosink.cpp b/sys/dshowvideosink/dshowvideosink.cpp
index c3d4bc3..cc9d332 100644
--- a/sys/dshowvideosink/dshowvideosink.cpp
+++ b/sys/dshowvideosink/dshowvideosink.cpp
@@ -206,8 +206,7 @@
"Pioneers of the Inevitable <songbird@songbirdnest.com>, " \
"FLUENDO S.A. <support@fluendo.com>");
- gst_element_class_add_pad_template (e_class,
- gst_static_pad_template_get (&sink_template));
+ gst_element_class_add_static_pad_template (e_class, &sink_template);
e_class->change_state = GST_DEBUG_FUNCPTR (gst_dshowvideosink_change_state);
diff --git a/sys/dvb/Makefile.in b/sys/dvb/Makefile.in
index e7e76b6..8fa6e19 100644
--- a/sys/dvb/Makefile.in
+++ b/sys/dvb/Makefile.in
@@ -312,6 +312,8 @@
DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
DSYMUTIL = @DSYMUTIL@
DTLS_CFLAGS = @DTLS_CFLAGS@
DTLS_LIBS = @DTLS_LIBS@
@@ -527,6 +529,8 @@
LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
LIPO = @LIPO@
LN_S = @LN_S@
LOCALEDIR = @LOCALEDIR@
@@ -653,8 +657,6 @@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
SNDIO_LIBS = @SNDIO_LIBS@
@@ -699,6 +701,8 @@
WAYLAND_LIBS = @WAYLAND_LIBS@
WEBP_CFLAGS = @WEBP_CFLAGS@
WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
WGET = @WGET@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
diff --git a/sys/dvb/dvbbasebin.c b/sys/dvb/dvbbasebin.c
index a293617..c05f65e 100644
--- a/sys/dvb/dvbbasebin.c
+++ b/sys/dvb/dvbbasebin.c
@@ -335,10 +335,8 @@
element_class->request_new_pad = dvb_base_bin_request_new_pad;
element_class->release_pad = dvb_base_bin_release_pad;
- gst_element_class_add_pad_template (element_class,
- gst_static_pad_template_get (&program_template));
- gst_element_class_add_pad_template (element_class,
- gst_static_pad_template_get (&src_template));
+ gst_element_class_add_static_pad_template (element_class, &program_template);
+ gst_element_class_add_static_pad_template (element_class, &src_template);
gst_element_class_set_static_metadata (element_class, "DVB bin",
"Source/Bin/Video",
@@ -539,7 +537,7 @@
dvbbasebin->task =
gst_task_new ((GstTaskFunction) dvb_base_bin_task, dvbbasebin, NULL);
gst_task_set_lock (dvbbasebin->task, &dvbbasebin->lock);
- dvbbasebin->poll = gst_poll_new_timer ();
+ dvbbasebin->poll = gst_poll_new (TRUE);
}
static void
@@ -1175,14 +1173,13 @@
if (location == NULL)
goto no_location;
+ /* FIXME: here is where we parse channels.conf */
if (!set_properties_for_channel (GST_ELEMENT (dvbbasebin), location, &err))
goto set_properties_failed;
- /* FIXME: here is where we parse channels.conf */
-
g_free (location);
return TRUE;
-/* ERRORS */
+
post_error_and_exit:
{
gst_element_message_full (GST_ELEMENT (dvbbasebin), GST_MESSAGE_ERROR,
@@ -1200,6 +1197,9 @@
set_properties_failed:
{
g_free (location);
+ if (!err)
+ g_set_error (&err, GST_URI_ERROR, GST_URI_ERROR_BAD_REFERENCE,
+ "Could not find information for channel");
goto post_error_and_exit;
}
}
diff --git a/sys/dvb/gstdvbsrc.c b/sys/dvb/gstdvbsrc.c
index b93255f..3376a05 100644
--- a/sys/dvb/gstdvbsrc.c
+++ b/sys/dvb/gstdvbsrc.c
@@ -23,7 +23,7 @@
* SECTION:element-dvbsrc
*
* dvbsrc can be used to capture media from DVB cards. Supported DTV
- * broadcasting standards include DVB-T/C/S, ATSC ,ISDB-T and DTMB.
+ * broadcasting standards include DVB-T/C/S, ATSC, ISDB-T and DTMB.
*
* <refsect2>
* <title>Example launch line</title>
@@ -37,8 +37,11 @@
* gst-launch-1.0 dvbsrc polarity="h" frequency=11302000 symbol-rate=27500 diseqc-source=0 pids=50:102:103 ! mpegtsdemux name=demux ! queue max-size-buffers=0 max-size-time=0 ! mpeg2dec ! xvimagesink demux. ! queue max-size-buffers=0 max-size-time=0 ! mad ! alsasink
* ]| Captures and renders a transport stream from DVB card 0 that is a DVB-S card for a program at tuned frequency 11302000 kHz, symbol rate of 27500 kBd (kilo bauds) with PMT PID of 50 and elementary stream PIDs of 102 and 103.
* |[
- gst-launch-1.0 dvbsrc frequency=515142857 guard=16 trans-mode="8k" isdbt-layer-enabled=7 isdbt-partial-reception=1 isdbt-layera-fec="2/3" isdbt-layera-modulation="QPSK" isdbt-layera-segment-count=1 isdbt-layera-time-interleaving=4 isdbt-layerb-fec="3/4" isdbt-layerb-modulation="qam-64" isdbt-layerb-segment-count=12 isdbt-layerb-time-interleaving=2 isdbt-layerc-fec="1/2" isdbt-layerc-modulation="qam-64" isdbt-layerc-segment-count=0 isdbt-layerc-time-interleaving=0 delsys="isdb-t" ! tsdemux ! "video/x-h264" ! h264parse ! queue ! avdec_h264 ! videoconvert ! queue ! autovideosink
+ * gst-launch-1.0 dvbsrc frequency=515142857 guard=16 trans-mode="8k" isdbt-layer-enabled=7 isdbt-partial-reception=1 isdbt-layera-fec="2/3" isdbt-layera-modulation="QPSK" isdbt-layera-segment-count=1 isdbt-layera-time-interleaving=4 isdbt-layerb-fec="3/4" isdbt-layerb-modulation="qam-64" isdbt-layerb-segment-count=12 isdbt-layerb-time-interleaving=2 isdbt-layerc-fec="1/2" isdbt-layerc-modulation="qam-64" isdbt-layerc-segment-count=0 isdbt-layerc-time-interleaving=0 delsys="isdb-t" ! tsdemux ! "video/x-h264" ! h264parse ! queue ! avdec_h264 ! videoconvert ! queue ! autovideosink
* ]| Captures and renders the video track of TV Paraíba HD (Globo affiliate) in Campina Grande, Brazil. This is an ISDB-T (Brazilian ISDB-Tb variant) broadcast.
+ * |[
+ * gst-launch-1.0 dvbsrc frequency=503000000 delsys="atsc" modulation="8vsb" pids=48:49:52 ! decodebin name=dec dec. ! videoconvert ! autovideosink dec. ! audioconvert ! autoaudiosink
+ * ]| Captures and renders KOFY-HD in San Jose, California. This is an ATSC broadcast, PMT ID 48, Audio/Video elementary stream PIDs 49 and 52 respectively.
* </refsect2>
*/
@@ -551,11 +554,14 @@
static gboolean gst_dvbsrc_tune (GstDvbSrc * object);
static gboolean gst_dvbsrc_set_fe_params (GstDvbSrc * object,
struct dtv_properties *props);
+static void gst_dvbsrc_guess_delsys (GstDvbSrc * object);
static gboolean gst_dvbsrc_tune_fe (GstDvbSrc * object);
static void gst_dvbsrc_set_pes_filters (GstDvbSrc * object);
static void gst_dvbsrc_unset_pes_filters (GstDvbSrc * object);
static gboolean gst_dvbsrc_is_valid_modulation (guint delsys, guint mod);
+static gboolean gst_dvbsrc_is_valid_trans_mode (guint delsys, guint mode);
+static gboolean gst_dvbsrc_is_valid_bandwidth (guint delsys, guint bw);
/**
* This loop should be safe enough considering:
@@ -614,8 +620,7 @@
gstelement_class->change_state = GST_DEBUG_FUNCPTR (gst_dvbsrc_change_state);
- gst_element_class_add_pad_template (gstelement_class,
- gst_static_pad_template_get (&ts_src_factory));
+ gst_element_class_add_static_pad_template (gstelement_class, &ts_src_factory);
gst_element_class_set_static_metadata (gstelement_class, "DVB Source",
"Source/Video",
@@ -660,7 +665,9 @@
g_object_class_install_property (gobject_class, ARG_DVBSRC_PIDS,
g_param_spec_string ("pids", "pids",
- "Colon seperated list of pids (eg. 110:120)",
+ "Colon-separated list of PIDs (eg. 110:120) to capture. ACT and CAT "
+ "are automatically included but PMT should be added explicitly. "
+ "Special value 8192 gets full MPEG-TS",
DEFAULT_PIDS, GST_PARAM_MUTABLE_PLAYING | G_PARAM_WRITABLE));
g_object_class_install_property (gobject_class, ARG_DVBSRC_SYM_RATE,
@@ -681,11 +688,9 @@
"DiSEqC switch. Otherwise leave at -1 (disabled)", -1, 7,
DEFAULT_DISEQC_SRC, GST_PARAM_MUTABLE_PLAYING | G_PARAM_READWRITE));
- /* DVB-T, additional properties */
-
g_object_class_install_property (gobject_class, ARG_DVBSRC_BANDWIDTH_HZ,
g_param_spec_uint ("bandwidth-hz", "bandwidth-hz",
- "(DVB-T) Bandwidth in Hz", 0, G_MAXUINT, DEFAULT_BANDWIDTH_HZ,
+ "Channel bandwidth in Hz", 0, G_MAXUINT, DEFAULT_BANDWIDTH_HZ,
GST_PARAM_MUTABLE_PLAYING | G_PARAM_READWRITE));
#ifndef GST_REMOVE_DEPRECATED
@@ -797,7 +802,7 @@
g_object_class_install_property (gobject_class,
ARG_DVBSRC_ISDBT_LAYER_ENABLED,
g_param_spec_uint ("isdbt-layer-enabled",
- "ISB-T layer enabled",
+ "ISDB-T layer enabled",
"(ISDB-T) Layer Enabled (7 = All layers)", 1, 7,
DEFAULT_ISDBT_LAYER_ENABLED,
GST_PARAM_MUTABLE_PLAYING | G_PARAM_READWRITE));
@@ -805,7 +810,7 @@
g_object_class_install_property (gobject_class,
ARG_DVBSRC_ISDBT_PARTIAL_RECEPTION,
g_param_spec_int ("isdbt-partial-reception",
- "ISB-T partial reception",
+ "ISDB-T partial reception",
"(ISDB-T) Partial Reception (-1 = AUTO)", -1, 1,
DEFAULT_ISDBT_PARTIAL_RECEPTION,
GST_PARAM_MUTABLE_PLAYING | G_PARAM_READWRITE));
@@ -813,7 +818,7 @@
g_object_class_install_property (gobject_class,
ARG_DVBSRC_ISDBT_SOUND_BROADCASTING,
g_param_spec_int ("isdbt-sound-broadcasting",
- "ISB-T sound broadcasting",
+ "ISDB-T sound broadcasting",
"(ISDB-T) Sound Broadcasting", 0, 1,
DEFAULT_ISDBT_SOUND_BROADCASTING,
GST_PARAM_MUTABLE_PLAYING | G_PARAM_READWRITE));
@@ -821,7 +826,7 @@
g_object_class_install_property (gobject_class,
ARG_DVBSRC_ISDBT_SB_SUBCHANNEL_ID,
g_param_spec_int ("isdbt-sb-subchannel-id",
- "ISB-T SB subchannel ID",
+ "ISDB-T SB subchannel ID",
"(ISDB-T) SB Subchannel ID (-1 = AUTO)", -1, 41,
DEFAULT_ISDBT_SB_SEGMENT_IDX,
GST_PARAM_MUTABLE_PLAYING | G_PARAM_READWRITE));
@@ -829,7 +834,7 @@
g_object_class_install_property (gobject_class,
ARG_DVBSRC_ISDBT_SB_SEGMENT_IDX,
g_param_spec_int ("isdbt-sb-segment-idx",
- "ISB-T SB segment IDX",
+ "ISDB-T SB segment IDX",
"(ISDB-T) SB segment IDX", 0, 12,
DEFAULT_ISDBT_SB_SEGMENT_IDX,
GST_PARAM_MUTABLE_PLAYING | G_PARAM_READWRITE));
@@ -837,7 +842,7 @@
g_object_class_install_property (gobject_class,
ARG_DVBSRC_ISDBT_SB_SEGMENT_COUNT,
g_param_spec_uint ("isdbt-sb-segment-count",
- "ISB-T SB segment count",
+ "ISDB-T SB segment count",
"(ISDB-T) SB segment count", 1, 13,
DEFAULT_ISDBT_SB_SEGMENT_COUNT,
GST_PARAM_MUTABLE_PLAYING | G_PARAM_READWRITE));
@@ -884,7 +889,7 @@
g_object_class_install_property (gobject_class,
ARG_DVBSRC_ISDBT_LAYERA_SEGMENT_COUNT,
g_param_spec_int ("isdbt-layera-segment-count",
- "ISB-T layer A segment count",
+ "ISDB-T layer A segment count",
"(ISDB-T) Layer A segment count (-1 = AUTO)", -1, 13,
DEFAULT_ISDBT_LAYERA_SEGMENT_COUNT,
GST_PARAM_MUTABLE_PLAYING | G_PARAM_READWRITE));
@@ -892,7 +897,7 @@
g_object_class_install_property (gobject_class,
ARG_DVBSRC_ISDBT_LAYERB_SEGMENT_COUNT,
g_param_spec_int ("isdbt-layerb-segment-count",
- "ISB-T layer B segment count",
+ "ISDB-T layer B segment count",
"(ISDB-T) Layer B segment count (-1 = AUTO)", -1, 13,
DEFAULT_ISDBT_LAYERB_SEGMENT_COUNT,
GST_PARAM_MUTABLE_PLAYING | G_PARAM_READWRITE));
@@ -900,7 +905,7 @@
g_object_class_install_property (gobject_class,
ARG_DVBSRC_ISDBT_LAYERC_SEGMENT_COUNT,
g_param_spec_int ("isdbt-layerc-segment-count",
- "ISB-T layer C segment count",
+ "ISDB-T layer C segment count",
"(ISDB-T) Layer C segment count (-1 = AUTO)", -1, 13,
DEFAULT_ISDBT_LAYERC_SEGMENT_COUNT,
GST_PARAM_MUTABLE_PLAYING | G_PARAM_READWRITE));
@@ -908,7 +913,7 @@
g_object_class_install_property (gobject_class,
ARG_DVBSRC_ISDBT_LAYERA_TIME_INTERLEAVING,
g_param_spec_int ("isdbt-layera-time-interleaving",
- "ISB-T layer A time interleaving ",
+ "ISDB-T layer A time interleaving",
"(ISDB-T) Layer A time interleaving (-1 = AUTO)", -1, 8,
DEFAULT_ISDBT_LAYERA_TIME_INTERLEAVING,
GST_PARAM_MUTABLE_PLAYING | G_PARAM_READWRITE));
@@ -916,7 +921,7 @@
g_object_class_install_property (gobject_class,
ARG_DVBSRC_ISDBT_LAYERB_TIME_INTERLEAVING,
g_param_spec_int ("isdbt-layerb-time-interleaving",
- "ISB-T layer B time interleaving ",
+ "ISDB-T layer B time interleaving",
"(ISDB-T) Layer B time interleaving (-1 = AUTO)", -1, 8,
DEFAULT_ISDBT_LAYERB_TIME_INTERLEAVING,
GST_PARAM_MUTABLE_PLAYING | G_PARAM_READWRITE));
@@ -924,7 +929,7 @@
g_object_class_install_property (gobject_class,
ARG_DVBSRC_ISDBT_LAYERC_TIME_INTERLEAVING,
g_param_spec_int ("isdbt-layerc-time-interleaving",
- "ISB-T layer C time interleaving ",
+ "ISDB-T layer C time interleaving",
"(ISDB-T) Layer C time interleaving (-1 = AUTO)", -1, 8,
DEFAULT_ISDBT_LAYERC_TIME_INTERLEAVING,
GST_PARAM_MUTABLE_PLAYING | G_PARAM_READWRITE));
@@ -1013,7 +1018,6 @@
{
int i = 0;
- GST_INFO_OBJECT (object, "gst_dvbsrc_init");
GST_DEBUG_OBJECT (object, "Kernel DVB API version %d.%d", DVB_API_VERSION,
DVB_API_VERSION_MINOR);
@@ -1025,13 +1029,15 @@
object->fd_frontend = -1;
object->fd_dvr = -1;
+ object->supported_delsys = NULL;
for (i = 0; i < MAX_FILTERS; i++) {
- object->pids[i] = G_MAXUINT16;
object->fd_filters[i] = -1;
}
+
/* PID 8192 on DVB gets the whole transport stream */
object->pids[0] = 8192;
+ object->pids[1] = G_MAXUINT16;
object->dvb_buffer_size = DEFAULT_DVB_BUFFER_SIZE;
object->adapter_number = DEFAULT_ADAPTER;
object->frontend_number = DEFAULT_FRONTEND;
@@ -1090,48 +1096,46 @@
static void
gst_dvbsrc_set_pids (GstDvbSrc * dvbsrc, const gchar * pid_string)
{
+ int pid = 0;
+ int pid_count;
+ gchar **pids;
+ char **tmp;
+
if (!strcmp (pid_string, "8192")) {
- /* get the whole ts */
- int pid_count = 1;
+ /* get the whole TS */
dvbsrc->pids[0] = 8192;
- while (pid_count < MAX_FILTERS) {
- dvbsrc->pids[pid_count++] = G_MAXUINT16;
- }
- } else {
- int pid = 0;
- int pid_count;
- gchar **pids;
- char **tmp;
-
- tmp = pids = g_strsplit (pid_string, ":", MAX_FILTERS);
-
- /* always add the PAT and CAT pids */
- dvbsrc->pids[0] = 0;
- dvbsrc->pids[1] = 1;
-
- pid_count = 2;
- while (*pids != NULL && pid_count < MAX_FILTERS) {
- pid = strtol (*pids, NULL, 0);
- if (pid > 1 && pid <= 8192) {
- GST_INFO_OBJECT (dvbsrc, "\tParsed Pid: %d", pid);
- dvbsrc->pids[pid_count] = pid;
- pid_count++;
- }
- pids++;
- }
- while (pid_count < MAX_FILTERS) {
- dvbsrc->pids[pid_count++] = G_MAXUINT16;
- }
-
- g_strfreev (tmp);
+ dvbsrc->pids[1] = G_MAXUINT16;
+ goto done;
}
- /* if we are in playing or paused, then set filters now */
- GST_INFO_OBJECT (dvbsrc, "checking if playing for setting pes filters");
- if (GST_ELEMENT (dvbsrc)->current_state == GST_STATE_PLAYING ||
- GST_ELEMENT (dvbsrc)->current_state == GST_STATE_PAUSED) {
- GST_INFO_OBJECT (dvbsrc, "Setting pes filters now");
+
+ /* always add the PAT and CAT pids */
+ dvbsrc->pids[0] = 0;
+ dvbsrc->pids[1] = 1;
+ pid_count = 2;
+
+ tmp = pids = g_strsplit (pid_string, ":", MAX_FILTERS);
+
+ while (*pids != NULL && pid_count < MAX_FILTERS) {
+ pid = strtol (*pids, NULL, 0);
+ if (pid > 1 && pid <= 8192) {
+ GST_INFO_OBJECT (dvbsrc, "Parsed PID: %d", pid);
+ dvbsrc->pids[pid_count] = pid;
+ pid_count++;
+ }
+ pids++;
+ }
+
+ g_strfreev (tmp);
+
+ if (pid_count < MAX_FILTERS)
+ dvbsrc->pids[pid_count] = G_MAXUINT16;
+
+done:
+ if (GST_ELEMENT (dvbsrc)->current_state > GST_STATE_READY) {
+ GST_INFO_OBJECT (dvbsrc, "Setting PES filters now");
gst_dvbsrc_set_pes_filters (dvbsrc);
- }
+ } else
+ GST_INFO_OBJECT (dvbsrc, "Not setting PES filters because state < PAUSED");
}
static void
@@ -1169,9 +1173,8 @@
s = g_value_get_string (value);
if (s != NULL) {
object->pol = (s[0] == 'h' || s[0] == 'H') ? DVB_POL_H : DVB_POL_V;
- GST_INFO_OBJECT (object, "Set Property: ARG_DVBSRC_POLARITY");
- GST_INFO_OBJECT (object, "\t%s", (s[0] == 'h'
- || s[0] == 'H') ? "DVB_POL_H" : "DVB_POL_V");
+ GST_INFO_OBJECT (object, "Set Property: ARG_DVBSRC_POLARITY to %s",
+ object->pol ? "Vertical" : "Horizontal");
}
break;
}
@@ -1574,6 +1577,11 @@
return FALSE;
}
+ if (object->supported_delsys)
+ goto delsys_detection_done;
+
+ /* Perform delivery system autodetection */
+
GST_DEBUG_OBJECT (object, "Device opened, querying information");
LOOP_WHILE_EINTR (err, ioctl (object->fd_frontend, FE_GET_INFO, &fe_info));
@@ -1587,7 +1595,7 @@
return FALSE;
}
- GST_DEBUG_OBJECT (object, "check delivery systems");
+ GST_DEBUG_OBJECT (object, "Get list of supported delivery systems");
dvb_prop[0].cmd = DTV_ENUM_DELSYS;
props.num = 1;
@@ -1604,7 +1612,7 @@
return FALSE;
}
- GST_DEBUG_OBJECT (object, "Got information about adapter : %s", fe_info.name);
+ GST_INFO_OBJECT (object, "Got information about adapter: %s", fe_info.name);
adapter_name = g_strdup (fe_info.name);
@@ -1621,117 +1629,136 @@
/* Capability delivery systems */
if (gst_dvbsrc_check_delsys (&dvb_prop[0], SYS_DVBC_ANNEX_A)) {
+ object->supported_delsys = g_list_append (object->supported_delsys,
+ GINT_TO_POINTER (SYS_DVBC_ANNEX_A));
gst_structure_set (adapter_structure, "dvb-c-a", G_TYPE_STRING,
"DVB-C ANNEX A", NULL);
- object->best_guess_delsys = SYS_DVBC_ANNEX_A;
}
if (gst_dvbsrc_check_delsys (&dvb_prop[0], SYS_DVBC_ANNEX_B)) {
+ object->supported_delsys = g_list_append (object->supported_delsys,
+ GINT_TO_POINTER (SYS_DVBC_ANNEX_B));
gst_structure_set (adapter_structure, "dvb-c-b", G_TYPE_STRING,
"DVB-C ANNEX C", NULL);
- object->best_guess_delsys = SYS_DVBC_ANNEX_B;
}
if (gst_dvbsrc_check_delsys (&dvb_prop[0], SYS_DVBT)) {
+ object->supported_delsys = g_list_append (object->supported_delsys,
+ GINT_TO_POINTER (SYS_DVBT));
gst_structure_set (adapter_structure, "dvb-t", G_TYPE_STRING, "DVB-T",
NULL);
- object->best_guess_delsys = SYS_DVBT;
}
if (gst_dvbsrc_check_delsys (&dvb_prop[0], SYS_DSS)) {
+ object->supported_delsys = g_list_append (object->supported_delsys,
+ GINT_TO_POINTER (SYS_DSS));
gst_structure_set (adapter_structure, "dss", G_TYPE_STRING, "DSS", NULL);
- object->best_guess_delsys = SYS_DSS;
}
if (gst_dvbsrc_check_delsys (&dvb_prop[0], SYS_DVBS)) {
+ object->supported_delsys = g_list_append (object->supported_delsys,
+ GINT_TO_POINTER (SYS_DVBS));
gst_structure_set (adapter_structure, "dvb-s", G_TYPE_STRING, "DVB-S",
NULL);
- object->best_guess_delsys = SYS_DVBS;
}
if (gst_dvbsrc_check_delsys (&dvb_prop[0], SYS_DVBS2)) {
+ object->supported_delsys = g_list_append (object->supported_delsys,
+ GINT_TO_POINTER (SYS_DVBS2));
gst_structure_set (adapter_structure, "dvb-s2", G_TYPE_STRING, "DVB-S2",
NULL);
- object->best_guess_delsys = SYS_DVBS2;
}
if (gst_dvbsrc_check_delsys (&dvb_prop[0], SYS_DVBH)) {
+ object->supported_delsys = g_list_append (object->supported_delsys,
+ GINT_TO_POINTER (SYS_DVBH));
gst_structure_set (adapter_structure, "dvb-h", G_TYPE_STRING, "DVB-H",
NULL);
- object->best_guess_delsys = SYS_DVBH;
}
if (gst_dvbsrc_check_delsys (&dvb_prop[0], SYS_ISDBT)) {
+ object->supported_delsys = g_list_append (object->supported_delsys,
+ GINT_TO_POINTER (SYS_ISDBT));
gst_structure_set (adapter_structure, "isdb-t", G_TYPE_STRING, "ISDB-T",
NULL);
- object->best_guess_delsys = SYS_ISDBT;
}
if (gst_dvbsrc_check_delsys (&dvb_prop[0], SYS_ISDBS)) {
+ object->supported_delsys = g_list_append (object->supported_delsys,
+ GINT_TO_POINTER (SYS_ISDBS));
gst_structure_set (adapter_structure, "isdb-s", G_TYPE_STRING, "ISDB-S",
NULL);
- object->best_guess_delsys = SYS_ISDBS;
}
if (gst_dvbsrc_check_delsys (&dvb_prop[0], SYS_ISDBC)) {
+ object->supported_delsys = g_list_append (object->supported_delsys,
+ GINT_TO_POINTER (SYS_ISDBC));
gst_structure_set (adapter_structure, "isdb-c", G_TYPE_STRING, "ISDB-C",
NULL);
- object->best_guess_delsys = SYS_ISDBC;
}
if (gst_dvbsrc_check_delsys (&dvb_prop[0], SYS_ATSC)) {
+ object->supported_delsys = g_list_append (object->supported_delsys,
+ GINT_TO_POINTER (SYS_ATSC));
gst_structure_set (adapter_structure, "atsc", G_TYPE_STRING, "ATSC", NULL);
- object->best_guess_delsys = SYS_ATSC;
}
if (gst_dvbsrc_check_delsys (&dvb_prop[0], SYS_ATSCMH)) {
+ object->supported_delsys = g_list_append (object->supported_delsys,
+ GINT_TO_POINTER (SYS_ATSCMH));
gst_structure_set (adapter_structure, "atsc-mh", G_TYPE_STRING, "ATSC-MH",
NULL);
- object->best_guess_delsys = SYS_ATSCMH;
}
#if HAVE_V5_MINOR(7)
if (gst_dvbsrc_check_delsys (&dvb_prop[0], SYS_DTMB)) {
+ object->supported_delsys = g_list_append (object->supported_delsys,
+ GINT_TO_POINTER (SYS_DTMB));
gst_structure_set (adapter_structure, "dtmb", G_TYPE_STRING, "DTMB", NULL);
- object->best_guess_delsys = SYS_DTMB;
}
#endif
if (gst_dvbsrc_check_delsys (&dvb_prop[0], SYS_CMMB)) {
+ object->supported_delsys = g_list_append (object->supported_delsys,
+ GINT_TO_POINTER (SYS_CMMB));
gst_structure_set (adapter_structure, "cmmb", G_TYPE_STRING, "CMMB", NULL);
- object->best_guess_delsys = SYS_CMMB;
}
if (gst_dvbsrc_check_delsys (&dvb_prop[0], SYS_DAB)) {
+ object->supported_delsys = g_list_append (object->supported_delsys,
+ GINT_TO_POINTER (SYS_DAB));
gst_structure_set (adapter_structure, "dab", G_TYPE_STRING, "DAB", NULL);
- object->best_guess_delsys = SYS_DAB;
}
if (gst_dvbsrc_check_delsys (&dvb_prop[0], SYS_DVBT2)) {
+ object->supported_delsys = g_list_append (object->supported_delsys,
+ GINT_TO_POINTER (SYS_DVBT2));
gst_structure_set (adapter_structure, "dvb-t2", G_TYPE_STRING, "DVB-T2",
NULL);
- object->best_guess_delsys = SYS_DVBT2;
}
if (gst_dvbsrc_check_delsys (&dvb_prop[0], SYS_TURBO)) {
+ object->supported_delsys = g_list_append (object->supported_delsys,
+ GINT_TO_POINTER (SYS_TURBO));
gst_structure_set (adapter_structure, "turbo", G_TYPE_STRING, "TURBO",
NULL);
- object->best_guess_delsys = SYS_TURBO;
}
if (gst_dvbsrc_check_delsys (&dvb_prop[0], SYS_DVBC_ANNEX_C)) {
+ object->supported_delsys = g_list_append (object->supported_delsys,
+ GINT_TO_POINTER (SYS_DVBC_ANNEX_C));
gst_structure_set (adapter_structure, "dvb-c-c", G_TYPE_STRING,
"DVB-C ANNEX C", NULL);
- object->best_guess_delsys = SYS_DVBC_ANNEX_C;
}
- GST_INFO_OBJECT (object, "DVB card: %s ", adapter_name);
GST_TRACE_OBJECT (object, "%s description: %" GST_PTR_FORMAT, adapter_name,
adapter_structure);
gst_element_post_message (GST_ELEMENT_CAST (object), gst_message_new_element
(GST_OBJECT (object), adapter_structure));
- g_free (frontend_dev);
g_free (adapter_name);
+delsys_detection_done:
+ g_free (frontend_dev);
+
return TRUE;
}
@@ -1743,7 +1770,7 @@
dvr_dev = g_strdup_printf ("/dev/dvb/adapter%d/dvr%d",
object->adapter_number, object->frontend_number);
- GST_INFO_OBJECT (object, "Using dvr device: %s", dvr_dev);
+ GST_INFO_OBJECT (object, "Using DVR device: %s", dvr_dev);
/* open DVR */
if ((object->fd_dvr = open (dvr_dev, O_RDONLY | O_NONBLOCK)) < 0) {
@@ -1763,7 +1790,7 @@
}
g_free (dvr_dev);
- GST_INFO_OBJECT (object, "Setting DVB kernel buffer size to %d ",
+ GST_INFO_OBJECT (object, "Setting DVB kernel buffer size to %d",
object->dvb_buffer_size);
LOOP_WHILE_EINTR (err, ioctl (object->fd_dvr, DMX_SET_BUFFER_SIZE,
object->dvb_buffer_size));
@@ -1931,7 +1958,10 @@
switch (transition) {
case GST_STATE_CHANGE_NULL_TO_READY:
/* open frontend then close it again, just so caps sent */
- gst_dvbsrc_open_frontend (src, FALSE);
+ if (!gst_dvbsrc_open_frontend (src, FALSE)) {
+ GST_ERROR_OBJECT (src, "Could not open frontend device");
+ ret = GST_STATE_CHANGE_FAILURE;
+ }
if (src->fd_frontend) {
close (src->fd_frontend);
}
@@ -1949,35 +1979,35 @@
{
GstDvbSrc *src = GST_DVBSRC (bsrc);
- gst_dvbsrc_open_frontend (src, TRUE);
- if (!gst_dvbsrc_tune (src)) {
- GST_ERROR_OBJECT (src, "Not able to lock on to the dvb channel");
- gst_dvbsrc_unset_pes_filters (src);
- close (src->fd_frontend);
+ if (!gst_dvbsrc_open_frontend (src, TRUE)) {
+ GST_ERROR_OBJECT (src, "Could not open frontend device");
return FALSE;
}
+ if (!gst_dvbsrc_tune (src)) {
+ GST_ERROR_OBJECT (src, "Not able to lock on to the dvb channel");
+ goto fail;
+ }
if (!gst_dvbsrc_open_dvr (src)) {
- GST_ERROR_OBJECT (src, "Not able to open dvr_device");
- /* unset filters also */
- gst_dvbsrc_unset_pes_filters (src);
- close (src->fd_frontend);
- return FALSE;
+ GST_ERROR_OBJECT (src, "Not able to open DVR device");
+ goto fail;
}
if (!(src->poll = gst_poll_new (TRUE))) {
GST_ELEMENT_ERROR (src, RESOURCE, OPEN_READ_WRITE, (NULL),
- ("could not create an fdset: %s (%d)", g_strerror (errno), errno));
- /* unset filters also */
- gst_dvbsrc_unset_pes_filters (src);
- close (src->fd_frontend);
- return FALSE;
- } else {
- gst_poll_fd_init (&src->poll_fd_dvr);
- src->poll_fd_dvr.fd = src->fd_dvr;
- gst_poll_add_fd (src->poll, &src->poll_fd_dvr);
- gst_poll_fd_ctl_read (src->poll, &src->poll_fd_dvr, TRUE);
+ ("Could not create an fd set: %s (%d)", g_strerror (errno), errno));
+ goto fail;
}
+ gst_poll_fd_init (&src->poll_fd_dvr);
+ src->poll_fd_dvr.fd = src->fd_dvr;
+ gst_poll_add_fd (src->poll, &src->poll_fd_dvr);
+ gst_poll_fd_ctl_read (src->poll, &src->poll_fd_dvr, TRUE);
+
return TRUE;
+
+fail:
+ gst_dvbsrc_unset_pes_filters (src);
+ close (src->fd_frontend);
+ return FALSE;
}
static gboolean
@@ -1986,6 +2016,8 @@
GstDvbSrc *src = GST_DVBSRC (bsrc);
gst_dvbsrc_close_devices (src);
+ g_list_free (src->supported_delsys);
+ src->supported_delsys = NULL;
if (src->poll) {
gst_poll_free (src->poll);
src->poll = NULL;
@@ -2019,6 +2051,41 @@
}
static gboolean
+gst_dvbsrc_is_valid_trans_mode (guint delsys, guint mode)
+{
+ /* FIXME: check valid transmission modes for other broadcast standards */
+ switch (delsys) {
+ case SYS_DVBT:
+ if (mode == TRANSMISSION_MODE_AUTO || mode == TRANSMISSION_MODE_2K ||
+ mode == TRANSMISSION_MODE_8K) {
+ return TRUE;
+ }
+ break;
+ case SYS_DVBT2:
+ if (mode == TRANSMISSION_MODE_AUTO || mode == TRANSMISSION_MODE_1K ||
+ mode == TRANSMISSION_MODE_2K || mode == TRANSMISSION_MODE_4K ||
+ mode == TRANSMISSION_MODE_8K || mode == TRANSMISSION_MODE_16K ||
+ mode == TRANSMISSION_MODE_32K) {
+ return TRUE;
+ }
+ break;
+#if HAVE_V5_MINOR(7)
+ case SYS_DTMB:
+ if (mode == TRANSMISSION_MODE_AUTO || mode == TRANSMISSION_MODE_C1 ||
+ mode == TRANSMISSION_MODE_C3780) {
+ return TRUE;
+ }
+ break;
+#endif
+ default:
+ GST_FIXME ("No delsys/transmission-mode sanity checks implemented for "
+ "this delivery system");
+ return TRUE;
+ }
+ return FALSE;
+}
+
+static gboolean
gst_dvbsrc_is_valid_modulation (guint delsys, guint mod)
{
/* FIXME: check valid modulations for other broadcast standards */
@@ -2028,6 +2095,18 @@
mod == QAM_64 || mod == DQPSK)
return TRUE;
break;
+ case SYS_ATSC:
+ if (mod == VSB_8 || mod == VSB_16)
+ return TRUE;
+ break;
+ case SYS_DVBT:
+ if (mod == QPSK || mod == QAM_16 || mod == QAM_64)
+ return TRUE;
+ break;
+ case SYS_DVBT2:
+ if (mod == QPSK || mod == QAM_16 || mod == QAM_64 || mod == QAM_256)
+ return TRUE;
+ break;
default:
GST_FIXME ("No delsys/modulation sanity checks implemented for this "
"delivery system");
@@ -2037,6 +2116,37 @@
}
static gboolean
+gst_dvbsrc_is_valid_bandwidth (guint delsys, guint bw)
+{
+ /* FIXME: check valid bandwidth values for other broadcast standards */
+
+ /* Bandwidth == 0 means auto, this should be valid for every delivery system
+ * for which the bandwidth parameter makes sense */
+
+ switch (delsys) {
+ case SYS_DVBT:
+ if (bw == 6000000 || bw == 7000000 || bw == 8000000 || bw == 0)
+ return TRUE;
+ break;
+ case SYS_DVBT2:
+ if (bw == 1172000 || bw == 5000000 || bw == 6000000 || bw == 0 ||
+ bw == 7000000 || bw == 8000000 || bw == 10000000) {
+ return TRUE;
+ }
+ break;
+ case SYS_ISDBT:
+ if (bw == 6000000 || bw == 0)
+ return TRUE;
+ break;
+ default:
+ GST_FIXME ("No bandwidth sanity checks implemented for this "
+ "delivery system");
+ return TRUE;
+ }
+ return FALSE;
+}
+
+static gboolean
gst_dvbsrc_get_size (GstBaseSrc * src, guint64 * size)
{
return FALSE;
@@ -2055,7 +2165,7 @@
gst_dvbsrc_output_frontend_stats (GstDvbSrc * src)
{
fe_status_t status;
- guint16 snr, _signal;
+ guint16 snr, signal;
guint32 ber, bad_blks;
GstMessage *message;
GstStructure *structure;
@@ -2063,36 +2173,41 @@
gint err;
LOOP_WHILE_EINTR (err, ioctl (fe_fd, FE_READ_STATUS, &status));
- if (err)
- goto error_out;
+ if (!err) {
+ structure = gst_structure_new ("dvb-frontend-stats",
+ "status", G_TYPE_INT, status,
+ "lock", G_TYPE_BOOLEAN, status & FE_HAS_LOCK, NULL);
+ } else {
+ GST_ERROR_OBJECT (src, "Error getting frontend status: '%s'",
+ g_strerror (errno));
+ return;
+ }
- LOOP_WHILE_EINTR (err, ioctl (fe_fd, FE_READ_SIGNAL_STRENGTH, &_signal));
- if (err)
- goto error_out;
+ errno = 0;
+ LOOP_WHILE_EINTR (err, ioctl (fe_fd, FE_READ_SIGNAL_STRENGTH, &signal));
+ if (!err)
+ gst_structure_set (structure, "signal", G_TYPE_INT, signal, NULL);
LOOP_WHILE_EINTR (err, ioctl (fe_fd, FE_READ_SNR, &snr));
- if (err)
- goto error_out;
+ if (!err)
+ gst_structure_set (structure, "snr", G_TYPE_INT, snr, NULL);
LOOP_WHILE_EINTR (err, ioctl (fe_fd, FE_READ_BER, &ber));
- if (err)
- goto error_out;
+ if (!err)
+ gst_structure_set (structure, "ber", G_TYPE_INT, ber, NULL);
LOOP_WHILE_EINTR (err, ioctl (fe_fd, FE_READ_UNCORRECTED_BLOCKS, &bad_blks));
- if (err)
- goto error_out;
+ if (!err)
+ gst_structure_set (structure, "unc", G_TYPE_INT, bad_blks, NULL);
- structure = gst_structure_new ("dvb-frontend-stats", "status", G_TYPE_INT,
- status, "signal", G_TYPE_INT, _signal, "snr", G_TYPE_INT, snr,
- "ber", G_TYPE_INT, ber, "unc", G_TYPE_INT, bad_blks,
- "lock", G_TYPE_BOOLEAN, status & FE_HAS_LOCK, NULL);
+ if (errno)
+ GST_WARNING_OBJECT (src,
+ "There were errors getting frontend status information: '%s'",
+ g_strerror (errno));
+
+ GST_INFO_OBJECT (src, "Frontend stats: %" GST_PTR_FORMAT, structure);
message = gst_message_new_element (GST_OBJECT (src), structure);
gst_element_post_message (GST_ELEMENT (src), message);
- return;
-
-error_out:
- GST_WARNING_OBJECT (src, "Failed to get statistics from the device: %s",
- g_strerror (errno));
}
struct diseqc_cmd
@@ -2186,12 +2301,10 @@
static gboolean
gst_dvbsrc_tune_fe (GstDvbSrc * object)
{
- GstPoll *poll_set;
- GstPollFD fe_fd;
fe_status_t status;
struct dtv_properties props;
struct dtv_property dvb_prop[NUM_DTV_PROPS];
- GstClockTimeDiff elapsed_time, timeout_step = 500 * GST_MSECOND;
+ GstClockTimeDiff elapsed_time;
GstClockTime start;
gint err;
@@ -2202,46 +2315,27 @@
return FALSE;
}
- GST_DEBUG_OBJECT (object, "check delivery systems");
-
- dvb_prop[0].cmd = DTV_ENUM_DELSYS;
- props.num = 1;
- props.props = dvb_prop;
-
- LOOP_WHILE_EINTR (err, ioctl (object->fd_frontend, FE_GET_PROPERTY, &props));
- if (err) {
- GST_WARNING_OBJECT (object, "Error enumerating delsys: %s",
- g_strerror (errno));
-
- return FALSE;
- }
-
- /* If there's no delivery system set yet. Choose the
- * last from the list of frontend supported ones */
- if (object->delsys == SYS_UNDEFINED) {
- object->delsys = object->best_guess_delsys;
- } else if (!gst_dvbsrc_check_delsys (&dvb_prop[0], object->delsys)) {
- GST_WARNING_OBJECT (object, "Delsys fail %u", object->delsys);
- return FALSE;
+ /* If set, confirm the choosen delivery system is actually
+ * supported by the hardware */
+ if (object->delsys != SYS_UNDEFINED) {
+ GST_DEBUG_OBJECT (object, "Confirming delsys '%u' is supported",
+ object->delsys);
+ if (!g_list_find (object->supported_delsys,
+ GINT_TO_POINTER (object->delsys))) {
+ GST_WARNING_OBJECT (object, "Adapter does not support delsys '%u'",
+ object->delsys);
+ return FALSE;
+ }
}
gst_dvbsrc_unset_pes_filters (object);
g_mutex_lock (&object->tune_mutex);
- gst_poll_fd_init (&fe_fd);
- fe_fd.fd = object->fd_frontend;
- poll_set = gst_poll_new (TRUE);
-
- if (!gst_poll_add_fd (poll_set, &fe_fd)) {
- GST_WARNING_OBJECT (object, "Could not add frontend fd to poll set");
- goto fail;
- }
-
- gst_poll_fd_ctl_read (poll_set, &fe_fd, TRUE);
-
memset (dvb_prop, 0, sizeof (dvb_prop));
dvb_prop[0].cmd = DTV_CLEAR;
+ props.num = 1;
+ props.props = dvb_prop;
LOOP_WHILE_EINTR (err, ioctl (object->fd_frontend, FE_SET_PROPERTY, &props));
if (err) {
@@ -2265,21 +2359,11 @@
}
g_signal_emit (object, gst_dvbsrc_signals[SIGNAL_TUNING_START], 0);
-
- LOOP_WHILE_EINTR (err, ioctl (object->fd_frontend, FE_READ_STATUS, &status));
- if (err) {
- GST_WARNING_OBJECT (object, "Failed querying frontend for tuning status:"
- " %s (%d)", g_strerror (errno), errno);
- goto fail_with_signal;
- }
-
- /* signal locking loop */
elapsed_time = 0;
start = gst_util_get_timestamp ();
- while (!(status & FE_HAS_LOCK) && elapsed_time <= object->tuning_timeout) {
- if (gst_poll_wait (poll_set, timeout_step) == -1)
- goto fail_with_signal;
+ /* signal locking loop */
+ do {
LOOP_WHILE_EINTR (err, ioctl (object->fd_frontend, FE_READ_STATUS,
&status));
if (err) {
@@ -2292,9 +2376,9 @@
if (object->tuning_timeout)
elapsed_time = GST_CLOCK_DIFF (start, gst_util_get_timestamp ());
GST_LOG_OBJECT (object,
- "Tuning. Time elapsed %" GST_STIME_FORMAT " Limit %" G_GUINT64_FORMAT,
- GST_STIME_ARGS (elapsed_time), object->tuning_timeout);
- }
+ "Tuning. Time elapsed %" GST_STIME_FORMAT " Limit %" GST_TIME_FORMAT,
+ GST_STIME_ARGS (elapsed_time), GST_TIME_ARGS (object->tuning_timeout));
+ } while (!(status & FE_HAS_LOCK) && elapsed_time <= object->tuning_timeout);
if (!(status & FE_HAS_LOCK)) {
GST_WARNING_OBJECT (object,
@@ -2307,7 +2391,6 @@
g_signal_emit (object, gst_dvbsrc_signals[SIGNAL_TUNING_DONE], 0);
GST_DEBUG_OBJECT (object, "Successfully set frontend tuning params");
- gst_poll_free (poll_set);
g_mutex_unlock (&object->tune_mutex);
return TRUE;
@@ -2315,11 +2398,80 @@
g_signal_emit (object, gst_dvbsrc_signals[SIGNAL_TUNING_FAIL], 0);
fail:
GST_WARNING_OBJECT (object, "Could not tune to desired frequency");
- gst_poll_free (poll_set);
g_mutex_unlock (&object->tune_mutex);
return FALSE;
}
+static void
+gst_dvbsrc_guess_delsys (GstDvbSrc * object)
+{
+ GList *valid, *candidate;
+ guint alternatives;
+
+ if (g_list_length (object->supported_delsys) == 1) {
+ object->delsys = GPOINTER_TO_INT (object->supported_delsys->data);
+ GST_DEBUG_OBJECT (object, "Adapter supports a single delsys: '%u'",
+ object->delsys);
+ goto autoselection_done;
+ }
+
+ /* Automatic delivery system selection based on known-correct
+ * parameter combinations */
+
+ valid = g_list_copy (object->supported_delsys);
+
+ candidate = valid;
+ while (candidate) {
+ GList *next = candidate->next;
+ if (!gst_dvbsrc_is_valid_modulation (GPOINTER_TO_INT (candidate->data),
+ object->modulation) ||
+ !gst_dvbsrc_is_valid_trans_mode (GPOINTER_TO_INT (candidate->data),
+ object->transmission_mode) ||
+ !gst_dvbsrc_is_valid_bandwidth (GPOINTER_TO_INT (candidate->data),
+ object->bandwidth)) {
+ valid = g_list_delete_link (valid, candidate);
+ }
+ candidate = next;
+ }
+
+ alternatives = g_list_length (valid);
+
+ switch (alternatives) {
+ case 0:
+ GST_WARNING_OBJECT (object, "Delivery system autodetection provided no "
+ "valid alternative");
+ candidate = g_list_last (object->supported_delsys);
+ break;
+ case 1:
+ candidate = g_list_last (valid);
+ GST_DEBUG_OBJECT (object, "Delivery system autodetection provided only "
+ "one valid alternative: '%d'", GPOINTER_TO_INT (candidate->data));
+ break;
+ default:
+ /* More than one alternative. Selection based on best guess */
+ if (g_list_find (valid, GINT_TO_POINTER (SYS_DVBT)) &&
+ g_list_find (valid, GINT_TO_POINTER (SYS_DVBT2))) {
+ /* There is no way to tell one over the other when parameters seem valid
+ * for DVB-T and DVB-T2 and the adapter supports both. Reason to go with
+ * the former here is that, from experience, most DVB-T2 channels out
+ * there seem to use parameters that are not valid for DVB-T, like
+ * QAM_256 */
+ GST_WARNING_OBJECT (object, "Channel parameters valid for DVB-T and "
+ "DVB-T2. Choosing DVB-T");
+ candidate = g_list_find (valid, GINT_TO_POINTER (SYS_DVBT));
+ } else {
+ candidate = g_list_last (valid);
+ }
+ }
+
+ object->delsys = GPOINTER_TO_INT (candidate->data);
+ g_list_free (valid);
+
+autoselection_done:
+ GST_INFO_OBJECT (object, "Automatically selecting delivery system '%u'",
+ object->delsys);
+}
+
static gboolean
gst_dvbsrc_set_fe_params (GstDvbSrc * object, struct dtv_properties *props)
{
@@ -2330,6 +2482,10 @@
int n;
gint err;
+ /* If delsys hasn't been set, ask for it to be automatically selected */
+ if (object->delsys == SYS_UNDEFINED)
+ gst_dvbsrc_guess_delsys (object);
+
/* first 3 entries are reserved */
n = 3;
@@ -2391,6 +2547,11 @@
set_prop (props->props, &n, DTV_MODULATION, object->modulation);
if (object->delsys == SYS_DVBS2) {
+ if (object->stream_id > 255) {
+ GST_WARNING_OBJECT (object, "Invalid (> 255) DVB-S2 stream ID '%d'. "
+ "Disabling sub-stream filtering", object->stream_id);
+ object->stream_id = NO_STREAM_ID_FILTER;
+ }
set_prop (props->props, &n, DTV_PILOT, object->pilot);
set_prop (props->props, &n, DTV_ROLLOFF, object->rolloff);
set_prop (props->props, &n, DTV_STREAM_ID, object->stream_id);
@@ -2398,31 +2559,6 @@
break;
case SYS_DVBT:
case SYS_DVBT2:
- if (object->delsys == SYS_DVBT) {
- if (object->transmission_mode != TRANSMISSION_MODE_AUTO &&
- object->transmission_mode != TRANSMISSION_MODE_2K &&
- object->transmission_mode != TRANSMISSION_MODE_8K) {
- GST_WARNING_OBJECT (object, "Wrong DVB-T parameter combination: "
- "transmission mode should be either AUTO, 2K or 8K");
- }
- if (object->bandwidth != 6000000 && object->bandwidth != 7000000 &&
- object->bandwidth != 8000000) {
- GST_WARNING_OBJECT (object, "Wrong DVB-T parameter value: bandwidth "
- "is %d but only 6, 7 and 8 MHz are allowed", object->bandwidth);
- }
- } else if (object->delsys == SYS_DVBT2) {
- if (object->transmission_mode != TRANSMISSION_MODE_AUTO &&
- object->transmission_mode != TRANSMISSION_MODE_1K &&
- object->transmission_mode != TRANSMISSION_MODE_2K &&
- object->transmission_mode != TRANSMISSION_MODE_4K &&
- object->transmission_mode != TRANSMISSION_MODE_8K &&
- object->transmission_mode != TRANSMISSION_MODE_16K &&
- object->transmission_mode != TRANSMISSION_MODE_32K) {
- GST_WARNING_OBJECT (object, "Wrong DVB-T2 parameter combination: "
- "transmission mode should be either AUTO, 1K, 2K, 4K, 8K, 16K "
- "or 32K");
- }
- }
set_prop (props->props, &n, DTV_BANDWIDTH_HZ, object->bandwidth);
set_prop (props->props, &n, DTV_CODE_RATE_HP, object->code_rate_hp);
set_prop (props->props, &n, DTV_CODE_RATE_LP, object->code_rate_lp);
@@ -2431,7 +2567,13 @@
object->transmission_mode);
set_prop (props->props, &n, DTV_GUARD_INTERVAL, object->guard_interval);
set_prop (props->props, &n, DTV_HIERARCHY, object->hierarchy_information);
+
if (object->delsys == SYS_DVBT2) {
+ if (object->stream_id > 255) {
+ GST_WARNING_OBJECT (object, "Invalid (> 255) DVB-T2 stream ID '%d'. "
+ "Disabling sub-stream filtering", object->stream_id);
+ object->stream_id = NO_STREAM_ID_FILTER;
+ }
set_prop (props->props, &n, DTV_STREAM_ID, object->stream_id);
}
@@ -2476,11 +2618,6 @@
"layer C modulation is DQPSK but layer B modulation is different");
}
- if (object->bandwidth != 6000000) {
- GST_WARNING_OBJECT (object, "Wrong ISDB-T parameter value: bandwidth "
- "is %d but only 6 MHz is allowed", object->bandwidth);
- }
-
GST_INFO_OBJECT (object, "Tuning ISDB-T to %d", freq);
set_prop (props->props, &n, DTV_BANDWIDTH_HZ, object->bandwidth);
set_prop (props->props, &n, DTV_GUARD_INTERVAL, object->guard_interval);
@@ -2547,9 +2684,22 @@
return FALSE;
}
+ /* Informative checks */
if (!gst_dvbsrc_is_valid_modulation (object->delsys, object->modulation)) {
GST_WARNING_OBJECT (object,
- "Attempting an invalid modulation/delsys combination");
+ "Attempting invalid modulation '%u' for delivery system '%u'",
+ object->modulation, object->delsys);
+ }
+ if (!gst_dvbsrc_is_valid_trans_mode (object->delsys,
+ object->transmission_mode)) {
+ GST_WARNING_OBJECT (object,
+ "Attempting invalid transmission mode '%u' for delivery system '%u'",
+ object->transmission_mode, object->delsys);
+ }
+ if (!gst_dvbsrc_is_valid_bandwidth (object->delsys, object->bandwidth)) {
+ GST_WARNING_OBJECT (object,
+ "Attempting invalid bandwidth '%u' for delivery system '%u'",
+ object->bandwidth, object->delsys);
}
set_prop (props->props, &n, DTV_TUNE, 0);
@@ -2611,6 +2761,12 @@
GST_INFO_OBJECT (object, "Setting PES filter");
+ /* Set common params for all filters */
+ pes_filter.input = DMX_IN_FRONTEND;
+ pes_filter.output = DMX_OUT_TS_TAP;
+ pes_filter.pes_type = DMX_PES_OTHER;
+ pes_filter.flags = DMX_IMMEDIATE_START;
+
for (i = 0; i < MAX_FILTERS; i++) {
if (object->pids[i] == G_MAXUINT16)
break;
@@ -2628,12 +2784,8 @@
g_return_if_fail (*fd != -1);
pes_filter.pid = pid;
- pes_filter.input = DMX_IN_FRONTEND;
- pes_filter.output = DMX_OUT_TS_TAP;
- pes_filter.pes_type = DMX_PES_OTHER;
- pes_filter.flags = DMX_IMMEDIATE_START;
- GST_INFO_OBJECT (object, "Setting pes-filter, pid = %d, type = %d",
+ GST_INFO_OBJECT (object, "Setting PES filter: pid = %d, type = %d",
pes_filter.pid, pes_filter.pes_type);
LOOP_WHILE_EINTR (err, ioctl (*fd, DMX_SET_PES_FILTER, &pes_filter));
diff --git a/sys/dvb/gstdvbsrc.h b/sys/dvb/gstdvbsrc.h
index 27a27b7..e504ea8 100644
--- a/sys/dvb/gstdvbsrc.h
+++ b/sys/dvb/gstdvbsrc.h
@@ -64,8 +64,8 @@
GMutex tune_mutex;
gboolean need_tune;
+ GList * supported_delsys;
guchar delsys;
- guchar best_guess_delsys;
int adapter_number;
int frontend_number;
diff --git a/sys/dvb/parsechannels.c b/sys/dvb/parsechannels.c
index 1d30580..1d63eb8 100644
--- a/sys/dvb/parsechannels.c
+++ b/sys/dvb/parsechannels.c
@@ -37,6 +37,20 @@
#include <linux/dvb/frontend.h>
+typedef enum
+{
+ CHANNEL_CONF_FORMAT_NONE,
+ CHANNEL_CONF_FORMAT_DVBV5,
+ CHANNEL_CONF_FORMAT_ZAP
+} GstDvbChannelConfFormat;
+
+static gboolean parse_and_configure_from_v5_conf_file (GstElement * dvbbasebin,
+ const gchar * filename, const gchar * channel_name, GError ** error);
+static gboolean parse_and_configure_from_zap_conf_file (GstElement * dvbbasebin,
+ const gchar * filename, const gchar * channel_name, GError ** error);
+static GstDvbChannelConfFormat detect_file_format (const gchar * filename);
+
+
GST_DEBUG_CATEGORY_EXTERN (dvb_base_bin_debug);
#define GST_CAT_DEFAULT dvb_base_bin_debug
@@ -45,6 +59,319 @@
* Detect when the file changed on disk
*/
+typedef gboolean (*GstDvbV5ChannelsConfPropSetFunction) (GstElement *
+ dvbbasebin, const gchar * property, GKeyFile * kf,
+ const gchar * channel_name, const gchar * key);
+
+static gint
+gst_dvb_base_bin_find_string_in_array (const gchar ** array, const gchar * str)
+{
+ gint i = 0;
+ const gchar *cur;
+ while ((cur = array[i])) {
+ if (strcmp (cur, str) == 0)
+ return i;
+
+ i++;
+ }
+
+ return -1;
+}
+
+static gboolean
+gst_dvb_base_bin_conf_set_property_from_string_array (GstElement * dvbbasebin,
+ const gchar * property, GKeyFile * kf, const gchar * channel_name,
+ const gchar * key, const gchar ** strings, gint default_value)
+{
+ gchar *str;
+ gint v;
+
+ str = g_key_file_get_string (kf, channel_name, key, NULL);
+ v = gst_dvb_base_bin_find_string_in_array (strings, str);
+ if (v == -1) {
+ GST_WARNING_OBJECT (dvbbasebin, "Unexpected value '%s' for property "
+ "'%s', using default: %d", str, property, default_value);
+ v = default_value;
+ }
+
+ g_free (str);
+ g_object_set (dvbbasebin, property, v, NULL);
+ return TRUE;
+}
+
+/* TODO handle errors when getting keyfile data on all these functions */
+static gboolean
+gst_dvb_base_bin_conf_set_string (GstElement * dvbbasebin,
+ const gchar * property, GKeyFile * kf, const gchar * channel_name,
+ const gchar * key)
+{
+ gchar *str;
+
+ str = g_key_file_get_string (kf, channel_name, key, NULL);
+ g_object_set (dvbbasebin, property, str, NULL);
+ g_free (str);
+ return TRUE;
+}
+
+static gboolean
+gst_dvb_base_bin_conf_set_uint (GstElement * dvbbasebin, const gchar * property,
+ GKeyFile * kf, const gchar * channel_name, const gchar * key)
+{
+ guint64 v;
+
+ v = g_key_file_get_uint64 (kf, channel_name, key, NULL);
+ g_object_set (dvbbasebin, property, (guint) v, NULL);
+ return TRUE;
+}
+
+static gboolean
+gst_dvb_base_bin_conf_set_int (GstElement * dvbbasebin, const gchar * property,
+ GKeyFile * kf, const gchar * channel_name, const gchar * key)
+{
+ gint v;
+
+ v = g_key_file_get_integer (kf, channel_name, key, NULL);
+ g_object_set (dvbbasebin, property, v, NULL);
+ return TRUE;
+}
+
+static gboolean
+gst_dvb_base_bin_conf_set_inversion (GstElement * dvbbasebin,
+ const gchar * property, GKeyFile * kf, const gchar * channel_name,
+ const gchar * key)
+{
+ gchar *str;
+ gint v;
+
+ str = g_key_file_get_string (kf, channel_name, key, NULL);
+ if (strcmp (str, "AUTO") == 0)
+ v = 2;
+ else if (strcmp (str, "ON") == 0)
+ v = 1;
+ else
+ v = 0; /* OFF */
+
+ g_free (str);
+ g_object_set (dvbbasebin, property, v, NULL);
+ return TRUE;
+}
+
+static gboolean
+gst_dvb_base_bin_conf_set_guard (GstElement * dvbbasebin,
+ const gchar * property, GKeyFile * kf, const gchar * channel_name,
+ const gchar * key)
+{
+ const gchar *guards[] = {
+ "32", "16", "8", "4", "auto",
+ "128", "19/128", "19/256",
+ "PN420", "PN595", "PN945", NULL
+ };
+ return gst_dvb_base_bin_conf_set_property_from_string_array (dvbbasebin,
+ property, kf, channel_name, key, guards, 4);
+}
+
+static gboolean
+gst_dvb_base_bin_conf_set_trans_mode (GstElement * dvbbasebin,
+ const gchar * property, GKeyFile * kf, const gchar * channel_name,
+ const gchar * key)
+{
+ const gchar *trans_modes[] = {
+ "2K", "8K", "AUTO", "4K", "1K",
+ "16K", "32K", "C1", "C3780", NULL
+ };
+ return gst_dvb_base_bin_conf_set_property_from_string_array (dvbbasebin,
+ property, kf, channel_name, key, trans_modes, 2);
+}
+
+static gboolean
+gst_dvb_base_bin_conf_set_code_rate (GstElement * dvbbasebin,
+ const gchar * property, GKeyFile * kf, const gchar * channel_name,
+ const gchar * key)
+{
+ const gchar *code_rates[] = {
+ "NONE", "1/2", "2/3", "3/4", "4/5",
+ "5/6", "6/7", "7/8", "8/9", "AUTO",
+ "3/5", "9/10", "2/5", NULL
+ };
+ return gst_dvb_base_bin_conf_set_property_from_string_array (dvbbasebin,
+ property, kf, channel_name, key, code_rates, 9);
+}
+
+static gboolean
+gst_dvb_base_bin_conf_set_delsys (GstElement * dvbbasebin,
+ const gchar * property, GKeyFile * kf, const gchar * channel_name,
+ const gchar * key)
+{
+ const gchar *delsys[] = {
+ "UNDEFINED", "DVBCA", "DVBCB", "DVBT", "DSS",
+ "DVBS", "DVBS2", "DVBH", "ISDBT", "ISDBS",
+ "ISDBC", "ATSC", "ATSCMH", "DTMB", "CMMB",
+ "DAB", "DVBT2", "TURBO", "DVBCC", NULL
+ };
+ return gst_dvb_base_bin_conf_set_property_from_string_array (dvbbasebin,
+ property, kf, channel_name, key, delsys, 0);
+}
+
+static gboolean
+gst_dvb_base_bin_conf_set_modulation (GstElement * dvbbasebin,
+ const gchar * property, GKeyFile * kf, const gchar * channel_name,
+ const gchar * key)
+{
+ const gchar *modulations[] = {
+ "QPSK", "QAM/16", "QAM/32", "QAM/64",
+ "QAM/128", "QAM/256", "QAM/AUTO", "VSB/8",
+ "VSB/16", "PSK/8", "APSK/16", "APSK/32",
+ "DQPSK", "QAM/4_NR", NULL
+ };
+ return gst_dvb_base_bin_conf_set_property_from_string_array (dvbbasebin,
+ property, kf, channel_name, key, modulations, 6);
+}
+
+typedef struct
+{
+ const gchar *conf_property;
+ const gchar *elem_property;
+ GstDvbV5ChannelsConfPropSetFunction set_func;
+} GstDvbV5ChannelsConfToPropertyMap;
+
+GstDvbV5ChannelsConfToPropertyMap dvbv5_prop_map[] = {
+ {"SERVICE_ID", "program-numbers", gst_dvb_base_bin_conf_set_string},
+ {"FREQUENCY", "frequency", gst_dvb_base_bin_conf_set_uint},
+ {"BANDWIDTH_HZ", "bandwidth-hz", gst_dvb_base_bin_conf_set_uint},
+ {"INVERSION", "inversion", gst_dvb_base_bin_conf_set_inversion},
+ {"GUARD_INTERVAL", "guard", gst_dvb_base_bin_conf_set_guard},
+ {"TRANSMISSION_MODE", "trans-mode", gst_dvb_base_bin_conf_set_trans_mode},
+ {"MODULATION", "modulation", gst_dvb_base_bin_conf_set_modulation},
+ {"ISDBT_LAYER_ENABLED", "isdbt-layer-enabled",
+ gst_dvb_base_bin_conf_set_uint},
+ {"ISDBT_PARTIAL_RECEPTION", "isdbt-partial-reception",
+ gst_dvb_base_bin_conf_set_int},
+ {"ISDBT_SOUND_BROADCASTING", "isdbt-sound-broadcasting",
+ gst_dvb_base_bin_conf_set_int},
+ {"ISDBT_SB_SUBCHANNEL_ID", "isdbt-sb-subchannel-id",
+ gst_dvb_base_bin_conf_set_int},
+ {"ISDBT_SB_SEGMENT_IDX", "isdbt-sb-segment-idx",
+ gst_dvb_base_bin_conf_set_int},
+ {"ISDBT_SB_SEGMENT_COUNT", "isdbt-sb-segment-count", gst_dvb_base_bin_conf_set_int}, /* Range in files start from 0, property starts from 1 */
+ {"ISDBT_LAYERA_FEC", "isdbt-layera-fec", gst_dvb_base_bin_conf_set_code_rate},
+ {"ISDBT_LAYERA_MODULATION", "isdbt-layera-modulation",
+ gst_dvb_base_bin_conf_set_modulation},
+ {"ISDBT_LAYERA_SEGMENT_COUNT", "isdbt-layera-segment-count",
+ gst_dvb_base_bin_conf_set_int},
+ {"ISDBT_LAYERA_TIME_INTERLEAVING", "isdbt-layera-time-interleaving",
+ gst_dvb_base_bin_conf_set_int},
+ {"ISDBT_LAYERB_FEC", "isdbt-layerb-fec", gst_dvb_base_bin_conf_set_code_rate},
+ {"ISDBT_LAYERB_MODULATION", "isdbt-layerb-modulation",
+ gst_dvb_base_bin_conf_set_modulation},
+ {"ISDBT_LAYERB_SEGMENT_COUNT", "isdbt-layerb-segment-count",
+ gst_dvb_base_bin_conf_set_int},
+ {"ISDBT_LAYERB_TIME_INTERLEAVING", "isdbt-layerb-time-interleaving",
+ gst_dvb_base_bin_conf_set_int},
+ {"ISDBT_LAYERC_FEC", "isdbt-layerc-fec", gst_dvb_base_bin_conf_set_code_rate},
+ {"ISDBT_LAYERC_MODULATION", "isdbt-layerc-modulation",
+ gst_dvb_base_bin_conf_set_modulation},
+ {"ISDBT_LAYERC_SEGMENT_COUNT", "isdbt-layerc-segment-count",
+ gst_dvb_base_bin_conf_set_int},
+ {"ISDBT_LAYERC_TIME_INTERLEAVING", "isdbt-layerc-time-interleaving",
+ gst_dvb_base_bin_conf_set_int},
+ {"DELIVERY_SYSTEM", "delsys", gst_dvb_base_bin_conf_set_delsys},
+ {NULL,}
+};
+
+static gboolean
+parse_and_configure_from_v5_conf_file (GstElement * dvbbasebin,
+ const gchar * filename, const gchar * channel_name, GError ** error)
+{
+ GKeyFile *keyfile;
+ gchar **keys, **keys_p;
+ GError *err = NULL;
+
+ keyfile = g_key_file_new ();
+ if (!g_key_file_load_from_file (keyfile, filename, G_KEY_FILE_NONE, &err))
+ goto load_error;
+
+ if (!g_key_file_has_group (keyfile, channel_name))
+ goto unknown_channel;
+
+ keys = g_key_file_get_keys (keyfile, channel_name, NULL, &err);
+ if (!keys)
+ goto no_properties;
+
+ keys_p = keys;
+ while (*keys_p) {
+ const gchar *k = *keys_p;
+ const GstDvbV5ChannelsConfToPropertyMap *map_entry = dvbv5_prop_map;
+ gboolean property_found = FALSE;
+
+ GST_LOG_OBJECT (dvbbasebin, "Setting property %s", k);
+
+ while (map_entry->conf_property) {
+ if (strcmp (map_entry->conf_property, k) == 0) {
+ if (!map_entry->set_func (dvbbasebin, map_entry->elem_property, keyfile,
+ channel_name, k))
+ goto property_error;
+ property_found = TRUE;
+ break;
+ }
+ map_entry++;
+ }
+
+ if (!property_found)
+ GST_DEBUG_OBJECT (dvbbasebin, "Failed to map property '%s'", k);
+
+ keys_p++;
+ }
+
+ GST_DEBUG_OBJECT (dvbbasebin, "Successfully parsed channel configuration "
+ "file '%s'", filename);
+ g_strfreev (keys);
+ g_key_file_unref (keyfile);
+ return TRUE;
+
+load_error:
+ if ((err->domain == G_FILE_ERROR && err->code == G_FILE_ERROR_NOENT) ||
+ (err->domain == G_KEY_FILE_ERROR
+ && err->code == G_KEY_FILE_ERROR_NOT_FOUND)) {
+ g_set_error (error, GST_RESOURCE_ERROR, GST_RESOURCE_ERROR_NOT_FOUND,
+ _("Couldn't find DVB channel configuration file"));
+ } else {
+ g_set_error (error, GST_RESOURCE_ERROR, GST_RESOURCE_ERROR_READ,
+ _("Couldn't load DVB channel configuration file: %s"), err->message);
+ }
+ g_clear_error (&err);
+ return FALSE;
+
+unknown_channel:
+ {
+ /* FIXME: is channel name guaranteed to be ASCII or UTF-8? */
+ g_set_error (error, GST_RESOURCE_ERROR, GST_RESOURCE_ERROR_NOT_FOUND,
+ _("Couldn't find details for DVB channel %s"), channel_name);
+ g_key_file_unref (keyfile);
+ g_clear_error (&err);
+ return FALSE;
+ }
+
+no_properties:
+ {
+ /* FIXME: is channel name guaranteed to be ASCII or UTF-8? */
+ g_set_error (error, GST_RESOURCE_ERROR, GST_RESOURCE_ERROR_NOT_FOUND,
+ _("No properties for the DVB channel %s"), channel_name);
+ g_key_file_unref (keyfile);
+ g_clear_error (&err);
+ return FALSE;
+ }
+
+property_error:
+ {
+ /* FIXME: is channel name guaranteed to be ASCII or UTF-8? */
+ g_set_error (error, GST_RESOURCE_ERROR, GST_RESOURCE_ERROR_FAILED,
+ _("Failed to set properties for the DVB channel %s"), channel_name);
+ g_key_file_unref (keyfile);
+ g_clear_error (&err);
+ return FALSE;
+ }
+}
+
/* this will do zap style channels.conf only for the moment */
static GHashTable *
parse_channels_conf_from_file (GstElement * dvbbasebin, const gchar * filename,
@@ -162,7 +489,7 @@
open_fail:
if (err->code == G_FILE_ERROR_NOENT) {
g_set_error (error, GST_RESOURCE_ERROR, GST_RESOURCE_ERROR_NOT_FOUND,
- _("Couldn't find DVB channel configuration file"));
+ _("Couldn't find DVB channel configuration file: %s"), err->message);
} else {
g_set_error (error, GST_RESOURCE_ERROR, GST_RESOURCE_ERROR_READ,
_("Couldn't load DVB channel configuration file: %s"), err->message);
@@ -192,23 +519,26 @@
g_hash_table_foreach_remove (channels, remove_channel_from_hash, NULL);
}
-gboolean
-set_properties_for_channel (GstElement * dvbbasebin,
- const gchar * channel_name, GError ** error)
+static gboolean
+parse_and_configure_from_zap_conf_file (GstElement * dvbbasebin,
+ const gchar * filename, const gchar * channel_name, GError ** error)
{
gboolean ret = FALSE;
GHashTable *channels, *params;
- gchar *filename;
gchar *type;
- const gchar *adapter;
- filename = g_strdup (g_getenv ("GST_DVB_CHANNELS_CONF"));
- if (filename == NULL) {
- filename = g_build_filename (g_get_user_config_dir (),
- "gstreamer-" GST_API_VERSION, "dvb-channels.conf", NULL);
- }
+ /**
+ * Assumptions are made here about a format that is loosely
+ * defined. Particularly, we assume a given delivery system
+ * out of counting the number of fields per line. dvbsrc has
+ * smarter code to auto-detect a delivery system based on
+ * known-correct combinations of parameters so if you ever
+ * encounter cases where the delivery system is being
+ * wrongly set here, just remove the offending
+ * g_object_set line and let dvbsrc work his magic out.
+ */
+
channels = parse_channels_conf_from_file (dvbbasebin, filename, error);
- g_free (filename);
if (!channels)
goto beach;
@@ -221,24 +551,19 @@
g_object_set (dvbbasebin, "program-numbers",
g_hash_table_lookup (params, "sid"), NULL);
/* check if it is terrestrial or satellite */
- adapter = g_getenv ("GST_DVB_ADAPTER");
- if (adapter)
- g_object_set (dvbbasebin, "adapter", atoi (adapter), NULL);
g_object_set (dvbbasebin, "frequency",
atoi (g_hash_table_lookup (params, "frequency")), NULL);
type = g_hash_table_lookup (params, "type");
if (strcmp (type, "terrestrial") == 0) {
gchar *val;
- g_object_set (dvbbasebin, "delsys", SYS_DVBT, NULL);
-
val = g_hash_table_lookup (params, "inversion");
if (strcmp (val, "INVERSION_OFF") == 0)
- g_object_set (dvbbasebin, "inversion", 0, NULL);
+ g_object_set (dvbbasebin, "inversion", INVERSION_OFF, NULL);
else if (strcmp (val, "INVERSION_ON") == 0)
- g_object_set (dvbbasebin, "inversion", 1, NULL);
+ g_object_set (dvbbasebin, "inversion", INVERSION_ON, NULL);
else
- g_object_set (dvbbasebin, "inversion", 2, NULL);
+ g_object_set (dvbbasebin, "inversion", INVERSION_AUTO, NULL);
val = g_hash_table_lookup (params, "bandwidth");
if (strcmp (val, "BANDWIDTH_8_MHZ") == 0)
@@ -247,6 +572,12 @@
g_object_set (dvbbasebin, "bandwidth", 1, NULL);
else if (strcmp (val, "BANDWIDTH_6_MHZ") == 0)
g_object_set (dvbbasebin, "bandwidth", 2, NULL);
+ else if (strcmp (val, "BANDWIDTH_5_MHZ") == 0)
+ g_object_set (dvbbasebin, "bandwidth", 4, NULL);
+ else if (strcmp (val, "BANDWIDTH_10_MHZ") == 0)
+ g_object_set (dvbbasebin, "bandwidth", 5, NULL);
+ else if (strcmp (val, "BANDWIDTH_1_712_MHZ") == 0)
+ g_object_set (dvbbasebin, "bandwidth", 6, NULL);
else
g_object_set (dvbbasebin, "bandwidth", 3, NULL);
@@ -451,3 +782,82 @@
return FALSE;
}
}
+
+static GstDvbChannelConfFormat
+detect_file_format (const gchar * filename)
+{
+ gchar *contents;
+ gchar **lines;
+ gchar **line;
+ GstDvbChannelConfFormat ret = CHANNEL_CONF_FORMAT_NONE;
+
+ if (!g_file_get_contents (filename, &contents, NULL, NULL))
+ return ret;
+
+ lines = g_strsplit (contents, "\n", 0);
+ line = lines;
+
+ while (*line) {
+ if (g_str_has_prefix (*line, "[") && g_str_has_suffix (*line, "]")) {
+ ret = CHANNEL_CONF_FORMAT_DVBV5;
+ break;
+ } else if (g_strrstr (*line, ":")) {
+ ret = CHANNEL_CONF_FORMAT_ZAP;
+ break;
+ }
+ line++;
+ }
+
+ g_strfreev (lines);
+ g_free (contents);
+ return ret;
+}
+
+gboolean
+set_properties_for_channel (GstElement * dvbbasebin,
+ const gchar * channel_name, GError ** error)
+{
+ gboolean ret = FALSE;
+ gchar *filename;
+ const gchar *adapter;
+
+ filename = g_strdup (g_getenv ("GST_DVB_CHANNELS_CONF"));
+ if (filename == NULL) {
+ filename = g_build_filename (g_get_user_config_dir (),
+ "gstreamer-" GST_API_VERSION, "dvb-channels.conf", NULL);
+ }
+
+ adapter = g_getenv ("GST_DVB_ADAPTER");
+ if (adapter)
+ g_object_set (dvbbasebin, "adapter", atoi (adapter), NULL);
+
+ switch (detect_file_format (filename)) {
+ case CHANNEL_CONF_FORMAT_DVBV5:
+ if (!parse_and_configure_from_v5_conf_file (dvbbasebin, filename,
+ channel_name, error)) {
+ GST_WARNING_OBJECT (dvbbasebin, "Could not parse libdvbv5 channel "
+ "configuration file '%s'", filename);
+ } else {
+ GST_INFO_OBJECT (dvbbasebin, "Parsed libdvbv5 channel configuration "
+ "file");
+ ret = TRUE;
+ }
+ break;
+ case CHANNEL_CONF_FORMAT_ZAP:
+ if (!parse_and_configure_from_zap_conf_file (dvbbasebin, filename,
+ channel_name, error)) {
+ GST_WARNING_OBJECT (dvbbasebin, "Could not parse ZAP channel "
+ "configuration file '%s'", filename);
+ } else {
+ GST_INFO_OBJECT (dvbbasebin, "Parsed ZAP channel configuration file");
+ ret = TRUE;
+ }
+ break;
+ default:
+ GST_WARNING_OBJECT (dvbbasebin, "Unknown configuration file format. "
+ "Can not get parameters for channel");
+ }
+
+ g_free (filename);
+ return ret;
+}
diff --git a/sys/fbdev/Makefile.in b/sys/fbdev/Makefile.in
index 9bd0561..e43e4fd 100644
--- a/sys/fbdev/Makefile.in
+++ b/sys/fbdev/Makefile.in
@@ -302,6 +302,8 @@
DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
DSYMUTIL = @DSYMUTIL@
DTLS_CFLAGS = @DTLS_CFLAGS@
DTLS_LIBS = @DTLS_LIBS@
@@ -517,6 +519,8 @@
LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
LIPO = @LIPO@
LN_S = @LN_S@
LOCALEDIR = @LOCALEDIR@
@@ -643,8 +647,6 @@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
SNDIO_LIBS = @SNDIO_LIBS@
@@ -689,6 +691,8 @@
WAYLAND_LIBS = @WAYLAND_LIBS@
WEBP_CFLAGS = @WEBP_CFLAGS@
WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
WGET = @WGET@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
diff --git a/sys/fbdev/gstfbdevsink.c b/sys/fbdev/gstfbdevsink.c
index b559a7e..3f9ad88 100644
--- a/sys/fbdev/gstfbdevsink.c
+++ b/sys/fbdev/gstfbdevsink.c
@@ -227,7 +227,8 @@
gst_structure_get_int (structure, "height", &fbdevsink->height);
/* calculate centering and scanlengths for the video */
- fbdevsink->bytespp = fbdevsink->fixinfo.line_length / fbdevsink->varinfo.xres_virtual;
+ fbdevsink->bytespp =
+ fbdevsink->fixinfo.line_length / fbdevsink->varinfo.xres_virtual;
fbdevsink->cx = ((int) fbdevsink->varinfo.xres - fbdevsink->width) / 2;
if (fbdevsink->cx < 0)
@@ -432,8 +433,7 @@
"Sink/Video", "Linux framebuffer videosink",
"Sean D'Epagnier <sean@depagnier.com>");
- gst_element_class_add_pad_template (gstelement_class,
- gst_static_pad_template_get (&sink_template));
+ gst_element_class_add_static_pad_template (gstelement_class, &sink_template);
}
static void
diff --git a/sys/kms/Makefile.am b/sys/kms/Makefile.am
new file mode 100644
index 0000000..9b12c72
--- /dev/null
+++ b/sys/kms/Makefile.am
@@ -0,0 +1,41 @@
+plugin_LTLIBRARIES = libgstkmssink.la
+
+libgstkmssink_la_SOURCES = \
+ gstkmssink.c \
+ gstkmsutils.c \
+ gstkmsallocator.c \
+ gstkmsbufferpool.c \
+ $(NUL)
+
+libgstkmssink_la_CFLAGS = \
+ $(GST_PLUGINS_BASE_CFLAGS) \
+ $(GST_BASE_CFLAGS) \
+ $(GST_VIDEO_CFLAGS) \
+ $(GST_ALLOCATORS_CFLAGS) \
+ $(GST_CFLAGS) \
+ $(DRM_CFLAGS) \
+ $(NULL)
+
+libgstkmssink_la_LIBADD = \
+ $(GST_PLUGINS_BASE_LIBS) \
+ $(GST_BASE_LIBS) \
+ $(GST_VIDEO_LIBS) \
+ $(GST_ALLOCATORS_LIBS) \
+ $(GST_LIBS) \
+ $(DRM_LIBS) \
+ $(NULL)
+
+libgstkmssink_la_LDFLAGS = \
+ $(GST_PLUGIN_LDFLAGS) \
+ $(NULL)
+
+libgstkmssink_la_LIBTOOLFLAGS = \
+ $(GST_PLUGIN_LIBTOOLFLAGS) \
+ $(NULL)
+
+noinst_HEADERS = \
+ gstkmssink.h \
+ gstkmsutils.h \
+ gstkmsallocator.h \
+ gstkmsbufferpool.h \
+ $(NULL)
diff --git a/tests/examples/gl/gtk/gtkvideooverlay/Makefile.in b/sys/kms/Makefile.in
similarity index 69%
copy from tests/examples/gl/gtk/gtkvideooverlay/Makefile.in
copy to sys/kms/Makefile.in
index aef9ed4..571f994 100644
--- a/tests/examples/gl/gtk/gtkvideooverlay/Makefile.in
+++ b/sys/kms/Makefile.in
@@ -14,6 +14,7 @@
@SET_MAKE@
+
VPATH = @srcdir@
am__is_gnu_make = { \
if test -z '$(MAKELEVEL)'; then \
@@ -89,8 +90,7 @@
build_triplet = @build@
host_triplet = @host@
target_triplet = @target@
-noinst_PROGRAMS = gtkvideooverlay$(EXEEXT)
-subdir = tests/examples/gl/gtk/gtkvideooverlay
+subdir = sys/kms
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
am__aclocal_m4_deps = $(top_srcdir)/common/m4/as-ac-expand.m4 \
$(top_srcdir)/common/m4/as-auto-alt.m4 \
@@ -127,27 +127,59 @@
$(top_srcdir)/m4/progtest.m4 $(top_srcdir)/configure.ac
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
$(ACLOCAL_M4)
-DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON)
+DIST_COMMON = $(srcdir)/Makefile.am $(noinst_HEADERS) \
+ $(am__DIST_COMMON)
mkinstalldirs = $(install_sh) -d
CONFIG_HEADER = $(top_builddir)/config.h
CONFIG_CLEAN_FILES =
CONFIG_CLEAN_VPATH_FILES =
-PROGRAMS = $(noinst_PROGRAMS)
-am_gtkvideooverlay_OBJECTS = gtkvideooverlay-main.$(OBJEXT)
-gtkvideooverlay_OBJECTS = $(am_gtkvideooverlay_OBJECTS)
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+ *) f=$$p;; \
+ esac;
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+ for p in $$list; do echo "$$p $$p"; done | \
+ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+ if (++n[$$2] == $(am__install_max)) \
+ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+ END { for (dir in files) print dir, files[dir] }'
+am__base_list = \
+ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__uninstall_files_from_dir = { \
+ test -z "$$files" \
+ || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
+ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
+ $(am__cd) "$$dir" && rm -f $$files; }; \
+ }
+am__installdirs = "$(DESTDIR)$(plugindir)"
+LTLIBRARIES = $(plugin_LTLIBRARIES)
am__DEPENDENCIES_1 =
-gtkvideooverlay_DEPENDENCIES = ../libgstgtkhelper.la \
+libgstkmssink_la_DEPENDENCIES = $(am__DEPENDENCIES_1) \
$(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \
$(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \
$(am__DEPENDENCIES_1)
+am_libgstkmssink_la_OBJECTS = libgstkmssink_la-gstkmssink.lo \
+ libgstkmssink_la-gstkmsutils.lo \
+ libgstkmssink_la-gstkmsallocator.lo \
+ libgstkmssink_la-gstkmsbufferpool.lo
+libgstkmssink_la_OBJECTS = $(am_libgstkmssink_la_OBJECTS)
AM_V_lt = $(am__v_lt_@AM_V@)
am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@)
am__v_lt_0 = --silent
am__v_lt_1 =
-gtkvideooverlay_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX \
- $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CXXLD) \
- $(gtkvideooverlay_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) \
- $(LDFLAGS) -o $@
+libgstkmssink_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \
+ $(libgstkmssink_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link \
+ $(CCLD) $(libgstkmssink_la_CFLAGS) $(CFLAGS) \
+ $(libgstkmssink_la_LDFLAGS) $(LDFLAGS) -o $@
AM_V_P = $(am__v_P_@AM_V@)
am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
am__v_P_0 = false
@@ -164,31 +196,32 @@
depcomp = $(SHELL) $(top_srcdir)/depcomp
am__depfiles_maybe = depfiles
am__mv = mv -f
-CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
- $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS)
-LTCXXCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \
- $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) \
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+ $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \
$(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
- $(AM_CXXFLAGS) $(CXXFLAGS)
-AM_V_CXX = $(am__v_CXX_@AM_V@)
-am__v_CXX_ = $(am__v_CXX_@AM_DEFAULT_V@)
-am__v_CXX_0 = @echo " CXX " $@;
-am__v_CXX_1 =
-CXXLD = $(CXX)
-CXXLINK = $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) \
- $(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \
- $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
-AM_V_CXXLD = $(am__v_CXXLD_@AM_V@)
-am__v_CXXLD_ = $(am__v_CXXLD_@AM_DEFAULT_V@)
-am__v_CXXLD_0 = @echo " CXXLD " $@;
-am__v_CXXLD_1 =
-SOURCES = $(gtkvideooverlay_SOURCES)
-DIST_SOURCES = $(gtkvideooverlay_SOURCES)
+ $(AM_CFLAGS) $(CFLAGS)
+AM_V_CC = $(am__v_CC_@AM_V@)
+am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@)
+am__v_CC_0 = @echo " CC " $@;
+am__v_CC_1 =
+CCLD = $(CC)
+LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
+ $(AM_LDFLAGS) $(LDFLAGS) -o $@
+AM_V_CCLD = $(am__v_CCLD_@AM_V@)
+am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@)
+am__v_CCLD_0 = @echo " CCLD " $@;
+am__v_CCLD_1 =
+SOURCES = $(libgstkmssink_la_SOURCES)
+DIST_SOURCES = $(libgstkmssink_la_SOURCES)
am__can_run_installinfo = \
case $$AM_UPDATE_INFO_DIR in \
n|no|NO) false;; \
*) (install-info --version) >/dev/null 2>&1;; \
esac
+HEADERS = $(noinst_HEADERS)
am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
# Read a list of newline-separated strings from the standard input,
# and print each of them once, without duplicates. Input order is
@@ -274,6 +307,8 @@
DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
DSYMUTIL = @DSYMUTIL@
DTLS_CFLAGS = @DTLS_CFLAGS@
DTLS_LIBS = @DTLS_LIBS@
@@ -489,6 +524,8 @@
LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
LIPO = @LIPO@
LN_S = @LN_S@
LOCALEDIR = @LOCALEDIR@
@@ -615,8 +652,6 @@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
SNDIO_LIBS = @SNDIO_LIBS@
@@ -661,6 +696,8 @@
WAYLAND_LIBS = @WAYLAND_LIBS@
WEBP_CFLAGS = @WEBP_CFLAGS@
WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
WGET = @WGET@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
@@ -749,19 +786,51 @@
top_builddir = @top_builddir@
top_srcdir = @top_srcdir@
wayland_scanner = @wayland_scanner@
-gtkvideooverlay_SOURCES = main.cpp
-gtkvideooverlay_CXXFLAGS = -I$(top_srcdir)/gst-libs -I$(top_builddir)/gst-libs \
- $(GST_PLUGINS_BASE_CFLAGS) $(GST_CXXFLAGS) \
- $(GL_CFLAGS) $(GTK3_CFLAGS) $(X11_CFLAGS)
+plugin_LTLIBRARIES = libgstkmssink.la
+libgstkmssink_la_SOURCES = \
+ gstkmssink.c \
+ gstkmsutils.c \
+ gstkmsallocator.c \
+ gstkmsbufferpool.c \
+ $(NUL)
-gtkvideooverlay_LDADD = ../libgstgtkhelper.la \
- $(GTK3_LIBS) $(GST_PLUGINS_BASE_LIBS) $(GST_LIBS) \
- $(GL_LIBS) -lgstvideo-$(GST_API_VERSION) $(X11_LIBS)
+libgstkmssink_la_CFLAGS = \
+ $(GST_PLUGINS_BASE_CFLAGS) \
+ $(GST_BASE_CFLAGS) \
+ $(GST_VIDEO_CFLAGS) \
+ $(GST_ALLOCATORS_CFLAGS) \
+ $(GST_CFLAGS) \
+ $(DRM_CFLAGS) \
+ $(NULL)
+
+libgstkmssink_la_LIBADD = \
+ $(GST_PLUGINS_BASE_LIBS) \
+ $(GST_BASE_LIBS) \
+ $(GST_VIDEO_LIBS) \
+ $(GST_ALLOCATORS_LIBS) \
+ $(GST_LIBS) \
+ $(DRM_LIBS) \
+ $(NULL)
+
+libgstkmssink_la_LDFLAGS = \
+ $(GST_PLUGIN_LDFLAGS) \
+ $(NULL)
+
+libgstkmssink_la_LIBTOOLFLAGS = \
+ $(GST_PLUGIN_LIBTOOLFLAGS) \
+ $(NULL)
+
+noinst_HEADERS = \
+ gstkmssink.h \
+ gstkmsutils.h \
+ gstkmsallocator.h \
+ gstkmsbufferpool.h \
+ $(NULL)
all: all-am
.SUFFIXES:
-.SUFFIXES: .cpp .lo .o .obj
+.SUFFIXES: .c .lo .o .obj
$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps)
@for dep in $?; do \
case '$(am__configure_deps)' in \
@@ -771,9 +840,9 @@
exit 1;; \
esac; \
done; \
- echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu tests/examples/gl/gtk/gtkvideooverlay/Makefile'; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu sys/kms/Makefile'; \
$(am__cd) $(top_srcdir) && \
- $(AUTOMAKE) --gnu tests/examples/gl/gtk/gtkvideooverlay/Makefile
+ $(AUTOMAKE) --gnu sys/kms/Makefile
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
@case '$?' in \
*config.status*) \
@@ -792,18 +861,43 @@
cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
$(am__aclocal_m4_deps):
-clean-noinstPROGRAMS:
- @list='$(noinst_PROGRAMS)'; test -n "$$list" || exit 0; \
- echo " rm -f" $$list; \
- rm -f $$list || exit $$?; \
- test -n "$(EXEEXT)" || exit 0; \
- list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \
- echo " rm -f" $$list; \
- rm -f $$list
+install-pluginLTLIBRARIES: $(plugin_LTLIBRARIES)
+ @$(NORMAL_INSTALL)
+ @list='$(plugin_LTLIBRARIES)'; test -n "$(plugindir)" || list=; \
+ list2=; for p in $$list; do \
+ if test -f $$p; then \
+ list2="$$list2 $$p"; \
+ else :; fi; \
+ done; \
+ test -z "$$list2" || { \
+ echo " $(MKDIR_P) '$(DESTDIR)$(plugindir)'"; \
+ $(MKDIR_P) "$(DESTDIR)$(plugindir)" || exit 1; \
+ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(plugindir)'"; \
+ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(plugindir)"; \
+ }
-gtkvideooverlay$(EXEEXT): $(gtkvideooverlay_OBJECTS) $(gtkvideooverlay_DEPENDENCIES) $(EXTRA_gtkvideooverlay_DEPENDENCIES)
- @rm -f gtkvideooverlay$(EXEEXT)
- $(AM_V_CXXLD)$(gtkvideooverlay_LINK) $(gtkvideooverlay_OBJECTS) $(gtkvideooverlay_LDADD) $(LIBS)
+uninstall-pluginLTLIBRARIES:
+ @$(NORMAL_UNINSTALL)
+ @list='$(plugin_LTLIBRARIES)'; test -n "$(plugindir)" || list=; \
+ for p in $$list; do \
+ $(am__strip_dir) \
+ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(plugindir)/$$f'"; \
+ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(plugindir)/$$f"; \
+ done
+
+clean-pluginLTLIBRARIES:
+ -test -z "$(plugin_LTLIBRARIES)" || rm -f $(plugin_LTLIBRARIES)
+ @list='$(plugin_LTLIBRARIES)'; \
+ locs=`for p in $$list; do echo $$p; done | \
+ sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \
+ sort -u`; \
+ test -z "$$locs" || { \
+ echo rm -f $${locs}; \
+ rm -f $${locs}; \
+ }
+
+libgstkmssink.la: $(libgstkmssink_la_OBJECTS) $(libgstkmssink_la_DEPENDENCIES) $(EXTRA_libgstkmssink_la_DEPENDENCIES)
+ $(AM_V_CCLD)$(libgstkmssink_la_LINK) -rpath $(plugindir) $(libgstkmssink_la_OBJECTS) $(libgstkmssink_la_LIBADD) $(LIBS)
mostlyclean-compile:
-rm -f *.$(OBJEXT)
@@ -811,45 +905,62 @@
distclean-compile:
-rm -f *.tab.c
-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gtkvideooverlay-main.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstkmssink_la-gstkmsallocator.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstkmssink_la-gstkmsbufferpool.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstkmssink_la-gstkmssink.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgstkmssink_la-gstkmsutils.Plo@am__quote@
-.cpp.o:
-@am__fastdepCXX_TRUE@ $(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\
-@am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\
-@am__fastdepCXX_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ $<
+.c.o:
+@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\
+@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\
+@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $<
-.cpp.obj:
-@am__fastdepCXX_TRUE@ $(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\
-@am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\
-@am__fastdepCXX_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
+.c.obj:
+@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\
+@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\
+@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
-.cpp.lo:
-@am__fastdepCXX_TRUE@ $(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\
-@am__fastdepCXX_TRUE@ $(LTCXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\
-@am__fastdepCXX_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Plo
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(LTCXXCOMPILE) -c -o $@ $<
+.c.lo:
+@am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.lo$$||'`;\
+@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\
+@am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $<
-gtkvideooverlay-main.o: main.cpp
-@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gtkvideooverlay_CXXFLAGS) $(CXXFLAGS) -MT gtkvideooverlay-main.o -MD -MP -MF $(DEPDIR)/gtkvideooverlay-main.Tpo -c -o gtkvideooverlay-main.o `test -f 'main.cpp' || echo '$(srcdir)/'`main.cpp
-@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/gtkvideooverlay-main.Tpo $(DEPDIR)/gtkvideooverlay-main.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='main.cpp' object='gtkvideooverlay-main.o' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gtkvideooverlay_CXXFLAGS) $(CXXFLAGS) -c -o gtkvideooverlay-main.o `test -f 'main.cpp' || echo '$(srcdir)/'`main.cpp
+libgstkmssink_la-gstkmssink.lo: gstkmssink.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstkmssink_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstkmssink_la_CFLAGS) $(CFLAGS) -MT libgstkmssink_la-gstkmssink.lo -MD -MP -MF $(DEPDIR)/libgstkmssink_la-gstkmssink.Tpo -c -o libgstkmssink_la-gstkmssink.lo `test -f 'gstkmssink.c' || echo '$(srcdir)/'`gstkmssink.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgstkmssink_la-gstkmssink.Tpo $(DEPDIR)/libgstkmssink_la-gstkmssink.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gstkmssink.c' object='libgstkmssink_la-gstkmssink.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 $(libgstkmssink_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstkmssink_la_CFLAGS) $(CFLAGS) -c -o libgstkmssink_la-gstkmssink.lo `test -f 'gstkmssink.c' || echo '$(srcdir)/'`gstkmssink.c
-gtkvideooverlay-main.obj: main.cpp
-@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gtkvideooverlay_CXXFLAGS) $(CXXFLAGS) -MT gtkvideooverlay-main.obj -MD -MP -MF $(DEPDIR)/gtkvideooverlay-main.Tpo -c -o gtkvideooverlay-main.obj `if test -f 'main.cpp'; then $(CYGPATH_W) 'main.cpp'; else $(CYGPATH_W) '$(srcdir)/main.cpp'; fi`
-@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/gtkvideooverlay-main.Tpo $(DEPDIR)/gtkvideooverlay-main.Po
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='main.cpp' object='gtkvideooverlay-main.obj' libtool=no @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(gtkvideooverlay_CXXFLAGS) $(CXXFLAGS) -c -o gtkvideooverlay-main.obj `if test -f 'main.cpp'; then $(CYGPATH_W) 'main.cpp'; else $(CYGPATH_W) '$(srcdir)/main.cpp'; fi`
+libgstkmssink_la-gstkmsutils.lo: gstkmsutils.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstkmssink_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstkmssink_la_CFLAGS) $(CFLAGS) -MT libgstkmssink_la-gstkmsutils.lo -MD -MP -MF $(DEPDIR)/libgstkmssink_la-gstkmsutils.Tpo -c -o libgstkmssink_la-gstkmsutils.lo `test -f 'gstkmsutils.c' || echo '$(srcdir)/'`gstkmsutils.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgstkmssink_la-gstkmsutils.Tpo $(DEPDIR)/libgstkmssink_la-gstkmsutils.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gstkmsutils.c' object='libgstkmssink_la-gstkmsutils.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 $(libgstkmssink_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstkmssink_la_CFLAGS) $(CFLAGS) -c -o libgstkmssink_la-gstkmsutils.lo `test -f 'gstkmsutils.c' || echo '$(srcdir)/'`gstkmsutils.c
+
+libgstkmssink_la-gstkmsallocator.lo: gstkmsallocator.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstkmssink_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstkmssink_la_CFLAGS) $(CFLAGS) -MT libgstkmssink_la-gstkmsallocator.lo -MD -MP -MF $(DEPDIR)/libgstkmssink_la-gstkmsallocator.Tpo -c -o libgstkmssink_la-gstkmsallocator.lo `test -f 'gstkmsallocator.c' || echo '$(srcdir)/'`gstkmsallocator.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgstkmssink_la-gstkmsallocator.Tpo $(DEPDIR)/libgstkmssink_la-gstkmsallocator.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gstkmsallocator.c' object='libgstkmssink_la-gstkmsallocator.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 $(libgstkmssink_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstkmssink_la_CFLAGS) $(CFLAGS) -c -o libgstkmssink_la-gstkmsallocator.lo `test -f 'gstkmsallocator.c' || echo '$(srcdir)/'`gstkmsallocator.c
+
+libgstkmssink_la-gstkmsbufferpool.lo: gstkmsbufferpool.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libgstkmssink_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstkmssink_la_CFLAGS) $(CFLAGS) -MT libgstkmssink_la-gstkmsbufferpool.lo -MD -MP -MF $(DEPDIR)/libgstkmssink_la-gstkmsbufferpool.Tpo -c -o libgstkmssink_la-gstkmsbufferpool.lo `test -f 'gstkmsbufferpool.c' || echo '$(srcdir)/'`gstkmsbufferpool.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgstkmssink_la-gstkmsbufferpool.Tpo $(DEPDIR)/libgstkmssink_la-gstkmsbufferpool.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gstkmsbufferpool.c' object='libgstkmssink_la-gstkmsbufferpool.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 $(libgstkmssink_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgstkmssink_la_CFLAGS) $(CFLAGS) -c -o libgstkmssink_la-gstkmsbufferpool.lo `test -f 'gstkmsbufferpool.c' || echo '$(srcdir)/'`gstkmsbufferpool.c
mostlyclean-libtool:
-rm -f *.lo
@@ -941,8 +1052,11 @@
done
check-am: all-am
check: check-am
-all-am: Makefile $(PROGRAMS)
+all-am: Makefile $(LTLIBRARIES) $(HEADERS)
installdirs:
+ for dir in "$(DESTDIR)$(plugindir)"; do \
+ test -z "$$dir" || $(MKDIR_P) "$$dir"; \
+ done
install: install-am
install-exec: install-exec-am
install-data: install-data-am
@@ -975,7 +1089,7 @@
@echo "it deletes files that may require special tools to rebuild."
clean: clean-am
-clean-am: clean-generic clean-libtool clean-noinstPROGRAMS \
+clean-am: clean-generic clean-libtool clean-pluginLTLIBRARIES \
mostlyclean-am
distclean: distclean-am
@@ -996,7 +1110,7 @@
info-am:
-install-data-am:
+install-data-am: install-pluginLTLIBRARIES
install-dvi: install-dvi-am
@@ -1042,23 +1156,24 @@
ps-am:
-uninstall-am:
+uninstall-am: uninstall-pluginLTLIBRARIES
.MAKE: install-am install-strip
.PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \
- clean-libtool clean-noinstPROGRAMS cscopelist-am ctags \
+ clean-libtool clean-pluginLTLIBRARIES cscopelist-am ctags \
ctags-am distclean distclean-compile distclean-generic \
distclean-libtool distclean-tags distdir dvi dvi-am html \
html-am info info-am install install-am install-data \
install-data-am install-dvi install-dvi-am install-exec \
install-exec-am install-html install-html-am install-info \
install-info-am install-man install-pdf install-pdf-am \
- install-ps install-ps-am install-strip installcheck \
- installcheck-am installdirs maintainer-clean \
- maintainer-clean-generic mostlyclean mostlyclean-compile \
- mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
- tags tags-am uninstall uninstall-am
+ install-pluginLTLIBRARIES install-ps install-ps-am \
+ install-strip installcheck installcheck-am installdirs \
+ maintainer-clean maintainer-clean-generic mostlyclean \
+ mostlyclean-compile mostlyclean-generic mostlyclean-libtool \
+ pdf pdf-am ps ps-am tags tags-am uninstall uninstall-am \
+ uninstall-pluginLTLIBRARIES
.PRECIOUS: Makefile
diff --git a/sys/kms/gstkmsallocator.c b/sys/kms/gstkmsallocator.c
new file mode 100644
index 0000000..5c23c92
--- /dev/null
+++ b/sys/kms/gstkmsallocator.c
@@ -0,0 +1,425 @@
+/* GStreamer
+ *
+ * Copyright (C) 2016 Igalia
+ *
+ * Authors:
+ * Víctor Manuel Jáquez Leal <vjaquez@igalia.com>
+ * Javier Martin <javiermartin@by.com.es>
+ *
+ * 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.
+ *
+ */
+
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#include <xf86drm.h>
+#include <xf86drmMode.h>
+#include <string.h>
+#include <unistd.h>
+
+#include "gstkmsallocator.h"
+#include "gstkmsutils.h"
+
+#define GST_CAT_DEFAULT kmsallocator_debug
+GST_DEBUG_CATEGORY_STATIC (GST_CAT_DEFAULT);
+
+#define GST_KMS_MEMORY_TYPE "KMSMemory"
+
+struct _GstKMSAllocatorPrivate
+{
+ int fd;
+ struct kms_driver *driver;
+};
+
+#define parent_class gst_kms_allocator_parent_class
+G_DEFINE_TYPE_WITH_CODE (GstKMSAllocator, gst_kms_allocator, GST_TYPE_ALLOCATOR,
+ G_ADD_PRIVATE (GstKMSAllocator);
+ GST_DEBUG_CATEGORY_INIT (GST_CAT_DEFAULT, "kmsallocator", 0,
+ "KMS allocator"));
+
+enum
+{
+ PROP_DRM_FD = 1,
+ PROP_N,
+};
+
+static GParamSpec *g_props[PROP_N] = { NULL, };
+
+gboolean
+gst_is_kms_memory (GstMemory * mem)
+{
+ return gst_memory_is_type (mem, GST_KMS_MEMORY_TYPE);
+}
+
+guint32
+gst_kms_memory_get_fb_id (GstMemory * mem)
+{
+ if (!gst_is_kms_memory (mem))
+ return 0;
+ return ((GstKMSMemory *) mem)->fb_id;
+}
+
+static gboolean
+ensure_kms_driver (GstKMSAllocator * alloc)
+{
+ GstKMSAllocatorPrivate *priv;
+ int err;
+
+ priv = alloc->priv;
+
+ if (priv->driver)
+ return TRUE;
+
+ if (priv->fd < 0)
+ return FALSE;
+
+ err = kms_create (priv->fd, &priv->driver);
+ if (err) {
+ GST_ERROR_OBJECT (alloc, "Could not create KMS driver: %s",
+ strerror (-err));
+ return FALSE;
+ }
+
+ return TRUE;
+}
+
+static void
+gst_kms_allocator_memory_reset (GstKMSAllocator * allocator, GstKMSMemory * mem)
+{
+ if (mem->fb_id) {
+ GST_DEBUG_OBJECT (allocator, "removing fb id %d", mem->fb_id);
+ drmModeRmFB (allocator->priv->fd, mem->fb_id);
+ mem->fb_id = 0;
+ }
+
+ if (!ensure_kms_driver (allocator))
+ return;
+
+ if (mem->bo) {
+ kms_bo_destroy (&mem->bo);
+ mem->bo = NULL;
+ }
+}
+
+static gboolean
+gst_kms_allocator_memory_create (GstKMSAllocator * allocator,
+ GstKMSMemory * kmsmem, GstVideoInfo * vinfo)
+{
+ gint ret;
+ guint attrs[] = {
+ KMS_WIDTH, GST_VIDEO_INFO_WIDTH (vinfo),
+ KMS_HEIGHT, GST_VIDEO_INFO_HEIGHT (vinfo),
+ KMS_TERMINATE_PROP_LIST,
+ };
+
+ if (kmsmem->bo)
+ return TRUE;
+
+ if (!ensure_kms_driver (allocator))
+ return FALSE;
+
+ ret = kms_bo_create (allocator->priv->driver, attrs, &kmsmem->bo);
+ if (ret) {
+ GST_ERROR_OBJECT (allocator, "Failed to create buffer object: %s (%d)",
+ strerror (-ret), ret);
+ return FALSE;
+ }
+
+ return TRUE;
+}
+
+static void
+gst_kms_allocator_free (GstAllocator * allocator, GstMemory * mem)
+{
+ GstKMSAllocator *alloc;
+ GstKMSMemory *kmsmem;
+
+ alloc = GST_KMS_ALLOCATOR (allocator);
+ kmsmem = (GstKMSMemory *) mem;
+
+ gst_kms_allocator_memory_reset (alloc, kmsmem);
+ g_slice_free (GstKMSMemory, kmsmem);
+}
+
+static void
+gst_kms_allocator_set_property (GObject * object, guint prop_id,
+ const GValue * value, GParamSpec * pspec)
+{
+ GstKMSAllocator *alloc;
+
+ alloc = GST_KMS_ALLOCATOR (object);
+
+ switch (prop_id) {
+ case PROP_DRM_FD:{
+ int fd = g_value_get_int (value);
+ if (fd > -1)
+ alloc->priv->fd = dup (fd);
+ break;
+ }
+ default:
+ G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+ break;
+ }
+}
+
+static void
+gst_kms_allocator_get_property (GObject * object, guint prop_id,
+ GValue * value, GParamSpec * pspec)
+{
+ GstKMSAllocator *alloc;
+
+ alloc = GST_KMS_ALLOCATOR (object);
+
+ switch (prop_id) {
+ case PROP_DRM_FD:
+ g_value_set_int (value, alloc->priv->fd);
+ break;
+ default:
+ G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+ break;
+ }
+}
+
+static void
+gst_kms_allocator_finalize (GObject * obj)
+{
+ GstKMSAllocator *alloc;
+
+ alloc = GST_KMS_ALLOCATOR (obj);
+
+ if (alloc->priv->driver)
+ kms_destroy (&alloc->priv->driver);
+
+ if (alloc->priv->fd > -1)
+ close (alloc->priv->fd);
+
+ G_OBJECT_CLASS (parent_class)->finalize (obj);
+}
+
+static void
+gst_kms_allocator_class_init (GstKMSAllocatorClass * klass)
+{
+ GObjectClass *gobject_class;
+ GstAllocatorClass *allocator_class;
+
+ allocator_class = GST_ALLOCATOR_CLASS (klass);
+ gobject_class = G_OBJECT_CLASS (klass);
+
+ allocator_class->free = gst_kms_allocator_free;
+
+ gobject_class->set_property = gst_kms_allocator_set_property;
+ gobject_class->get_property = gst_kms_allocator_get_property;
+ gobject_class->finalize = gst_kms_allocator_finalize;
+
+ g_props[PROP_DRM_FD] = g_param_spec_int ("drm-fd", "DRM fd",
+ "DRM file descriptor", -1, G_MAXINT, -1,
+ G_PARAM_READWRITE | G_PARAM_CONSTRUCT);
+
+ g_object_class_install_properties (gobject_class, PROP_N, g_props);
+}
+
+static gpointer
+gst_kms_memory_map (GstMemory * mem, gsize maxsize, GstMapFlags flags)
+{
+ GstKMSMemory *kmsmem;
+ int err;
+ gpointer out;
+
+ if (!ensure_kms_driver ((GstKMSAllocator *) mem->allocator))
+ return NULL;
+
+ kmsmem = (GstKMSMemory *) mem;
+ if (!kmsmem->bo)
+ return NULL;
+
+ out = NULL;
+ err = kms_bo_map (kmsmem->bo, &out);
+ if (err) {
+ GST_ERROR ("could not map memory: %s %d", strerror (-err), err);
+ return NULL;
+ }
+
+ return out;
+}
+
+static void
+gst_kms_memory_unmap (GstMemory * mem)
+{
+ GstKMSMemory *kmsmem;
+
+ if (!ensure_kms_driver ((GstKMSAllocator *) mem->allocator))
+ return;
+
+ kmsmem = (GstKMSMemory *) mem;
+ if (kmsmem->bo)
+ kms_bo_unmap (kmsmem->bo);
+}
+
+static void
+gst_kms_allocator_init (GstKMSAllocator * allocator)
+{
+ GstAllocator *alloc;
+
+ alloc = GST_ALLOCATOR_CAST (allocator);
+
+ allocator->priv = gst_kms_allocator_get_instance_private (allocator);
+ allocator->priv->fd = -1;
+
+ alloc->mem_type = GST_KMS_MEMORY_TYPE;
+ alloc->mem_map = gst_kms_memory_map;
+ alloc->mem_unmap = gst_kms_memory_unmap;
+ /* Use the default, fallback copy function */
+
+ GST_OBJECT_FLAG_SET (allocator, GST_ALLOCATOR_FLAG_CUSTOM_ALLOC);
+}
+
+GstAllocator *
+gst_kms_allocator_new (int fd)
+{
+ return g_object_new (GST_TYPE_KMS_ALLOCATOR, "name",
+ "KMSMemory::allocator", "drm-fd", fd, NULL);
+}
+
+static gboolean
+gst_kms_allocator_add_fb (GstKMSAllocator * alloc, GstKMSMemory * kmsmem,
+ GstVideoInfo * vinfo)
+{
+ int i, ret;
+ guint32 w, h, fmt, bo_handles[4] = { 0, };
+ guint32 offsets[4], pitches[4];
+
+ if (kmsmem->fb_id)
+ return TRUE;
+
+ w = GST_VIDEO_INFO_WIDTH (vinfo);
+ h = GST_VIDEO_INFO_HEIGHT (vinfo);
+ fmt = gst_drm_format_from_video (GST_VIDEO_INFO_FORMAT (vinfo));
+
+ if (kmsmem->bo) {
+ kms_bo_get_prop (kmsmem->bo, KMS_HANDLE, &bo_handles[0]);
+ for (i = 1; i < 4; i++)
+ bo_handles[i] = bo_handles[0];
+ } else {
+ for (i = 0; i < 4; i++)
+ bo_handles[i] = kmsmem->gem_handle[i];
+ }
+
+ GST_DEBUG_OBJECT (alloc, "bo handles: %d, %d, %d, %d", bo_handles[0],
+ bo_handles[1], bo_handles[2], bo_handles[3]);
+
+ for (i = 0; i < 4; i++) {
+ offsets[i] = GST_VIDEO_INFO_PLANE_OFFSET (vinfo, i);
+ pitches[i] = GST_VIDEO_INFO_PLANE_STRIDE (vinfo, i);
+ }
+
+ ret = drmModeAddFB2 (alloc->priv->fd, w, h, fmt, bo_handles, pitches,
+ offsets, &kmsmem->fb_id, 0);
+ if (ret) {
+ GST_ERROR_OBJECT (alloc, "Failed to bind to framebuffer: %s (%d)",
+ strerror (-ret), ret);
+ return FALSE;
+ }
+ return TRUE;
+}
+
+static GstMemory *
+gst_kms_allocator_alloc_empty (GstAllocator * allocator, GstVideoInfo * vinfo)
+{
+ GstKMSMemory *kmsmem;
+ GstMemory *mem;
+
+ kmsmem = g_slice_new0 (GstKMSMemory);
+ if (!kmsmem)
+ return NULL;
+ mem = GST_MEMORY_CAST (kmsmem);
+
+ gst_memory_init (mem, GST_MEMORY_FLAG_NO_SHARE, allocator, NULL,
+ GST_VIDEO_INFO_SIZE (vinfo), 0, 0, GST_VIDEO_INFO_SIZE (vinfo));
+
+ return mem;
+}
+
+GstMemory *
+gst_kms_allocator_bo_alloc (GstAllocator * allocator, GstVideoInfo * vinfo)
+{
+ GstKMSAllocator *alloc;
+ GstKMSMemory *kmsmem;
+ GstMemory *mem;
+
+ mem = gst_kms_allocator_alloc_empty (allocator, vinfo);
+ if (!mem)
+ return NULL;
+
+ alloc = GST_KMS_ALLOCATOR (allocator);
+ kmsmem = (GstKMSMemory *) mem;
+ if (!gst_kms_allocator_memory_create (alloc, kmsmem, vinfo))
+ goto fail;
+ if (!gst_kms_allocator_add_fb (alloc, kmsmem, vinfo))
+ goto fail;
+
+ return mem;
+
+ /* ERRORS */
+fail:
+ gst_memory_unref (mem);
+ return NULL;
+}
+
+GstKMSMemory *
+gst_kms_allocator_dmabuf_import (GstAllocator * allocator, gint * prime_fds,
+ gint n_planes, GstVideoInfo * vinfo)
+{
+ GstKMSAllocator *alloc;
+ GstMemory *mem;
+ GstKMSMemory *tmp;
+ gint i, ret;
+
+ g_return_val_if_fail (n_planes <= GST_VIDEO_MAX_PLANES, FALSE);
+
+ mem = gst_kms_allocator_alloc_empty (allocator, vinfo);
+ if (!mem)
+ return FALSE;
+
+ tmp = (GstKMSMemory *) mem;
+ alloc = GST_KMS_ALLOCATOR (allocator);
+ for (i = 0; i < n_planes; i++) {
+ ret = drmPrimeFDToHandle (alloc->priv->fd, prime_fds[i],
+ &tmp->gem_handle[i]);
+ if (ret)
+ goto import_fd_failed;
+ }
+
+ if (!gst_kms_allocator_add_fb (alloc, tmp, vinfo))
+ goto failed;
+
+ return tmp;
+
+ /* ERRORS */
+import_fd_failed:
+ {
+ GST_ERROR_OBJECT (alloc, "Failed to import prime fd %d: %s (%d)",
+ prime_fds[i], strerror (-ret), ret);
+ /* fallback */
+ }
+
+failed:
+ {
+ gst_memory_unref (mem);
+ return NULL;
+ }
+}
diff --git a/sys/kms/gstkmsallocator.h b/sys/kms/gstkmsallocator.h
new file mode 100644
index 0000000..fa5c349
--- /dev/null
+++ b/sys/kms/gstkmsallocator.h
@@ -0,0 +1,90 @@
+/* GStreamer
+ *
+ * Copyright (C) 2016 Igalia
+ *
+ * Authors:
+ * Víctor Manuel Jáquez Leal <vjaquez@igalia.com>
+ * Javier Martin <javiermartin@by.com.es>
+ *
+ * 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.
+ *
+ */
+
+#ifndef __GST_KMS_ALLOCATOR_H__
+#define __GST_KMS_ALLOCATOR_H__
+
+#include <gst/gst.h>
+#include <gst/video/video.h>
+#include <libkms.h>
+
+G_BEGIN_DECLS
+
+#define GST_TYPE_KMS_ALLOCATOR \
+ (gst_kms_allocator_get_type())
+#define GST_IS_KMS_ALLOCATOR(obj) \
+ (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GST_TYPE_KMS_ALLOCATOR))
+#define GST_IS_KMS_ALLOCATOR_CLASS(klass) \
+ (G_TYPE_CHECK_CLASS_TYPE ((klass), GST_TYPE_KMS_ALLOCATOR))
+#define GST_KMS_ALLOCATOR_GET_CLASS(obj) \
+ (G_TYPE_INSTANCE_GET_CLASS ((obj), GST_TYPE_KMS_ALLOCATOR, GstKMSAllocatorClass))
+#define GST_KMS_ALLOCATOR(obj) \
+ (G_TYPE_CHECK_INSTANCE_CAST ((obj), GST_TYPE_KMS_ALLOCATOR, GstKMSAllocator))
+#define GST_KMS_ALLOCATOR_CLASS(klass) \
+ (G_TYPE_CHECK_CLASS_CAST ((klass), GST_TYPE_KMS_ALLOCATOR, GstKMSAllocatorClass))
+
+typedef struct _GstKMSAllocator GstKMSAllocator;
+typedef struct _GstKMSAllocatorClass GstKMSAllocatorClass;
+typedef struct _GstKMSAllocatorPrivate GstKMSAllocatorPrivate;
+typedef struct _GstKMSMemory GstKMSMemory;
+
+struct _GstKMSMemory
+{
+ GstMemory parent;
+
+ guint32 fb_id;
+ guint32 gem_handle[GST_VIDEO_MAX_PLANES];
+ struct kms_bo *bo;
+};
+
+struct _GstKMSAllocator
+{
+ GstAllocator parent;
+ GstKMSAllocatorPrivate *priv;
+};
+
+struct _GstKMSAllocatorClass {
+ GstAllocatorClass parent_class;
+};
+
+GType gst_kms_allocator_get_type (void) G_GNUC_CONST;
+
+gboolean gst_is_kms_memory (GstMemory *mem);
+guint32 gst_kms_memory_get_fb_id (GstMemory *mem);
+
+GstAllocator* gst_kms_allocator_new (gint fd);
+
+GstMemory* gst_kms_allocator_bo_alloc (GstAllocator *allocator,
+ GstVideoInfo *vinfo);
+
+GstKMSMemory* gst_kms_allocator_dmabuf_import (GstAllocator *allocator,
+ gint *prime_fds,
+ gint n_planes,
+ GstVideoInfo *vinfo);
+
+G_END_DECLS
+
+
+#endif /* __GST_KMS_ALLOCATOR_H__ */
diff --git a/sys/kms/gstkmsbufferpool.c b/sys/kms/gstkmsbufferpool.c
new file mode 100644
index 0000000..329135c
--- /dev/null
+++ b/sys/kms/gstkmsbufferpool.c
@@ -0,0 +1,213 @@
+/*
+ * GStreamer
+ * Copyright (C) 2016 Igalia
+ *
+ * Authors:
+ * Víctor Manuel Jáquez Leal <vjaquez@igalia.com>
+ * Javier Martin <javiermartin@by.com.es>
+ *
+ * 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.
+ *
+ */
+
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#include <gst/video/gstvideometa.h>
+
+#include "gstkmsbufferpool.h"
+#include "gstkmsallocator.h"
+
+GST_DEBUG_CATEGORY_STATIC (gst_kms_buffer_pool_debug);
+#define GST_CAT_DEFAULT gst_kms_buffer_pool_debug
+
+struct _GstKMSBufferPoolPrivate
+{
+ gint fd;
+ GstVideoInfo vinfo;
+ GstAllocator *allocator;
+ gboolean add_videometa;
+};
+
+#define parent_class gst_kms_buffer_pool_parent_class
+G_DEFINE_TYPE_WITH_CODE (GstKMSBufferPool, gst_kms_buffer_pool,
+ GST_TYPE_VIDEO_BUFFER_POOL, G_ADD_PRIVATE (GstKMSBufferPool);
+ GST_DEBUG_CATEGORY_INIT (GST_CAT_DEFAULT, "kmsbufferpool", 0,
+ "KMS buffer pool"));
+
+static const gchar **
+gst_kms_buffer_pool_get_options (GstBufferPool * pool)
+{
+ static const gchar *options[] = { GST_BUFFER_POOL_OPTION_VIDEO_META,
+ GST_BUFFER_POOL_OPTION_KMS_BUFFER, NULL
+ };
+ return options;
+}
+
+static gboolean
+gst_kms_buffer_pool_set_config (GstBufferPool * pool, GstStructure * config)
+{
+ GstKMSBufferPool *vpool;
+ GstKMSBufferPoolPrivate *priv;
+ GstCaps *caps;
+ GstVideoInfo vinfo;
+ GstAllocator *allocator;
+ GstAllocationParams params;
+
+ vpool = GST_KMS_BUFFER_POOL_CAST (pool);
+ priv = vpool->priv;
+
+ if (!gst_buffer_pool_config_get_params (config, &caps, NULL, NULL, NULL))
+ goto wrong_config;
+
+ if (!caps)
+ goto no_caps;
+
+ /* now parse the caps from the config */
+ if (!gst_video_info_from_caps (&vinfo, caps))
+ goto wrong_caps;
+
+ allocator = NULL;
+ gst_buffer_pool_config_get_allocator (config, &allocator, ¶ms);
+
+ /* not our allocator, not our buffers */
+ if (allocator && GST_IS_KMS_ALLOCATOR (allocator)) {
+ if (priv->allocator)
+ gst_object_unref (priv->allocator);
+ if ((priv->allocator = allocator))
+ gst_object_ref (allocator);
+ }
+ if (!priv->allocator)
+ goto no_allocator;
+
+ priv->vinfo = vinfo;
+
+ /* enable metadata based on config of the pool */
+ priv->add_videometa = gst_buffer_pool_config_has_option (config,
+ GST_BUFFER_POOL_OPTION_VIDEO_META);
+
+ return GST_BUFFER_POOL_CLASS (parent_class)->set_config (pool, config);
+
+ /* ERRORS */
+wrong_config:
+ {
+ GST_WARNING_OBJECT (pool, "invalid config");
+ return FALSE;
+ }
+no_caps:
+ {
+ GST_WARNING_OBJECT (pool, "no caps in config");
+ return FALSE;
+ }
+wrong_caps:
+ {
+ GST_WARNING_OBJECT (pool,
+ "failed getting geometry from caps %" GST_PTR_FORMAT, caps);
+ return FALSE;
+ }
+no_allocator:
+ {
+ GST_WARNING_OBJECT (pool, "no valid allocator in pool");
+ return FALSE;
+ }
+}
+
+static GstFlowReturn
+gst_kms_buffer_pool_alloc_buffer (GstBufferPool * pool, GstBuffer ** buffer,
+ GstBufferPoolAcquireParams * params)
+{
+ GstKMSBufferPool *vpool;
+ GstKMSBufferPoolPrivate *priv;
+ GstVideoInfo *info;
+ GstMemory *mem;
+
+ vpool = GST_KMS_BUFFER_POOL_CAST (pool);
+ priv = vpool->priv;
+ info = &priv->vinfo;
+
+ *buffer = gst_buffer_new ();
+ if (*buffer == NULL)
+ goto no_memory;
+ mem = gst_kms_allocator_bo_alloc (priv->allocator, info);
+ if (!mem) {
+ gst_buffer_unref (*buffer);
+ goto no_memory;
+ }
+ gst_buffer_append_memory (*buffer, mem);
+
+ if (priv->add_videometa) {
+ GST_DEBUG_OBJECT (pool, "adding GstVideoMeta");
+
+ gst_buffer_add_video_meta_full (*buffer, GST_VIDEO_FRAME_FLAG_NONE,
+ GST_VIDEO_INFO_FORMAT (info),
+ GST_VIDEO_INFO_WIDTH (info), GST_VIDEO_INFO_HEIGHT (info),
+ GST_VIDEO_INFO_N_PLANES (info), info->offset, info->stride);
+ }
+
+ return GST_FLOW_OK;
+
+ /* ERROR */
+no_memory:
+ {
+ GST_WARNING_OBJECT (pool, "can't create memory");
+ return GST_FLOW_ERROR;
+ }
+}
+
+static void
+gst_kms_buffer_pool_finalize (GObject * object)
+{
+ GstKMSBufferPool *pool;
+ GstKMSBufferPoolPrivate *priv;
+
+ pool = GST_KMS_BUFFER_POOL (object);
+ priv = pool->priv;
+
+ if (priv->allocator)
+ gst_object_unref (priv->allocator);
+
+ G_OBJECT_CLASS (parent_class)->finalize (object);
+}
+
+static void
+gst_kms_buffer_pool_init (GstKMSBufferPool * pool)
+{
+ pool->priv = gst_kms_buffer_pool_get_instance_private (pool);
+ pool->priv->fd = -1;
+}
+
+static void
+gst_kms_buffer_pool_class_init (GstKMSBufferPoolClass * klass)
+{
+ GObjectClass *gobject_class;
+ GstBufferPoolClass *gstbufferpool_class;
+
+ gobject_class = (GObjectClass *) klass;
+ gstbufferpool_class = (GstBufferPoolClass *) klass;
+
+ gobject_class->finalize = gst_kms_buffer_pool_finalize;
+
+ gstbufferpool_class->get_options = gst_kms_buffer_pool_get_options;
+ gstbufferpool_class->set_config = gst_kms_buffer_pool_set_config;
+ gstbufferpool_class->alloc_buffer = gst_kms_buffer_pool_alloc_buffer;
+}
+
+GstBufferPool *
+gst_kms_buffer_pool_new (void)
+{
+ return g_object_new (GST_TYPE_KMS_BUFFER_POOL, NULL);
+}
diff --git a/sys/kms/gstkmsbufferpool.h b/sys/kms/gstkmsbufferpool.h
new file mode 100644
index 0000000..1ed9884
--- /dev/null
+++ b/sys/kms/gstkmsbufferpool.h
@@ -0,0 +1,75 @@
+/*
+ * GStreamer
+ * Copyright (C) 2016 Igalia
+ *
+ * Authors:
+ * Víctor Manuel Jáquez Leal <vjaquez@igalia.com>
+ * Javier Martin <javiermartin@by.com.es>
+ *
+ * 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.
+ *
+ */
+
+#ifndef __GST_KMS_BUFFER_POOL_H__
+#define __GST_KMS_BUFFER_POOL_H__
+
+#include <gst/gst.h>
+#include <gst/video/video.h>
+
+#include "gstkmssink.h"
+
+G_BEGIN_DECLS
+
+/**
+ * GST_BUFFER_POOL_OPTION_KMS_BUFFER:
+ *
+ * An option that can be activated on buffer pool to request KMS
+ * buffers.
+ */
+#define GST_BUFFER_POOL_OPTION_KMS_BUFFER "GstBufferPoolOptionKMSBuffer"
+
+/* video bufferpool */
+typedef struct _GstKMSBufferPool GstKMSBufferPool;
+typedef struct _GstKMSBufferPoolClass GstKMSBufferPoolClass;
+typedef struct _GstKMSBufferPoolPrivate GstKMSBufferPoolPrivate;
+
+#define GST_TYPE_KMS_BUFFER_POOL \
+ (gst_kms_buffer_pool_get_type())
+#define GST_IS_KMS_BUFFER_POOL(obj) \
+ (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GST_TYPE_KMS_BUFFER_POOL))
+#define GST_KMS_BUFFER_POOL(obj) \
+ (G_TYPE_CHECK_INSTANCE_CAST ((obj), GST_TYPE_KMS_BUFFER_POOL, GstKMSBufferPool))
+#define GST_KMS_BUFFER_POOL_CAST(obj) \
+ ((GstKMSBufferPool*)(obj))
+
+struct _GstKMSBufferPool
+{
+ GstVideoBufferPool parent;
+ GstKMSBufferPoolPrivate *priv;
+};
+
+struct _GstKMSBufferPoolClass
+{
+ GstVideoBufferPoolClass parent_class;
+};
+
+GType gst_kms_buffer_pool_get_type (void) G_GNUC_CONST;
+
+GstBufferPool *gst_kms_buffer_pool_new (void);
+
+G_END_DECLS
+
+#endif /* __GST_KMS_BUFFER_POOL_H__ */
diff --git a/sys/kms/gstkmssink.c b/sys/kms/gstkmssink.c
new file mode 100644
index 0000000..6790ad6
--- /dev/null
+++ b/sys/kms/gstkmssink.c
@@ -0,0 +1,1317 @@
+/* GStreamer
+ *
+ * Copyright (C) 2016 Igalia
+ *
+ * Authors:
+ * Víctor Manuel Jáquez Leal <vjaquez@igalia.com>
+ * Javier Martin <javiermartin@by.com.es>
+ *
+ * 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.
+ *
+ */
+
+/**
+ * SECTION:element-kmssink
+ * @short_description: A KMS/DRM based video sink
+ *
+ * kmssink is a simple video sink that renders video frames directly
+ * in a plane of a DRM device.
+ *
+ * <refsect2>
+ * <title>Example launch line</title>
+ * |[
+ * gst-launch-1.0 videotestsrc ! kmssink
+ * ]|
+ * </refsect2>
+ */
+
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#include <gst/video/video.h>
+#include <gst/allocators/gstdmabuf.h>
+
+#include <drm.h>
+#include <xf86drm.h>
+#include <xf86drmMode.h>
+
+#include <string.h>
+
+#include "gstkmssink.h"
+#include "gstkmsutils.h"
+#include "gstkmsbufferpool.h"
+#include "gstkmsallocator.h"
+
+#define GST_PLUGIN_NAME "kmssink"
+#define GST_PLUGIN_DESC "Video sink using the Linux kernel mode setting API"
+
+GST_DEBUG_CATEGORY_STATIC (gst_kms_sink_debug);
+GST_DEBUG_CATEGORY_STATIC (CAT_PERFORMANCE);
+#define GST_CAT_DEFAULT gst_kms_sink_debug
+
+#define parent_class gst_kms_sink_parent_class
+G_DEFINE_TYPE_WITH_CODE (GstKMSSink, gst_kms_sink, GST_TYPE_VIDEO_SINK,
+ GST_DEBUG_CATEGORY_INIT (GST_CAT_DEFAULT, GST_PLUGIN_NAME, 0,
+ GST_PLUGIN_DESC);
+ GST_DEBUG_CATEGORY_GET (CAT_PERFORMANCE, "GST_PERFORMANCE"));
+
+enum
+{
+ PROP_DRIVER_NAME = 1,
+ PROP_CONNECTOR_ID,
+ PROP_PLANE_ID,
+ PROP_N
+};
+
+static GParamSpec *g_properties[PROP_N] = { NULL, };
+
+static int
+kms_open (gchar ** driver)
+{
+ static const char *drivers[] = { "i915", "radeon", "nouveau", "vmwgfx",
+ "exynos", "amdgpu", "imx-drm", "rockchip", "atmel-hlcdc"
+ };
+ int i, fd = -1;
+
+ for (i = 0; i < G_N_ELEMENTS (drivers); i++) {
+ fd = drmOpen (drivers[i], NULL);
+ if (fd >= 0) {
+ if (driver)
+ *driver = g_strdup (drivers[i]);
+ break;
+ }
+ }
+
+ return fd;
+}
+
+static drmModePlane *
+find_plane_for_crtc (int fd, drmModeRes * res, drmModePlaneRes * pres,
+ int crtc_id)
+{
+ drmModePlane *plane;
+ int i, pipe;
+
+ plane = NULL;
+ pipe = -1;
+ for (i = 0; i < res->count_crtcs; i++) {
+ if (crtc_id == res->crtcs[i]) {
+ pipe = i;
+ break;
+ }
+ }
+
+ if (pipe == -1)
+ return NULL;
+
+ for (i = 0; i < pres->count_planes; i++) {
+ plane = drmModeGetPlane (fd, pres->planes[i]);
+ if (plane->possible_crtcs & (1 << pipe))
+ return plane;
+ drmModeFreePlane (plane);
+ }
+
+ return NULL;
+}
+
+static drmModeCrtc *
+find_crtc_for_connector (int fd, drmModeRes * res, drmModeConnector * conn,
+ guint * pipe)
+{
+ int i;
+ int crtc_id;
+ drmModeEncoder *enc;
+ drmModeCrtc *crtc;
+
+ crtc_id = -1;
+ for (i = 0; i < res->count_encoders; i++) {
+ enc = drmModeGetEncoder (fd, res->encoders[i]);
+ if (enc) {
+ if (enc->encoder_id == conn->encoder_id) {
+ crtc_id = enc->crtc_id;
+ drmModeFreeEncoder (enc);
+ break;
+ }
+ drmModeFreeEncoder (enc);
+ }
+ }
+
+ if (crtc_id == -1)
+ return NULL;
+
+ for (i = 0; i < res->count_crtcs; i++) {
+ crtc = drmModeGetCrtc (fd, res->crtcs[i]);
+ if (crtc) {
+ if (crtc_id == crtc->crtc_id) {
+ if (pipe)
+ *pipe = i;
+ return crtc;
+ }
+ drmModeFreeCrtc (crtc);
+ }
+ }
+
+ return NULL;
+}
+
+static gboolean
+connector_is_used (int fd, drmModeRes * res, drmModeConnector * conn)
+{
+ gboolean result;
+ drmModeCrtc *crtc;
+
+ result = FALSE;
+ crtc = find_crtc_for_connector (fd, res, conn, NULL);
+ if (crtc) {
+ result = crtc->buffer_id != 0;
+ drmModeFreeCrtc (crtc);
+ }
+
+ return result;
+}
+
+static drmModeConnector *
+find_used_connector_by_type (int fd, drmModeRes * res, int type)
+{
+ int i;
+ drmModeConnector *conn;
+
+ conn = NULL;
+ for (i = 0; i < res->count_connectors; i++) {
+ conn = drmModeGetConnector (fd, res->connectors[i]);
+ if (conn) {
+ if ((conn->connector_type == type) && connector_is_used (fd, res, conn))
+ return conn;
+ drmModeFreeConnector (conn);
+ }
+ }
+
+ return NULL;
+}
+
+static drmModeConnector *
+find_first_used_connector (int fd, drmModeRes * res)
+{
+ int i;
+ drmModeConnector *conn;
+
+ conn = NULL;
+ for (i = 0; i < res->count_connectors; i++) {
+ conn = drmModeGetConnector (fd, res->connectors[i]);
+ if (conn) {
+ if (connector_is_used (fd, res, conn))
+ return conn;
+ drmModeFreeConnector (conn);
+ }
+ }
+
+ return NULL;
+}
+
+static drmModeConnector *
+find_main_monitor (int fd, drmModeRes * res)
+{
+ /* Find the LVDS and eDP connectors: those are the main screens. */
+ static const int priority[] = { DRM_MODE_CONNECTOR_LVDS,
+ DRM_MODE_CONNECTOR_eDP
+ };
+ int i;
+ drmModeConnector *conn;
+
+ conn = NULL;
+ for (i = 0; !conn && i < G_N_ELEMENTS (priority); i++)
+ conn = find_used_connector_by_type (fd, res, priority[i]);
+
+ /* if we didn't find a connector, grab the first one in use */
+ if (!conn)
+ conn = find_first_used_connector (fd, res);
+
+ return conn;
+}
+
+static void
+log_drm_version (GstKMSSink * self)
+{
+#ifndef GST_DISABLE_GST_DEBUG
+ drmVersion *v;
+
+ v = drmGetVersion (self->fd);
+ if (v) {
+ GST_INFO_OBJECT (self, "DRM v%d.%d.%d [%s — %s — %s]", v->version_major,
+ v->version_minor, v->version_patchlevel, GST_STR_NULL (v->name),
+ GST_STR_NULL (v->desc), GST_STR_NULL (v->date));
+ drmFreeVersion (v);
+ } else {
+ GST_WARNING_OBJECT (self, "could not get driver information: %s",
+ GST_STR_NULL (self->devname));
+ }
+#endif
+ return;
+}
+
+static gboolean
+get_drm_caps (GstKMSSink * self)
+{
+ gint ret;
+ guint64 has_dumb_buffer;
+ guint64 has_prime;
+ guint64 has_async_page_flip;
+
+ has_dumb_buffer = 0;
+ ret = drmGetCap (self->fd, DRM_CAP_DUMB_BUFFER, &has_dumb_buffer);
+ if (ret)
+ GST_WARNING_OBJECT (self, "could not get dumb buffer capability");
+ if (has_dumb_buffer == 0) {
+ GST_ERROR_OBJECT (self, "driver cannot handle dumb buffers");
+ return FALSE;
+ }
+
+ has_prime = 0;
+ ret = drmGetCap (self->fd, DRM_CAP_PRIME, &has_prime);
+ if (ret)
+ GST_WARNING_OBJECT (self, "could not get prime capability");
+ else
+ self->has_prime_import = (gboolean) (has_prime & DRM_PRIME_CAP_IMPORT);
+
+ has_async_page_flip = 0;
+ ret = drmGetCap (self->fd, DRM_CAP_ASYNC_PAGE_FLIP, &has_async_page_flip);
+ if (ret)
+ GST_WARNING_OBJECT (self, "could not get async page flip capability");
+ else
+ self->has_async_page_flip = (gboolean) has_async_page_flip;
+
+ GST_INFO_OBJECT (self, "prime import (%s) / async page flip (%s)",
+ self->has_prime_import ? "✓" : "✗",
+ self->has_async_page_flip ? "✓" : "✗");
+
+ return TRUE;
+}
+
+static gboolean
+ensure_allowed_caps (GstKMSSink * self, drmModePlane * plane, drmModeRes * res)
+{
+ GstCaps *out_caps, *caps;
+ int i;
+ GstVideoFormat fmt;
+ const gchar *format;
+
+ if (self->allowed_caps)
+ return TRUE;
+
+ out_caps = gst_caps_new_empty ();
+ if (!out_caps)
+ return FALSE;
+
+ for (i = 0; i < plane->count_formats; i++) {
+ fmt = gst_video_format_from_drm (plane->formats[i]);
+ if (fmt == GST_VIDEO_FORMAT_UNKNOWN) {
+ GST_INFO_OBJECT (self, "ignoring format %" GST_FOURCC_FORMAT,
+ GST_FOURCC_ARGS (plane->formats[i]));
+ continue;
+ }
+
+ format = gst_video_format_to_string (fmt);
+ caps = gst_caps_new_simple ("video/x-raw", "format", G_TYPE_STRING, format,
+ "width", GST_TYPE_INT_RANGE, res->min_width, res->max_width,
+ "height", GST_TYPE_INT_RANGE, res->min_height, res->max_height,
+ "framerate", GST_TYPE_FRACTION_RANGE, 0, 1, G_MAXINT, 1, NULL);
+ if (!caps)
+ continue;
+
+ out_caps = gst_caps_merge (out_caps, caps);
+ }
+
+ self->allowed_caps = gst_caps_simplify (out_caps);
+
+ GST_DEBUG_OBJECT (self, "allowed caps = %" GST_PTR_FORMAT,
+ self->allowed_caps);
+
+ return TRUE;
+}
+
+static gboolean
+gst_kms_sink_start (GstBaseSink * bsink)
+{
+ GstKMSSink *self;
+ drmModeRes *res;
+ drmModeConnector *conn;
+ drmModeCrtc *crtc;
+ drmModePlaneRes *pres;
+ drmModePlane *plane;
+ gboolean universal_planes;
+ gboolean ret;
+
+ self = GST_KMS_SINK (bsink);
+ universal_planes = FALSE;
+ ret = FALSE;
+ res = NULL;
+ conn = NULL;
+ crtc = NULL;
+ pres = NULL;
+ plane = NULL;
+
+ if (self->devname)
+ self->fd = drmOpen (self->devname, NULL);
+ else
+ self->fd = kms_open (&self->devname);
+ if (self->fd < 0)
+ goto open_failed;
+
+ log_drm_version (self);
+ if (!get_drm_caps (self))
+ goto bail;
+
+ res = drmModeGetResources (self->fd);
+ if (!res)
+ goto resources_failed;
+
+ if (self->conn_id == -1)
+ conn = find_main_monitor (self->fd, res);
+ else
+ conn = drmModeGetConnector (self->fd, self->conn_id);
+ if (!conn)
+ goto connector_failed;
+
+ crtc = find_crtc_for_connector (self->fd, res, conn, &self->pipe);
+ if (!crtc)
+ goto crtc_failed;
+
+retry_find_plane:
+ if (universal_planes &&
+ drmSetClientCap (self->fd, DRM_CLIENT_CAP_UNIVERSAL_PLANES, 1))
+ goto set_cap_failed;
+
+ pres = drmModeGetPlaneResources (self->fd);
+ if (!pres)
+ goto plane_resources_failed;
+
+ if (self->plane_id == -1)
+ plane = find_plane_for_crtc (self->fd, res, pres, crtc->crtc_id);
+ else
+ plane = drmModeGetPlane (self->fd, self->plane_id);
+ if (!plane)
+ goto plane_failed;
+
+ /* let's get the available color formats in plane */
+ if (!ensure_allowed_caps (self, plane, res))
+ goto bail;
+
+ self->conn_id = conn->connector_id;
+ self->crtc_id = crtc->crtc_id;
+ self->plane_id = plane->plane_id;
+
+ GST_INFO_OBJECT (self, "connector id = %d / crtc id = %d / plane id = %d",
+ self->conn_id, self->crtc_id, self->plane_id);
+
+ self->hdisplay = crtc->mode.hdisplay;
+ self->vdisplay = crtc->mode.vdisplay;
+ self->buffer_id = crtc->buffer_id;
+
+ self->mm_width = conn->mmWidth;
+ self->mm_height = conn->mmHeight;
+
+ GST_INFO_OBJECT (self, "display size: pixels = %dx%d / millimeters = %dx%d",
+ self->hdisplay, self->vdisplay, self->mm_width, self->mm_height);
+
+ self->pollfd.fd = self->fd;
+ gst_poll_add_fd (self->poll, &self->pollfd);
+ gst_poll_fd_ctl_read (self->poll, &self->pollfd, TRUE);
+
+ ret = TRUE;
+
+bail:
+ if (plane)
+ drmModeFreePlane (plane);
+ if (pres)
+ drmModeFreePlaneResources (pres);
+ if (crtc)
+ drmModeFreeCrtc (crtc);
+ if (conn)
+ drmModeFreeConnector (conn);
+ if (res)
+ drmModeFreeResources (res);
+
+ if (!ret && self->fd >= 0) {
+ drmClose (self->fd);
+ self->fd = -1;
+ }
+
+ return ret;
+
+ /* ERRORS */
+open_failed:
+ {
+ GST_ERROR_OBJECT (self, "Could not open DRM module %s: %s",
+ GST_STR_NULL (self->devname), strerror (errno));
+ return FALSE;
+ }
+
+resources_failed:
+ {
+ GST_ERROR_OBJECT (self, "drmModeGetResources failed: %s (%d)",
+ strerror (errno), errno);
+ goto bail;
+ }
+
+connector_failed:
+ {
+ GST_ERROR_OBJECT (self, "Could not find a valid monitor connector");
+ goto bail;
+ }
+
+crtc_failed:
+ {
+ GST_ERROR_OBJECT (self, "Could not find a crtc for connector");
+ goto bail;
+ }
+
+set_cap_failed:
+ {
+ GST_ERROR_OBJECT (self, "Could not set universal planes capability bit");
+ goto bail;
+ }
+
+plane_resources_failed:
+ {
+ GST_ERROR_OBJECT (self, "drmModeGetPlaneResources failed: %s (%d)",
+ strerror (errno), errno);
+ goto bail;
+ }
+
+plane_failed:
+ {
+ if (universal_planes) {
+ GST_ERROR_OBJECT (self, "Could not find a plane for crtc");
+ goto bail;
+ } else {
+ universal_planes = TRUE;
+ goto retry_find_plane;
+ }
+ }
+}
+
+static gboolean
+gst_kms_sink_stop (GstBaseSink * bsink)
+{
+ GstKMSSink *self;
+
+ self = GST_KMS_SINK (bsink);
+
+ gst_buffer_replace (&self->last_buffer, NULL);
+ gst_caps_replace (&self->allowed_caps, NULL);
+ gst_object_replace ((GstObject **) & self->pool, NULL);
+ gst_object_replace ((GstObject **) & self->allocator, NULL);
+
+ gst_poll_remove_fd (self->poll, &self->pollfd);
+ gst_poll_restart (self->poll);
+ gst_poll_fd_init (&self->pollfd);
+
+ if (self->fd >= 0) {
+ drmClose (self->fd);
+ self->fd = -1;
+ }
+
+ return TRUE;
+}
+
+static GstCaps *
+gst_kms_sink_get_allowed_caps (GstKMSSink * self)
+{
+ if (!self->allowed_caps)
+ return NULL; /* base class will return the template caps */
+ return gst_caps_ref (self->allowed_caps);
+}
+
+static GstCaps *
+gst_kms_sink_get_caps (GstBaseSink * bsink, GstCaps * filter)
+{
+ GstKMSSink *self;
+ GstCaps *caps, *out_caps;
+
+ self = GST_KMS_SINK (bsink);
+
+ caps = gst_kms_sink_get_allowed_caps (self);
+ if (caps && filter) {
+ out_caps = gst_caps_intersect_full (caps, filter, GST_CAPS_INTERSECT_FIRST);
+ gst_caps_unref (caps);
+ } else {
+ out_caps = caps;
+ }
+
+ return out_caps;
+}
+
+static void
+ensure_kms_allocator (GstKMSSink * self)
+{
+ if (self->allocator)
+ return;
+ self->allocator = gst_kms_allocator_new (self->fd);
+}
+
+static GstBufferPool *
+gst_kms_sink_create_pool (GstKMSSink * self, GstCaps * caps, gsize size,
+ gint min)
+{
+ GstBufferPool *pool;
+ GstStructure *config;
+
+ pool = gst_kms_buffer_pool_new ();
+ if (!pool)
+ goto pool_failed;
+
+ config = gst_buffer_pool_get_config (pool);
+ gst_buffer_pool_config_set_params (config, caps, size, min, 0);
+ gst_buffer_pool_config_add_option (config, GST_BUFFER_POOL_OPTION_VIDEO_META);
+
+ ensure_kms_allocator (self);
+ gst_buffer_pool_config_set_allocator (config, self->allocator, NULL);
+
+ if (!gst_buffer_pool_set_config (pool, config))
+ goto config_failed;
+
+ return pool;
+
+ /* ERRORS */
+pool_failed:
+ {
+ GST_ERROR_OBJECT (self, "failed to create buffer pool");
+ return NULL;
+ }
+config_failed:
+ {
+ GST_ERROR_OBJECT (self, "failed to set config");
+ gst_object_unref (pool);
+ return NULL;
+ }
+}
+
+static gboolean
+gst_kms_sink_calculate_display_ratio (GstKMSSink * self, GstVideoInfo * vinfo)
+{
+ guint dar_n, dar_d;
+ guint video_width, video_height;
+ guint video_par_n, video_par_d;
+ guint dpy_par_n, dpy_par_d;
+
+ video_width = GST_VIDEO_INFO_WIDTH (vinfo);
+ video_height = GST_VIDEO_INFO_HEIGHT (vinfo);
+ video_par_n = GST_VIDEO_INFO_PAR_N (vinfo);
+ video_par_d = GST_VIDEO_INFO_PAR_D (vinfo);
+
+ gst_video_calculate_device_ratio (self->hdisplay, self->vdisplay,
+ self->mm_width, self->mm_height, &dpy_par_n, &dpy_par_d);
+
+ if (!gst_video_calculate_display_ratio (&dar_n, &dar_d, video_width,
+ video_height, video_par_n, video_par_d, dpy_par_n, dpy_par_d))
+ return FALSE;
+
+ GST_DEBUG_OBJECT (self, "video calculated display ratio: %d/%d", dar_n,
+ dar_d);
+
+ /* now find a width x height that respects this display ratio.
+ * prefer those that have one of w/h the same as the incoming video
+ * using wd / hd = dar_n / dar_d */
+
+ /* start with same height, because of interlaced video */
+ /* check hd / dar_d is an integer scale factor, and scale wd with the PAR */
+ if (video_height % dar_d == 0) {
+ GST_DEBUG_OBJECT (self, "keeping video height");
+ GST_VIDEO_SINK_WIDTH (self) = (guint)
+ gst_util_uint64_scale_int (video_height, dar_n, dar_d);
+ GST_VIDEO_SINK_HEIGHT (self) = video_height;
+ } else if (video_width % dar_n == 0) {
+ GST_DEBUG_OBJECT (self, "keeping video width");
+ GST_VIDEO_SINK_WIDTH (self) = video_width;
+ GST_VIDEO_SINK_HEIGHT (self) = (guint)
+ gst_util_uint64_scale_int (video_width, dar_d, dar_n);
+ } else {
+ GST_DEBUG_OBJECT (self, "approximating while keeping video height");
+ GST_VIDEO_SINK_WIDTH (self) = (guint)
+ gst_util_uint64_scale_int (video_height, dar_n, dar_d);
+ GST_VIDEO_SINK_HEIGHT (self) = video_height;
+ }
+ GST_DEBUG_OBJECT (self, "scaling to %dx%d", GST_VIDEO_SINK_WIDTH (self),
+ GST_VIDEO_SINK_HEIGHT (self));
+
+ return TRUE;
+}
+
+static gboolean
+gst_kms_sink_set_caps (GstBaseSink * bsink, GstCaps * caps)
+{
+ GstKMSSink *self;
+ GstVideoInfo vinfo;
+ GstBufferPool *newpool, *oldpool;
+
+ self = GST_KMS_SINK (bsink);
+
+ if (!gst_video_info_from_caps (&vinfo, caps))
+ goto invalid_format;
+
+ if (!gst_kms_sink_calculate_display_ratio (self, &vinfo))
+ goto no_disp_ratio;
+
+ if (GST_VIDEO_SINK_WIDTH (self) <= 0 || GST_VIDEO_SINK_HEIGHT (self) <= 0)
+ goto invalid_size;
+
+ /* create a new pool for the new configuration */
+ newpool = gst_kms_sink_create_pool (self, caps, GST_VIDEO_INFO_SIZE (&vinfo),
+ 2);
+ if (!newpool)
+ goto no_pool;
+
+ /* we don't activate the internal pool yet as it may not be needed */
+ oldpool = self->pool;
+ self->pool = newpool;
+
+ if (oldpool) {
+ gst_buffer_pool_set_active (oldpool, FALSE);
+ gst_object_unref (oldpool);
+ }
+
+ self->vinfo = vinfo;
+
+ GST_DEBUG_OBJECT (self, "negotiated caps = %" GST_PTR_FORMAT, caps);
+
+ return TRUE;
+
+ /* ERRORS */
+invalid_format:
+ {
+ GST_ERROR_OBJECT (self, "caps invalid");
+ return FALSE;
+ }
+
+invalid_size:
+ {
+ GST_ELEMENT_ERROR (self, CORE, NEGOTIATION, (NULL),
+ ("Invalid image size."));
+ return FALSE;
+ }
+
+no_disp_ratio:
+ {
+ GST_ELEMENT_ERROR (self, CORE, NEGOTIATION, (NULL),
+ ("Error calculating the output display ratio of the video."));
+ return FALSE;
+ }
+no_pool:
+ {
+ /* Already warned in create_pool */
+ return FALSE;
+ }
+}
+
+static gboolean
+gst_kms_sink_propose_allocation (GstBaseSink * bsink, GstQuery * query)
+{
+ GstKMSSink *self;
+ GstCaps *caps;
+ gboolean need_pool;
+ GstVideoInfo vinfo;
+ GstBufferPool *pool;
+ gsize size;
+
+ self = GST_KMS_SINK (bsink);
+
+ gst_query_parse_allocation (query, &caps, &need_pool);
+ if (!caps)
+ goto no_caps;
+ if (!gst_video_info_from_caps (&vinfo, caps))
+ goto invalid_caps;
+
+ size = GST_VIDEO_INFO_SIZE (&vinfo);
+
+ pool = NULL;
+ if (need_pool) {
+ pool = gst_kms_sink_create_pool (self, caps, size, 0);
+ if (!pool)
+ goto no_pool;
+ }
+
+ if (pool) {
+ /* we need at least 2 buffer because we hold on to the last one */
+ gst_query_add_allocation_pool (query, pool, size, 2, 0);
+ gst_object_unref (pool);
+ }
+
+ gst_query_add_allocation_meta (query, GST_VIDEO_META_API_TYPE, NULL);
+ gst_query_add_allocation_meta (query, GST_VIDEO_CROP_META_API_TYPE, NULL);
+
+ return TRUE;
+
+ /* ERRORS */
+no_caps:
+ {
+ GST_DEBUG_OBJECT (bsink, "no caps specified");
+ return FALSE;
+ }
+invalid_caps:
+ {
+ GST_DEBUG_OBJECT (bsink, "invalid caps specified");
+ return FALSE;
+ }
+no_pool:
+ {
+ /* Already warned in create_pool */
+ return FALSE;
+ }
+}
+
+static void
+gst_kms_sink_get_times (GstBaseSink * bsink, GstBuffer * buf,
+ GstClockTime * start, GstClockTime * end)
+{
+ GstKMSSink *self;
+
+ self = GST_KMS_SINK (bsink);
+
+ if (GST_BUFFER_TIMESTAMP_IS_VALID (buf)) {
+ *start = GST_BUFFER_TIMESTAMP (buf);
+ if (GST_BUFFER_DURATION_IS_VALID (buf))
+ *end = *start + GST_BUFFER_DURATION (buf);
+ else {
+ if (GST_VIDEO_INFO_FPS_N (&self->vinfo) > 0) {
+ *end = *start +
+ gst_util_uint64_scale_int (GST_SECOND,
+ GST_VIDEO_INFO_FPS_D (&self->vinfo),
+ GST_VIDEO_INFO_FPS_N (&self->vinfo));
+ }
+ }
+ }
+}
+
+static void
+sync_handler (gint fd, guint frame, guint sec, guint usec, gpointer data)
+{
+ gboolean *waiting;
+
+ waiting = data;
+ *waiting = FALSE;
+}
+
+static gboolean
+gst_kms_sink_sync (GstKMSSink * self)
+{
+ gint ret;
+ gboolean waiting;
+ drmEventContext evctxt = {
+ .version = DRM_EVENT_CONTEXT_VERSION,
+ .page_flip_handler = sync_handler,
+ .vblank_handler = sync_handler,
+ };
+ drmVBlank vbl = {
+ .request = {
+ .type = DRM_VBLANK_RELATIVE | DRM_VBLANK_EVENT,
+ .sequence = 1,
+ .signal = (gulong) & waiting,
+ },
+ };
+
+ if (self->pipe == 1)
+ vbl.request.type |= DRM_VBLANK_SECONDARY;
+ else if (self->pipe > 1)
+ vbl.request.type |= self->pipe << DRM_VBLANK_HIGH_CRTC_SHIFT;
+
+ waiting = TRUE;
+ if (!self->has_async_page_flip) {
+ ret = drmWaitVBlank (self->fd, &vbl);
+ if (ret)
+ goto vblank_failed;
+ } else {
+ ret = drmModePageFlip (self->fd, self->crtc_id, self->buffer_id,
+ DRM_MODE_PAGE_FLIP_EVENT, &waiting);
+ if (ret)
+ goto pageflip_failed;
+ }
+
+ while (waiting) {
+ do {
+ ret = gst_poll_wait (self->poll, 3 * GST_SECOND);
+ } while (ret == -1 && (errno == EAGAIN || errno == EINTR));
+
+ ret = drmHandleEvent (self->fd, &evctxt);
+ if (ret)
+ goto event_failed;
+ }
+
+ return TRUE;
+
+ /* ERRORS */
+vblank_failed:
+ {
+ GST_WARNING_OBJECT (self, "drmWaitVBlank failed: %s (%d)", strerror (-ret),
+ ret);
+ return FALSE;
+ }
+pageflip_failed:
+ {
+ GST_WARNING_OBJECT (self, "drmModePageFlip failed: %s (%d)",
+ strerror (-ret), ret);
+ return FALSE;
+ }
+event_failed:
+ {
+ GST_ERROR_OBJECT (self, "drmHandleEvent failed: %s (%d)", strerror (-ret),
+ ret);
+ return FALSE;
+ }
+}
+
+static GstMemory *
+get_cached_kmsmem (GstMemory * mem)
+{
+ return gst_mini_object_get_qdata (GST_MINI_OBJECT (mem),
+ g_quark_from_static_string ("kmsmem"));
+}
+
+static void
+set_cached_kmsmem (GstMemory * mem, GstMemory * kmsmem)
+{
+ return gst_mini_object_set_qdata (GST_MINI_OBJECT (mem),
+ g_quark_from_static_string ("kmsmem"), kmsmem,
+ (GDestroyNotify) gst_memory_unref);
+}
+
+static gsize
+get_plane_data_size (GstVideoInfo * info, guint plane)
+{
+ gint padded_height;
+ gsize plane_size;
+
+ padded_height = info->height;
+ padded_height =
+ GST_VIDEO_FORMAT_INFO_SCALE_HEIGHT (info->finfo, plane, padded_height);
+
+ plane_size = GST_VIDEO_INFO_PLANE_STRIDE (info, plane) * padded_height;
+
+ return plane_size;
+}
+
+static gboolean
+gst_kms_sink_import_dmabuf (GstKMSSink * self, GstBuffer * inbuf,
+ GstBuffer ** outbuf)
+{
+ gint prime_fds[GST_VIDEO_MAX_PLANES] = { 0, };
+ GstVideoMeta *meta;
+ guint i, n_mem, n_planes;
+ GstKMSMemory *kmsmem;
+ guint mems_idx[GST_VIDEO_MAX_PLANES];
+ gsize mems_skip[GST_VIDEO_MAX_PLANES];
+ GstMemory *mems[GST_VIDEO_MAX_PLANES];
+
+ if (!self->has_prime_import)
+ return FALSE;
+
+ /* This will eliminate most non-dmabuf out there */
+ if (!gst_is_dmabuf_memory (gst_buffer_peek_memory (inbuf, 0)))
+ return FALSE;
+
+ n_planes = GST_VIDEO_INFO_N_PLANES (&self->vinfo);
+ n_mem = gst_buffer_n_memory (inbuf);
+ meta = gst_buffer_get_video_meta (inbuf);
+
+ /* We cannot have multiple dmabuf per plane */
+ if (n_mem > n_planes)
+ return FALSE;
+
+ /* Update video info based on video meta */
+ if (meta) {
+ GST_VIDEO_INFO_WIDTH (&self->vinfo) = meta->width;
+ GST_VIDEO_INFO_HEIGHT (&self->vinfo) = meta->height;
+
+ for (i = 0; i < meta->n_planes; i++) {
+ GST_VIDEO_INFO_PLANE_OFFSET (&self->vinfo, i) = meta->offset[i];
+ GST_VIDEO_INFO_PLANE_STRIDE (&self->vinfo, i) = meta->stride[i];
+ }
+ }
+
+ /* Find and validate all memories */
+ for (i = 0; i < n_planes; i++) {
+ guint plane_size;
+ guint length;
+
+ plane_size = get_plane_data_size (&self->vinfo, i);
+ if (!gst_buffer_find_memory (inbuf,
+ GST_VIDEO_INFO_PLANE_OFFSET (&self->vinfo, i), plane_size,
+ &mems_idx[i], &length, &mems_skip[i]))
+ return FALSE;
+
+ /* We can't have more then one dmabuf per plane */
+ if (length != 1)
+ return FALSE;
+
+ mems[i] = gst_buffer_peek_memory (inbuf, mems_idx[i]);
+
+ /* And all memory found must be dmabuf */
+ if (!gst_is_dmabuf_memory (mems[i]))
+ return FALSE;
+ }
+
+ kmsmem = (GstKMSMemory *) get_cached_kmsmem (mems[0]);
+ if (kmsmem) {
+ GST_LOG_OBJECT (self, "found KMS mem %p in DMABuf mem %p with fb id = %d",
+ kmsmem, mems[0], kmsmem->fb_id);
+ goto wrap_mem;
+ }
+
+ for (i = 0; i < n_planes; i++)
+ prime_fds[i] = gst_dmabuf_memory_get_fd (mems[i]);
+
+ GST_LOG_OBJECT (self, "found these prime ids: %d, %d, %d, %d", prime_fds[0],
+ prime_fds[1], prime_fds[2], prime_fds[3]);
+
+ kmsmem = gst_kms_allocator_dmabuf_import (self->allocator, prime_fds,
+ n_planes, &self->vinfo);
+ if (!kmsmem)
+ return FALSE;
+
+ GST_LOG_OBJECT (self, "setting KMS mem %p to DMABuf mem %p with fb id = %d",
+ kmsmem, mems[0], kmsmem->fb_id);
+ set_cached_kmsmem (mems[0], GST_MEMORY_CAST (kmsmem));
+
+wrap_mem:
+ *outbuf = gst_buffer_new ();
+ if (!*outbuf)
+ return FALSE;
+ gst_buffer_append_memory (*outbuf, gst_memory_ref (GST_MEMORY_CAST (kmsmem)));
+ gst_buffer_add_parent_buffer_meta (*outbuf, inbuf);
+
+ return TRUE;
+}
+
+static GstBuffer *
+gst_kms_sink_get_input_buffer (GstKMSSink * self, GstBuffer * inbuf)
+{
+ GstMemory *mem;
+ GstBuffer *buf;
+ GstFlowReturn ret;
+ GstVideoFrame inframe, outframe;
+ gboolean success;
+
+ mem = gst_buffer_peek_memory (inbuf, 0);
+ if (!mem)
+ return NULL;
+
+ if (gst_is_kms_memory (mem))
+ return gst_buffer_ref (inbuf);
+
+ buf = NULL;
+ if (gst_kms_sink_import_dmabuf (self, inbuf, &buf))
+ return buf;
+
+ GST_CAT_INFO_OBJECT (CAT_PERFORMANCE, self, "frame copy");
+
+ if (!gst_buffer_pool_set_active (self->pool, TRUE))
+ goto activate_pool_failed;
+
+ ret = gst_buffer_pool_acquire_buffer (self->pool, &buf, NULL);
+ if (ret != GST_FLOW_OK)
+ goto create_buffer_failed;
+
+ if (!gst_video_frame_map (&inframe, &self->vinfo, inbuf, GST_MAP_READ))
+ goto error_map_src_buffer;
+
+ if (!gst_video_frame_map (&outframe, &self->vinfo, buf, GST_MAP_WRITE))
+ goto error_map_dst_buffer;
+
+ success = gst_video_frame_copy (&outframe, &inframe);
+ gst_video_frame_unmap (&outframe);
+ gst_video_frame_unmap (&inframe);
+ if (!success)
+ goto error_copy_buffer;
+
+ return buf;
+
+bail:
+ {
+ if (buf)
+ gst_buffer_unref (buf);
+ return NULL;
+ }
+
+ /* ERRORS */
+activate_pool_failed:
+ {
+ GST_ELEMENT_ERROR (self, STREAM, FAILED, ("failed to activate buffer pool"),
+ ("failed to activate buffer pool"));
+ goto bail;
+ }
+create_buffer_failed:
+ {
+ GST_ELEMENT_ERROR (self, STREAM, FAILED, ("allocation failed"),
+ ("failed to create buffer"));
+ goto bail;
+ }
+error_copy_buffer:
+ {
+ GST_WARNING_OBJECT (self, "failed to upload buffer");
+ goto bail;
+ }
+error_map_dst_buffer:
+ {
+ gst_video_frame_unmap (&inframe);
+ /* fall-through */
+ }
+error_map_src_buffer:
+ {
+ GST_WARNING_OBJECT (self, "failed to map buffer");
+ goto bail;
+ }
+}
+
+static GstFlowReturn
+gst_kms_sink_show_frame (GstVideoSink * vsink, GstBuffer * buf)
+{
+ gint ret;
+ GstBuffer *buffer;
+ guint32 fb_id;
+ GstKMSSink *self;
+ GstVideoCropMeta *crop;
+ GstVideoRectangle src = { 0, };
+ GstVideoRectangle dst = { 0, };
+ GstVideoRectangle result;
+ GstFlowReturn res;
+
+ self = GST_KMS_SINK (vsink);
+
+ res = GST_FLOW_ERROR;
+
+ buffer = gst_kms_sink_get_input_buffer (self, buf);
+ if (!buffer)
+ return GST_FLOW_ERROR;
+ fb_id = gst_kms_memory_get_fb_id (gst_buffer_peek_memory (buffer, 0));
+ if (fb_id == 0)
+ goto buffer_invalid;
+
+ GST_TRACE_OBJECT (self, "displaying fb %d", fb_id);
+
+ {
+ if ((crop = gst_buffer_get_video_crop_meta (buffer))) {
+ src.x = crop->x;
+ src.y = crop->y;
+ src.w = crop->width;
+ src.h = crop->height;
+ } else {
+ src.w = GST_VIDEO_SINK_WIDTH (self);
+ src.h = GST_VIDEO_SINK_HEIGHT (self);
+ }
+ }
+
+ dst.w = self->hdisplay;
+ dst.h = self->vdisplay;
+
+ gst_video_sink_center_rect (src, dst, &result, FALSE);
+
+ /* if the frame size is bigger than the display size, the source
+ * must be the display size */
+ src.w = MIN (src.w, self->hdisplay);
+ src.h = MIN (src.h, self->vdisplay);
+
+ ret = drmModeSetPlane (self->fd, self->plane_id, self->crtc_id, fb_id, 0,
+ result.x, result.y, result.w, result.h,
+ /* source/cropping coordinates are given in Q16 */
+ src.x << 16, src.y << 16, src.w << 16, src.h << 16);
+ if (ret)
+ goto set_plane_failed;
+
+ /* Wait for the previous frame to complete redraw */
+ if (!gst_kms_sink_sync (self))
+ goto bail;
+
+ gst_buffer_replace (&self->last_buffer, buffer);
+
+ res = GST_FLOW_OK;
+
+bail:
+ gst_buffer_unref (buffer);
+ return res;
+
+ /* ERRORS */
+buffer_invalid:
+ {
+ GST_ERROR_OBJECT (self, "invalid buffer: it doesn't have a fb id");
+ goto bail;
+ }
+set_plane_failed:
+ {
+ GST_DEBUG_OBJECT (self, "result = { %d, %d, %d, %d} / "
+ "src = { %d, %d, %d %d } / dst = { %d, %d, %d %d }", result.x, result.y,
+ result.w, result.h, src.x, src.y, src.w, src.h, dst.x, dst.y, dst.w,
+ dst.h);
+ GST_ELEMENT_ERROR (self, RESOURCE, FAILED,
+ (NULL), ("drmModeSetPlane failed: %s (%d)", strerror (-ret), ret));
+ goto bail;
+ }
+}
+
+static void
+gst_kms_sink_set_property (GObject * object, guint prop_id,
+ const GValue * value, GParamSpec * pspec)
+{
+ GstKMSSink *sink;
+
+ sink = GST_KMS_SINK (object);
+
+ switch (prop_id) {
+ case PROP_DRIVER_NAME:
+ sink->devname = g_value_dup_string (value);
+ break;
+ case PROP_CONNECTOR_ID:
+ sink->conn_id = g_value_get_int (value);
+ break;
+ case PROP_PLANE_ID:
+ sink->plane_id = g_value_get_int (value);
+ break;
+ default:
+ G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+ break;
+ }
+}
+
+static void
+gst_kms_sink_get_property (GObject * object, guint prop_id,
+ GValue * value, GParamSpec * pspec)
+{
+ GstKMSSink *sink;
+
+ sink = GST_KMS_SINK (object);
+
+ switch (prop_id) {
+ case PROP_DRIVER_NAME:
+ g_value_take_string (value, sink->devname);
+ break;
+ case PROP_CONNECTOR_ID:
+ g_value_set_int (value, sink->conn_id);
+ break;
+ case PROP_PLANE_ID:
+ g_value_set_int (value, sink->plane_id);
+ break;
+ default:
+ G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+ break;
+ }
+}
+
+static void
+gst_kms_sink_finalize (GObject * object)
+{
+ GstKMSSink *sink;
+
+ sink = GST_KMS_SINK (object);
+ g_clear_pointer (&sink->devname, g_free);
+ gst_poll_free (sink->poll);
+
+ G_OBJECT_CLASS (parent_class)->finalize (object);
+}
+
+static void
+gst_kms_sink_init (GstKMSSink * sink)
+{
+ sink->fd = -1;
+ sink->conn_id = -1;
+ sink->plane_id = -1;
+ gst_poll_fd_init (&sink->pollfd);
+ sink->poll = gst_poll_new (TRUE);
+ gst_video_info_init (&sink->vinfo);
+}
+
+static void
+gst_kms_sink_class_init (GstKMSSinkClass * klass)
+{
+ GObjectClass *gobject_class;
+ GstElementClass *element_class;
+ GstBaseSinkClass *basesink_class;
+ GstVideoSinkClass *videosink_class;
+ GstCaps *caps;
+
+ gobject_class = G_OBJECT_CLASS (klass);
+ element_class = GST_ELEMENT_CLASS (klass);
+ basesink_class = GST_BASE_SINK_CLASS (klass);
+ videosink_class = GST_VIDEO_SINK_CLASS (klass);
+
+ gst_element_class_set_static_metadata (element_class, "KMS video sink",
+ "Sink/Video", GST_PLUGIN_DESC, "Víctor Jáquez <vjaquez@igalia.com>");
+
+ caps = gst_kms_sink_caps_template_fill ();
+ gst_element_class_add_pad_template (element_class,
+ gst_pad_template_new ("sink", GST_PAD_SINK, GST_PAD_ALWAYS, caps));
+ gst_caps_unref (caps);
+
+ basesink_class->start = GST_DEBUG_FUNCPTR (gst_kms_sink_start);
+ basesink_class->stop = GST_DEBUG_FUNCPTR (gst_kms_sink_stop);
+ basesink_class->set_caps = GST_DEBUG_FUNCPTR (gst_kms_sink_set_caps);
+ basesink_class->get_caps = GST_DEBUG_FUNCPTR (gst_kms_sink_get_caps);
+ basesink_class->propose_allocation = gst_kms_sink_propose_allocation;
+ basesink_class->get_times = gst_kms_sink_get_times;
+
+ videosink_class->show_frame = gst_kms_sink_show_frame;
+
+ gobject_class->finalize = gst_kms_sink_finalize;
+ gobject_class->set_property = gst_kms_sink_set_property;
+ gobject_class->get_property = gst_kms_sink_get_property;
+
+ /**
+ * kmssink:driver-name:
+ *
+ * If you have a system with multiple GPUs, you can choose which GPU
+ * to use setting the DRM device driver name. Otherwise, the first
+ * one from an internal list is used.
+ */
+ g_properties[PROP_DRIVER_NAME] = g_param_spec_string ("driver-name",
+ "device name", "DRM device driver name", NULL,
+ G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS | G_PARAM_CONSTRUCT);
+
+ /**
+ * kmssink:connector-id:
+ *
+ * A GPU has several output connectors, for example: LVDS, VGA,
+ * HDMI, etc. By default the first LVDS is tried, then the first
+ * eDP, and at the end, the first connected one.
+ */
+ g_properties[PROP_CONNECTOR_ID] = g_param_spec_int ("connector-id",
+ "Connector ID", "DRM connector id", -1, G_MAXINT32, -1,
+ G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS | G_PARAM_CONSTRUCT);
+
+ /**
+ * kmssink:plane-id:
+ *
+ * There could be several planes associated with a CRTC.
+ * By default the first plane that's possible to use with a given
+ * CRTC is tried.
+ */
+ g_properties[PROP_PLANE_ID] = g_param_spec_int ("plane-id",
+ "Plane ID", "DRM plane id", -1, G_MAXINT32, -1,
+ G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS | G_PARAM_CONSTRUCT);
+
+ g_object_class_install_properties (gobject_class, PROP_N, g_properties);
+}
+
+static gboolean
+plugin_init (GstPlugin * plugin)
+{
+ if (!gst_element_register (plugin, GST_PLUGIN_NAME, GST_RANK_SECONDARY,
+ GST_TYPE_KMS_SINK))
+ return FALSE;
+
+ return TRUE;
+}
+
+GST_PLUGIN_DEFINE (GST_VERSION_MAJOR, GST_VERSION_MINOR, kms,
+ GST_PLUGIN_DESC, plugin_init, VERSION, GST_LICENSE, GST_PACKAGE_NAME,
+ GST_PACKAGE_ORIGIN)
diff --git a/sys/kms/gstkmssink.h b/sys/kms/gstkmssink.h
new file mode 100644
index 0000000..494f440
--- /dev/null
+++ b/sys/kms/gstkmssink.h
@@ -0,0 +1,87 @@
+/* GStreamer
+ *
+ * Copyright (C) 2016 Igalia
+ *
+ * Authors:
+ * Víctor Manuel Jáquez Leal <vjaquez@igalia.com>
+ * Javier Martin <javiermartin@by.com.es>
+ *
+ * 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.
+ *
+ */
+
+#ifndef __GST_KMS_SINK_H__
+#define __GST_KMS_SINK_H__
+
+#include <gst/video/gstvideosink.h>
+
+G_BEGIN_DECLS
+
+#define GST_TYPE_KMS_SINK \
+ (gst_kms_sink_get_type())
+#define GST_KMS_SINK(obj) \
+ (G_TYPE_CHECK_INSTANCE_CAST((obj), GST_TYPE_KMS_SINK, GstKMSSink))
+#define GST_KMS_SINK_CLASS(klass) \
+ (G_TYPE_CHECK_CLASS_CAST((klass), GST_TYPE_KMS_SINK, GstKMSSinkClass))
+#define GST_IS_KMS_SINK(obj) \
+ (G_TYPE_CHECK_INSTANCE_TYPE((obj), GST_TYPE_KMS_SINK))
+#define GST_IS_KMS_SINK_CLASS(klass) \
+ (G_TYPE_CHECK_CLASS_TYPE((klass), GST_TYPE_KMS_SINK))
+
+typedef struct _GstKMSSink GstKMSSink;
+typedef struct _GstKMSSinkClass GstKMSSinkClass;
+
+struct _GstKMSSink {
+ GstVideoSink videosink;
+
+ /*< private >*/
+ gint fd;
+ gint conn_id;
+ gint crtc_id;
+ gint plane_id;
+ guint pipe;
+
+ /* crtc data */
+ guint16 hdisplay, vdisplay;
+ guint32 buffer_id;
+
+ /* capabilities */
+ gboolean has_prime_import;
+ gboolean has_async_page_flip;
+
+ GstVideoInfo vinfo;
+ GstCaps *allowed_caps;
+ GstBufferPool *pool;
+ GstAllocator *allocator;
+ GstBuffer *last_buffer;
+
+ gchar *devname;
+
+ guint32 mm_width, mm_height;
+
+ GstPoll *poll;
+ GstPollFD pollfd;
+};
+
+struct _GstKMSSinkClass {
+ GstVideoSinkClass parent_class;
+};
+
+GType gst_kms_sink_get_type (void) G_GNUC_CONST;
+
+G_END_DECLS
+
+#endif /* __GST_KMS_SINK_H__ */
diff --git a/sys/kms/gstkmsutils.c b/sys/kms/gstkmsutils.c
new file mode 100644
index 0000000..ddf8d2d
--- /dev/null
+++ b/sys/kms/gstkmsutils.c
@@ -0,0 +1,179 @@
+/* GStreamer
+ *
+ * Copyright (C) 2016 Igalia
+ *
+ * Authors:
+ * Víctor Manuel Jáquez Leal <vjaquez@igalia.com>
+ * Javier Martin <javiermartin@by.com.es>
+ *
+ * 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.
+ *
+ */
+
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#include <drm_fourcc.h>
+
+#include "gstkmsutils.h"
+
+/* *INDENT-OFF* */
+static const struct
+{
+ guint32 fourcc;
+ GstVideoFormat format;
+} format_map[] = {
+#define DEF_FMT(fourcc, fmt) \
+ { DRM_FORMAT_##fourcc,GST_VIDEO_FORMAT_##fmt }
+
+ /* DEF_FMT (XRGB1555, ???), */
+ /* DEF_FMT (XBGR1555, ???), */
+#if G_BYTE_ORDER == G_LITTLE_ENDIAN
+ DEF_FMT (ARGB8888, BGRA),
+ DEF_FMT (XRGB8888, BGRx),
+ DEF_FMT (ABGR8888, RGBA),
+ DEF_FMT (XBGR8888, RGBx),
+#else
+ DEF_FMT (ARGB8888, ARGB),
+ DEF_FMT (XRGB8888, xRGB),
+ DEF_FMT (ABGR8888, ABGR),
+ DEF_FMT (XBGR8888, xBGR),
+#endif
+ DEF_FMT (UYVY, UYVY),
+ DEF_FMT (YUYV, YUY2),
+ DEF_FMT (YVYU, YVYU),
+ DEF_FMT (YUV420, I420),
+ DEF_FMT (YVU420, YV12),
+ DEF_FMT (YUV422, Y42B),
+ DEF_FMT (NV12, NV12),
+ DEF_FMT (NV21, NV21),
+ DEF_FMT (NV16, NV16),
+
+#undef DEF_FMT
+};
+/* *INDENT-ON* */
+
+GstVideoFormat
+gst_video_format_from_drm (guint32 drmfmt)
+{
+ gint i;
+
+ for (i = 0; i < G_N_ELEMENTS (format_map); i++) {
+ if (format_map[i].fourcc == drmfmt)
+ return format_map[i].format;
+ }
+
+ return GST_VIDEO_FORMAT_UNKNOWN;
+}
+
+guint32
+gst_drm_format_from_video (GstVideoFormat fmt)
+{
+ gint i;
+
+ for (i = 0; i < G_N_ELEMENTS (format_map); i++) {
+ if (format_map[i].format == fmt)
+ return format_map[i].fourcc;
+ }
+
+ return 0;
+}
+
+static GstStructure *
+gst_video_format_to_structure (GstVideoFormat format)
+{
+ GstStructure *structure;
+
+ structure = NULL;
+ if (format != GST_VIDEO_FORMAT_UNKNOWN)
+ structure = gst_structure_new ("video/x-raw", "format", G_TYPE_STRING,
+ gst_video_format_to_string (format), NULL);
+
+ return structure;
+}
+
+GstCaps *
+gst_kms_sink_caps_template_fill (void)
+{
+ gint i;
+ GstCaps *caps;
+ GstStructure *template;
+
+ caps = gst_caps_new_empty ();
+ for (i = 0; i < G_N_ELEMENTS (format_map); i++) {
+ template = gst_video_format_to_structure (format_map[i].format);
+ gst_structure_set (template,
+ "width", GST_TYPE_INT_RANGE, 1, G_MAXINT,
+ "height", GST_TYPE_INT_RANGE, 1, G_MAXINT,
+ "framerate", GST_TYPE_FRACTION_RANGE, 0, 1, G_MAXINT, 1, NULL);
+ gst_caps_append_structure (caps, template);
+ }
+ return gst_caps_simplify (caps);
+}
+
+static const gint device_par_map[][2] = {
+ {1, 1}, /* regular screen */
+ {16, 15}, /* PAL TV */
+ {11, 10}, /* 525 line Rec.601 video */
+ {54, 59}, /* 625 line Rec.601 video */
+ {64, 45}, /* 1280x1024 on 16:9 display */
+ {5, 3}, /* 1280x1024 on 4:3 display */
+ {4, 3} /* 800x600 on 16:9 display */
+};
+
+#define DELTA(ratio, idx, w) \
+ (ABS(ratio - ((gdouble)device_par_map[idx][w] / device_par_map[idx][!(w)])))
+
+void
+gst_video_calculate_device_ratio (guint dev_width, guint dev_height,
+ guint dev_width_mm, guint dev_height_mm,
+ guint * dpy_par_n, guint * dpy_par_d)
+{
+ gdouble ratio, delta, cur_delta;
+ gint i, j, index, windex;
+
+ /* First, calculate the "real" ratio based on the X values; which is
+ * the "physical" w/h divided by the w/h in pixels of the display */
+ if (dev_width == 0 || dev_height == 0
+ || dev_width_mm == 0 || dev_height_mm == 0)
+ ratio = 1.0;
+ else
+ ratio = (gdouble) (dev_width_mm * dev_height) / (dev_height_mm * dev_width);
+
+ /* Now, find the one from device_par_map[][2] with the lowest delta
+ * to the real one */
+ delta = DELTA (ratio, 0, 0);
+ index = 0;
+ windex = 0;
+
+ for (i = 1; i < G_N_ELEMENTS (device_par_map); i++) {
+ for (j = 0; j < 2; j++) {
+ cur_delta = DELTA (ratio, i, j);
+ if (cur_delta < delta) {
+ index = i;
+ windex = j;
+ delta = cur_delta;
+ }
+ }
+ }
+
+ if (dpy_par_n)
+ *dpy_par_n = device_par_map[index][windex];
+
+ if (dpy_par_d)
+ *dpy_par_d = device_par_map[index][windex ^ 1];
+}
diff --git a/sys/kms/gstkmsutils.h b/sys/kms/gstkmsutils.h
new file mode 100644
index 0000000..75e9ba3
--- /dev/null
+++ b/sys/kms/gstkmsutils.h
@@ -0,0 +1,45 @@
+/* GStreamer
+ *
+ * Copyright (C) 2016 Igalia
+ *
+ * Authors:
+ * Víctor Manuel Jáquez Leal <vjaquez@igalia.com>
+ * Javier Martin <javiermartin@by.com.es>
+ *
+ * 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.
+ *
+ */
+
+#ifndef __GST_KMS_UTILS_H__
+#define __GST_KMS_UTILS_H__
+
+#include <gst/video/video.h>
+
+G_BEGIN_DECLS
+
+GstVideoFormat gst_video_format_from_drm (guint32 drmfmt);
+guint32 gst_drm_format_from_video (GstVideoFormat fmt);
+GstCaps * gst_kms_sink_caps_template_fill (void);
+void gst_video_calculate_device_ratio (guint dev_width,
+ guint dev_height,
+ guint dev_width_mm,
+ guint dev_height_mm,
+ guint * dpy_par_n,
+ guint * dpy_par_d);
+
+G_END_DECLS
+
+#endif
diff --git a/sys/linsys/Makefile.in b/sys/linsys/Makefile.in
index b609dd0..2163221 100644
--- a/sys/linsys/Makefile.in
+++ b/sys/linsys/Makefile.in
@@ -304,6 +304,8 @@
DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
DSYMUTIL = @DSYMUTIL@
DTLS_CFLAGS = @DTLS_CFLAGS@
DTLS_LIBS = @DTLS_LIBS@
@@ -519,6 +521,8 @@
LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
LIPO = @LIPO@
LN_S = @LN_S@
LOCALEDIR = @LOCALEDIR@
@@ -645,8 +649,6 @@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
SNDIO_LIBS = @SNDIO_LIBS@
@@ -691,6 +693,8 @@
WAYLAND_LIBS = @WAYLAND_LIBS@
WEBP_CFLAGS = @WEBP_CFLAGS@
WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
WGET = @WGET@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
diff --git a/sys/linsys/gstlinsyssdisink.c b/sys/linsys/gstlinsyssdisink.c
index b093bb5..a8edf37 100644
--- a/sys/linsys/gstlinsyssdisink.c
+++ b/sys/linsys/gstlinsyssdisink.c
@@ -99,8 +99,8 @@
{
GstElementClass *element_class = GST_ELEMENT_CLASS (g_class);
- gst_element_class_add_pad_template (element_class,
- gst_static_pad_template_get (&gst_linsys_sdi_sink_sink_template));
+ gst_element_class_add_static_pad_template (element_class,
+ &gst_linsys_sdi_sink_sink_template);
gst_element_class_set_static_metadata (element_class, "SDI video sink",
"Sink/Video", "Writes video from SDI transmit device",
diff --git a/sys/linsys/gstlinsyssdisrc.c b/sys/linsys/gstlinsyssdisrc.c
index 94a4e5a..43e2898 100644
--- a/sys/linsys/gstlinsyssdisrc.c
+++ b/sys/linsys/gstlinsyssdisrc.c
@@ -103,8 +103,8 @@
{
GstElementClass *element_class = GST_ELEMENT_CLASS (g_class);
- gst_element_class_add_pad_template (element_class,
- gst_static_pad_template_get (&gst_linsys_sdi_src_src_template));
+ gst_element_class_add_static_pad_template (element_class,
+ &gst_linsys_sdi_src_src_template);
gst_element_class_set_static_metadata (element_class, "SDI video source",
"Source/Video", "Reads video from SDI capture device",
diff --git a/sys/nvenc/Makefile.in b/sys/nvenc/Makefile.in
index 80ec3ff..9dfe020 100644
--- a/sys/nvenc/Makefile.in
+++ b/sys/nvenc/Makefile.in
@@ -308,6 +308,8 @@
DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
DSYMUTIL = @DSYMUTIL@
DTLS_CFLAGS = @DTLS_CFLAGS@
DTLS_LIBS = @DTLS_LIBS@
@@ -523,6 +525,8 @@
LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
LIPO = @LIPO@
LN_S = @LN_S@
LOCALEDIR = @LOCALEDIR@
@@ -649,8 +653,6 @@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
SNDIO_LIBS = @SNDIO_LIBS@
@@ -695,6 +697,8 @@
WAYLAND_LIBS = @WAYLAND_LIBS@
WEBP_CFLAGS = @WEBP_CFLAGS@
WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
WGET = @WGET@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
diff --git a/sys/nvenc/gstnvbaseenc.c b/sys/nvenc/gstnvbaseenc.c
index 2bc1ef3..9c457ff 100644
--- a/sys/nvenc/gstnvbaseenc.c
+++ b/sys/nvenc/gstnvbaseenc.c
@@ -50,6 +50,95 @@
#define parent_class gst_nv_base_enc_parent_class
G_DEFINE_ABSTRACT_TYPE (GstNvBaseEnc, gst_nv_base_enc, GST_TYPE_VIDEO_ENCODER);
+#define GST_TYPE_NV_PRESET (gst_nv_preset_get_type())
+static GType
+gst_nv_preset_get_type (void)
+{
+ static GType nv_preset_type = 0;
+
+ static const GEnumValue presets[] = {
+ {GST_NV_PRESET_DEFAULT, "Default", "default"},
+ {GST_NV_PRESET_HP, "High Performance", "hp"},
+ {GST_NV_PRESET_HQ, "High Quality", "hq"},
+/* {GST_NV_PRESET_BD, "BD", "bd"}, */
+ {GST_NV_PRESET_LOW_LATENCY_DEFAULT, "Low Latency", "low-latency"},
+ {GST_NV_PRESET_LOW_LATENCY_HQ, "Low Latency, High Quality",
+ "low-latency-hq"},
+ {GST_NV_PRESET_LOW_LATENCY_HP, "Low Latency, High Performance",
+ "low-latency-hp"},
+ {GST_NV_PRESET_LOSSLESS_DEFAULT, "Lossless", "lossless"},
+ {GST_NV_PRESET_LOSSLESS_HP, "Lossless, High Performance", "lossless-hp"},
+ {0, NULL, NULL},
+ };
+
+ if (!nv_preset_type) {
+ nv_preset_type = g_enum_register_static ("GstNvPreset", presets);
+ }
+ return nv_preset_type;
+}
+
+static GUID
+_nv_preset_to_guid (GstNvPreset preset)
+{
+ GUID null = { 0, };
+
+ switch (preset) {
+#define CASE(gst,nv) case G_PASTE(GST_NV_PRESET_,gst): return G_PASTE(G_PASTE(NV_ENC_PRESET_,nv),_GUID)
+ CASE (DEFAULT, DEFAULT);
+ CASE (HP, HP);
+ CASE (HQ, HQ);
+/* CASE (BD, BD);*/
+ CASE (LOW_LATENCY_DEFAULT, LOW_LATENCY_DEFAULT);
+ CASE (LOW_LATENCY_HQ, LOW_LATENCY_HQ);
+ CASE (LOW_LATENCY_HP, LOW_LATENCY_HQ);
+ CASE (LOSSLESS_DEFAULT, LOSSLESS_DEFAULT);
+ CASE (LOSSLESS_HP, LOSSLESS_HP);
+#undef CASE
+ default:
+ return null;
+ }
+}
+
+#define GST_TYPE_NV_RC_MODE (gst_nv_rc_mode_get_type())
+static GType
+gst_nv_rc_mode_get_type (void)
+{
+ static GType nv_rc_mode_type = 0;
+
+ static const GEnumValue modes[] = {
+ {GST_NV_RC_MODE_DEFAULT, "Default (from NVENC preset)", "default"},
+ {GST_NV_RC_MODE_CONSTQP, "Constant Quantization", "constqp"},
+ {GST_NV_RC_MODE_CBR, "Constant Bit Rate", "cbr"},
+ {GST_NV_RC_MODE_VBR, "Variable Bit Rate", "vbr"},
+ {GST_NV_RC_MODE_VBR_MINQP,
+ "Variable Bit Rate (with minimum quantization parameter)",
+ "vbr-minqp"},
+ {0, NULL, NULL},
+ };
+
+ if (!nv_rc_mode_type) {
+ nv_rc_mode_type = g_enum_register_static ("GstNvRCMode", modes);
+ }
+ return nv_rc_mode_type;
+}
+
+static NV_ENC_PARAMS_RC_MODE
+_rc_mode_to_nv (GstNvRCMode mode)
+{
+ switch (mode) {
+ case GST_NV_RC_MODE_DEFAULT:
+ return -1;
+#define CASE(gst,nv) case G_PASTE(GST_NV_RC_MODE_,gst): return G_PASTE(NV_ENC_PARAMS_RC_,nv)
+ CASE (CONSTQP, CONSTQP);
+ CASE (CBR, CBR);
+ CASE (VBR, VBR);
+ CASE (VBR_MINQP, VBR_MINQP);
+#undef CASE
+ default:
+ return -1;
+ }
+}
+
static GstStaticPadTemplate sink_factory = GST_STATIC_PAD_TEMPLATE ("sink",
GST_PAD_SINK,
GST_PAD_ALWAYS,
@@ -71,8 +160,21 @@
{
PROP_0,
PROP_DEVICE_ID,
+ PROP_PRESET,
+ PROP_BITRATE,
+ PROP_RC_MODE,
+ PROP_QP_MIN,
+ PROP_QP_MAX,
+ PROP_QP_CONST,
};
+#define DEFAULT_PRESET GST_NV_PRESET_DEFAULT
+#define DEFAULT_BITRATE 0
+#define DEFAULT_RC_MODE GST_NV_RC_MODE_DEFAULT
+#define DEFAULT_QP_MIN -1
+#define DEFAULT_QP_MAX -1
+#define DEFAULT_QP_CONST -1
+
/* This lock is needed to prevent the situation where multiple encoders are
* initialised at the same time which appears to cause excessive CPU usage over
* some period of time. */
@@ -147,14 +249,40 @@
videoenc_class->finish = GST_DEBUG_FUNCPTR (gst_nv_base_enc_finish);
videoenc_class->sink_query = GST_DEBUG_FUNCPTR (gst_nv_base_enc_sink_query);
- gst_element_class_add_pad_template (element_class,
- gst_static_pad_template_get (&sink_factory));
+ gst_element_class_add_static_pad_template (element_class, &sink_factory);
g_object_class_install_property (gobject_class, PROP_DEVICE_ID,
g_param_spec_uint ("cuda-device-id",
"Cuda Device ID",
"Set the GPU device to use for operations",
0, G_MAXUINT, 0, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
+ g_object_class_install_property (gobject_class, PROP_PRESET,
+ g_param_spec_enum ("preset", "Encoding Preset",
+ "Encoding Preset",
+ GST_TYPE_NV_PRESET,
+ DEFAULT_PRESET, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
+ g_object_class_install_property (gobject_class, PROP_RC_MODE,
+ g_param_spec_enum ("rc-mode", "RC Mode",
+ "Rate Control Mode",
+ GST_TYPE_NV_RC_MODE,
+ DEFAULT_RC_MODE, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
+ g_object_class_install_property (gobject_class, PROP_QP_MIN,
+ g_param_spec_int ("qp-min", "Minimum Quantizer",
+ "Minimum quantizer (-1 = from NVENC preset)", -1, 51, DEFAULT_QP_MIN,
+ G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
+ g_object_class_install_property (gobject_class, PROP_QP_MAX,
+ g_param_spec_int ("qp-max", "Maximum Quantizer",
+ "Maximum quantizer (-1 = from NVENC preset)", -1, 51, DEFAULT_QP_MAX,
+ G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
+ g_object_class_install_property (gobject_class, PROP_QP_CONST,
+ g_param_spec_int ("qp-const", "Constant Quantizer",
+ "Constant quantizer (-1 = from NVENC preset)",
+ -1, 51, DEFAULT_QP_CONST,
+ G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
+ g_object_class_install_property (gobject_class, PROP_BITRATE,
+ g_param_spec_uint ("bitrate", "Bitrate",
+ "Bitrate in kbit/sec (0 = from NVENC preset)", 0, 2000 * 1024,
+ DEFAULT_BITRATE, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
}
static gboolean
@@ -518,6 +646,14 @@
{
GstVideoEncoder *encoder = GST_VIDEO_ENCODER (nvenc);
+ nvenc->preset_enum = DEFAULT_PRESET;
+ nvenc->selected_preset = _nv_preset_to_guid (nvenc->preset_enum);
+ nvenc->rate_control_mode = DEFAULT_RC_MODE;
+ nvenc->qp_min = DEFAULT_QP_MIN;
+ nvenc->qp_max = DEFAULT_QP_MAX;
+ nvenc->qp_const = DEFAULT_QP_CONST;
+ nvenc->bitrate = DEFAULT_BITRATE;
+
GST_VIDEO_ENCODER_STREAM_LOCK (encoder);
GST_VIDEO_ENCODER_STREAM_UNLOCK (encoder);
}
@@ -910,22 +1046,163 @@
GstNvBaseEnc *nvenc = GST_NV_BASE_ENC (enc);
GstVideoInfo *info = &state->info;
GstVideoCodecState *old_state = nvenc->input_state;
+ NV_ENC_RECONFIGURE_PARAMS reconfigure_params = { 0, };
+ NV_ENC_INITIALIZE_PARAMS init_params = { 0, };
+ NV_ENC_INITIALIZE_PARAMS *params;
+ NV_ENC_PRESET_CONFIG preset_config = { 0, };
NVENCSTATUS nv_ret;
- g_assert (nvenc_class->initialize_encoder);
+ if (old_state) {
+ reconfigure_params.version = NV_ENC_RECONFIGURE_PARAMS_VER;
+ params = &reconfigure_params.reInitEncodeParams;
+ } else {
+ params = &init_params;
+ }
+
+ params->version = NV_ENC_INITIALIZE_PARAMS_VER;
+ params->encodeGUID = nvenc_class->codec_id;
+ params->encodeWidth = GST_VIDEO_INFO_WIDTH (info);
+ params->encodeHeight = GST_VIDEO_INFO_HEIGHT (info);
+
+ {
+ guint32 n_presets;
+ GUID *presets;
+ guint32 i;
+
+ nv_ret =
+ NvEncGetEncodePresetCount (nvenc->encoder,
+ params->encodeGUID, &n_presets);
+ if (nv_ret != NV_ENC_SUCCESS) {
+ GST_ELEMENT_ERROR (nvenc, LIBRARY, SETTINGS, (NULL),
+ ("Failed to get encoder presets"));
+ return FALSE;
+ }
+
+ presets = g_new0 (GUID, n_presets);
+ nv_ret =
+ NvEncGetEncodePresetGUIDs (nvenc->encoder,
+ params->encodeGUID, presets, n_presets, &n_presets);
+ if (nv_ret != NV_ENC_SUCCESS) {
+ GST_ELEMENT_ERROR (nvenc, LIBRARY, SETTINGS, (NULL),
+ ("Failed to get encoder presets"));
+ g_free (presets);
+ return FALSE;
+ }
+
+ for (i = 0; i < n_presets; i++) {
+ if (gst_nvenc_cmp_guid (presets[i], nvenc->selected_preset))
+ break;
+ }
+ g_free (presets);
+ if (i >= n_presets) {
+ GST_ELEMENT_ERROR (nvenc, LIBRARY, SETTINGS, (NULL),
+ ("Selected preset not supported"));
+ return FALSE;
+ }
+
+ params->presetGUID = nvenc->selected_preset;
+ }
+
+ params->enablePTD = 1;
+ if (!old_state) {
+ /* this sets the required buffer size and the maximum allowed size on
+ * subsequent reconfigures */
+ /* FIXME: propertise this */
+ params->maxEncodeWidth = GST_VIDEO_INFO_WIDTH (info);
+ params->maxEncodeHeight = GST_VIDEO_INFO_HEIGHT (info);
+ gst_nv_base_enc_set_max_encode_size (nvenc, params->maxEncodeWidth,
+ params->maxEncodeHeight);
+ } else {
+ guint max_width, max_height;
+
+ gst_nv_base_enc_get_max_encode_size (nvenc, &max_width, &max_height);
+
+ if (GST_VIDEO_INFO_WIDTH (info) > max_width
+ || GST_VIDEO_INFO_HEIGHT (info) > max_height) {
+ GST_ELEMENT_ERROR (nvenc, STREAM, FORMAT, ("%s", "Requested stream "
+ "size is larger than the maximum configured size"), (NULL));
+ return FALSE;
+ }
+ }
+
+ preset_config.version = NV_ENC_PRESET_CONFIG_VER;
+ preset_config.presetCfg.version = NV_ENC_CONFIG_VER;
+
+ nv_ret =
+ NvEncGetEncodePresetConfig (nvenc->encoder,
+ params->encodeGUID, params->presetGUID, &preset_config);
+ if (nv_ret != NV_ENC_SUCCESS) {
+ GST_ELEMENT_ERROR (nvenc, LIBRARY, SETTINGS, (NULL),
+ ("Failed to get encode preset configuration: %d", nv_ret));
+ return FALSE;
+ }
+
+ params->encodeConfig = &preset_config.presetCfg;
+
+ if (GST_VIDEO_INFO_IS_INTERLACED (info)) {
+ if (GST_VIDEO_INFO_INTERLACE_MODE (info) ==
+ GST_VIDEO_INTERLACE_MODE_INTERLEAVED
+ || GST_VIDEO_INFO_INTERLACE_MODE (info) ==
+ GST_VIDEO_INTERLACE_MODE_MIXED) {
+ preset_config.presetCfg.frameFieldMode =
+ NV_ENC_PARAMS_FRAME_FIELD_MODE_FIELD;
+ }
+ }
+
+ if (info->fps_d > 0 && info->fps_n > 0) {
+ params->frameRateNum = info->fps_n;
+ params->frameRateDen = info->fps_d;
+ } else {
+ GST_FIXME_OBJECT (nvenc, "variable framerate");
+ }
+
+ if (nvenc->rate_control_mode != GST_NV_RC_MODE_DEFAULT) {
+ params->encodeConfig->rcParams.rateControlMode =
+ _rc_mode_to_nv (nvenc->rate_control_mode);
+ if (nvenc->bitrate > 0) {
+ /* FIXME: this produces larger bitrates?! */
+ params->encodeConfig->rcParams.averageBitRate = nvenc->bitrate * 1024;
+ params->encodeConfig->rcParams.maxBitRate = nvenc->bitrate * 1024;
+ }
+ if (nvenc->qp_const > 0) {
+ params->encodeConfig->rcParams.constQP.qpInterB = nvenc->qp_const;
+ params->encodeConfig->rcParams.constQP.qpInterP = nvenc->qp_const;
+ params->encodeConfig->rcParams.constQP.qpIntra = nvenc->qp_const;
+ }
+ if (nvenc->qp_min >= 0) {
+ params->encodeConfig->rcParams.enableMinQP = 1;
+ params->encodeConfig->rcParams.minQP.qpInterB = nvenc->qp_min;
+ params->encodeConfig->rcParams.minQP.qpInterP = nvenc->qp_min;
+ params->encodeConfig->rcParams.minQP.qpIntra = nvenc->qp_min;
+ }
+ if (nvenc->qp_max >= 0) {
+ params->encodeConfig->rcParams.enableMaxQP = 1;
+ params->encodeConfig->rcParams.maxQP.qpInterB = nvenc->qp_max;
+ params->encodeConfig->rcParams.maxQP.qpInterP = nvenc->qp_max;
+ params->encodeConfig->rcParams.maxQP.qpIntra = nvenc->qp_max;
+ }
+ }
+
+ g_assert (nvenc_class->set_encoder_config);
+ if (!nvenc_class->set_encoder_config (nvenc, state, params->encodeConfig)) {
+ GST_ERROR_OBJECT (enc, "Subclass failed to set encoder configuration");
+ return FALSE;
+ }
G_LOCK (initialization_lock);
- if (!nvenc_class->initialize_encoder (nvenc, old_state, state)) {
- GST_ERROR_OBJECT (enc, "Subclass failed to reconfigure encoder");
- G_UNLOCK (initialization_lock);
- return FALSE;
+ if (old_state) {
+ nv_ret = NvEncReconfigureEncoder (nvenc->encoder, &reconfigure_params);
+ } else {
+ nv_ret = NvEncInitializeEncoder (nvenc->encoder, params);
}
G_UNLOCK (initialization_lock);
- if (!nvenc->max_encode_width && !nvenc->max_encode_height) {
- gst_nv_base_enc_set_max_encode_size (nvenc, GST_VIDEO_INFO_WIDTH (info),
- GST_VIDEO_INFO_HEIGHT (info));
+ if (nv_ret != NV_ENC_SUCCESS) {
+ GST_ELEMENT_ERROR (nvenc, LIBRARY, SETTINGS, (NULL),
+ ("Failed to %sinit encoder: %d", old_state ? "re" : "", nv_ret));
+ return FALSE;
}
+ GST_INFO_OBJECT (nvenc, "configured encoder");
if (!old_state) {
nvenc->input_info = *info;
@@ -1209,9 +1486,8 @@
}
cuda_ret =
- cudaGraphicsResourceGetMappedPointer (&data->
- in_gl_resource->cuda_plane_pointers[i],
- &data->in_gl_resource->cuda_num_bytes,
+ cudaGraphicsResourceGetMappedPointer (&data->in_gl_resource->
+ cuda_plane_pointers[i], &data->in_gl_resource->cuda_num_bytes,
data->in_gl_resource->cuda_texture);
if (cuda_ret != cudaSuccess) {
GST_ERROR_OBJECT (data->nvenc, "failed to get mapped pointer of map GL "
@@ -1591,6 +1867,25 @@
case PROP_DEVICE_ID:
nvenc->cuda_device_id = g_value_get_uint (value);
break;
+ case PROP_PRESET:
+ nvenc->preset_enum = g_value_get_enum (value);
+ nvenc->selected_preset = _nv_preset_to_guid (nvenc->preset_enum);
+ break;
+ case PROP_RC_MODE:
+ nvenc->rate_control_mode = g_value_get_enum (value);
+ break;
+ case PROP_QP_MIN:
+ nvenc->qp_min = g_value_get_int (value);
+ break;
+ case PROP_QP_MAX:
+ nvenc->qp_max = g_value_get_int (value);
+ break;
+ case PROP_QP_CONST:
+ nvenc->qp_const = g_value_get_int (value);
+ break;
+ case PROP_BITRATE:
+ nvenc->bitrate = g_value_get_uint (value);
+ break;
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
break;
@@ -1607,6 +1902,24 @@
case PROP_DEVICE_ID:
g_value_set_uint (value, nvenc->cuda_device_id);
break;
+ case PROP_PRESET:
+ g_value_set_enum (value, nvenc->preset_enum);
+ break;
+ case PROP_RC_MODE:
+ g_value_set_enum (value, nvenc->rate_control_mode);
+ break;
+ case PROP_QP_MIN:
+ g_value_set_int (value, nvenc->qp_min);
+ break;
+ case PROP_QP_MAX:
+ g_value_set_int (value, nvenc->qp_max);
+ break;
+ case PROP_QP_CONST:
+ g_value_set_int (value, nvenc->qp_const);
+ break;
+ case PROP_BITRATE:
+ g_value_set_uint (value, nvenc->bitrate);
+ break;
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
break;
diff --git a/sys/nvenc/gstnvbaseenc.h b/sys/nvenc/gstnvbaseenc.h
index 0a843e9..6623cc3 100644
--- a/sys/nvenc/gstnvbaseenc.h
+++ b/sys/nvenc/gstnvbaseenc.h
@@ -37,11 +37,38 @@
#define GST_IS_NV_BASE_ENC_CLASS(obj) \
(G_TYPE_CHECK_CLASS_TYPE((klass),GST_TYPE_NV_BASE_ENC))
+typedef enum {
+ GST_NV_PRESET_DEFAULT,
+ GST_NV_PRESET_HP,
+ GST_NV_PRESET_HQ,
+/* FIXME: problematic GST_NV_PRESET_BD, */
+ GST_NV_PRESET_LOW_LATENCY_DEFAULT,
+ GST_NV_PRESET_LOW_LATENCY_HQ,
+ GST_NV_PRESET_LOW_LATENCY_HP,
+ GST_NV_PRESET_LOSSLESS_DEFAULT,
+ GST_NV_PRESET_LOSSLESS_HP,
+} GstNvPreset;
+
+typedef enum {
+ GST_NV_RC_MODE_DEFAULT,
+ GST_NV_RC_MODE_CONSTQP,
+ GST_NV_RC_MODE_CBR,
+ GST_NV_RC_MODE_VBR,
+ GST_NV_RC_MODE_VBR_MINQP,
+} GstNvRCMode;
+
typedef struct {
GstVideoEncoder video_encoder;
/* properties */
guint cuda_device_id;
+ GstNvPreset preset_enum;
+ GUID selected_preset;
+ GstNvRCMode rate_control_mode;
+ gint qp_min;
+ gint qp_max;
+ gint qp_const;
+ guint bitrate;
CUcontext cuda_ctx;
void * encoder;
@@ -90,14 +117,14 @@
GUID codec_id;
- gboolean (*initialize_encoder) (GstNvBaseEnc * nvenc,
- GstVideoCodecState * old_state,
- GstVideoCodecState * state);
gboolean (*set_src_caps) (GstNvBaseEnc * nvenc,
GstVideoCodecState * state);
gboolean (*set_pic_params) (GstNvBaseEnc * nvenc,
GstVideoCodecFrame * frame,
NV_ENC_PIC_PARAMS * pic_params);
+ gboolean (*set_encoder_config) (GstNvBaseEnc * nvenc,
+ GstVideoCodecState * state,
+ NV_ENC_CONFIG * config);
} GstNvBaseEncClass;
G_GNUC_INTERNAL
diff --git a/sys/nvenc/gstnvenc.c b/sys/nvenc/gstnvenc.c
index 6b0d568..30b5b13 100644
--- a/sys/nvenc/gstnvenc.c
+++ b/sys/nvenc/gstnvenc.c
@@ -78,6 +78,24 @@
}
NVENCSTATUS
+NvEncGetEncodePresetCount (void *encoder, GUID encodeGUID,
+ uint32_t * encodePresetGUIDCount)
+{
+ g_assert (nvenc_api.nvEncGetEncodeProfileGUIDCount != NULL);
+ return nvenc_api.nvEncGetEncodePresetCount (encoder, encodeGUID,
+ encodePresetGUIDCount);
+}
+
+NVENCSTATUS
+NvEncGetEncodePresetGUIDs (void *encoder, GUID encodeGUID,
+ GUID * presetGUIDs, uint32_t guidArraySize, uint32_t * GUIDCount)
+{
+ g_assert (nvenc_api.nvEncGetEncodeProfileGUIDs != NULL);
+ return nvenc_api.nvEncGetEncodePresetGUIDs (encoder, encodeGUID,
+ presetGUIDs, guidArraySize, GUIDCount);
+}
+
+NVENCSTATUS
NvEncGetEncodePresetConfig (void *encoder, GUID encodeGUID,
GUID presetGUID, NV_ENC_PRESET_CONFIG * presetConfig)
{
diff --git a/sys/nvenc/gstnvh264enc.c b/sys/nvenc/gstnvh264enc.c
index 170e3f7..2e60b3d 100644
--- a/sys/nvenc/gstnvh264enc.c
+++ b/sys/nvenc/gstnvh264enc.c
@@ -57,8 +57,8 @@
GstCaps * filter);
static gboolean gst_nv_h264_enc_set_src_caps (GstNvBaseEnc * nvenc,
GstVideoCodecState * state);
-static gboolean gst_nv_h264_enc_initialize_encoder (GstNvBaseEnc * nvenc,
- GstVideoCodecState * old_state, GstVideoCodecState * state);
+static gboolean gst_nv_h264_enc_set_encoder_config (GstNvBaseEnc * nvenc,
+ GstVideoCodecState * state, NV_ENC_CONFIG * config);
static gboolean gst_nv_h264_enc_set_pic_params (GstNvBaseEnc * nvenc,
GstVideoCodecFrame * frame, NV_ENC_PIC_PARAMS * pic_params);
static void gst_nv_h264_enc_set_property (GObject * object, guint prop_id,
@@ -85,12 +85,11 @@
videoenc_class->getcaps = GST_DEBUG_FUNCPTR (gst_nv_h264_enc_getcaps);
nvenc_class->codec_id = NV_ENC_CODEC_H264_GUID;
- nvenc_class->initialize_encoder = gst_nv_h264_enc_initialize_encoder;
+ nvenc_class->set_encoder_config = gst_nv_h264_enc_set_encoder_config;
nvenc_class->set_src_caps = gst_nv_h264_enc_set_src_caps;
nvenc_class->set_pic_params = gst_nv_h264_enc_set_pic_params;
- gst_element_class_add_pad_template (element_class,
- gst_static_pad_template_get (&src_factory));
+ gst_element_class_add_static_pad_template (element_class, &src_factory);
gst_element_class_set_static_metadata (element_class,
"NVENC H.264 Video Encoder",
@@ -412,27 +411,14 @@
}
static gboolean
-gst_nv_h264_enc_initialize_encoder (GstNvBaseEnc * nvenc,
- GstVideoCodecState * old_state, GstVideoCodecState * state)
+gst_nv_h264_enc_set_encoder_config (GstNvBaseEnc * nvenc,
+ GstVideoCodecState * state, NV_ENC_CONFIG * config)
{
GstNvH264Enc *h264enc = GST_NV_H264_ENC (nvenc);
- NV_ENC_RECONFIGURE_PARAMS reconfigure_params = { 0, };
- NV_ENC_INITIALIZE_PARAMS init_params = { 0, };
- NV_ENC_INITIALIZE_PARAMS *params;
- NV_ENC_PRESET_CONFIG preset_config = { 0, };
- NVENCSTATUS nv_ret;
- GstVideoInfo *info = &state->info;
GstCaps *allowed_caps, *template_caps;
GUID selected_profile = NV_ENC_CODEC_PROFILE_AUTOSELECT_GUID;
int level_idc = NV_ENC_LEVEL_AUTOSELECT;
-
- /* TODO: support reconfiguration */
- if (old_state) {
- reconfigure_params.version = NV_ENC_RECONFIGURE_PARAMS_VER;
- params = &reconfigure_params.reInitEncodeParams;
- } else {
- params = &init_params;
- }
+ GstVideoInfo *info = &state->info;
template_caps = gst_static_pad_template_get_caps (&src_factory);
allowed_caps = gst_pad_get_allowed_caps (GST_VIDEO_ENCODER_SRC_PAD (h264enc));
@@ -482,96 +468,19 @@
}
gst_caps_unref (template_caps);
- params->version = NV_ENC_INITIALIZE_PARAMS_VER;
- params->encodeGUID = NV_ENC_CODEC_H264_GUID;
- params->encodeWidth = GST_VIDEO_INFO_WIDTH (info);
- params->encodeHeight = GST_VIDEO_INFO_HEIGHT (info);
- /* FIXME: make this a property */
- params->presetGUID = NV_ENC_PRESET_HP_GUID; // _DEFAULT
- params->enablePTD = 1;
- if (!old_state) {
- /* this sets the required buffer size and the maximum allowed size on
- * subsequent reconfigures */
- /* FIXME: propertise this */
- params->maxEncodeWidth = GST_VIDEO_INFO_WIDTH (info);
- params->maxEncodeHeight = GST_VIDEO_INFO_HEIGHT (info);
- gst_nv_base_enc_set_max_encode_size (GST_NV_BASE_ENC (h264enc),
- params->maxEncodeWidth, params->maxEncodeHeight);
- } else {
- guint max_width, max_height;
-
- gst_nv_base_enc_get_max_encode_size (GST_NV_BASE_ENC (h264enc),
- &max_width, &max_height);
-
- if (GST_VIDEO_INFO_WIDTH (info) > max_width
- || GST_VIDEO_INFO_HEIGHT (info) > max_height) {
- GST_ELEMENT_ERROR (h264enc, STREAM, FORMAT, ("%s", "Requested stream "
- "size is larger than the maximum configured size"), (NULL));
- return FALSE;
- }
- }
-
- preset_config.version = NV_ENC_PRESET_CONFIG_VER;
- preset_config.presetCfg.version = NV_ENC_CONFIG_VER;
-
- nv_ret =
- NvEncGetEncodePresetConfig (GST_NV_BASE_ENC (h264enc)->encoder,
- params->encodeGUID, params->presetGUID, &preset_config);
- if (nv_ret != NV_ENC_SUCCESS) {
- GST_ELEMENT_ERROR (h264enc, LIBRARY, SETTINGS, (NULL),
- ("Failed to get encode preset configuration: %d", nv_ret));
- return FALSE;
- }
- params->encodeConfig = &preset_config.presetCfg;
-
/* override some defaults */
GST_LOG_OBJECT (h264enc, "setting parameters");
- preset_config.presetCfg.version = NV_ENC_CONFIG_VER;
- preset_config.presetCfg.profileGUID = selected_profile;
- preset_config.presetCfg.encodeCodecConfig.h264Config.level = level_idc;
- preset_config.presetCfg.encodeCodecConfig.h264Config.chromaFormatIDC = 1;
+ config->profileGUID = selected_profile;
+ config->encodeCodecConfig.h264Config.level = level_idc;
+ config->encodeCodecConfig.h264Config.chromaFormatIDC = 1;
if (GST_VIDEO_INFO_FORMAT (info) == GST_VIDEO_FORMAT_Y444) {
GST_DEBUG_OBJECT (h264enc, "have Y444 input, setting config accordingly");
- preset_config.presetCfg.encodeCodecConfig.
- h264Config.separateColourPlaneFlag = 1;
- preset_config.presetCfg.encodeCodecConfig.h264Config.chromaFormatIDC = 3;
+ config->encodeCodecConfig.h264Config.separateColourPlaneFlag = 1;
+ config->encodeCodecConfig.h264Config.chromaFormatIDC = 3;
}
/* FIXME: make property */
- preset_config.presetCfg.encodeCodecConfig.h264Config.outputAUD = 1;
-
- if (GST_VIDEO_INFO_IS_INTERLACED (info)) {
- if (GST_VIDEO_INFO_INTERLACE_MODE (info) ==
- GST_VIDEO_INTERLACE_MODE_INTERLEAVED
- || GST_VIDEO_INFO_INTERLACE_MODE (info) ==
- GST_VIDEO_INTERLACE_MODE_MIXED) {
- preset_config.presetCfg.frameFieldMode =
- NV_ENC_PARAMS_FRAME_FIELD_MODE_FIELD;
- }
- }
-
- if (info->fps_d > 0 && info->fps_n > 0) {
- params->frameRateNum = info->fps_n;
- params->frameRateDen = info->fps_d;
- } else {
- GST_FIXME_OBJECT (h264enc, "variable framerate");
- }
-
- if (old_state) {
- nv_ret =
- NvEncReconfigureEncoder (GST_NV_BASE_ENC (h264enc)->encoder,
- &reconfigure_params);
- } else {
- nv_ret =
- NvEncInitializeEncoder (GST_NV_BASE_ENC (h264enc)->encoder, params);
- }
-
- if (nv_ret != NV_ENC_SUCCESS) {
- GST_ELEMENT_ERROR (h264enc, LIBRARY, SETTINGS, (NULL),
- ("Failed to %sinit encoder: %d", old_state ? "re" : "", nv_ret));
- return FALSE;
- }
- GST_INFO_OBJECT (h264enc, "configured encoder");
+ config->encodeCodecConfig.h264Config.outputAUD = 1;
return TRUE;
}
diff --git a/sys/opensles/Makefile.in b/sys/opensles/Makefile.in
index 955e522..8f9099e 100644
--- a/sys/opensles/Makefile.in
+++ b/sys/opensles/Makefile.in
@@ -305,6 +305,8 @@
DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
DSYMUTIL = @DSYMUTIL@
DTLS_CFLAGS = @DTLS_CFLAGS@
DTLS_LIBS = @DTLS_LIBS@
@@ -520,6 +522,8 @@
LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
LIPO = @LIPO@
LN_S = @LN_S@
LOCALEDIR = @LOCALEDIR@
@@ -646,8 +650,6 @@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
SNDIO_LIBS = @SNDIO_LIBS@
@@ -692,6 +694,8 @@
WAYLAND_LIBS = @WAYLAND_LIBS@
WEBP_CFLAGS = @WEBP_CFLAGS@
WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
WGET = @WGET@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
diff --git a/sys/opensles/openslessink.c b/sys/opensles/openslessink.c
index c2ec806..2493853 100644
--- a/sys/opensles/openslessink.c
+++ b/sys/opensles/openslessink.c
@@ -272,8 +272,7 @@
GST_TYPE_OPENSLES_STREAM_TYPE, DEFAULT_STREAM_TYPE,
G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
- gst_element_class_add_pad_template (gstelement_class,
- gst_static_pad_template_get (&sink_factory));
+ gst_element_class_add_static_pad_template (gstelement_class, &sink_factory);
gst_element_class_set_static_metadata (gstelement_class, "OpenSL ES Sink",
"Sink/Audio",
diff --git a/sys/opensles/openslessrc.c b/sys/opensles/openslessrc.c
index 6505ab1..f32984a 100644
--- a/sys/opensles/openslessrc.c
+++ b/sys/opensles/openslessrc.c
@@ -131,8 +131,7 @@
GST_TYPE_OPENSLES_RECORDING_PRESET, DEFAULT_PRESET,
G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
- gst_element_class_add_pad_template (gstelement_class,
- gst_static_pad_template_get (&src_factory));
+ gst_element_class_add_static_pad_template (gstelement_class, &src_factory);
gst_element_class_set_static_metadata (gstelement_class, "OpenSL ES Src",
"Source/Audio",
diff --git a/sys/pvr2d/Makefile.in b/sys/pvr2d/Makefile.in
index 447d445..8b29d5e 100644
--- a/sys/pvr2d/Makefile.in
+++ b/sys/pvr2d/Makefile.in
@@ -306,6 +306,8 @@
DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
DSYMUTIL = @DSYMUTIL@
DTLS_CFLAGS = @DTLS_CFLAGS@
DTLS_LIBS = @DTLS_LIBS@
@@ -521,6 +523,8 @@
LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
LIPO = @LIPO@
LN_S = @LN_S@
LOCALEDIR = @LOCALEDIR@
@@ -647,8 +651,6 @@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
SNDIO_LIBS = @SNDIO_LIBS@
@@ -693,6 +695,8 @@
WAYLAND_LIBS = @WAYLAND_LIBS@
WEBP_CFLAGS = @WEBP_CFLAGS@
WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
WGET = @WGET@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
diff --git a/sys/pvr2d/gstpvrbufferpool.c b/sys/pvr2d/gstpvrbufferpool.c
index 81106dc..620d581 100644
--- a/sys/pvr2d/gstpvrbufferpool.c
+++ b/sys/pvr2d/gstpvrbufferpool.c
@@ -37,6 +37,15 @@
GST_DEBUG_CATEGORY_EXTERN (gst_debug_pvrvideosink);
#define GST_CAT_DEFAULT gst_debug_pvrvideosink
+static gboolean
+gst_pvr_meta_init (GstPVRMeta * meta, gpointer params, GstBuffer * buffer)
+{
+ meta->src_mem = NULL;
+ meta->sink = NULL;
+
+ return TRUE;
+}
+
static void
gst_pvr_meta_free (GstPVRMeta * meta, GstBuffer * buffer)
{
@@ -74,9 +83,9 @@
if (g_once_init_enter (&pvr_meta_info)) {
const GstMetaInfo *meta = gst_meta_register ("GstPVRMeta", "GstPVRMeta",
sizeof (GstPVRMeta),
- (GstMetaInitFunction) NULL,
+ (GstMetaInitFunction) gst_pvr_meta_init,
(GstMetaFreeFunction) gst_pvr_meta_free,
- (GstMetaCopyFunction) NULL, (GstMetaTransformFunction) NULL);
+ (GstMetaTransformFunction) NULL);
g_once_init_leave (&pvr_meta_info, meta);
}
return pvr_meta_info;
diff --git a/sys/pvr2d/gstpvrvideosink.c b/sys/pvr2d/gstpvrvideosink.c
index 7c10243..4e32a8c 100644
--- a/sys/pvr2d/gstpvrvideosink.c
+++ b/sys/pvr2d/gstpvrvideosink.c
@@ -1464,8 +1464,8 @@
"A PVR videosink",
"Luciana Fujii Pontello <luciana.fujii@collabora.co.uk");
- gst_element_class_add_pad_template (gstelement_class,
- gst_static_pad_template_get (&gst_pvrvideosink_sink_template_factory));
+ gst_element_class_add_static_pad_template (gstelement_class,
+ &gst_pvrvideosink_sink_template_factory);
gstelement_class->change_state = gst_pvrvideosink_change_state;
diff --git a/sys/shm/Makefile.in b/sys/shm/Makefile.in
index e212d99..900230e 100644
--- a/sys/shm/Makefile.in
+++ b/sys/shm/Makefile.in
@@ -304,6 +304,8 @@
DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
DSYMUTIL = @DSYMUTIL@
DTLS_CFLAGS = @DTLS_CFLAGS@
DTLS_LIBS = @DTLS_LIBS@
@@ -519,6 +521,8 @@
LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
LIPO = @LIPO@
LN_S = @LN_S@
LOCALEDIR = @LOCALEDIR@
@@ -645,8 +649,6 @@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
SNDIO_LIBS = @SNDIO_LIBS@
@@ -691,6 +693,8 @@
WAYLAND_LIBS = @WAYLAND_LIBS@
WEBP_CFLAGS = @WEBP_CFLAGS@
WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
WGET = @WGET@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
diff --git a/sys/shm/gstshmsink.c b/sys/shm/gstshmsink.c
index 13d67bd..a44097b 100644
--- a/sys/shm/gstshmsink.c
+++ b/sys/shm/gstshmsink.c
@@ -419,8 +419,7 @@
GST_TYPE_SHM_SINK, G_SIGNAL_RUN_LAST, 0, NULL, NULL,
g_cclosure_marshal_VOID__INT, G_TYPE_NONE, 1, G_TYPE_INT);
- gst_element_class_add_pad_template (gstelement_class,
- gst_static_pad_template_get (&sinktemplate));
+ gst_element_class_add_static_pad_template (gstelement_class, &sinktemplate);
gst_element_class_set_static_metadata (gstelement_class,
"Shared Memory Sink",
diff --git a/sys/shm/gstshmsrc.c b/sys/shm/gstshmsrc.c
index 3caf90b..59fe44d 100644
--- a/sys/shm/gstshmsrc.c
+++ b/sys/shm/gstshmsrc.c
@@ -138,8 +138,7 @@
"The name of the shared memory area used to get buffers",
NULL, G_PARAM_READABLE | G_PARAM_STATIC_STRINGS));
- gst_element_class_add_pad_template (gstelement_class,
- gst_static_pad_template_get (&srctemplate));
+ gst_element_class_add_static_pad_template (gstelement_class, &srctemplate);
gst_element_class_set_static_metadata (gstelement_class,
"Shared Memory Source",
@@ -273,11 +272,11 @@
if (self->pipe) {
gst_shm_pipe_dec (self->pipe);
self->pipe = NULL;
+
+ gst_poll_remove_fd (self->poll, &self->pollfd);
}
- gst_poll_remove_fd (self->poll, &self->pollfd);
gst_poll_fd_init (&self->pollfd);
-
gst_poll_set_flushing (self->poll, TRUE);
}
diff --git a/sys/tinyalsa/Makefile.in b/sys/tinyalsa/Makefile.in
index c87f829..160ba70 100644
--- a/sys/tinyalsa/Makefile.in
+++ b/sys/tinyalsa/Makefile.in
@@ -303,6 +303,8 @@
DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
DSYMUTIL = @DSYMUTIL@
DTLS_CFLAGS = @DTLS_CFLAGS@
DTLS_LIBS = @DTLS_LIBS@
@@ -518,6 +520,8 @@
LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
LIPO = @LIPO@
LN_S = @LN_S@
LOCALEDIR = @LOCALEDIR@
@@ -644,8 +648,6 @@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
SNDIO_LIBS = @SNDIO_LIBS@
@@ -690,6 +692,8 @@
WAYLAND_LIBS = @WAYLAND_LIBS@
WEBP_CFLAGS = @WEBP_CFLAGS@
WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
WGET = @WGET@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
diff --git a/sys/tinyalsa/tinyalsasink.c b/sys/tinyalsa/tinyalsasink.c
index c29755e..7c7799c 100644
--- a/sys/tinyalsa/tinyalsasink.c
+++ b/sys/tinyalsa/tinyalsasink.c
@@ -473,8 +473,7 @@
"Sink/Audio", "Plays audio to an ALSA device",
"Arun Raghavan <arun@centricular.com>");
- gst_element_class_add_pad_template (element_class,
- gst_static_pad_template_get (&sink_template));
+ gst_element_class_add_static_pad_template (element_class, &sink_template);
g_object_class_install_property (gobject_class,
PROP_CARD,
diff --git a/sys/uvch264/Makefile.in b/sys/uvch264/Makefile.in
index b2a71c1..3218574 100644
--- a/sys/uvch264/Makefile.in
+++ b/sys/uvch264/Makefile.in
@@ -307,6 +307,8 @@
DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
DSYMUTIL = @DSYMUTIL@
DTLS_CFLAGS = @DTLS_CFLAGS@
DTLS_LIBS = @DTLS_LIBS@
@@ -522,6 +524,8 @@
LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
LIPO = @LIPO@
LN_S = @LN_S@
LOCALEDIR = @LOCALEDIR@
@@ -648,8 +652,6 @@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
SNDIO_LIBS = @SNDIO_LIBS@
@@ -694,6 +696,8 @@
WAYLAND_LIBS = @WAYLAND_LIBS@
WEBP_CFLAGS = @WEBP_CFLAGS@
WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
WGET = @WGET@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
diff --git a/sys/uvch264/gstuvch264_mjpgdemux.c b/sys/uvch264/gstuvch264_mjpgdemux.c
index 1f9b1c4..e253a04 100644
--- a/sys/uvch264/gstuvch264_mjpgdemux.c
+++ b/sys/uvch264/gstuvch264_mjpgdemux.c
@@ -190,20 +190,16 @@
gobject_class->get_property = gst_uvc_h264_mjpg_demux_get_property;
gobject_class->dispose = gst_uvc_h264_mjpg_demux_dispose;
- gst_element_class_add_pad_template (element_class,
- gst_static_pad_template_get (&mjpgsink_pad_template));
-
- gst_element_class_add_pad_template (element_class,
- gst_static_pad_template_get (&jpegsrc_pad_template));
-
- gst_element_class_add_pad_template (element_class,
- gst_static_pad_template_get (&h264src_pad_template));
-
- gst_element_class_add_pad_template (element_class,
- gst_static_pad_template_get (&yuy2src_pad_template));
-
- gst_element_class_add_pad_template (element_class,
- gst_static_pad_template_get (&nv12src_pad_template));
+ gst_element_class_add_static_pad_template (element_class,
+ &mjpgsink_pad_template);
+ gst_element_class_add_static_pad_template (element_class,
+ &jpegsrc_pad_template);
+ gst_element_class_add_static_pad_template (element_class,
+ &h264src_pad_template);
+ gst_element_class_add_static_pad_template (element_class,
+ &yuy2src_pad_template);
+ gst_element_class_add_static_pad_template (element_class,
+ &nv12src_pad_template);
gst_element_class_set_static_metadata (element_class,
"UVC H264 MJPG Demuxer",
diff --git a/sys/uvch264/gstuvch264_src.c b/sys/uvch264/gstuvch264_src.c
index eae7d82..38397c3 100644
--- a/sys/uvch264/gstuvch264_src.c
+++ b/sys/uvch264/gstuvch264_src.c
@@ -281,14 +281,11 @@
"UVC H264 Encoding camera source",
"Youness Alaoui <youness.alaoui@collabora.co.uk>");
- gst_element_class_add_pad_template (gstelement_class,
- gst_static_pad_template_get (&vidsrc_template));
-
- gst_element_class_add_pad_template (gstelement_class,
- gst_static_pad_template_get (&imgsrc_template));
-
- gst_element_class_add_pad_template (gstelement_class,
- gst_static_pad_template_get (&vfsrc_template));
+ gst_element_class_add_static_pad_template (gstelement_class,
+ &vidsrc_template);
+ gst_element_class_add_static_pad_template (gstelement_class,
+ &imgsrc_template);
+ gst_element_class_add_static_pad_template (gstelement_class, &vfsrc_template);
/* Properties */
g_object_class_install_property (gobject_class, PROP_COLORSPACE_NAME,
diff --git a/sys/vcd/Makefile.in b/sys/vcd/Makefile.in
index 88ed312..ed18a3b 100644
--- a/sys/vcd/Makefile.in
+++ b/sys/vcd/Makefile.in
@@ -302,6 +302,8 @@
DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
DSYMUTIL = @DSYMUTIL@
DTLS_CFLAGS = @DTLS_CFLAGS@
DTLS_LIBS = @DTLS_LIBS@
@@ -517,6 +519,8 @@
LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
LIPO = @LIPO@
LN_S = @LN_S@
LOCALEDIR = @LOCALEDIR@
@@ -643,8 +647,6 @@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
SNDIO_LIBS = @SNDIO_LIBS@
@@ -689,6 +691,8 @@
WAYLAND_LIBS = @WAYLAND_LIBS@
WEBP_CFLAGS = @WEBP_CFLAGS@
WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
WGET = @WGET@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
diff --git a/sys/vcd/vcdsrc.c b/sys/vcd/vcdsrc.c
index 7372ac5..1bf3cc5 100644
--- a/sys/vcd/vcdsrc.c
+++ b/sys/vcd/vcdsrc.c
@@ -118,8 +118,7 @@
"Source/File",
"Asynchronous read from VCD disk", "Erik Walthinsen <omega@cse.ogi.edu>");
- gst_element_class_add_pad_template (element_class,
- gst_static_pad_template_get (&srctemplate));
+ gst_element_class_add_static_pad_template (element_class, &srctemplate);
}
static void
diff --git a/sys/vdpau/Makefile.in b/sys/vdpau/Makefile.in
index cc681e3..a8f39c4 100644
--- a/sys/vdpau/Makefile.in
+++ b/sys/vdpau/Makefile.in
@@ -310,6 +310,8 @@
DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
DSYMUTIL = @DSYMUTIL@
DTLS_CFLAGS = @DTLS_CFLAGS@
DTLS_LIBS = @DTLS_LIBS@
@@ -525,6 +527,8 @@
LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
LIPO = @LIPO@
LN_S = @LN_S@
LOCALEDIR = @LOCALEDIR@
@@ -651,8 +655,6 @@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
SNDIO_LIBS = @SNDIO_LIBS@
@@ -697,6 +699,8 @@
WAYLAND_LIBS = @WAYLAND_LIBS@
WEBP_CFLAGS = @WEBP_CFLAGS@
WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
WGET = @WGET@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
diff --git a/sys/vdpau/mpeg/gstvdpmpegdec.c b/sys/vdpau/mpeg/gstvdpmpegdec.c
index e6f6f95..1bcf9d9 100644
--- a/sys/vdpau/mpeg/gstvdpmpegdec.c
+++ b/sys/vdpau/mpeg/gstvdpmpegdec.c
@@ -525,8 +525,7 @@
"Decode mpeg stream with vdpau",
"Carl-Anton Ingmarsson <ca.ingmarsson@gmail.com>");
- gst_element_class_add_pad_template (element_class,
- gst_static_pad_template_get (&sink_template));
+ gst_element_class_add_static_pad_template (element_class, &sink_template);
video_decoder_class->start = gst_vdp_mpeg_dec_start;
video_decoder_class->stop = gst_vdp_mpeg_dec_stop;
diff --git a/sys/wasapi/Makefile.in b/sys/wasapi/Makefile.in
index 55a66ed..e00b3b9 100644
--- a/sys/wasapi/Makefile.in
+++ b/sys/wasapi/Makefile.in
@@ -306,6 +306,8 @@
DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
DSYMUTIL = @DSYMUTIL@
DTLS_CFLAGS = @DTLS_CFLAGS@
DTLS_LIBS = @DTLS_LIBS@
@@ -521,6 +523,8 @@
LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
LIPO = @LIPO@
LN_S = @LN_S@
LOCALEDIR = @LOCALEDIR@
@@ -647,8 +651,6 @@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
SNDIO_LIBS = @SNDIO_LIBS@
@@ -693,6 +695,8 @@
WAYLAND_LIBS = @WAYLAND_LIBS@
WEBP_CFLAGS = @WEBP_CFLAGS@
WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
WGET = @WGET@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
diff --git a/sys/wasapi/gstwasapisink.c b/sys/wasapi/gstwasapisink.c
index 53f5c45..5b35b8e 100644
--- a/sys/wasapi/gstwasapisink.c
+++ b/sys/wasapi/gstwasapisink.c
@@ -77,8 +77,7 @@
gobject_class->dispose = gst_wasapi_sink_dispose;
gobject_class->finalize = gst_wasapi_sink_finalize;
- gst_element_class_add_pad_template (gstelement_class,
- gst_static_pad_template_get (&sink_template));
+ gst_element_class_add_static_pad_template (gstelement_class, &sink_template);
gst_element_class_set_static_metadata (gstelement_class, "WasapiSrc",
"Sink/Audio",
"Stream audio to an audio capture device through WASAPI",
diff --git a/sys/wasapi/gstwasapisrc.c b/sys/wasapi/gstwasapisrc.c
index 402875f..20c3929 100644
--- a/sys/wasapi/gstwasapisrc.c
+++ b/sys/wasapi/gstwasapisrc.c
@@ -50,13 +50,15 @@
static void gst_wasapi_src_dispose (GObject * object);
static void gst_wasapi_src_finalize (GObject * object);
-static GstCaps * gst_wasapi_src_get_caps (GstBaseSrc * bsrc, GstCaps * filter);
+static GstCaps *gst_wasapi_src_get_caps (GstBaseSrc * bsrc, GstCaps * filter);
static gboolean gst_wasapi_src_open (GstAudioSrc * asrc);
static gboolean gst_wasapi_src_close (GstAudioSrc * asrc);
-static gboolean gst_wasapi_src_prepare (GstAudioSrc * asrc, GstAudioRingBufferSpec * spec);
+static gboolean gst_wasapi_src_prepare (GstAudioSrc * asrc,
+ GstAudioRingBufferSpec * spec);
static gboolean gst_wasapi_src_unprepare (GstAudioSrc * asrc);
-static guint gst_wasapi_src_read (GstAudioSrc * asrc, gpointer data, guint length, GstClockTime * timestamp);
+static guint gst_wasapi_src_read (GstAudioSrc * asrc, gpointer data,
+ guint length, GstClockTime * timestamp);
static guint gst_wasapi_src_delay (GstAudioSrc * asrc);
static void gst_wasapi_src_reset (GstAudioSrc * asrc);
@@ -76,8 +78,7 @@
gobject_class->dispose = gst_wasapi_src_dispose;
gobject_class->finalize = gst_wasapi_src_finalize;
- gst_element_class_add_pad_template (gstelement_class,
- gst_static_pad_template_get (&src_template));
+ gst_element_class_add_static_pad_template (gstelement_class, &src_template);
gst_element_class_set_static_metadata (gstelement_class, "WasapiSrc",
"Source/Audio",
"Stream audio from an audio capture device through WASAPI",
@@ -89,8 +90,7 @@
gstaudiosrc_class->close = GST_DEBUG_FUNCPTR (gst_wasapi_src_close);
gstaudiosrc_class->read = GST_DEBUG_FUNCPTR (gst_wasapi_src_read);
gstaudiosrc_class->prepare = GST_DEBUG_FUNCPTR (gst_wasapi_src_prepare);
- gstaudiosrc_class->unprepare =
- GST_DEBUG_FUNCPTR (gst_wasapi_src_unprepare);
+ gstaudiosrc_class->unprepare = GST_DEBUG_FUNCPTR (gst_wasapi_src_unprepare);
gstaudiosrc_class->delay = GST_DEBUG_FUNCPTR (gst_wasapi_src_delay);
gstaudiosrc_class->reset = GST_DEBUG_FUNCPTR (gst_wasapi_src_reset);
@@ -147,9 +147,10 @@
{
GstWasapiSrc *self = GST_WASAPI_SRC (asrc);
gboolean res = FALSE;
- IAudioClient * client = NULL;
+ IAudioClient *client = NULL;
- if (!gst_wasapi_util_get_default_device_client (GST_ELEMENT (self), TRUE, &client)) {
+ if (!gst_wasapi_util_get_default_device_client (GST_ELEMENT (self), TRUE,
+ &client)) {
GST_ELEMENT_ERROR (self, RESOURCE, OPEN_READ, (NULL),
("Failed to get default device"));
goto beach;
@@ -197,8 +198,9 @@
gst_wasapi_util_audio_info_to_waveformatex (&spec->info, &format);
self->info = spec->info;
- hr = IAudioClient_Initialize (self->client, AUDCLNT_SHAREMODE_SHARED, AUDCLNT_STREAMFLAGS_EVENTCALLBACK,
- spec->buffer_time / 100, 0, (WAVEFORMATEX *) & format, NULL);
+ hr = IAudioClient_Initialize (self->client, AUDCLNT_SHAREMODE_SHARED,
+ AUDCLNT_STREAMFLAGS_EVENTCALLBACK, spec->buffer_time / 100, 0,
+ (WAVEFORMATEX *) & format, NULL);
if (hr != S_OK) {
GST_ELEMENT_ERROR (self, RESOURCE, OPEN_READ, (NULL),
("IAudioClient::Initialize () failed: %s",
diff --git a/sys/wininet/Makefile.in b/sys/wininet/Makefile.in
index 1b9d397..96a3a0f 100644
--- a/sys/wininet/Makefile.in
+++ b/sys/wininet/Makefile.in
@@ -302,6 +302,8 @@
DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
DSYMUTIL = @DSYMUTIL@
DTLS_CFLAGS = @DTLS_CFLAGS@
DTLS_LIBS = @DTLS_LIBS@
@@ -517,6 +519,8 @@
LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
LIPO = @LIPO@
LN_S = @LN_S@
LOCALEDIR = @LOCALEDIR@
@@ -643,8 +647,6 @@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
SNDIO_LIBS = @SNDIO_LIBS@
@@ -689,6 +691,8 @@
WAYLAND_LIBS = @WAYLAND_LIBS@
WEBP_CFLAGS = @WEBP_CFLAGS@
WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
WGET = @WGET@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
diff --git a/sys/wininet/gstwininetsrc.c b/sys/wininet/gstwininetsrc.c
index 4cd9bf3..60d2944 100644
--- a/sys/wininet/gstwininetsrc.c
+++ b/sys/wininet/gstwininetsrc.c
@@ -83,8 +83,7 @@
{
GstElementClass *element_class = GST_ELEMENT_CLASS (gclass);
- gst_element_class_add_pad_template (element_class,
- gst_static_pad_template_get (&src_template));
+ gst_element_class_add_static_pad_template (element_class, &src_template);
gst_element_class_set_static_metadata (element_class,
"Windows Network Source", "Source/Network",
diff --git a/sys/winks/Makefile.in b/sys/winks/Makefile.in
index b780516..ba4cce4 100644
--- a/sys/winks/Makefile.in
+++ b/sys/winks/Makefile.in
@@ -307,6 +307,8 @@
DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
DSYMUTIL = @DSYMUTIL@
DTLS_CFLAGS = @DTLS_CFLAGS@
DTLS_LIBS = @DTLS_LIBS@
@@ -522,6 +524,8 @@
LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
LIPO = @LIPO@
LN_S = @LN_S@
LOCALEDIR = @LOCALEDIR@
@@ -648,8 +652,6 @@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
SNDIO_LIBS = @SNDIO_LIBS@
@@ -694,6 +696,8 @@
WAYLAND_LIBS = @WAYLAND_LIBS@
WEBP_CFLAGS = @WEBP_CFLAGS@
WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
WGET = @WGET@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
diff --git a/sys/winks/ksdeviceprovider.c b/sys/winks/ksdeviceprovider.c
index 54429eb..609794d 100644
--- a/sys/winks/ksdeviceprovider.c
+++ b/sys/winks/ksdeviceprovider.c
@@ -355,7 +355,7 @@
entry->path);
if ((source == NULL) &&
- (strcasecmp (entry->path, bcdi->dbcc_name) == 0))
+ (g_ascii_strcasecmp (entry->path, bcdi->dbcc_name) == 0))
source = new_video_source (entry);
ks_device_entry_free (entry);
@@ -377,7 +377,7 @@
for (item = provider->devices; item; item = item->next) {
dev = item->data;
- if (strcasecmp (dev->path, bcdi->dbcc_name) == 0) {
+ if (g_ascii_strcasecmp (dev->path, bcdi->dbcc_name) == 0) {
guid_str = gst_device_get_display_name (GST_DEVICE (dev));
GST_INFO_OBJECT (self, "Device matches to %s", guid_str);
g_free (guid_str);
diff --git a/sys/winks/kshelpers.c b/sys/winks/kshelpers.c
index bbb9b06..3b5ec28 100644
--- a/sys/winks/kshelpers.c
+++ b/sys/winks/kshelpers.c
@@ -19,6 +19,12 @@
#include "kshelpers.h"
+/* This plugin is from the era of Windows XP and uses APIs that have been
+ * deprecated since then. Let's pretend we're Windows XP too so that Windows
+ * lets us use that deprecated API. */
+#define NTDDI_VERSION NTDDI_WINXP
+#define _WIN32_WINNT _WIN32_WINNT_WINXP
+
#include <ksmedia.h>
#include <setupapi.h>
#include <gst/gst.h>
diff --git a/sys/winks/kshelpers.h b/sys/winks/kshelpers.h
index 5181bfc..ded8101 100644
--- a/sys/winks/kshelpers.h
+++ b/sys/winks/kshelpers.h
@@ -22,6 +22,7 @@
#include <glib.h>
#include <windows.h>
+#include <mmsystem.h>
#include <ks.h>
G_BEGIN_DECLS
diff --git a/sys/winscreencap/Makefile.in b/sys/winscreencap/Makefile.in
index 5fef8fa..3ef6c3d 100644
--- a/sys/winscreencap/Makefile.in
+++ b/sys/winscreencap/Makefile.in
@@ -306,6 +306,8 @@
DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
DSYMUTIL = @DSYMUTIL@
DTLS_CFLAGS = @DTLS_CFLAGS@
DTLS_LIBS = @DTLS_LIBS@
@@ -521,6 +523,8 @@
LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
LIPO = @LIPO@
LN_S = @LN_S@
LOCALEDIR = @LOCALEDIR@
@@ -647,8 +651,6 @@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
SNDIO_LIBS = @SNDIO_LIBS@
@@ -693,6 +695,8 @@
WAYLAND_LIBS = @WAYLAND_LIBS@
WEBP_CFLAGS = @WEBP_CFLAGS@
WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
WGET = @WGET@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
diff --git a/sys/winscreencap/gstdx9screencapsrc.c b/sys/winscreencap/gstdx9screencapsrc.c
index 0f889b2..af1b89f 100644
--- a/sys/winscreencap/gstdx9screencapsrc.c
+++ b/sys/winscreencap/gstdx9screencapsrc.c
@@ -139,8 +139,7 @@
"Height of screen capture area (0 = maximum)",
0, G_MAXINT, 0, G_PARAM_READWRITE));
- gst_element_class_add_pad_template (e_class,
- gst_static_pad_template_get (&src_template));
+ gst_element_class_add_static_pad_template (e_class, &src_template);
gst_element_class_set_static_metadata (e_class,
"DirectX 9 screen capture source", "Source/Video", "Captures screen",
diff --git a/sys/winscreencap/gstgdiscreencapsrc.c b/sys/winscreencap/gstgdiscreencapsrc.c
index 55bd4b5..65f0bd9 100644
--- a/sys/winscreencap/gstgdiscreencapsrc.c
+++ b/sys/winscreencap/gstgdiscreencapsrc.c
@@ -146,8 +146,7 @@
"Height of screen capture area (0 = maximum)",
0, G_MAXINT, 0, G_PARAM_READWRITE));
- gst_element_class_add_pad_template (e_class,
- gst_static_pad_template_get (&src_template));
+ gst_element_class_add_static_pad_template (e_class, &src_template);
gst_element_class_set_static_metadata (e_class,
"GDI screen capture source", "Source/Video", "Captures screen",
"Haakon Sporsheim <hakon.sporsheim@tandberg.com>");
diff --git a/tests/Makefile.in b/tests/Makefile.in
index 610f24a..c653861 100644
--- a/tests/Makefile.in
+++ b/tests/Makefile.in
@@ -275,6 +275,8 @@
DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
DSYMUTIL = @DSYMUTIL@
DTLS_CFLAGS = @DTLS_CFLAGS@
DTLS_LIBS = @DTLS_LIBS@
@@ -490,6 +492,8 @@
LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
LIPO = @LIPO@
LN_S = @LN_S@
LOCALEDIR = @LOCALEDIR@
@@ -616,8 +620,6 @@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
SNDIO_LIBS = @SNDIO_LIBS@
@@ -662,6 +664,8 @@
WAYLAND_LIBS = @WAYLAND_LIBS@
WEBP_CFLAGS = @WEBP_CFLAGS@
WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
WGET = @WGET@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
diff --git a/tests/check/Makefile.am b/tests/check/Makefile.am
index 3f9ad9d..b16c968 100644
--- a/tests/check/Makefile.am
+++ b/tests/check/Makefile.am
@@ -17,7 +17,7 @@
GST_STATE_IGNORE_ELEMENTS="apexsink avdtpsrc camerabin dc1394src \
dccpclientsrc dccpclientsink dccpserversrc dccpserversink decklinksrc \
decklinksink dtlssrtpdec dtlssrtpenc dvbsrc dvbbasebin dfbvideosink festival fluidsynth \
- linsyssdisrc linsyssdisink nassink \
+ linsyssdisrc linsyssdisink nassink kmssink \
rsndvdbin sdlaudiosink sdlvideosink vcdsrc rfbsrc vdpauyuvvideo vdpauvideoyuv \
vdpaumpegdec vdpaumpeg4dec vdpauh264dec vdpauvideopostprocess vdpausink neonhttpsrc"
@@ -211,7 +211,8 @@
libs/gstglcolorconvert \
libs/gstglquery \
libs/gstglsl \
- elements/glimagesink
+ elements/glimagesink \
+ pipelines/simple-launch-lines
else
check_gl=
endif
@@ -272,6 +273,7 @@
elements/mxfmux \
elements/netsim \
elements/pcapparse \
+ elements/pnm \
elements/rtponvifparse \
elements/rtponviftimestamp \
elements/id3mux \
@@ -315,6 +317,12 @@
elements_audiointerleave_LDADD = $(GST_BASE_LIBS) -lgstbase-@GST_API_VERSION@ -lgstaudio-@GST_API_VERSION@ $(LDADD)
elements_audiointerleave_CFLAGS = $(GST_PLUGINS_BASE_CFLAGS) $(GST_BASE_CFLAGS) $(AM_CFLAGS)
+elements_pnm_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)
+#
# parser unit test convenience lib
noinst_LTLIBRARIES = libparser.la
libparser_la_SOURCES = elements/parser.c elements/parser.h
@@ -480,9 +488,10 @@
libs_player_LDADD = \
$(top_builddir)/gst-libs/gst/player/libgstplayer-@GST_API_VERSION@.la \
+ -lgstvideo-@GST_API_VERSION@ \
$(GST_PLUGINS_BASE_LIBS) $(GST_BASE_LIBS) $(GST_LIBS) $(LDADD)
libs_player_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) \
-DTEST_PATH=\"$(builddir)/media\"
if WITH_GST_PLAYER_TESTS
@@ -532,7 +541,8 @@
libs_gstglcontext_LDADD = \
$(top_builddir)/gst-libs/gst/gl/libgstgl-@GST_API_VERSION@.la \
- $(GST_PLUGINS_BASE_LIBS) $(GST_BASE_LIBS) $(GST_LIBS) $(LDADD)
+ $(GST_PLUGINS_BASE_LIBS) -lgstvideo-$(GST_API_VERSION) \
+ $(GST_BASE_LIBS) $(GST_LIBS) $(LDADD)
libs_gstglcontext_CFLAGS = \
$(GST_PLUGINS_BAD_CFLAGS) $(GST_PLUGINS_BASE_CFLAGS) \
@@ -597,6 +607,14 @@
$(GST_PLUGINS_BASE_LIBS) -lgstvideo-$(GST_API_VERSION) \
$(GST_BASE_LIBS) $(GST_LIBS) $(LDADD)
+pipelines_simple_launch_lines_CFLAGS = \
+ $(GST_PLUGINS_BAD_CFLAGS) \
+ -DGST_USE_UNSTABLE_API \
+ $(GST_BASE_CFLAGS) $(GST_CFLAGS) $(AM_CFLAGS)
+
+pipelines_simple_launch_lines_LDADD = \
+ $(GST_BASE_LIBS) $(GST_LIBS) $(LDADD)
+
libs_aggregator_LDADD = \
$(top_builddir)/gst-libs/gst/base/libgstbadbase-@GST_API_VERSION@.la \
$(GST_PLUGINS_BASE_LIBS) \
diff --git a/tests/check/Makefile.in b/tests/check/Makefile.in
index ee20570..eea156b 100644
--- a/tests/check/Makefile.in
+++ b/tests/check/Makefile.in
@@ -111,7 +111,8 @@
elements/mpegtsmux$(EXEEXT) elements/mpegvideoparse$(EXEEXT) \
elements/mpeg4videoparse$(EXEEXT) elements/mxfdemux$(EXEEXT) \
elements/mxfmux$(EXEEXT) elements/netsim$(EXEEXT) \
- elements/pcapparse$(EXEEXT) elements/rtponvifparse$(EXEEXT) \
+ elements/pcapparse$(EXEEXT) elements/pnm$(EXEEXT) \
+ elements/rtponvifparse$(EXEEXT) \
elements/rtponviftimestamp$(EXEEXT) elements/id3mux$(EXEEXT) \
pipelines/mxf$(EXEEXT) $(am__EXEEXT_19) \
libs/mpegvideoparser$(EXEEXT) libs/mpegts$(EXEEXT) \
@@ -210,7 +211,8 @@
@USE_GL_TRUE@ libs/gstglupload$(EXEEXT) \
@USE_GL_TRUE@ libs/gstglcolorconvert$(EXEEXT) \
@USE_GL_TRUE@ libs/gstglquery$(EXEEXT) libs/gstglsl$(EXEEXT) \
-@USE_GL_TRUE@ elements/glimagesink$(EXEEXT)
+@USE_GL_TRUE@ elements/glimagesink$(EXEEXT) \
+@USE_GL_TRUE@ pipelines/simple-launch-lines$(EXEEXT)
@USE_HLS_TRUE@am__EXEEXT_26 = elements/hlsdemux_m3u8$(EXEEXT)
@USE_HLS_TRUE@am__EXEEXT_27 = elements/hls_demux$(EXEEXT)
@WITH_GST_PLAYER_TESTS_TRUE@am__EXEEXT_28 = libs/player$(EXEEXT)
@@ -487,6 +489,13 @@
elements_pcapparse_SOURCES = elements/pcapparse.c
elements_pcapparse_OBJECTS = elements/pcapparse.$(OBJEXT)
elements_pcapparse_DEPENDENCIES = libparser.la $(am__DEPENDENCIES_2)
+elements_pnm_SOURCES = elements/pnm.c
+elements_pnm_OBJECTS = elements/elements_pnm-pnm.$(OBJEXT)
+elements_pnm_DEPENDENCIES = $(am__DEPENDENCIES_1) \
+ $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_2)
+elements_pnm_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
+ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(elements_pnm_CFLAGS) \
+ $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
elements_rtponvifparse_SOURCES = elements/rtponvifparse.c
elements_rtponvifparse_OBJECTS = \
elements/elements_rtponvifparse-rtponvifparse.$(OBJEXT)
@@ -746,6 +755,15 @@
pipelines_mxf_OBJECTS = pipelines/mxf.$(OBJEXT)
pipelines_mxf_LDADD = $(LDADD)
pipelines_mxf_DEPENDENCIES = $(am__DEPENDENCIES_1)
+pipelines_simple_launch_lines_SOURCES = \
+ pipelines/simple-launch-lines.c
+pipelines_simple_launch_lines_OBJECTS = pipelines/pipelines_simple_launch_lines-simple-launch-lines.$(OBJEXT)
+pipelines_simple_launch_lines_DEPENDENCIES = $(am__DEPENDENCIES_1) \
+ $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_2)
+pipelines_simple_launch_lines_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \
+ $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \
+ $(pipelines_simple_launch_lines_CFLAGS) $(CFLAGS) \
+ $(AM_LDFLAGS) $(LDFLAGS) -o $@
pipelines_streamheader_SOURCES = pipelines/streamheader.c
pipelines_streamheader_OBJECTS = \
pipelines/pipelines_streamheader-streamheader.$(OBJEXT)
@@ -808,20 +826,22 @@
elements/mplex.c $(elements_mssdemux_SOURCES) \
elements/mxfdemux.c elements/mxfmux.c elements/neonhttpsrc.c \
elements/netsim.c elements/ofa.c elements/pcapparse.c \
- elements/rtponvifparse.c elements/rtponviftimestamp.c \
- elements/schroenc.c elements/shm.c elements/templatematch.c \
- elements/timidity.c elements/uvch264demux.c \
- elements/videoframe-audiolevel.c elements/viewfinderbin.c \
- elements/voaacenc.c elements/voamrwbenc.c elements/x265enc.c \
- elements/zbar.c generic/states.c libs/aggregator.c \
- libs/gstglcolorconvert.c libs/gstglcontext.c \
- libs/gstglmemory.c libs/gstglquery.c libs/gstglsl.c \
- libs/gstglupload.c libs/h264parser.c libs/insertbin.c \
- libs/mpegts.c libs/mpegvideoparser.c $(libs_player_SOURCES) \
- $(nodist_libs_player_SOURCES) libs/vc1parser.c \
- libs/vp8parser.c $(nodist_orc_audiomixer_SOURCES) \
- $(nodist_orc_bayer_SOURCES) $(nodist_orc_compositor_SOURCES) \
- pipelines/mimic.c pipelines/mxf.c pipelines/streamheader.c
+ elements/pnm.c elements/rtponvifparse.c \
+ elements/rtponviftimestamp.c elements/schroenc.c \
+ elements/shm.c elements/templatematch.c elements/timidity.c \
+ elements/uvch264demux.c elements/videoframe-audiolevel.c \
+ elements/viewfinderbin.c elements/voaacenc.c \
+ elements/voamrwbenc.c elements/x265enc.c elements/zbar.c \
+ generic/states.c libs/aggregator.c libs/gstglcolorconvert.c \
+ libs/gstglcontext.c libs/gstglmemory.c libs/gstglquery.c \
+ libs/gstglsl.c libs/gstglupload.c libs/h264parser.c \
+ libs/insertbin.c libs/mpegts.c libs/mpegvideoparser.c \
+ $(libs_player_SOURCES) $(nodist_libs_player_SOURCES) \
+ libs/vc1parser.c libs/vp8parser.c \
+ $(nodist_orc_audiomixer_SOURCES) $(nodist_orc_bayer_SOURCES) \
+ $(nodist_orc_compositor_SOURCES) pipelines/mimic.c \
+ pipelines/mxf.c pipelines/simple-launch-lines.c \
+ pipelines/streamheader.c
DIST_SOURCES = $(libparser_la_SOURCES) elements/aiffparse.c \
elements/asfmux.c elements/assrender.c \
elements/audiointerleave.c elements/audiomixer.c \
@@ -841,18 +861,19 @@
elements/mplex.c $(elements_mssdemux_SOURCES) \
elements/mxfdemux.c elements/mxfmux.c elements/neonhttpsrc.c \
elements/netsim.c elements/ofa.c elements/pcapparse.c \
- elements/rtponvifparse.c elements/rtponviftimestamp.c \
- elements/schroenc.c elements/shm.c elements/templatematch.c \
- elements/timidity.c elements/uvch264demux.c \
- elements/videoframe-audiolevel.c elements/viewfinderbin.c \
- elements/voaacenc.c elements/voamrwbenc.c elements/x265enc.c \
- elements/zbar.c generic/states.c libs/aggregator.c \
- libs/gstglcolorconvert.c libs/gstglcontext.c \
- libs/gstglmemory.c libs/gstglquery.c libs/gstglsl.c \
- libs/gstglupload.c libs/h264parser.c libs/insertbin.c \
- libs/mpegts.c libs/mpegvideoparser.c $(libs_player_SOURCES) \
- libs/vc1parser.c libs/vp8parser.c pipelines/mimic.c \
- pipelines/mxf.c pipelines/streamheader.c
+ elements/pnm.c elements/rtponvifparse.c \
+ elements/rtponviftimestamp.c elements/schroenc.c \
+ elements/shm.c elements/templatematch.c elements/timidity.c \
+ elements/uvch264demux.c elements/videoframe-audiolevel.c \
+ elements/viewfinderbin.c elements/voaacenc.c \
+ elements/voamrwbenc.c elements/x265enc.c elements/zbar.c \
+ generic/states.c libs/aggregator.c libs/gstglcolorconvert.c \
+ libs/gstglcontext.c libs/gstglmemory.c libs/gstglquery.c \
+ libs/gstglsl.c libs/gstglupload.c libs/h264parser.c \
+ libs/insertbin.c libs/mpegts.c libs/mpegvideoparser.c \
+ $(libs_player_SOURCES) libs/vc1parser.c libs/vp8parser.c \
+ pipelines/mimic.c pipelines/mxf.c \
+ pipelines/simple-launch-lines.c pipelines/streamheader.c
am__can_run_installinfo = \
case $$AM_UPDATE_INFO_DIR in \
n|no|NO) false;; \
@@ -1149,6 +1170,8 @@
DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
DSYMUTIL = @DSYMUTIL@
DTLS_CFLAGS = @DTLS_CFLAGS@
DTLS_LIBS = @DTLS_LIBS@
@@ -1364,6 +1387,8 @@
LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
LIPO = @LIPO@
LN_S = @LN_S@
LOCALEDIR = @LOCALEDIR@
@@ -1490,8 +1515,6 @@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
SNDIO_LIBS = @SNDIO_LIBS@
@@ -1536,6 +1559,8 @@
WAYLAND_LIBS = @WAYLAND_LIBS@
WEBP_CFLAGS = @WEBP_CFLAGS@
WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
WGET = @WGET@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
@@ -1634,10 +1659,10 @@
dc1394src dccpclientsrc dccpclientsink dccpserversrc \
dccpserversink decklinksrc decklinksink dtlssrtpdec \
dtlssrtpenc dvbsrc dvbbasebin dfbvideosink festival fluidsynth \
- linsyssdisrc linsyssdisink nassink rsndvdbin sdlaudiosink \
- sdlvideosink vcdsrc rfbsrc vdpauyuvvideo vdpauvideoyuv \
- vdpaumpegdec vdpaumpeg4dec vdpauh264dec vdpauvideopostprocess \
- vdpausink neonhttpsrc"
+ linsyssdisrc linsyssdisink nassink kmssink rsndvdbin \
+ sdlaudiosink sdlvideosink vcdsrc rfbsrc vdpauyuvvideo \
+ vdpauvideoyuv vdpaumpegdec vdpaumpeg4dec vdpauh264dec \
+ vdpauvideopostprocess vdpausink neonhttpsrc"
# inspect every plugin feature
GST_INSPECT = $(GST_TOOLS_DIR)/gst-inspect-$(GST_API_VERSION)
@@ -1725,7 +1750,8 @@
@USE_GL_TRUE@ libs/gstglcolorconvert \
@USE_GL_TRUE@ libs/gstglquery \
@USE_GL_TRUE@ libs/gstglsl \
-@USE_GL_TRUE@ elements/glimagesink
+@USE_GL_TRUE@ elements/glimagesink \
+@USE_GL_TRUE@ pipelines/simple-launch-lines
VALGRIND_TO_FIX = \
elements/mpeg2enc \
@@ -1751,7 +1777,13 @@
elements_audiomixer_CFLAGS = $(GST_PLUGINS_BASE_CFLAGS) $(GST_BASE_CFLAGS) $(GST_CONTROLLER_CFLAGS) $(AM_CFLAGS)
elements_audiointerleave_LDADD = $(GST_BASE_LIBS) -lgstbase-@GST_API_VERSION@ -lgstaudio-@GST_API_VERSION@ $(LDADD)
elements_audiointerleave_CFLAGS = $(GST_PLUGINS_BASE_CFLAGS) $(GST_BASE_CFLAGS) $(AM_CFLAGS)
+elements_pnm_CFLAGS = \
+ $(GST_PLUGINS_BASE_CFLAGS)
+elements_pnm_LDADD = \
+ $(GST_PLUGINS_BASE_LIBS) -lgstapp-$(GST_API_VERSION) $(GST_BASE_LIBS) $(LDADD)
+
+#
# parser unit test convenience lib
noinst_LTLIBRARIES = libparser.la
libparser_la_SOURCES = elements/parser.c elements/parser.h
@@ -1909,10 +1941,11 @@
libs_player_SOURCES = libs/player.c
libs_player_LDADD = \
$(top_builddir)/gst-libs/gst/player/libgstplayer-@GST_API_VERSION@.la \
+ -lgstvideo-@GST_API_VERSION@ \
$(GST_PLUGINS_BASE_LIBS) $(GST_BASE_LIBS) $(GST_LIBS) $(LDADD)
libs_player_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) \
-DTEST_PATH=\"$(builddir)/media\"
@WITH_GST_PLAYER_TESTS_TRUE@PLAYER_MEDIA_FILES = \
@@ -1937,7 +1970,8 @@
nodist_orc_audiomixer_SOURCES = orc/audiomixer.c
libs_gstglcontext_LDADD = \
$(top_builddir)/gst-libs/gst/gl/libgstgl-@GST_API_VERSION@.la \
- $(GST_PLUGINS_BASE_LIBS) $(GST_BASE_LIBS) $(GST_LIBS) $(LDADD)
+ $(GST_PLUGINS_BASE_LIBS) -lgstvideo-$(GST_API_VERSION) \
+ $(GST_BASE_LIBS) $(GST_LIBS) $(LDADD)
libs_gstglcontext_CFLAGS = \
$(GST_PLUGINS_BAD_CFLAGS) $(GST_PLUGINS_BASE_CFLAGS) \
@@ -2002,6 +2036,14 @@
$(GST_PLUGINS_BASE_LIBS) -lgstvideo-$(GST_API_VERSION) \
$(GST_BASE_LIBS) $(GST_LIBS) $(LDADD)
+pipelines_simple_launch_lines_CFLAGS = \
+ $(GST_PLUGINS_BAD_CFLAGS) \
+ -DGST_USE_UNSTABLE_API \
+ $(GST_BASE_CFLAGS) $(GST_CFLAGS) $(AM_CFLAGS)
+
+pipelines_simple_launch_lines_LDADD = \
+ $(GST_BASE_LIBS) $(GST_LIBS) $(LDADD)
+
libs_aggregator_LDADD = \
$(top_builddir)/gst-libs/gst/base/libgstbadbase-@GST_API_VERSION@.la \
$(GST_PLUGINS_BASE_LIBS) \
@@ -2378,6 +2420,12 @@
elements/pcapparse$(EXEEXT): $(elements_pcapparse_OBJECTS) $(elements_pcapparse_DEPENDENCIES) $(EXTRA_elements_pcapparse_DEPENDENCIES) elements/$(am__dirstamp)
@rm -f elements/pcapparse$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(elements_pcapparse_OBJECTS) $(elements_pcapparse_LDADD) $(LIBS)
+elements/elements_pnm-pnm.$(OBJEXT): elements/$(am__dirstamp) \
+ elements/$(DEPDIR)/$(am__dirstamp)
+
+elements/pnm$(EXEEXT): $(elements_pnm_OBJECTS) $(elements_pnm_DEPENDENCIES) $(EXTRA_elements_pnm_DEPENDENCIES) elements/$(am__dirstamp)
+ @rm -f elements/pnm$(EXEEXT)
+ $(AM_V_CCLD)$(elements_pnm_LINK) $(elements_pnm_OBJECTS) $(elements_pnm_LDADD) $(LIBS)
elements/elements_rtponvifparse-rtponvifparse.$(OBJEXT): \
elements/$(am__dirstamp) elements/$(DEPDIR)/$(am__dirstamp)
@@ -2602,6 +2650,12 @@
pipelines/mxf$(EXEEXT): $(pipelines_mxf_OBJECTS) $(pipelines_mxf_DEPENDENCIES) $(EXTRA_pipelines_mxf_DEPENDENCIES) pipelines/$(am__dirstamp)
@rm -f pipelines/mxf$(EXEEXT)
$(AM_V_CCLD)$(LINK) $(pipelines_mxf_OBJECTS) $(pipelines_mxf_LDADD) $(LIBS)
+pipelines/pipelines_simple_launch_lines-simple-launch-lines.$(OBJEXT): \
+ pipelines/$(am__dirstamp) pipelines/$(DEPDIR)/$(am__dirstamp)
+
+pipelines/simple-launch-lines$(EXEEXT): $(pipelines_simple_launch_lines_OBJECTS) $(pipelines_simple_launch_lines_DEPENDENCIES) $(EXTRA_pipelines_simple_launch_lines_DEPENDENCIES) pipelines/$(am__dirstamp)
+ @rm -f pipelines/simple-launch-lines$(EXEEXT)
+ $(AM_V_CCLD)$(pipelines_simple_launch_lines_LINK) $(pipelines_simple_launch_lines_OBJECTS) $(pipelines_simple_launch_lines_LDADD) $(LIBS)
pipelines/pipelines_streamheader-streamheader.$(OBJEXT): \
pipelines/$(am__dirstamp) pipelines/$(DEPDIR)/$(am__dirstamp)
@@ -2658,6 +2712,7 @@
@AMDEP_TRUE@@am__include@ @am__quote@elements/$(DEPDIR)/elements_mssdemux-adaptive_demux_engine.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@elements/$(DEPDIR)/elements_mssdemux-mssdemux.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@elements/$(DEPDIR)/elements_mssdemux-test_http_src.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@elements/$(DEPDIR)/elements_pnm-pnm.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@elements/$(DEPDIR)/elements_rtponvifparse-rtponvifparse.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@elements/$(DEPDIR)/elements_rtponviftimestamp-rtponviftimestamp.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@elements/$(DEPDIR)/elements_timidity-timidity.Po@am__quote@
@@ -2707,6 +2762,7 @@
@AMDEP_TRUE@@am__include@ @am__quote@orc/$(DEPDIR)/orc_compositor-compositor.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@pipelines/$(DEPDIR)/mimic.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@pipelines/$(DEPDIR)/mxf.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@pipelines/$(DEPDIR)/pipelines_simple_launch_lines-simple-launch-lines.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@pipelines/$(DEPDIR)/pipelines_streamheader-streamheader.Po@am__quote@
.c.o:
@@ -3118,6 +3174,20 @@
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(elements_mssdemux_CFLAGS) $(CFLAGS) -c -o elements/elements_mssdemux-mssdemux.obj `if test -f 'elements/mssdemux.c'; then $(CYGPATH_W) 'elements/mssdemux.c'; else $(CYGPATH_W) '$(srcdir)/elements/mssdemux.c'; fi`
+elements/elements_pnm-pnm.o: elements/pnm.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(elements_pnm_CFLAGS) $(CFLAGS) -MT elements/elements_pnm-pnm.o -MD -MP -MF elements/$(DEPDIR)/elements_pnm-pnm.Tpo -c -o elements/elements_pnm-pnm.o `test -f 'elements/pnm.c' || echo '$(srcdir)/'`elements/pnm.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) elements/$(DEPDIR)/elements_pnm-pnm.Tpo elements/$(DEPDIR)/elements_pnm-pnm.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='elements/pnm.c' object='elements/elements_pnm-pnm.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(elements_pnm_CFLAGS) $(CFLAGS) -c -o elements/elements_pnm-pnm.o `test -f 'elements/pnm.c' || echo '$(srcdir)/'`elements/pnm.c
+
+elements/elements_pnm-pnm.obj: elements/pnm.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(elements_pnm_CFLAGS) $(CFLAGS) -MT elements/elements_pnm-pnm.obj -MD -MP -MF elements/$(DEPDIR)/elements_pnm-pnm.Tpo -c -o elements/elements_pnm-pnm.obj `if test -f 'elements/pnm.c'; then $(CYGPATH_W) 'elements/pnm.c'; else $(CYGPATH_W) '$(srcdir)/elements/pnm.c'; fi`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) elements/$(DEPDIR)/elements_pnm-pnm.Tpo elements/$(DEPDIR)/elements_pnm-pnm.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='elements/pnm.c' object='elements/elements_pnm-pnm.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(elements_pnm_CFLAGS) $(CFLAGS) -c -o elements/elements_pnm-pnm.obj `if test -f 'elements/pnm.c'; then $(CYGPATH_W) 'elements/pnm.c'; else $(CYGPATH_W) '$(srcdir)/elements/pnm.c'; fi`
+
elements/elements_rtponvifparse-rtponvifparse.o: elements/rtponvifparse.c
@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(elements_rtponvifparse_CFLAGS) $(CFLAGS) -MT elements/elements_rtponvifparse-rtponvifparse.o -MD -MP -MF elements/$(DEPDIR)/elements_rtponvifparse-rtponvifparse.Tpo -c -o elements/elements_rtponvifparse-rtponvifparse.o `test -f 'elements/rtponvifparse.c' || echo '$(srcdir)/'`elements/rtponvifparse.c
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) elements/$(DEPDIR)/elements_rtponvifparse-rtponvifparse.Tpo elements/$(DEPDIR)/elements_rtponvifparse-rtponvifparse.Po
@@ -3468,6 +3538,20 @@
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(orc_compositor_CFLAGS) $(CFLAGS) -c -o orc/orc_compositor-compositor.obj `if test -f 'orc/compositor.c'; then $(CYGPATH_W) 'orc/compositor.c'; else $(CYGPATH_W) '$(srcdir)/orc/compositor.c'; fi`
+pipelines/pipelines_simple_launch_lines-simple-launch-lines.o: pipelines/simple-launch-lines.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pipelines_simple_launch_lines_CFLAGS) $(CFLAGS) -MT pipelines/pipelines_simple_launch_lines-simple-launch-lines.o -MD -MP -MF pipelines/$(DEPDIR)/pipelines_simple_launch_lines-simple-launch-lines.Tpo -c -o pipelines/pipelines_simple_launch_lines-simple-launch-lines.o `test -f 'pipelines/simple-launch-lines.c' || echo '$(srcdir)/'`pipelines/simple-launch-lines.c
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) pipelines/$(DEPDIR)/pipelines_simple_launch_lines-simple-launch-lines.Tpo pipelines/$(DEPDIR)/pipelines_simple_launch_lines-simple-launch-lines.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='pipelines/simple-launch-lines.c' object='pipelines/pipelines_simple_launch_lines-simple-launch-lines.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pipelines_simple_launch_lines_CFLAGS) $(CFLAGS) -c -o pipelines/pipelines_simple_launch_lines-simple-launch-lines.o `test -f 'pipelines/simple-launch-lines.c' || echo '$(srcdir)/'`pipelines/simple-launch-lines.c
+
+pipelines/pipelines_simple_launch_lines-simple-launch-lines.obj: pipelines/simple-launch-lines.c
+@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pipelines_simple_launch_lines_CFLAGS) $(CFLAGS) -MT pipelines/pipelines_simple_launch_lines-simple-launch-lines.obj -MD -MP -MF pipelines/$(DEPDIR)/pipelines_simple_launch_lines-simple-launch-lines.Tpo -c -o pipelines/pipelines_simple_launch_lines-simple-launch-lines.obj `if test -f 'pipelines/simple-launch-lines.c'; then $(CYGPATH_W) 'pipelines/simple-launch-lines.c'; else $(CYGPATH_W) '$(srcdir)/pipelines/simple-launch-lines.c'; fi`
+@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) pipelines/$(DEPDIR)/pipelines_simple_launch_lines-simple-launch-lines.Tpo pipelines/$(DEPDIR)/pipelines_simple_launch_lines-simple-launch-lines.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='pipelines/simple-launch-lines.c' object='pipelines/pipelines_simple_launch_lines-simple-launch-lines.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pipelines_simple_launch_lines_CFLAGS) $(CFLAGS) -c -o pipelines/pipelines_simple_launch_lines-simple-launch-lines.obj `if test -f 'pipelines/simple-launch-lines.c'; then $(CYGPATH_W) 'pipelines/simple-launch-lines.c'; else $(CYGPATH_W) '$(srcdir)/pipelines/simple-launch-lines.c'; fi`
+
pipelines/pipelines_streamheader-streamheader.o: pipelines/streamheader.c
@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(pipelines_streamheader_CFLAGS) $(CFLAGS) -MT pipelines/pipelines_streamheader-streamheader.o -MD -MP -MF pipelines/$(DEPDIR)/pipelines_streamheader-streamheader.Tpo -c -o pipelines/pipelines_streamheader-streamheader.o `test -f 'pipelines/streamheader.c' || echo '$(srcdir)/'`pipelines/streamheader.c
@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) pipelines/$(DEPDIR)/pipelines_streamheader-streamheader.Tpo pipelines/$(DEPDIR)/pipelines_streamheader-streamheader.Po
@@ -3994,6 +4078,13 @@
--log-file $$b.log --trs-file $$b.trs \
$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
"$$tst" $(AM_TESTS_FD_REDIRECT)
+elements/pnm.log: elements/pnm$(EXEEXT)
+ @p='elements/pnm$(EXEEXT)'; \
+ b='elements/pnm'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
elements/rtponvifparse.log: elements/rtponvifparse$(EXEEXT)
@p='elements/rtponvifparse$(EXEEXT)'; \
b='elements/rtponvifparse'; \
@@ -4183,6 +4274,13 @@
--log-file $$b.log --trs-file $$b.trs \
$(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
"$$tst" $(AM_TESTS_FD_REDIRECT)
+pipelines/simple-launch-lines.log: pipelines/simple-launch-lines$(EXEEXT)
+ @p='pipelines/simple-launch-lines$(EXEEXT)'; \
+ b='pipelines/simple-launch-lines'; \
+ $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+ --log-file $$b.log --trs-file $$b.trs \
+ $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+ "$$tst" $(AM_TESTS_FD_REDIRECT)
elements/hlsdemux_m3u8.log: elements/hlsdemux_m3u8$(EXEEXT)
@p='elements/hlsdemux_m3u8$(EXEEXT)'; \
b='elements/hlsdemux_m3u8'; \
@@ -4632,6 +4730,7 @@
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/tests/check/elements/adaptive_demux_common.c b/tests/check/elements/adaptive_demux_common.c
index 44fd050..a8fcb1e 100644
--- a/tests/check/elements/adaptive_demux_common.c
+++ b/tests/check/elements/adaptive_demux_common.c
@@ -25,11 +25,6 @@
#define GST_TEST_HTTP_SRC_NAME "testhttpsrc"
-struct _GstAdaptiveDemuxTestCaseClass
-{
- GObjectClass parent_class;
-};
-
#define gst_adaptive_demux_test_case_parent_class parent_class
static void gst_adaptive_demux_test_case_dispose (GObject * object);
@@ -168,6 +163,25 @@
testOutputStreamData =
gst_adaptive_demux_test_find_test_data_by_stream (testData, stream, NULL);
fail_unless (testOutputStreamData != NULL);
+
+ GST_DEBUG
+ ("total_received_size=%" G_GUINT64_FORMAT
+ " segment_received_size = %" G_GUINT64_FORMAT
+ " buffer_size=%" G_GUINT64_FORMAT
+ " expected_size=%" G_GUINT64_FORMAT
+ " segment_start = %" G_GUINT64_FORMAT,
+ stream->total_received_size,
+ stream->segment_received_size,
+ (guint64) gst_buffer_get_size (buffer),
+ testOutputStreamData->expected_size, stream->segment_start);
+
+ /* Only verify after seeking */
+ if (testData->seek_event && testData->seeked)
+ fail_unless (stream->total_received_size +
+ stream->segment_received_size +
+ gst_buffer_get_size (buffer) <= testOutputStreamData->expected_size,
+ "Received unexpected data, please check what segments are being downloaded");
+
streamOffset = stream->segment_start + stream->segment_received_size;
if (testOutputStreamData->expected_data) {
gsize size = gst_buffer_get_size (buffer);
@@ -183,11 +197,6 @@
gst_buffer_map (buffer, &info, GST_MAP_READ);
- GST_DEBUG
- ("segment_start = %" G_GUINT64_FORMAT " segment_received_size = %"
- G_GUINT64_FORMAT " bufferSize=%d",
- stream->segment_start, stream->segment_received_size, (gint) info.size);
-
pattern = streamOffset - streamOffset % sizeof (pattern);
for (guint64 i = 0; i != info.size; ++i) {
guint received = info.data[i];
@@ -223,8 +232,19 @@
return TRUE;
}
-/* function to check total size of data received by AppSink
- * will be called when AppSink receives eos.
+/* AppSink EOS callback.
+ * To be used by tests that don't expect AppSink to receive EOS.
+ */
+void
+gst_adaptive_demux_test_unexpected_eos (GstAdaptiveDemuxTestEngine *
+ engine, GstAdaptiveDemuxTestOutputStream * stream, gpointer user_data)
+{
+ fail_if (TRUE);
+}
+
+/* AppSink EOS callback.
+ * To be used by tests that expect AppSink to receive EOS.
+ * Will check total size of data received by AppSink.
*/
void
gst_adaptive_demux_test_check_size_of_received_data (GstAdaptiveDemuxTestEngine
@@ -339,6 +359,7 @@
g_cond_wait (&testData->test_task_state_cond,
&testData->test_task_state_lock);
}
+ testData->seeked = TRUE;
g_mutex_unlock (&testData->test_task_state_lock);
/* we can continue now, but this buffer will be rejected by AppSink
* because it is in flushing mode
diff --git a/tests/check/elements/adaptive_demux_common.h b/tests/check/elements/adaptive_demux_common.h
index fa8bde0..448671b 100644
--- a/tests/check/elements/adaptive_demux_common.h
+++ b/tests/check/elements/adaptive_demux_common.h
@@ -77,7 +77,11 @@
gboolean segment_verification_needed;
} GstAdaptiveDemuxTestExpectedOutput;
-typedef struct _GstAdaptiveDemuxTestCaseClass GstAdaptiveDemuxTestCaseClass;
+typedef struct _GstAdaptiveDemuxTestCaseClass
+{
+ GObjectClass parent_class;
+} GstAdaptiveDemuxTestCaseClass;
+
typedef struct _GstAdaptiveDemuxTestCase
{
GObject parent;
@@ -109,6 +113,7 @@
*/
guint64 threshold_for_seek;
GstEvent *seek_event;
+ gboolean seeked;
gpointer signal_context;
} GstAdaptiveDemuxTestCase;
@@ -148,6 +153,19 @@
/* Utility functions for use within a unit test */
/**
+ * gst_adaptive_demux_test_unexpected_eos:
+ * @engine: The #GstAdaptiveDemuxTestEngine that caused this callback
+ * @stream: The #GstAdaptiveDemuxTestOutputStream that caused this callback
+ * @user_data: A pointer to a #GstAdaptiveDemuxTestCase object
+ *
+ * This function can be used as an EOS callback by tests that don't expect
+ * AppSink to receive EOS.
+ */
+void
+gst_adaptive_demux_test_unexpected_eos (GstAdaptiveDemuxTestEngine *
+ engine, GstAdaptiveDemuxTestOutputStream * stream, gpointer user_data);
+
+/**
* gst_adaptive_demux_test_check_size_of_received_data:
* @engine: The #GstAdaptiveDemuxTestEngine that caused this callback
* @stream: The #GstAdaptiveDemuxTestOutputStream that caused this callback
diff --git a/tests/check/elements/adaptive_demux_engine.c b/tests/check/elements/adaptive_demux_engine.c
index b571fe3..4662a00 100644
--- a/tests/check/elements/adaptive_demux_engine.c
+++ b/tests/check/elements/adaptive_demux_engine.c
@@ -19,6 +19,7 @@
*/
#include <gst/check/gstcheck.h>
+#include <gst/check/gsttestclock.h>
#include "adaptive_demux_engine.h"
typedef struct _GstAdaptiveDemuxTestEnginePrivate
@@ -26,6 +27,7 @@
GstAdaptiveDemuxTestEngine engine;
const GstAdaptiveDemuxTestCallbacks *callbacks;
gpointer user_data;
+ guint clock_update_id;
} GstAdaptiveDemuxTestEnginePrivate;
@@ -193,6 +195,29 @@
return GST_PAD_PROBE_OK;
}
+/* callback called when dash sends event to AppSink */
+static GstPadProbeReturn
+on_demux_sent_event (GstPad * pad, GstPadProbeInfo * info, gpointer data)
+{
+ GstAdaptiveDemuxTestEnginePrivate *priv =
+ (GstAdaptiveDemuxTestEnginePrivate *) data;
+ GstAdaptiveDemuxTestOutputStream *stream = NULL;
+ GstEvent *event;
+
+ event = GST_PAD_PROBE_INFO_EVENT (info);
+
+ GST_TEST_LOCK (&priv->engine);
+
+ if (priv->callbacks->demux_sent_event) {
+ stream = getTestOutputDataByPad (priv, pad, TRUE);
+ (*priv->callbacks->demux_sent_event) (&priv->engine,
+ stream, event, priv->user_data);
+ }
+
+ GST_TEST_UNLOCK (&priv->engine);
+ return GST_PAD_PROBE_OK;
+}
+
/* callback called when demux receives events from GstFakeSoupHTTPSrc */
static GstPadProbeReturn
on_demuxReceivesEvent (GstPad * pad, GstPadProbeInfo * info, gpointer data)
@@ -308,6 +333,9 @@
gst_pad_add_probe (pad, GST_PAD_PROBE_TYPE_BUFFER,
(GstPadProbeCallback) on_demux_sent_data, priv, NULL);
+ gst_pad_add_probe (pad, GST_PAD_PROBE_TYPE_EVENT_DOWNSTREAM |
+ GST_PAD_PROBE_TYPE_EVENT_FLUSH,
+ (GstPadProbeCallback) on_demux_sent_event, priv, NULL);
gobject_class = G_OBJECT_GET_CLASS (sink);
if (g_object_class_find_property (gobject_class, "sync")) {
GST_DEBUG ("Setting sync=FALSE on AppSink");
@@ -399,6 +427,38 @@
}
static gboolean
+gst_adaptive_demux_update_test_clock (gpointer user_data)
+{
+ GstAdaptiveDemuxTestEnginePrivate *priv =
+ (GstAdaptiveDemuxTestEnginePrivate *) user_data;
+ GstClockID id;
+ GstClockTime next_entry;
+ GstTestClock *clock = GST_TEST_CLOCK (priv->engine.clock);
+
+ fail_unless (clock != NULL);
+ next_entry = gst_test_clock_get_next_entry_time (clock);
+ if (next_entry != GST_CLOCK_TIME_NONE) {
+ /* tests that do not want the manifest to update will set the update period
+ * to a big value, eg 500s. The manifest update task will register an alarm
+ * for that value.
+ * We do not want the clock to jump to that. If it does, the manifest update
+ * task will keep scheduling and use all the cpu power, starving the other
+ * threads.
+ * Usually the test require the clock to update with approx 3s, so we will
+ * allow only updates smaller than 100s
+ */
+ GstClockTime curr_time = gst_clock_get_time (GST_CLOCK (clock));
+ if (next_entry - curr_time < 100 * GST_SECOND) {
+ gst_test_clock_set_time (clock, next_entry);
+ id = gst_test_clock_process_next_clock_id (clock);
+ fail_unless (id != NULL);
+ gst_clock_id_unref (id);
+ }
+ }
+ return TRUE;
+}
+
+static gboolean
start_pipeline_playing (gpointer user_data)
{
GstAdaptiveDemuxTestEnginePrivate *priv =
@@ -473,6 +533,20 @@
ret = gst_element_link (manifest_source, demux);
fail_unless_equals_int (ret, TRUE);
+ priv->engine.clock = gst_system_clock_obtain ();
+ if (GST_IS_TEST_CLOCK (priv->engine.clock)) {
+ /*
+ * live tests will want to manipulate the clock, so they will register a
+ * gst_test_clock as the system clock.
+ * The on demand tests do not care about the clock, so they will let the
+ * system clock to the default one.
+ * If a gst_test_clock was installed as system clock, we register a
+ * periodic callback to update its value.
+ */
+ priv->clock_update_id =
+ g_timeout_add (100, gst_adaptive_demux_update_test_clock, priv);
+ }
+
/* call a test callback before we start the pipeline */
if (callbacks->pre_test)
(*callbacks->pre_test) (&priv->engine, priv->user_data);
@@ -514,6 +588,9 @@
priv);
GST_DEBUG ("main thread pipeline stopped");
+ if (priv->clock_update_id != 0)
+ g_source_remove (priv->clock_update_id);
+ gst_object_unref (priv->engine.clock);
gst_object_unref (priv->engine.pipeline);
priv->engine.pipeline = NULL;
g_main_loop_unref (priv->engine.loop);
diff --git a/tests/check/elements/adaptive_demux_engine.h b/tests/check/elements/adaptive_demux_engine.h
index f715ecb..372431e 100644
--- a/tests/check/elements/adaptive_demux_engine.h
+++ b/tests/check/elements/adaptive_demux_engine.h
@@ -136,6 +136,17 @@
GstBuffer * buffer, gpointer user_data);
/**
+ * demux_sent_event: called each time the demux sends event to AppSink
+ * @engine: #GstAdaptiveDemuxTestEngine
+ * @stream: #GstAdaptiveDemuxTestOutputStream
+ * @event: the #GstEvent that was sent by demux
+ * @user_data: the user_data passed to gst_adaptive_demux_test_run()
+ */
+ gboolean (*demux_sent_event) (GstAdaptiveDemuxTestEngine *engine,
+ GstAdaptiveDemuxTestOutputStream * stream,
+ GstEvent * event, gpointer user_data);
+
+ /**
* bus_error_message: called if an error is posted to the bus
* @engine: #GstAdaptiveDemuxTestEngine
* @msg: the #GstMessage that contains the error
@@ -154,6 +165,7 @@
struct _GstAdaptiveDemuxTestEngine
{
GstElement *pipeline;
+ GstClock *clock;
GstElement *demux;
GstElement *manifest_source;
GMainLoop *loop;
diff --git a/tests/check/elements/audiointerleave.c b/tests/check/elements/audiointerleave.c
index 222cd4d..cb992f3 100644
--- a/tests/check/elements/audiointerleave.c
+++ b/tests/check/elements/audiointerleave.c
@@ -269,6 +269,7 @@
g_cond_wait (&data_cond, &data_mutex);
g_mutex_unlock (&data_mutex);
+ gst_bus_set_flushing (bus, TRUE);
gst_element_set_state (interleave, GST_STATE_NULL);
gst_element_set_state (queue, GST_STATE_NULL);
@@ -410,6 +411,7 @@
g_cond_wait (&data_cond, &data_mutex);
g_mutex_unlock (&data_mutex);
+ gst_bus_set_flushing (bus, TRUE);
gst_element_set_state (interleave, GST_STATE_NULL);
gst_element_set_state (queue, GST_STATE_NULL);
diff --git a/tests/check/elements/audiomixer.c b/tests/check/elements/audiomixer.c
index 55ea92e..00be1c6 100644
--- a/tests/check/elements/audiomixer.c
+++ b/tests/check/elements/audiomixer.c
@@ -431,7 +431,7 @@
/* cleanup */
g_main_loop_unref (main_loop);
gst_consistency_checker_free (consist);
- gst_event_ref (play_seek_event);
+ gst_event_unref (play_seek_event);
gst_bus_remove_signal_watch (bus);
gst_object_unref (bus);
gst_object_unref (bin);
@@ -536,7 +536,7 @@
/* cleanup */
g_main_loop_unref (main_loop);
- gst_event_ref (play_seek_event);
+ gst_event_unref (play_seek_event);
gst_consistency_checker_free (consist);
gst_bus_remove_signal_watch (bus);
gst_object_unref (bus);
diff --git a/tests/check/elements/autoconvert.c b/tests/check/elements/autoconvert.c
index 532f6b8..c1c040f 100644
--- a/tests/check/elements/autoconvert.c
+++ b/tests/check/elements/autoconvert.c
@@ -78,7 +78,7 @@
g_object_set (G_OBJECT (autoconvert), "factories", factories, NULL);
- g_list_free (factories);
+ g_list_free_full (factories, gst_object_unref);
}
GST_START_TEST (test_autoconvert_simple)
@@ -140,6 +140,7 @@
gst_bus_set_flushing (bus, TRUE);
gst_object_unref (bus);
+ gst_check_drop_buffers ();
gst_pad_set_active (test_src_pad, FALSE);
gst_pad_set_active (test_sink_pad, FALSE);
gst_check_teardown_src_pad (autoconvert);
@@ -202,13 +203,9 @@
test_element1_class_init (TestElement1Class * klass)
{
GstElementClass *element_class = GST_ELEMENT_CLASS (klass);
- GstPadTemplate *src_template, *sink_template;
- src_template = gst_static_pad_template_get (&src_factory);
- gst_element_class_add_pad_template (element_class, src_template);
-
- sink_template = gst_static_pad_template_get (&sink_factory);
- gst_element_class_add_pad_template (element_class, sink_template);
+ gst_element_class_add_static_pad_template (element_class, &src_factory);
+ gst_element_class_add_static_pad_template (element_class, &sink_factory);
}
static void
@@ -221,13 +218,10 @@
test_element2_class_init (TestElement2Class * klass)
{
GstElementClass *element_class = GST_ELEMENT_CLASS (klass);
- GstPadTemplate *src_template, *sink_template;
- src_template = gst_static_pad_template_get (&src_factory);
- gst_element_class_add_pad_template (element_class, src_template);
+ gst_element_class_add_static_pad_template (element_class, &src_factory);
- sink_template = gst_static_pad_template_get (&sink_factory);
- gst_element_class_add_pad_template (element_class, sink_template);
+ gst_element_class_add_static_pad_template (element_class, &sink_factory);
}
static void
diff --git a/tests/check/elements/camerabin.c b/tests/check/elements/camerabin.c
index 3458cac..f6d7c7c 100644
--- a/tests/check/elements/camerabin.c
+++ b/tests/check/elements/camerabin.c
@@ -162,12 +162,11 @@
"Some test camera src",
"Thiago Santos <thiago.sousa.santos@collabora.com>");
- gst_element_class_add_pad_template (gstelement_class,
- gst_static_pad_template_get (&vidsrc_template));
- gst_element_class_add_pad_template (gstelement_class,
- gst_static_pad_template_get (&imgsrc_template));
- gst_element_class_add_pad_template (gstelement_class,
- gst_static_pad_template_get (&vfsrc_template));
+ gst_element_class_add_static_pad_template (gstelement_class,
+ &vidsrc_template);
+ gst_element_class_add_static_pad_template (gstelement_class,
+ &imgsrc_template);
+ gst_element_class_add_static_pad_template (gstelement_class, &vfsrc_template);
}
static void
@@ -372,8 +371,7 @@
"Video/Src",
"Test camera video src", "Thiago Santos <thiagoss@osg.samsung.com>");
- gst_element_class_add_pad_template (gstelement_class,
- gst_static_pad_template_get (&src_template));
+ gst_element_class_add_static_pad_template (gstelement_class, &src_template);
gobject_class->get_property = gst_test_video_src_get_property;
gobject_class->set_property = gst_test_video_src_set_property;
@@ -1874,6 +1872,7 @@
g_free (filenames[i]);
}
g_signal_handler_disconnect (src, notify_id);
+ gst_object_unref (src);
}
GST_END_TEST;
diff --git a/tests/check/elements/compositor.c b/tests/check/elements/compositor.c
index 8b5fd5b..e9f0165 100644
--- a/tests/check/elements/compositor.c
+++ b/tests/check/elements/compositor.c
@@ -355,6 +355,15 @@
gst_caps_unref (caps);
gst_caps_unref (restriction_caps);
+ /* check that compositor proxies downstream interlaced-mode */
+ restriction_caps =
+ gst_caps_from_string ("video/x-raw, interlace-mode=(string)interleaved");
+ g_object_set (capsfilter, "caps", restriction_caps, NULL);
+ caps = gst_pad_query_caps (sinkpad, NULL);
+ fail_unless (gst_caps_is_subset (caps, restriction_caps));
+ gst_caps_unref (caps);
+ gst_caps_unref (restriction_caps);
+
gst_element_set_state (pipeline, GST_STATE_NULL);
gst_element_release_request_pad (compositor, sinkpad);
gst_object_unref (sinkpad);
@@ -365,6 +374,82 @@
GST_END_TEST;
+
+GST_START_TEST (test_caps_query_interlaced)
+{
+ GstElement *compositor, *sink;
+ GstElement *pipeline;
+ gboolean res;
+ GstStateChangeReturn state_res;
+ GstPad *sinkpad;
+ GstCaps *caps;
+ GstCaps *caps_mixed, *caps_progressive, *caps_interleaved;
+ GstEvent *caps_event;
+
+ caps_interleaved =
+ gst_caps_from_string ("video/x-raw, interlace-mode=interleaved");
+ caps_mixed = gst_caps_from_string ("video/x-raw, interlace-mode=mixed");
+ caps_progressive =
+ gst_caps_from_string ("video/x-raw, interlace-mode=progressive");
+
+ /* initial setup */
+ compositor = gst_element_factory_make ("compositor", "compositor");
+ sink = gst_element_factory_make ("fakesink", "sink");
+ pipeline = gst_pipeline_new ("test-pipeline");
+
+ gst_bin_add_many (GST_BIN (pipeline), compositor, sink, NULL);
+ res = gst_element_link (compositor, sink);
+ fail_unless (res == TRUE, NULL);
+ sinkpad = gst_element_get_request_pad (compositor, "sink_%u");
+
+ state_res = gst_element_set_state (pipeline, GST_STATE_PLAYING);
+ fail_if (state_res == GST_STATE_CHANGE_FAILURE);
+
+ /* try an unrestricted caps query, should be compatible with all formats */
+ caps = gst_pad_query_caps (sinkpad, NULL);
+ fail_unless (gst_caps_can_intersect (caps, caps_interleaved));
+ fail_unless (gst_caps_can_intersect (caps, caps_progressive));
+ fail_unless (gst_caps_can_intersect (caps, caps_mixed));
+ gst_caps_unref (caps);
+
+ /* now set caps on the pad, it should restrict the interlaced-mode for
+ * future caps */
+ caps = gst_caps_from_string ("video/x-raw, width=100, height=100, "
+ "format=RGB, framerate=1/1, interlace-mode=progressive");
+ caps_event = gst_event_new_caps (caps);
+ gst_caps_unref (caps);
+ fail_unless (gst_pad_send_event (sinkpad, caps_event));
+
+ /* now recheck the interlace-mode */
+ gst_object_unref (sinkpad);
+ sinkpad = gst_element_get_request_pad (compositor, "sink_%u");
+ caps = gst_pad_query_caps (sinkpad, NULL);
+ fail_if (gst_caps_can_intersect (caps, caps_interleaved));
+ fail_unless (gst_caps_can_intersect (caps, caps_progressive));
+ fail_if (gst_caps_can_intersect (caps, caps_mixed));
+ gst_object_unref (sinkpad);
+ gst_caps_unref (caps);
+
+ gst_element_set_state (pipeline, GST_STATE_NULL);
+ gst_object_unref (pipeline);
+ gst_caps_unref (caps_interleaved);
+ gst_caps_unref (caps_mixed);
+ gst_caps_unref (caps_progressive);
+}
+
+GST_END_TEST;
+
+static void
+add_interlaced_mode_to_caps (GstCaps * caps, const gchar * mode)
+{
+ GstStructure *s;
+
+ for (gint i = 0; i < gst_caps_get_size (caps); i++) {
+ s = gst_caps_get_structure (caps, i);
+ gst_structure_set (s, "interlace-mode", G_TYPE_STRING, mode, NULL);
+ }
+}
+
#define MODE_ALL 1
#define MODE_NON_ALPHA 2
@@ -384,6 +469,11 @@
all_caps = _compositor_get_all_supported_caps ();
non_alpha_caps = _compositor_get_non_alpha_supported_caps ();
+ /* add progressive mode as it is what is used in the test, otherwise
+ * is_equal checks would fail */
+ add_interlaced_mode_to_caps (all_caps, "progressive");
+ add_interlaced_mode_to_caps (non_alpha_caps, "progressive");
+
compositor = gst_element_factory_make ("compositor", "compositor");
capsfilter = gst_element_factory_make ("capsfilter", "out-cf");
sink = gst_element_factory_make ("fakesink", "sink");
@@ -450,7 +540,6 @@
rgb_caps = gst_caps_from_string ("video/x-raw, format=(string)RGB, "
"width=(int)100, height=(int)100, framerate=(fraction)1/1");
-
non_alpha_caps = gst_caps_from_string ("video/x-raw, format=(string)RGB");
/* check that a 2nd pad that is added late to compositor will be able to
@@ -465,6 +554,80 @@
GST_END_TEST;
+static void
+run_late_caps_set_test (GstCaps * first_caps, GstCaps * expected_query_caps,
+ GstCaps * second_caps, gboolean accept_caps)
+{
+ GstElement *capsfilter_1;
+ GstElement *compositor;
+ GstElement *pipeline;
+ GstStateChangeReturn state_res;
+ GstPad *sinkpad_2;
+ GstCaps *caps;
+ GstEvent *caps_event;
+ GstBus *bus;
+ GstMessage *msg;
+
+ pipeline =
+ gst_parse_launch ("videotestsrc num-buffers=10 ! capsfilter name=cf1 !"
+ " compositor name=c ! fakesink sync=true", NULL);
+ fail_unless (pipeline != NULL);
+
+ bus = gst_pipeline_get_bus (GST_PIPELINE (pipeline));
+
+ compositor = gst_bin_get_by_name (GST_BIN (pipeline), "c");
+ capsfilter_1 = gst_bin_get_by_name (GST_BIN (pipeline), "cf1");
+
+ g_object_set (capsfilter_1, "caps", first_caps, NULL);
+
+ state_res = gst_element_set_state (pipeline, GST_STATE_PAUSED);
+ fail_if (state_res == GST_STATE_CHANGE_FAILURE);
+
+ /* wait for pipeline to get to paused */
+ msg =
+ gst_bus_timed_pop_filtered (bus, GST_CLOCK_TIME_NONE,
+ GST_MESSAGE_ASYNC_DONE);
+ fail_unless (msg != NULL);
+ fail_unless (GST_MESSAGE_TYPE (msg) == GST_MESSAGE_ASYNC_DONE);
+ gst_message_unref (msg);
+
+ /* try to set the second caps */
+ sinkpad_2 = gst_element_get_request_pad (compositor, "sink_%u");
+ caps = gst_pad_query_caps (sinkpad_2, NULL);
+ fail_unless (gst_caps_is_subset (expected_query_caps, caps));
+ caps_event = gst_event_new_caps (second_caps);
+ fail_unless (gst_pad_send_event (sinkpad_2, caps_event) == accept_caps);
+ gst_caps_unref (caps);
+ gst_object_unref (sinkpad_2);
+
+ gst_object_unref (bus);
+ gst_object_unref (compositor);
+ gst_object_unref (capsfilter_1);
+ gst_element_set_state (pipeline, GST_STATE_NULL);
+ gst_object_unref (pipeline);
+}
+
+GST_START_TEST (test_late_caps_different_interlaced)
+{
+ GstCaps *non_interlaced_caps;
+ GstCaps *interlaced_caps;
+
+ non_interlaced_caps =
+ gst_caps_from_string ("video/x-raw, interlace-mode=progressive, "
+ "format=RGB, width=100, height=100, framerate=1/1");
+ interlaced_caps =
+ gst_caps_from_string ("video/x-raw, interlace-mode=interleaved, "
+ "format=RGB, width=100, height=100, framerate=1/1");
+
+ run_late_caps_set_test (non_interlaced_caps, non_interlaced_caps,
+ interlaced_caps, FALSE);
+
+ gst_caps_unref (non_interlaced_caps);
+ gst_caps_unref (interlaced_caps);
+}
+
+GST_END_TEST;
+
static guint play_count = 0;
static GstEvent *play_seek_event = NULL;
@@ -591,7 +754,7 @@
/* cleanup */
g_main_loop_unref (main_loop);
gst_consistency_checker_free (consist);
- gst_event_ref (play_seek_event);
+ gst_event_unref (play_seek_event);
gst_bus_remove_signal_watch (bus);
gst_object_unref (bus);
gst_object_unref (bin);
@@ -694,7 +857,7 @@
/* cleanup */
g_main_loop_unref (main_loop);
- gst_event_ref (play_seek_event);
+ gst_event_unref (play_seek_event);
gst_consistency_checker_free (consist);
gst_bus_remove_signal_watch (bus);
gst_object_unref (bus);
@@ -1708,6 +1871,40 @@
GST_END_TEST;
+/*
+ * Test that the pad numbering assigned by aggregator behaves as follows:
+ * 1. If a pad number is requested, it must be assigned if it is available
+ * 2. When numbering automatically, the largest available pad number is used
+ * 3. Pad names must be unique
+ */
+GST_START_TEST (test_pad_numbering)
+{
+ GstElement *mixer;
+ GstPad *sinkpad1, *sinkpad2, *sinkpad3, *sinkpad4;
+
+ GST_INFO ("preparing test");
+
+ mixer = gst_element_factory_make ("compositor", NULL);
+ sinkpad1 = gst_element_get_request_pad (mixer, "sink_%u");
+ sinkpad2 = gst_element_get_request_pad (mixer, "sink_7");
+ sinkpad3 = gst_element_get_request_pad (mixer, "sink_1");
+ sinkpad4 = gst_element_get_request_pad (mixer, "sink_%u");
+
+ ck_assert_str_eq (GST_PAD_NAME (sinkpad1), "sink_0");
+ ck_assert_str_eq (GST_PAD_NAME (sinkpad2), "sink_7");
+ ck_assert_str_eq (GST_PAD_NAME (sinkpad3), "sink_1");
+ ck_assert_str_eq (GST_PAD_NAME (sinkpad4), "sink_8");
+
+ /* cleanup */
+ gst_object_unref (mixer);
+ gst_object_unref (sinkpad1);
+ gst_object_unref (sinkpad2);
+ gst_object_unref (sinkpad3);
+ gst_object_unref (sinkpad4);
+}
+
+GST_END_TEST;
+
typedef struct
{
gint buffers_sent;
@@ -1881,7 +2078,9 @@
tcase_add_test (tc_chain, test_caps);
tcase_add_test (tc_chain, test_event);
tcase_add_test (tc_chain, test_caps_query);
+ tcase_add_test (tc_chain, test_caps_query_interlaced);
tcase_add_test (tc_chain, test_late_caps_query);
+ tcase_add_test (tc_chain, test_late_caps_different_interlaced);
tcase_add_test (tc_chain, test_play_twice);
tcase_add_test (tc_chain, test_play_twice_then_add_and_play_again);
tcase_add_test (tc_chain, test_add_pad);
@@ -1895,6 +2094,7 @@
tcase_add_test (tc_chain, test_obscured_skipped);
tcase_add_test (tc_chain, test_ignore_eos);
tcase_add_test (tc_chain, test_pad_z_order);
+ tcase_add_test (tc_chain, test_pad_numbering);
tcase_add_test (tc_chain, test_start_time_zero_live_drop_0);
tcase_add_test (tc_chain, test_start_time_zero_live_drop_3);
tcase_add_test (tc_chain, test_start_time_zero_live_drop_3_unlinked_1);
diff --git a/tests/check/elements/dash_demux.c b/tests/check/elements/dash_demux.c
index 961e12e..7733044 100644
--- a/tests/check/elements/dash_demux.c
+++ b/tests/check/elements/dash_demux.c
@@ -26,7 +26,7 @@
#define COPY_OUTPUT_TEST_DATA(outputTestData,testData) do { \
guint otdPos, otdLen = sizeof((outputTestData)) / sizeof((outputTestData)[0]); \
for(otdPos=0; otdPos<otdLen; ++otdPos){ \
- (testData)->output_streams = g_list_append ((testData)->output_streams, &(outputTestData)[otdPos]); \
+ GST_ADAPTIVE_DEMUX_TEST_CASE (testData)->output_streams = g_list_append (GST_ADAPTIVE_DEMUX_TEST_CASE (testData)->output_streams, &(outputTestData)[otdPos]); \
} \
} while(0)
@@ -37,18 +37,112 @@
guint64 size;
} GstDashDemuxTestInputData;
+typedef struct _GstTestHTTPSrcTestData
+{
+ const GstDashDemuxTestInputData *input;
+ GstStructure *data;
+} GstTestHTTPSrcTestData;
+
+typedef struct _GstDashDemuxTestCase
+{
+ GstAdaptiveDemuxTestCase parent;
+
+ /* the number of Protection Events sent to each pad */
+ GstStructure *countContentProtectionEvents;
+} GstDashDemuxTestCase;
+
+GType gst_dash_demux_test_case_get_type (void);
+static void gst_dash_demux_test_case_dispose (GObject * object);
+static void gst_dash_demux_test_case_finalize (GObject * object);
+static void gst_dash_demux_test_case_clear (GstDashDemuxTestCase * test_case);
+
+static GstDashDemuxTestCase *
+gst_dash_demux_test_case_new (void)
+ G_GNUC_MALLOC;
+
+#define GST_TYPE_DASH_DEMUX_TEST_CASE \
+ (gst_dash_demux_test_case_get_type())
+#define GST_DASH_DEMUX_TEST_CASE(obj) \
+ (G_TYPE_CHECK_INSTANCE_CAST((obj), GST_TYPE_DASH_DEMUX_TEST_CASE, GstDashDemuxTestCase))
+#define GST_DASH_DEMUX_TEST_CASE_CLASS(klass) \
+ (G_TYPE_CHECK_CLASS_CAST((klass), GST_TYPE_DASH_DEMUX_TEST_CASE, GstDashDemuxTestCaseClass))
+#define GST_DASH_DEMUX_TEST_CASE_GET_CLASS(obj) \
+ (G_TYPE_INSTANCE_GET_CLASS ((obj), GST_TYPE_DASH_DEMUX_TEST_CASE, GstDashDemuxTestCaseClass))
+#define GST_IS_DASH_DEMUX_TEST_CASE(obj) \
+ (G_TYPE_CHECK_INSTANCE_TYPE((obj), GST_TYPE_DASH_DEMUX_TEST_CASE))
+#define GST_IS_DASH_DEMUX_TEST_CASE_CLASS(klass) \
+ (G_TYPE_CHECK_CLASS_TYPE((klass), GST_TYPE_DASH_DEMUX_TEST_CASE))
+
+ static GstDashDemuxTestCase *gst_dash_demux_test_case_new (void)
+{
+ return g_object_newv (GST_TYPE_DASH_DEMUX_TEST_CASE, 0, NULL);
+}
+
+typedef struct _GstDashDemuxTestCaseClass
+{
+ GstAdaptiveDemuxTestCaseClass parent_class;
+} GstDashDemuxTestCaseClass;
+
+#define gst_dash_demux_test_case_parent_class parent_class
+
+G_DEFINE_TYPE (GstDashDemuxTestCase, gst_dash_demux_test_case,
+ GST_TYPE_ADAPTIVE_DEMUX_TEST_CASE);
+
+static void
+gst_dash_demux_test_case_class_init (GstDashDemuxTestCaseClass * klass)
+{
+ GObjectClass *object = G_OBJECT_CLASS (klass);
+
+ object->dispose = gst_dash_demux_test_case_dispose;
+ object->finalize = gst_dash_demux_test_case_finalize;
+}
+
+static void
+gst_dash_demux_test_case_init (GstDashDemuxTestCase * test_case)
+{
+ test_case->countContentProtectionEvents = NULL;
+ gst_dash_demux_test_case_clear (test_case);
+}
+
+static void
+gst_dash_demux_test_case_clear (GstDashDemuxTestCase * test_case)
+{
+ if (test_case->countContentProtectionEvents) {
+ gst_structure_free (test_case->countContentProtectionEvents);
+ test_case->countContentProtectionEvents = NULL;
+ }
+}
+
+static void
+gst_dash_demux_test_case_dispose (GObject * object)
+{
+ GstDashDemuxTestCase *testData = GST_DASH_DEMUX_TEST_CASE (object);
+
+ gst_dash_demux_test_case_clear (testData);
+
+ G_OBJECT_CLASS (parent_class)->dispose (object);
+}
+
+static void
+gst_dash_demux_test_case_finalize (GObject * object)
+{
+ /*GstDashDemuxTestCase *testData = GST_DASH_DEMUX_TEST_CASE (object); */
+
+ G_OBJECT_CLASS (parent_class)->finalize (object);
+}
+
static gboolean
gst_dashdemux_http_src_start (GstTestHTTPSrc * src,
const gchar * uri, GstTestHTTPSrcInput * input_data, gpointer user_data)
{
- const GstDashDemuxTestInputData *input =
- (const GstDashDemuxTestInputData *) user_data;
- for (guint i = 0; input[i].uri; ++i) {
- if (strcmp (input[i].uri, uri) == 0) {
- input_data->context = (gpointer) & input[i];
- input_data->size = input[i].size;
- if (input[i].size == 0)
- input_data->size = strlen ((gchar *) input[i].payload);
+ const GstTestHTTPSrcTestData *test_case =
+ (const GstTestHTTPSrcTestData *) user_data;
+ for (guint i = 0; test_case->input[i].uri; ++i) {
+ if (g_strcmp0 (test_case->input[i].uri, uri) == 0) {
+ input_data->context = (gpointer) & test_case->input[i];
+ input_data->size = test_case->input[i].size;
+ if (test_case->input[i].size == 0)
+ input_data->size = strlen ((gchar *) test_case->input[i].payload);
return TRUE;
}
}
@@ -60,8 +154,6 @@
guint64 offset,
guint length, GstBuffer ** retbuf, gpointer context, gpointer user_data)
{
- /* const GstDashDemuxTestInputData *input =
- (const GstDashDemuxTestInputData *) user_data; */
const GstDashDemuxTestInputData *input =
(const GstDashDemuxTestInputData *) context;
GstBuffer *buf;
@@ -140,34 +232,42 @@
" <Initialization range=\"0-233\" />"
" </SegmentBase>"
" </Representation></AdaptationSet></Period></MPD>";
+
GstDashDemuxTestInputData inputTestData[] = {
{"http://unit.test/test.mpd", (guint8 *) mpd, 0},
{"http://unit.test/audio.webm", NULL, 5000},
{"http://unit.test/video.webm", NULL, 9000},
{NULL, NULL, 0},
};
- GstTestHTTPSrcCallbacks http_src_callbacks = { 0 };
GstAdaptiveDemuxTestExpectedOutput outputTestData[] = {
{"audio_00", 5000, NULL},
{"video_00", 9000, NULL}
};
+ GstTestHTTPSrcCallbacks http_src_callbacks = { 0 };
+ GstTestHTTPSrcTestData http_src_test_data = { 0 };
GstAdaptiveDemuxTestCallbacks test_callbacks = { 0 };
- GstAdaptiveDemuxTestCase *testData;
+ GstDashDemuxTestCase *testData;
- testData = gst_adaptive_demux_test_case_new ();
http_src_callbacks.src_start = gst_dashdemux_http_src_start;
http_src_callbacks.src_create = gst_dashdemux_http_src_create;
- gst_test_http_src_install_callbacks (&http_src_callbacks, inputTestData);
+ http_src_test_data.input = inputTestData;
+ gst_test_http_src_install_callbacks (&http_src_callbacks,
+ &http_src_test_data);
- COPY_OUTPUT_TEST_DATA (outputTestData, testData);
test_callbacks.appsink_received_data =
gst_adaptive_demux_test_check_received_data;
test_callbacks.appsink_eos =
gst_adaptive_demux_test_check_size_of_received_data;
+ testData = gst_dash_demux_test_case_new ();
+ COPY_OUTPUT_TEST_DATA (outputTestData, testData);
+
gst_adaptive_demux_test_run (DEMUX_ELEMENT_NAME, "http://unit.test/test.mpd",
&test_callbacks, testData);
+
g_object_unref (testData);
+ if (http_src_test_data.data)
+ gst_structure_free (http_src_test_data.data);
}
GST_END_TEST;
@@ -262,29 +362,37 @@
{"http://unit.test/video2.webm", NULL, 9002},
{NULL, NULL, 0},
};
- GstTestHTTPSrcCallbacks http_src_callbacks = { 0 };
GstAdaptiveDemuxTestExpectedOutput outputTestData[] = {
{"audio_00", 5001, NULL},
{"video_00", 9001, NULL},
{"audio_01", 5002, NULL},
{"video_01", 9002, NULL},
};
+ GstTestHTTPSrcCallbacks http_src_callbacks = { 0 };
+ GstTestHTTPSrcTestData http_src_test_data = { 0 };
GstAdaptiveDemuxTestCallbacks test_callbacks = { 0 };
- GstAdaptiveDemuxTestCase *testData;
+ GstDashDemuxTestCase *testData;
- testData = gst_adaptive_demux_test_case_new ();
http_src_callbacks.src_start = gst_dashdemux_http_src_start;
http_src_callbacks.src_create = gst_dashdemux_http_src_create;
- COPY_OUTPUT_TEST_DATA (outputTestData, testData);
+ http_src_test_data.input = inputTestData;
+ gst_test_http_src_install_callbacks (&http_src_callbacks,
+ &http_src_test_data);
+
test_callbacks.appsink_received_data =
gst_adaptive_demux_test_check_received_data;
test_callbacks.appsink_eos =
gst_adaptive_demux_test_check_size_of_received_data;
- gst_test_http_src_install_callbacks (&http_src_callbacks, inputTestData);
+ testData = gst_dash_demux_test_case_new ();
+ COPY_OUTPUT_TEST_DATA (outputTestData, testData);
+
gst_adaptive_demux_test_run (DEMUX_ELEMENT_NAME,
"http://unit.test/test.mpd", &test_callbacks, testData);
- gst_object_unref (testData);
+
+ g_object_unref (testData);
+ if (http_src_test_data.data)
+ gst_structure_free (http_src_test_data.data);
}
GST_END_TEST;
@@ -344,7 +452,7 @@
static void
setAndTestDashParams (GstAdaptiveDemuxTestEngine * engine, gpointer user_data)
{
- /* GstAdaptiveDemuxTestCase * testData = (GstAdaptiveDemuxTestCase*)user_data; */
+ /* GstDashDemuxTestCase * testData = (GstDashDemuxTestCase*)user_data; */
GObject *dashdemux = G_OBJECT (engine->demux);
test_int_prop (dashdemux, "connection-speed", 1000);
@@ -401,27 +509,35 @@
{"http://unit.test/audio.webm", NULL, 5000},
{NULL, NULL, 0},
};
- GstTestHTTPSrcCallbacks http_src_callbacks = { 0 };
GstAdaptiveDemuxTestExpectedOutput outputTestData[] = {
{"audio_00", 5000, NULL},
};
+ GstTestHTTPSrcCallbacks http_src_callbacks = { 0 };
+ GstTestHTTPSrcTestData http_src_test_data = { 0 };
GstAdaptiveDemuxTestCallbacks test_callbacks = { 0 };
- GstAdaptiveDemuxTestCase *testData;
+ GstDashDemuxTestCase *testData;
- testData = gst_adaptive_demux_test_case_new ();
http_src_callbacks.src_start = gst_dashdemux_http_src_start;
http_src_callbacks.src_create = gst_dashdemux_http_src_create;
- COPY_OUTPUT_TEST_DATA (outputTestData, testData);
+ http_src_test_data.input = inputTestData;
+ gst_test_http_src_install_callbacks (&http_src_callbacks,
+ &http_src_test_data);
+
test_callbacks.pre_test = setAndTestDashParams;
test_callbacks.appsink_received_data =
gst_adaptive_demux_test_check_received_data;
test_callbacks.appsink_eos =
gst_adaptive_demux_test_check_size_of_received_data;
- gst_test_http_src_install_callbacks (&http_src_callbacks, inputTestData);
+ testData = gst_dash_demux_test_case_new ();
+ COPY_OUTPUT_TEST_DATA (outputTestData, testData);
+
gst_adaptive_demux_test_run (DEMUX_ELEMENT_NAME, "http://unit.test/test.mpd",
&test_callbacks, testData);
- gst_object_unref (testData);
+
+ g_object_unref (testData);
+ if (http_src_test_data.data)
+ gst_structure_free (http_src_test_data.data);
}
GST_END_TEST;
@@ -458,21 +574,26 @@
" <Initialization range=\"0-4451\" />"
" </SegmentBase>"
" </Representation></AdaptationSet></Period></MPD>";
+
GstDashDemuxTestInputData inputTestData[] = {
{"http://unit.test/test.mpd", (guint8 *) mpd, 0},
{"http://unit.test/audio.webm", NULL, 10000},
{NULL, NULL, 0},
};
- GstTestHTTPSrcCallbacks http_src_callbacks = { 0 };
GstAdaptiveDemuxTestExpectedOutput outputTestData[] = {
{"audio_00", 10000, NULL},
};
- GstAdaptiveDemuxTestCase *testData;
-
- testData = gst_adaptive_demux_test_case_new ();
+ GstTestHTTPSrcCallbacks http_src_callbacks = { 0 };
+ GstTestHTTPSrcTestData http_src_test_data = { 0 };
+ GstDashDemuxTestCase *testData;
http_src_callbacks.src_start = gst_dashdemux_http_src_start;
http_src_callbacks.src_create = gst_dashdemux_http_src_create;
+ http_src_test_data.input = inputTestData;
+ gst_test_http_src_install_callbacks (&http_src_callbacks,
+ &http_src_test_data);
+
+ testData = gst_dash_demux_test_case_new ();
COPY_OUTPUT_TEST_DATA (outputTestData, testData);
/* media segment starts at 4687
@@ -480,21 +601,23 @@
* on the first pad listed in GstAdaptiveDemuxTestOutputStreamData and the
* first chunk of at least one byte has already arrived in AppSink
*/
- testData->threshold_for_seek = 4687 + 1;
+ GST_ADAPTIVE_DEMUX_TEST_CASE (testData)->threshold_for_seek = 4687 + 1;
/* seek to 5ms.
* Because there is only one fragment, we expect the whole file to be
* downloaded again
*/
- testData->seek_event =
+ GST_ADAPTIVE_DEMUX_TEST_CASE (testData)->seek_event =
gst_event_new_seek (1.0, GST_FORMAT_TIME,
GST_SEEK_FLAG_FLUSH | GST_SEEK_FLAG_KEY_UNIT, GST_SEEK_TYPE_SET,
5 * GST_MSECOND, GST_SEEK_TYPE_NONE, 0);
- gst_test_http_src_install_callbacks (&http_src_callbacks, inputTestData);
gst_adaptive_demux_test_seek (DEMUX_ELEMENT_NAME,
- "http://unit.test/test.mpd", testData);
- gst_object_unref (testData);
+ "http://unit.test/test.mpd", GST_ADAPTIVE_DEMUX_TEST_CASE (testData));
+
+ g_object_unref (testData);
+ if (http_src_test_data.data)
+ gst_structure_free (http_src_test_data.data);
}
GST_END_TEST;
@@ -538,6 +661,7 @@
" value=\"2\"> "
" </AudioChannelConfiguration> "
" </Representation></AdaptationSet></Period></MPD>";
+
GstDashDemuxTestInputData inputTestData[] = {
{"http://unit.test/test.mpd", (guint8 *) mpd, 0},
{"http://unit.test/init-audio.mp4", NULL, 10000},
@@ -548,16 +672,20 @@
{NULL, NULL, 0},
};
GstTestHTTPSrcCallbacks http_src_callbacks = { 0 };
+ GstTestHTTPSrcTestData http_src_test_data = { 0 };
GstAdaptiveDemuxTestExpectedOutput outputTestData[] = {
/* 1 from the init segment */
{"audio_00", (segments ? 1 + segments : 0) * 10000, NULL},
};
- GstAdaptiveDemuxTestCase *testData;
-
- testData = gst_adaptive_demux_test_case_new ();
+ GstDashDemuxTestCase *testData;
http_src_callbacks.src_start = gst_dashdemux_http_src_start;
http_src_callbacks.src_create = gst_dashdemux_http_src_create;
+ http_src_test_data.input = inputTestData;
+ gst_test_http_src_install_callbacks (&http_src_callbacks,
+ &http_src_test_data);
+
+ testData = gst_dash_demux_test_case_new ();
COPY_OUTPUT_TEST_DATA (outputTestData, testData);
/* media segment starts at 4687
@@ -566,9 +694,10 @@
* first chunk of at least one byte has already arrived in AppSink
*/
if (seek_threshold_bytes)
- testData->threshold_for_seek = seek_threshold_bytes;
+ GST_ADAPTIVE_DEMUX_TEST_CASE (testData)->threshold_for_seek =
+ seek_threshold_bytes;
else
- testData->threshold_for_seek = 4687 + 1;
+ GST_ADAPTIVE_DEMUX_TEST_CASE (testData)->threshold_for_seek = 4687 + 1;
/* FIXME hack to avoid having a 0 seqnum */
gst_util_seqnum_next ();
@@ -577,14 +706,16 @@
* Because there is only one fragment, we expect the whole file to be
* downloaded again
*/
- testData->seek_event =
+ GST_ADAPTIVE_DEMUX_TEST_CASE (testData)->seek_event =
gst_event_new_seek (rate, GST_FORMAT_TIME, flags, start_type,
seek_start, stop_type, seek_stop);
- gst_test_http_src_install_callbacks (&http_src_callbacks, inputTestData);
gst_adaptive_demux_test_seek (DEMUX_ELEMENT_NAME,
- "http://unit.test/test.mpd", testData);
- gst_object_unref (testData);
+ "http://unit.test/test.mpd", GST_ADAPTIVE_DEMUX_TEST_CASE (testData));
+
+ g_object_unref (testData);
+ if (http_src_test_data.data)
+ gst_structure_free (http_src_test_data.data);
}
GST_START_TEST (testSeekKeyUnitPosition)
@@ -696,7 +827,6 @@
GST_DEBUG ("Error from element %s : %s\n",
GST_OBJECT_NAME (msg->src), err->message);
fail_unless_equals_string (GST_OBJECT_NAME (msg->src), DEMUX_ELEMENT_NAME);
- /*GST_DEBUG ("dbg_info=%s\n", dbg_info); */
g_error_free (err);
g_free (dbg_info);
g_main_loop_quit (engine->loop);
@@ -738,27 +868,315 @@
{"http://unit.test/test.mpd", (guint8 *) mpd, 0},
{NULL, NULL, 0},
};
- GstTestHTTPSrcCallbacks http_src_callbacks = { 0 };
GstAdaptiveDemuxTestExpectedOutput outputTestData[] = {
{"audio_00", 0, NULL},
};
+ GstTestHTTPSrcCallbacks http_src_callbacks = { 0 };
+ GstTestHTTPSrcTestData http_src_test_data = { 0 };
GstAdaptiveDemuxTestCallbacks test_callbacks = { 0 };
- GstAdaptiveDemuxTestCase *testData;
+ GstDashDemuxTestCase *testData;
- testData = gst_adaptive_demux_test_case_new ();
http_src_callbacks.src_start = gst_dashdemux_http_src_start;
http_src_callbacks.src_create = gst_dashdemux_http_src_create;
- COPY_OUTPUT_TEST_DATA (outputTestData, testData);
+ http_src_test_data.input = inputTestData;
+ gst_test_http_src_install_callbacks (&http_src_callbacks,
+ &http_src_test_data);
+
test_callbacks.appsink_received_data =
gst_adaptive_demux_test_check_received_data;
test_callbacks.bus_error_message = testDownloadErrorMessageCallback;
+ test_callbacks.appsink_eos = gst_adaptive_demux_test_unexpected_eos;
+
+ testData = gst_dash_demux_test_case_new ();
+ COPY_OUTPUT_TEST_DATA (outputTestData, testData);
+
+ gst_adaptive_demux_test_run (DEMUX_ELEMENT_NAME, "http://unit.test/test.mpd",
+ &test_callbacks, testData);
+
+ g_object_unref (testData);
+ if (http_src_test_data.data)
+ gst_structure_free (http_src_test_data.data);
+}
+
+GST_END_TEST;
+
+static GstFlowReturn
+test_fragment_download_error_src_create (GstTestHTTPSrc * src,
+ guint64 offset,
+ guint length, GstBuffer ** retbuf, gpointer context, gpointer user_data)
+{
+ const GstDashDemuxTestInputData *input =
+ (const GstDashDemuxTestInputData *) context;
+ const GstTestHTTPSrcTestData *http_src_test_data =
+ (const GstTestHTTPSrcTestData *) user_data;
+ guint64 threshold_for_trigger;
+
+ fail_unless (input != NULL);
+ gst_structure_get_uint64 (http_src_test_data->data, "threshold_for_trigger",
+ &threshold_for_trigger);
+
+ if (!g_str_has_suffix (input->uri, ".mpd") && offset >= threshold_for_trigger) {
+ GST_DEBUG ("network_error %s %" G_GUINT64_FORMAT " @ %" G_GUINT64_FORMAT,
+ input->uri, offset, threshold_for_trigger);
+ GST_ELEMENT_ERROR (src, RESOURCE, READ,
+ (("A network error occurred, or the server closed the connection unexpectedly.")), ("A network error occurred, or the server closed the connection unexpectedly."));
+ return GST_FLOW_ERROR;
+ }
+ return gst_dashdemux_http_src_create (src, offset, length, retbuf, context,
+ user_data);
+}
+
+/*
+ * Test header download error
+ * Let the adaptive demux download a few bytes, then instruct the
+ * GstTestHTTPSrc element to generate an error while the fragment header
+ * is still being downloaded.
+ */
+GST_START_TEST (testHeaderDownloadError)
+{
+ const gchar *mpd =
+ "<?xml version=\"1.0\" encoding=\"utf-8\"?>"
+ "<MPD xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\""
+ " xmlns=\"urn:mpeg:DASH:schema:MPD:2011\""
+ " xsi:schemaLocation=\"urn:mpeg:DASH:schema:MPD:2011 DASH-MPD.xsd\""
+ " profiles=\"urn:mpeg:dash:profile:isoff-on-demand:2011\""
+ " type=\"static\""
+ " minBufferTime=\"PT1.500S\""
+ " mediaPresentationDuration=\"PT0.5S\">"
+ " <Period>"
+ " <AdaptationSet mimeType=\"audio/webm\""
+ " subsegmentAlignment=\"true\">"
+ " <Representation id=\"171\""
+ " codecs=\"vorbis\""
+ " audioSamplingRate=\"44100\""
+ " startWithSAP=\"1\""
+ " bandwidth=\"129553\">"
+ " <AudioChannelConfiguration"
+ " schemeIdUri=\"urn:mpeg:dash:23003:3:audio_channel_configuration:2011\""
+ " value=\"2\" />"
+ " <BaseURL>audio.webm</BaseURL>"
+ " <SegmentBase indexRange=\"4452-4686\""
+ " indexRangeExact=\"true\">"
+ " <Initialization range=\"0-4451\" />"
+ " </SegmentBase>"
+ " </Representation></AdaptationSet></Period></MPD>";
+
+ /* generate error while the headers are still being downloaded
+ * threshold_for_trigger must be less than the size of headers
+ * (initialization + index) which is 4687.
+ */
+ guint64 threshold_for_trigger = 2000;
+
+ GstDashDemuxTestInputData inputTestData[] = {
+ {"http://unit.test/test.mpd", (guint8 *) mpd, 0},
+ {"http://unit.test/audio.webm", NULL, 5000},
+ {NULL, NULL, 0},
+ };
+ GstAdaptiveDemuxTestExpectedOutput outputTestData[] = {
+ /* adaptive demux tries for 4 times (MAX_DOWNLOAD_ERROR_COUNT + 1) before giving up */
+ {"audio_00", threshold_for_trigger * 4, NULL},
+ };
+ GstTestHTTPSrcCallbacks http_src_callbacks = { 0 };
+ GstTestHTTPSrcTestData http_src_test_data = { 0 };
+ GstAdaptiveDemuxTestCallbacks test_callbacks = { 0 };
+ GstDashDemuxTestCase *testData;
+
+ http_src_callbacks.src_start = gst_dashdemux_http_src_start;
+ http_src_callbacks.src_create = test_fragment_download_error_src_create;
+ http_src_test_data.data = gst_structure_new_empty (__FUNCTION__);
+ gst_structure_set (http_src_test_data.data, "threshold_for_trigger",
+ G_TYPE_UINT64, threshold_for_trigger, NULL);
+ http_src_test_data.input = inputTestData;
+ gst_test_http_src_install_callbacks (&http_src_callbacks,
+ &http_src_test_data);
+
+ test_callbacks.appsink_received_data =
+ gst_adaptive_demux_test_check_received_data;
+ test_callbacks.appsink_eos = gst_adaptive_demux_test_unexpected_eos;
+ test_callbacks.bus_error_message = testDownloadErrorMessageCallback;
+
+ testData = gst_dash_demux_test_case_new ();
+ COPY_OUTPUT_TEST_DATA (outputTestData, testData);
+
+ /* download in chunks of threshold_for_trigger size.
+ * This means the first chunk will succeed, the second will generate
+ * error because we already exceeded threshold_for_trigger bytes.
+ */
+ gst_test_http_src_set_default_blocksize (threshold_for_trigger);
+
+ gst_adaptive_demux_test_run (DEMUX_ELEMENT_NAME,
+ "http://unit.test/test.mpd", &test_callbacks, testData);
+
+ g_object_unref (testData);
+ if (http_src_test_data.data)
+ gst_structure_free (http_src_test_data.data);
+}
+
+GST_END_TEST;
+
+/*
+ * Test media download error on the last media fragment.
+ * Let the adaptive demux download a few bytes, then instruct the
+ * GstTestHTTPSrc element to generate an error while the last media fragment
+ * is being downloaded.
+ * Adaptive demux will not retry downloading the last media fragment. It will
+ * be considered eos.
+ */
+GST_START_TEST (testMediaDownloadErrorLastFragment)
+{
+ const gchar *mpd =
+ "<?xml version=\"1.0\" encoding=\"utf-8\"?>"
+ "<MPD xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\""
+ " xmlns=\"urn:mpeg:DASH:schema:MPD:2011\""
+ " xsi:schemaLocation=\"urn:mpeg:DASH:schema:MPD:2011 DASH-MPD.xsd\""
+ " profiles=\"urn:mpeg:dash:profile:isoff-on-demand:2011\""
+ " type=\"static\""
+ " minBufferTime=\"PT1.500S\""
+ " mediaPresentationDuration=\"PT0.5S\">"
+ " <Period>"
+ " <AdaptationSet mimeType=\"audio/webm\""
+ " subsegmentAlignment=\"true\">"
+ " <Representation id=\"171\""
+ " codecs=\"vorbis\""
+ " audioSamplingRate=\"44100\""
+ " startWithSAP=\"1\""
+ " bandwidth=\"129553\">"
+ " <AudioChannelConfiguration"
+ " schemeIdUri=\"urn:mpeg:dash:23003:3:audio_channel_configuration:2011\""
+ " value=\"2\" />"
+ " <BaseURL>audio.webm</BaseURL>"
+ " <SegmentBase indexRange=\"4452-4686\""
+ " indexRangeExact=\"true\">"
+ " <Initialization range=\"0-4451\" />"
+ " </SegmentBase>"
+ " </Representation></AdaptationSet></Period></MPD>";
+
+ /* generate error on the first media fragment */
+ guint64 threshold_for_trigger = 4687;
+
+ GstDashDemuxTestInputData inputTestData[] = {
+ {"http://unit.test/test.mpd", (guint8 *) mpd, 0},
+ {"http://unit.test/audio.webm", NULL, 5000},
+ {NULL, NULL, 0},
+ };
+ GstAdaptiveDemuxTestExpectedOutput outputTestData[] = {
+ /* adaptive demux will not retry because this is the last fragment */
+ {"audio_00", threshold_for_trigger, NULL},
+ };
+ GstTestHTTPSrcCallbacks http_src_callbacks = { 0 };
+ GstTestHTTPSrcTestData http_src_test_data = { 0 };
+ GstAdaptiveDemuxTestCallbacks test_callbacks = { 0 };
+ GstDashDemuxTestCase *testData;
+
+ http_src_callbacks.src_start = gst_dashdemux_http_src_start;
+ http_src_callbacks.src_create = test_fragment_download_error_src_create;
+ http_src_test_data.data = gst_structure_new_empty (__FUNCTION__);
+ gst_structure_set (http_src_test_data.data, "threshold_for_trigger",
+ G_TYPE_UINT64, threshold_for_trigger, NULL);
+ http_src_test_data.input = inputTestData;
+ gst_test_http_src_install_callbacks (&http_src_callbacks,
+ &http_src_test_data);
+
+ test_callbacks.appsink_received_data =
+ gst_adaptive_demux_test_check_received_data;
test_callbacks.appsink_eos =
gst_adaptive_demux_test_check_size_of_received_data;
- gst_test_http_src_install_callbacks (&http_src_callbacks, inputTestData);
- gst_adaptive_demux_test_run (DEMUX_ELEMENT_NAME, "http://unit.test/test.mpd",
- &test_callbacks, testData);
- gst_object_unref (testData);
+ testData = gst_dash_demux_test_case_new ();
+ COPY_OUTPUT_TEST_DATA (outputTestData, testData);
+
+ gst_adaptive_demux_test_run (DEMUX_ELEMENT_NAME,
+ "http://unit.test/test.mpd", &test_callbacks, testData);
+
+ g_object_unref (testData);
+ if (http_src_test_data.data)
+ gst_structure_free (http_src_test_data.data);
+}
+
+GST_END_TEST;
+
+/*
+ * Test media download error on a media fragment which is not the last one.
+ * Let the adaptive demux download a few bytes, then instruct the
+ * GstTestHTTPSrc element to generate an error while a media fragment
+ * is being downloaded.
+ */
+GST_START_TEST (testMediaDownloadErrorMiddleFragment)
+{
+ const gchar *mpd =
+ "<?xml version=\"1.0\" encoding=\"utf-8\"?>"
+ "<MPD xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\""
+ " xmlns=\"urn:mpeg:DASH:schema:MPD:2011\""
+ " xsi:schemaLocation=\"urn:mpeg:DASH:schema:MPD:2011 DASH-MPD.xsd\""
+ " profiles=\"urn:mpeg:dash:profile:isoff-on-demand:2011\""
+ " type=\"static\""
+ " minBufferTime=\"PT1.500S\""
+ " mediaPresentationDuration=\"PT10S\">"
+ " <Period>"
+ " <AdaptationSet mimeType=\"audio/webm\""
+ " subsegmentAlignment=\"true\">"
+ " <Representation id=\"171\""
+ " codecs=\"vorbis\""
+ " audioSamplingRate=\"44100\""
+ " startWithSAP=\"1\""
+ " bandwidth=\"129553\">"
+ " <AudioChannelConfiguration"
+ " schemeIdUri=\"urn:mpeg:dash:23003:3:audio_channel_configuration:2011\""
+ " value=\"2\" />"
+ " <BaseURL>audio.webm</BaseURL>"
+ " <SegmentList duration=\"1\">"
+ " <SegmentURL indexRange=\"1-10\""
+ " mediaRange=\"11-30\">"
+ " </SegmentURL>"
+ " <SegmentURL indexRange=\"31-60\""
+ " mediaRange=\"61-100\">"
+ " </SegmentURL>"
+ " <SegmentURL indexRange=\"101-150\""
+ " mediaRange=\"151-210\">"
+ " </SegmentURL>"
+ " </SegmentList>"
+ " </Representation></AdaptationSet></Period></MPD>";
+
+ /* generate error on the second media fragment */
+ guint64 threshold_for_trigger = 31;
+
+ GstDashDemuxTestInputData inputTestData[] = {
+ {"http://unit.test/test.mpd", (guint8 *) mpd, 0},
+ {"http://unit.test/audio.webm", NULL, 5000},
+ {NULL, NULL, 0},
+ };
+ GstAdaptiveDemuxTestExpectedOutput outputTestData[] = {
+ /* adaptive demux will download only the first media fragment */
+ {"audio_00", 20, NULL},
+ };
+ GstTestHTTPSrcCallbacks http_src_callbacks = { 0 };
+ GstTestHTTPSrcTestData http_src_test_data = { 0 };
+ GstAdaptiveDemuxTestCallbacks test_callbacks = { 0 };
+ GstDashDemuxTestCase *testData;
+
+ http_src_callbacks.src_start = gst_dashdemux_http_src_start;
+ http_src_callbacks.src_create = test_fragment_download_error_src_create;
+ http_src_test_data.data = gst_structure_new_empty (__FUNCTION__);
+ gst_structure_set (http_src_test_data.data, "threshold_for_trigger",
+ G_TYPE_UINT64, threshold_for_trigger, NULL);
+ http_src_test_data.input = inputTestData;
+ gst_test_http_src_install_callbacks (&http_src_callbacks,
+ &http_src_test_data);
+
+ test_callbacks.appsink_received_data =
+ gst_adaptive_demux_test_check_received_data;
+ test_callbacks.appsink_eos = gst_adaptive_demux_test_unexpected_eos;
+ test_callbacks.bus_error_message = testDownloadErrorMessageCallback;
+
+ testData = gst_dash_demux_test_case_new ();
+ COPY_OUTPUT_TEST_DATA (outputTestData, testData);
+
+ gst_adaptive_demux_test_run (DEMUX_ELEMENT_NAME,
+ "http://unit.test/test.mpd", &test_callbacks, testData);
+
+ g_object_unref (testData);
+ if (http_src_test_data.data)
+ gst_structure_free (http_src_test_data.data);
}
GST_END_TEST;
@@ -777,6 +1195,9 @@
gboolean seekable;
gint64 segment_start;
gint64 segment_end;
+ gboolean live;
+ GstClockTime min_latency;
+ GstClockTime max_latency;
gchar *uri;
gchar *redirect_uri;
gboolean redirect_permanent;
@@ -788,13 +1209,16 @@
fail_unless (g_list_length (pads) == 1);
pad = GST_PAD (pads->data);
+ /* duration query */
query = gst_query_new_duration (GST_FORMAT_TIME);
ret = gst_pad_peer_query (pad, query);
fail_unless (ret == TRUE);
gst_query_parse_duration (query, NULL, &duration);
+ /* mediaPresentationDuration=\"PT135.743S\" */
fail_unless (duration == 135743 * GST_MSECOND);
gst_query_unref (query);
+ /* seek query */
query = gst_query_new_seeking (GST_FORMAT_TIME);
ret = gst_pad_peer_query (pad, query);
fail_unless (ret == TRUE);
@@ -805,13 +1229,24 @@
fail_unless (segment_end == duration);
gst_query_unref (query);
+ /* latency query */
+ query = gst_query_new_latency ();
+ ret = gst_pad_peer_query (pad, query);
+ fail_unless (ret == TRUE);
+ gst_query_parse_latency (query, &live, &min_latency, &max_latency);
+ fail_unless (live == FALSE);
+ fail_unless (min_latency == 0);
+ fail_unless (max_latency == -1);
+ gst_query_unref (query);
+
+ /* uri query */
query = gst_query_new_uri ();
ret = gst_pad_peer_query (pad, query);
fail_unless (ret == TRUE);
gst_query_parse_uri (query, &uri);
gst_query_parse_uri_redirection (query, &redirect_uri);
gst_query_parse_uri_redirection_permanent (query, &redirect_permanent);
- fail_unless (strcmp (uri, "http://unit.test/test.mpd") == 0);
+ fail_unless (g_strcmp0 (uri, "http://unit.test/test.mpd") == 0);
/* adaptive demux does not reply with redirect information */
fail_unless (redirect_uri == NULL);
fail_unless (redirect_permanent == FALSE);
@@ -855,86 +1290,123 @@
" <Initialization range=\"0-4451\" />"
" </SegmentBase>"
" </Representation></AdaptationSet></Period></MPD>";
+
GstDashDemuxTestInputData inputTestData[] = {
{"http://unit.test/test.mpd", (guint8 *) mpd, 0},
{"http://unit.test/audio.webm", NULL, 5000},
{NULL, NULL, 0},
};
- GstTestHTTPSrcCallbacks http_src_callbacks = { 0 };
GstAdaptiveDemuxTestExpectedOutput outputTestData[] = {
{"audio_00", 5000, NULL},
};
+ GstTestHTTPSrcCallbacks http_src_callbacks = { 0 };
+ GstTestHTTPSrcTestData http_src_test_data = { 0 };
GstAdaptiveDemuxTestCallbacks test_callbacks = { 0 };
- GstAdaptiveDemuxTestCase *testData;
+ GstDashDemuxTestCase *testData;
- testData = gst_adaptive_demux_test_case_new ();
http_src_callbacks.src_start = gst_dashdemux_http_src_start;
http_src_callbacks.src_create = gst_dashdemux_http_src_create;
- COPY_OUTPUT_TEST_DATA (outputTestData, testData);
+ http_src_test_data.input = inputTestData;
+ gst_test_http_src_install_callbacks (&http_src_callbacks,
+ &http_src_test_data);
+
test_callbacks.appsink_received_data = testQueryCheckDataReceived;
test_callbacks.appsink_eos =
gst_adaptive_demux_test_check_size_of_received_data;
- gst_test_http_src_install_callbacks (&http_src_callbacks, inputTestData);
+ testData = gst_dash_demux_test_case_new ();
+ COPY_OUTPUT_TEST_DATA (outputTestData, testData);
+
gst_adaptive_demux_test_run (DEMUX_ELEMENT_NAME,
"http://unit.test/test.mpd", &test_callbacks, testData);
- gst_object_unref (testData);
+
+ g_object_unref (testData);
+ if (http_src_test_data.data)
+ gst_structure_free (http_src_test_data.data);
}
GST_END_TEST;
-static GstFlowReturn
-test_fragment_download_error_src_create (GstTestHTTPSrc * src,
- guint64 offset,
- guint length, GstBuffer ** retbuf, gpointer context, gpointer user_data)
+static gboolean
+testContentProtectionDashdemuxSendsEvent (GstAdaptiveDemuxTestEngine * engine,
+ GstAdaptiveDemuxTestOutputStream * stream,
+ GstEvent * event, gpointer user_data)
{
- const GstDashDemuxTestInputData *input =
- (const GstDashDemuxTestInputData *) context;
- fail_unless (input != NULL);
- if (!g_str_has_suffix (input->uri, ".mpd") && offset > 2000) {
- GST_DEBUG ("network_error %s %" G_GUINT64_FORMAT " @ %d",
- input->uri, offset, 2000);
- GST_ELEMENT_ERROR (src, RESOURCE, READ,
- (("A network error occurred, or the server closed the connection unexpectedly.")), ("A network error occurred, or the server closed the connection unexpectedly."));
- return GST_FLOW_ERROR;
+ GstDashDemuxTestCase *test_case = GST_DASH_DEMUX_TEST_CASE (user_data);
+ const gchar *system_id;
+ GstBuffer *data;
+ const gchar *origin;
+ GstMapInfo info;
+ gchar *value;
+ gchar *name;
+ guint event_count = 0;
+
+ GST_DEBUG ("received event %s", GST_EVENT_TYPE_NAME (event));
+
+ if (GST_EVENT_TYPE (event) != GST_EVENT_PROTECTION) {
+ return TRUE;
}
- return gst_dashdemux_http_src_create (src, offset, length, retbuf, context,
- user_data);
-}
-/* function to check total size of data received by AppSink
- * will be called when AppSink receives eos.
- */
-static void
-testFragmentDownloadErrorCheckSizeOfDataReceived (GstAdaptiveDemuxTestEngine *
- engine, GstAdaptiveDemuxTestOutputStream * stream, gpointer user_data)
-{
- GstAdaptiveDemuxTestCase *testData = GST_ADAPTIVE_DEMUX_TEST_CASE (user_data);
- GstAdaptiveDemuxTestExpectedOutput *testOutputStreamData;
+ /* we expect content protection events only on video pad */
+ name = gst_pad_get_name (stream->pad);
+ fail_unless (g_strcmp0 (name, "video_00") == 0);
+ gst_event_parse_protection (event, &system_id, &data, &origin);
- testOutputStreamData =
- gst_adaptive_demux_test_find_test_data_by_stream (testData, stream, NULL);
- fail_unless (testOutputStreamData != NULL);
+ gst_buffer_map (data, &info, GST_MAP_READ);
- /* expect to receive more than 0 */
- fail_unless (stream->total_received_size > 0,
- "size validation failed for %s, expected > 0, received %d",
- testOutputStreamData->name, stream->total_received_size);
+ value = g_malloc (info.size + 1);
+ strncpy (value, (gchar *) info.data, info.size);
+ value[info.size] = 0;
+ gst_buffer_unmap (data, &info);
- /* expect to receive less than file size */
- fail_unless (stream->total_received_size <
- testOutputStreamData->expected_size,
- "size validation failed for %s, expected < %d received %d",
- testOutputStreamData->name, testOutputStreamData->expected_size,
- stream->total_received_size);
+ if (g_strcmp0 (system_id, "11111111-AAAA-BBBB-CCCC-123456789ABC") == 0) {
+ fail_unless (g_strcmp0 (origin, "dash/mpd") == 0);
+ fail_unless (g_strcmp0 (value, "test value") == 0);
+ } else if (g_strcmp0 (system_id, "5e629af5-38da-4063-8977-97ffbd9902d4") == 0) {
+ const gchar *str;
+
+ fail_unless (g_strcmp0 (origin, "dash/mpd") == 0);
+
+ /* We can't do a simple compare of value (which should be an XML dump
+ of the ContentProtection element), because the whitespace
+ formatting from xmlDump might differ between versions of libxml */
+ str = strstr (value, "<ContentProtection");
+ fail_if (str == NULL);
+ str = strstr (value, "<mas:MarlinContentIds>");
+ fail_if (str == NULL);
+ str = strstr (value, "<mas:MarlinContentId>");
+ fail_if (str == NULL);
+ str = strstr (value, "urn:marlin:kid:02020202020202020202020202020202");
+ fail_if (str == NULL);
+ str = strstr (value, "</ContentProtection>");
+ fail_if (str == NULL);
+ } else {
+ fail ("unexpected content protection event '%s'", system_id);
+ }
+
+ g_free (value);
+
+ fail_if (test_case->countContentProtectionEvents == NULL);
+ gst_structure_get_uint (test_case->countContentProtectionEvents, name,
+ &event_count);
+ event_count++;
+ gst_structure_set (test_case->countContentProtectionEvents, name, G_TYPE_UINT,
+ event_count, NULL);
+
+ g_free (name);
+ return TRUE;
}
/*
- * Test fragment download error
- * Let the adaptive demux download a few bytes, then instruct the
- * GstTestHTTPSrc element to generate an error.
+ * Test content protection
+ * Configure 3 content protection sources:
+ * - a uuid scheme/value pair
+ * - a non uuid scheme/value pair (dash recognises only uuid schemes)
+ * - a complex uuid scheme, with trailing spaces and capital letters in scheme uri
+ * Only the uuid scheme will be recognised. We expect to receive 2 content
+ * protection events
*/
-GST_START_TEST (testFragmentDownloadError)
+GST_START_TEST (testContentProtection)
{
const gchar *mpd =
"<?xml version=\"1.0\" encoding=\"utf-8\"?>"
@@ -944,7 +1416,7 @@
" profiles=\"urn:mpeg:dash:profile:isoff-on-demand:2011\""
" type=\"static\""
" minBufferTime=\"PT1.500S\""
- " mediaPresentationDuration=\"PT0.5S\">"
+ " mediaPresentationDuration=\"PT135.743S\">"
" <Period>"
" <AdaptationSet mimeType=\"audio/webm\""
" subsegmentAlignment=\"true\">"
@@ -961,35 +1433,75 @@
" indexRangeExact=\"true\">"
" <Initialization range=\"0-4451\" />"
" </SegmentBase>"
+ " </Representation>"
+ " </AdaptationSet>"
+ " <AdaptationSet mimeType=\"video/webm\""
+ " subsegmentAlignment=\"true\">"
+ " <ContentProtection schemeIdUri=\"urn:uuid:11111111-AAAA-BBBB-CCCC-123456789ABC\" value=\"test value\"/>"
+ " <ContentProtection schemeIdUri=\"urn:mpeg:dash:mp4protection:2011\" value=\"cenc\"/>"
+ " <ContentProtection schemeIdUri=\" URN:UUID:5e629af5-38da-4063-8977-97ffbd9902d4\" xmlns:mas=\"urn:marlin:mas:1-0:services:schemas:mpd\">"
+ " <mas:MarlinContentIds>"
+ " <mas:MarlinContentId>urn:marlin:kid:02020202020202020202020202020202</mas:MarlinContentId>"
+ " </mas:MarlinContentIds>"
+ " </ContentProtection>"
+ " <Representation id=\"242\""
+ " codecs=\"vp9\""
+ " width=\"426\""
+ " height=\"240\""
+ " startWithSAP=\"1\""
+ " bandwidth=\"490208\">"
+ " <BaseURL>video.webm</BaseURL>"
+ " <SegmentBase indexRange=\"234-682\""
+ " indexRangeExact=\"true\">"
+ " <Initialization range=\"0-233\" />"
+ " </SegmentBase>"
" </Representation></AdaptationSet></Period></MPD>";
GstDashDemuxTestInputData inputTestData[] = {
{"http://unit.test/test.mpd", (guint8 *) mpd, 0},
{"http://unit.test/audio.webm", NULL, 5000},
+ {"http://unit.test/video.webm", NULL, 9000},
{NULL, NULL, 0},
};
- GstTestHTTPSrcCallbacks http_src_callbacks = { 0 };
GstAdaptiveDemuxTestExpectedOutput outputTestData[] = {
{"audio_00", 5000, NULL},
+ {"video_00", 9000, NULL},
};
+ GstTestHTTPSrcCallbacks http_src_callbacks = { 0 };
+ GstTestHTTPSrcTestData http_src_test_data = { 0 };
GstAdaptiveDemuxTestCallbacks test_callbacks = { 0 };
- GstAdaptiveDemuxTestCase *testData;
+ GstDashDemuxTestCase *testData;
+ guint event_count = 0;
- testData = gst_adaptive_demux_test_case_new ();
http_src_callbacks.src_start = gst_dashdemux_http_src_start;
- http_src_callbacks.src_create = test_fragment_download_error_src_create;
- COPY_OUTPUT_TEST_DATA (outputTestData, testData);
+ http_src_callbacks.src_create = gst_dashdemux_http_src_create;
+ http_src_test_data.input = inputTestData;
+ gst_test_http_src_install_callbacks (&http_src_callbacks,
+ &http_src_test_data);
+
test_callbacks.appsink_received_data =
gst_adaptive_demux_test_check_received_data;
- test_callbacks.appsink_eos = testFragmentDownloadErrorCheckSizeOfDataReceived;
- /* test_callbacks.demux_sent_eos = gst_adaptive_demux_test_check_size_of_received_data; */
+ test_callbacks.appsink_eos =
+ gst_adaptive_demux_test_check_size_of_received_data;
+ test_callbacks.demux_sent_event = testContentProtectionDashdemuxSendsEvent;
- test_callbacks.bus_error_message = testDownloadErrorMessageCallback;
+ testData = gst_dash_demux_test_case_new ();
+ COPY_OUTPUT_TEST_DATA (outputTestData, testData);
+ testData->countContentProtectionEvents =
+ gst_structure_new_empty ("countContentProtectionEvents");
+ gst_adaptive_demux_test_run (DEMUX_ELEMENT_NAME, "http://unit.test/test.mpd",
+ &test_callbacks, testData);
- gst_test_http_src_install_callbacks (&http_src_callbacks, inputTestData);
- gst_adaptive_demux_test_run (DEMUX_ELEMENT_NAME,
- "http://unit.test/test.mpd", &test_callbacks, testData);
- gst_object_unref (testData);
+ fail_unless (gst_structure_has_field_typed
+ (testData->countContentProtectionEvents, "video_00", G_TYPE_UINT));
+
+ gst_structure_get_uint (testData->countContentProtectionEvents, "video_00",
+ &event_count);
+ fail_unless (event_count == 2);
+
+ g_object_unref (testData);
+ if (http_src_test_data.data)
+ gst_structure_free (http_src_test_data.data);
}
GST_END_TEST;
@@ -1014,8 +1526,11 @@
tcase_add_test (tc_basicTest, testReverseSeekSnapBeforePosition);
tcase_add_test (tc_basicTest, testReverseSeekSnapAfterPosition);
tcase_add_test (tc_basicTest, testDownloadError);
- tcase_add_test (tc_basicTest, testFragmentDownloadError);
+ tcase_add_test (tc_basicTest, testHeaderDownloadError);
+ tcase_add_test (tc_basicTest, testMediaDownloadErrorLastFragment);
+ tcase_add_test (tc_basicTest, testMediaDownloadErrorMiddleFragment);
tcase_add_test (tc_basicTest, testQuery);
+ tcase_add_test (tc_basicTest, testContentProtection);
tcase_add_unchecked_fixture (tc_basicTest, gst_adaptive_demux_test_setup,
gst_adaptive_demux_test_teardown);
diff --git a/tests/check/elements/dash_mpd.c b/tests/check/elements/dash_mpd.c
index 348b65c..6e49f0e 100644
--- a/tests/check/elements/dash_mpd.c
+++ b/tests/check/elements/dash_mpd.c
@@ -4821,6 +4821,103 @@
GST_END_TEST;
/*
+ * Test SegmentList with multiple segmentURL
+ *
+ */
+GST_START_TEST (dash_mpdparser_multipleSegmentURL)
+{
+ GList *adaptationSets;
+ GstAdaptationSetNode *adapt_set;
+ GstActiveStream *activeStream;
+ GstMediaFragmentInfo fragment;
+ GstClockTime expectedDuration;
+ GstClockTime expectedTimestamp;
+ GstFlowReturn flow;
+
+ /*
+ * Period duration is 30 seconds
+ * Period start is 10 seconds. Thus, period duration is 20 seconds.
+ *
+ * Segment duration is 25 seconds. There are 2 segments in the list.
+ * We expect first segment to have a duration of 20 seconds (limited by the period)
+ * and the second segment to not exist.
+ */
+ const gchar *xml =
+ "<?xml version=\"1.0\"?>"
+ "<MPD xmlns=\"urn:mpeg:dash:schema:mpd:2011\""
+ " profiles=\"urn:mpeg:dash:profile:isoff-main:2011\""
+ " availabilityStartTime=\"2015-03-24T0:0:0\""
+ " mediaPresentationDuration=\"P0Y0M0DT0H0M30S\">"
+ "<Period start=\"P0Y0M0DT0H0M10S\">"
+ " <AdaptationSet mimeType=\"video/mp4\">"
+ " <Representation>"
+ " <SegmentList duration=\"25\">"
+ " <SegmentURL"
+ " media=\"TestMedia0\" mediaRange=\"10-20\""
+ " index=\"TestIndex0\" indexRange=\"100-200\""
+ " ></SegmentURL>"
+ " <SegmentURL"
+ " media=\"TestMedia1\" mediaRange=\"20-30\""
+ " index=\"TestIndex1\" indexRange=\"200-300\""
+ " ></SegmentURL>"
+ " </SegmentList>"
+ " </Representation></AdaptationSet></Period></MPD>";
+
+ gboolean ret;
+ GstMpdClient *mpdclient = gst_mpd_client_new ();
+
+ ret = gst_mpd_parse (mpdclient, xml, (gint) strlen (xml));
+ assert_equals_int (ret, TRUE);
+
+ /* process the xml data */
+ ret =
+ gst_mpd_client_setup_media_presentation (mpdclient, GST_CLOCK_TIME_NONE,
+ -1, NULL);
+ assert_equals_int (ret, TRUE);
+
+ /* get the list of adaptation sets of the first period */
+ adaptationSets = gst_mpd_client_get_adaptation_sets (mpdclient);
+ fail_if (adaptationSets == NULL);
+
+ /* setup streaming from the first adaptation set */
+ adapt_set = (GstAdaptationSetNode *) g_list_nth_data (adaptationSets, 0);
+ fail_if (adapt_set == NULL);
+ ret = gst_mpd_client_setup_streaming (mpdclient, adapt_set);
+ assert_equals_int (ret, TRUE);
+
+ activeStream = gst_mpdparser_get_active_stream_by_index (mpdclient, 0);
+ fail_if (activeStream == NULL);
+
+ expectedDuration = duration_to_ms (0, 0, 0, 0, 0, 20, 0);
+ expectedTimestamp = duration_to_ms (0, 0, 0, 0, 0, 0, 0);
+
+ /* the representation contains 2 segments. The first is partially
+ * clipped, and the second entirely (and thus discarded).
+ */
+
+ /* check first segment */
+ ret = gst_mpd_client_get_next_fragment (mpdclient, 0, &fragment);
+ assert_equals_int (ret, TRUE);
+ assert_equals_string (fragment.uri, "/TestMedia0");
+ assert_equals_int64 (fragment.range_start, 10);
+ assert_equals_int64 (fragment.range_end, 20);
+ assert_equals_string (fragment.index_uri, "/TestIndex0");
+ assert_equals_int64 (fragment.index_range_start, 100);
+ assert_equals_int64 (fragment.index_range_end, 200);
+ assert_equals_uint64 (fragment.duration, expectedDuration * GST_MSECOND);
+ assert_equals_uint64 (fragment.timestamp, expectedTimestamp * GST_MSECOND);
+ gst_media_fragment_info_clear (&fragment);
+
+ /* advance to next segment */
+ flow = gst_mpd_client_advance_segment (mpdclient, activeStream, TRUE);
+ assert_equals_int (flow, GST_FLOW_EOS);
+
+ gst_mpd_client_free (mpdclient);
+}
+
+GST_END_TEST;
+
+/*
* Test parsing empty xml string
*
*/
@@ -5482,6 +5579,7 @@
tcase_add_test (tc_complexMPD, dash_mpdparser_get_period_at_time);
tcase_add_test (tc_complexMPD, dash_mpdparser_adaptationSet_handling);
tcase_add_test (tc_complexMPD, dash_mpdparser_representation_selection);
+ tcase_add_test (tc_complexMPD, dash_mpdparser_multipleSegmentURL);
tcase_add_test (tc_complexMPD, dash_mpdparser_activeStream_selection);
tcase_add_test (tc_complexMPD, dash_mpdparser_activeStream_parameters);
tcase_add_test (tc_complexMPD, dash_mpdparser_get_audio_languages);
diff --git a/tests/check/elements/glimagesink.c b/tests/check/elements/glimagesink.c
index 07f6899..b0f9e30 100644
--- a/tests/check/elements/glimagesink.c
+++ b/tests/check/elements/glimagesink.c
@@ -116,8 +116,6 @@
loop = g_main_loop_new (NULL, FALSE);
#endif
- setup_glimagesink ();
-
/* GstBaseSink handles the drain query as well. */
g_object_set (sinkelement, "enable-last-sample", TRUE, NULL);
@@ -188,6 +186,7 @@
* releases the buffers it currently owns, upon drain query. */
query = gst_query_new_drain ();
DO_CALL (do_peer_query_func, query);
+ gst_query_unref (query);
/* Transfer buffers back to the downstream pool to be release
* properly. This also make sure that all buffers are returned.
@@ -210,8 +209,6 @@
fail_unless (gst_buffer_pool_set_active (pool, FALSE));
gst_object_unref (pool);
- cleanup_glimagesink ();
-
if (loop)
g_main_loop_unref (loop);
}
@@ -226,7 +223,7 @@
tcase_set_timeout (tc, 5);
- tcase_add_checked_fixture (tc, setup_glimagesink, NULL);
+ tcase_add_checked_fixture (tc, setup_glimagesink, cleanup_glimagesink);
tcase_add_test (tc, test_query_drain);
suite_add_tcase (s, tc);
diff --git a/tests/check/elements/hls_demux.c b/tests/check/elements/hls_demux.c
index 8d07ea0..fca76b3 100644
--- a/tests/check/elements/hls_demux.c
+++ b/tests/check/elements/hls_demux.c
@@ -687,13 +687,20 @@
{"http://unit.test/002.ts", NULL, segment_size},
{NULL, NULL, 0}
};
+ const guint64 failure_position = 2048;
GstAdaptiveDemuxTestExpectedOutput outputTestData[] = {
- {"src_0", 2 * segment_size, NULL},
+ /* adaptive demux tries for 4 times (MAX_DOWNLOAD_ERROR_COUNT + 1) before giving up */
+ {"src_0", failure_position * 4, NULL},
{NULL, 0, NULL}
};
- const guint64 failure_position = 2048;
TESTCASE_INIT_BOILERPLATE (segment_size);
+ /* download in chunks of failure_position size.
+ * This means the first chunk will succeed, the second will generate
+ * error because we already exceeded failure_position bytes.
+ */
+ gst_test_http_src_set_default_blocksize (failure_position);
+
http_src_callbacks.src_start = gst_hlsdemux_test_src_start;
http_src_callbacks.src_create = gst_hlsdemux_test_network_error_src_create;
gst_structure_set (hlsTestCase.state,
diff --git a/tests/check/elements/mssdemux.c b/tests/check/elements/mssdemux.c
index 78a1863..d5cc96c 100644
--- a/tests/check/elements/mssdemux.c
+++ b/tests/check/elements/mssdemux.c
@@ -206,7 +206,7 @@
gst_test_http_src_install_callbacks (&http_src_callbacks, inputTestData);
gst_adaptive_demux_test_seek (DEMUX_ELEMENT_NAME,
"http://unit.test/Manifest", testData);
- gst_object_unref (testData);
+ g_object_unref (testData);
}
GST_END_TEST;
@@ -273,7 +273,7 @@
gst_test_http_src_install_callbacks (&http_src_callbacks, inputTestData);
gst_adaptive_demux_test_seek (DEMUX_ELEMENT_NAME,
"http://unit.test/Manifest", testData);
- gst_object_unref (testData);
+ g_object_unref (testData);
}
GST_START_TEST (testSeekKeyUnitPosition)
@@ -404,7 +404,7 @@
gst_test_http_src_install_callbacks (&http_src_callbacks, inputTestData);
gst_adaptive_demux_test_run (DEMUX_ELEMENT_NAME, "http://unit.test/Manifest",
&test_callbacks, testData);
- gst_object_unref (testData);
+ g_object_unref (testData);
}
GST_END_TEST;
@@ -505,7 +505,7 @@
gst_test_http_src_install_callbacks (&http_src_callbacks, inputTestData);
gst_adaptive_demux_test_run (DEMUX_ELEMENT_NAME,
"http://unit.test/Manifest", &test_callbacks, testData);
- gst_object_unref (testData);
+ g_object_unref (testData);
}
GST_END_TEST;
@@ -597,7 +597,7 @@
gst_test_http_src_install_callbacks (&http_src_callbacks, inputTestData);
gst_adaptive_demux_test_run (DEMUX_ELEMENT_NAME,
"http://unit.test/Manifest", &test_callbacks, testData);
- gst_object_unref (testData);
+ g_object_unref (testData);
}
GST_END_TEST;
diff --git a/tests/check/elements/pnm.c b/tests/check/elements/pnm.c
new file mode 100644
index 0000000..b3be8cb
--- /dev/null
+++ b/tests/check/elements/pnm.c
@@ -0,0 +1,119 @@
+/* GStreamer
+ *
+ * unit test for PNM encoder / decoder
+ *
+ * Copyright (C) <2016> Jan Schmidt <jan@centricular.com>
+ *
+ * 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.
+ */
+#include <gst/check/gstcheck.h>
+#include <gst/app/gstappsink.h>
+
+/* Create a pnmenc ! pnmdec and push in
+ * frames, checking that what comes out is what
+ * went in */
+GST_START_TEST (test_pnm_enc_dec)
+{
+ GstElement *pipeline;
+ GstElement *incf, *outcf, *enc;
+ GstElement *sink;
+ GstSample *sample;
+ GstBuffer *buffer;
+ gint i, n;
+
+ struct
+ {
+ const gchar *in_fmt;
+ const gchar *out_fmt;
+ } test_formats[] = {
+ {
+ "RGB", "RGB"}, {
+ "GRAY8", "GRAY8"}, {
+ "GRAY16_BE", "GRAY16_BE"}, {
+ "GRAY16_BE", "GRAY16_LE"}, {
+ "GRAY16_LE", "GRAY16_BE"}, {
+ "GRAY16_LE", "GRAY16_LE"}
+ };
+
+ pipeline =
+ gst_parse_launch
+ ("videotestsrc num-buffers=1 ! capsfilter name=incf ! pnmenc name=enc ! pnmdec ! capsfilter name=outcf ! appsink name=sink",
+ NULL);
+ g_assert (pipeline != NULL);
+
+ incf = gst_bin_get_by_name (GST_BIN (pipeline), "incf");
+ enc = gst_bin_get_by_name (GST_BIN (pipeline), "enc");
+ outcf = gst_bin_get_by_name (GST_BIN (pipeline), "outcf");
+ sink = gst_bin_get_by_name (GST_BIN (pipeline), "sink");
+
+ for (n = 0; n < 2; n++) {
+ for (i = 0; i < G_N_ELEMENTS (test_formats); i++) {
+ GstCaps *incaps = gst_caps_new_simple ("video/x-raw", "width", G_TYPE_INT,
+ 320, "height", G_TYPE_INT, 240, "framerate",
+ GST_TYPE_FRACTION, 1, 1, "format", G_TYPE_STRING,
+ test_formats[i].in_fmt, NULL);
+ GstCaps *outcaps =
+ gst_caps_new_simple ("video/x-raw", "width", G_TYPE_INT,
+ 320, "height", G_TYPE_INT, 240, "framerate",
+ GST_TYPE_FRACTION, 1, 1, "format", G_TYPE_STRING,
+ test_formats[i].out_fmt, NULL);
+
+ GST_DEBUG ("Setting in caps %" GST_PTR_FORMAT, incaps);
+ g_object_set (G_OBJECT (incf), "caps", incaps, NULL);
+ GST_DEBUG ("Setting out caps %" GST_PTR_FORMAT, outcaps);
+ g_object_set (G_OBJECT (outcf), "caps", outcaps, NULL);
+
+ gst_caps_unref (incaps);
+ gst_caps_unref (outcaps);
+
+ gst_element_set_state (pipeline, GST_STATE_PLAYING);
+
+ sample = gst_app_sink_pull_sample (GST_APP_SINK (sink));
+
+ fail_unless (sample != NULL);
+ buffer = gst_sample_get_buffer (sample);
+ fail_unless (buffer != NULL);
+ gst_sample_unref (sample);
+
+ gst_element_set_state (pipeline, GST_STATE_NULL);
+ }
+
+ g_object_set (enc, "ascii", TRUE, NULL);
+ }
+
+ gst_object_unref (pipeline);
+ gst_object_unref (sink);
+ gst_object_unref (outcf);
+ gst_object_unref (enc);
+ gst_object_unref (incf);
+
+}
+
+GST_END_TEST;
+
+static Suite *
+pnm_suite (void)
+{
+ Suite *s = suite_create ("pnm");
+ TCase *tc_chain = tcase_create ("general");
+
+ suite_add_tcase (s, tc_chain);
+ tcase_add_test (tc_chain, test_pnm_enc_dec);
+
+ return s;
+}
+
+GST_CHECK_MAIN (pnm);
diff --git a/tests/check/elements/templatematch.c b/tests/check/elements/templatematch.c
index 99fc794..3a78d54 100644
--- a/tests/check/elements/templatematch.c
+++ b/tests/check/elements/templatematch.c
@@ -144,6 +144,7 @@
gst_bus_set_flushing (bus, TRUE);
gst_object_unref (bus);
gst_caps_unref (caps);
+ gst_check_drop_buffers ();
gst_pad_set_active (srcpad, FALSE);
gst_pad_set_active (sinkpad, FALSE);
gst_object_unref (srcpad);
diff --git a/tests/check/elements/test_http_src.c b/tests/check/elements/test_http_src.c
index 915bb51..14f2043 100644
--- a/tests/check/elements/test_http_src.c
+++ b/tests/check/elements/test_http_src.c
@@ -192,8 +192,8 @@
"Test HTTP source element for unit tests",
"Source/Network",
"Use in unit tests", "Alex Ashley <alex.ashley@youview.com>");
- gst_element_class_add_pad_template (gstelement_class,
- gst_static_pad_template_get (&gst_dashdemux_test_source_template));
+ gst_element_class_add_static_pad_template (gstelement_class,
+ &gst_dashdemux_test_source_template);
gstbasesrc_class->start = GST_DEBUG_FUNCPTR (gst_test_http_src_start);
gstbasesrc_class->stop = GST_DEBUG_FUNCPTR (gst_test_http_src_stop);
@@ -314,7 +314,8 @@
http_headers = gst_structure_new_empty ("http-headers");
gst_structure_set (http_headers, "uri", G_TYPE_STRING, src->uri, NULL);
if (!src->input.request_headers) {
- src->input.request_headers = gst_structure_new_empty ("request-headers");
+ src->input.request_headers =
+ gst_structure_new_empty (TEST_HTTP_SRC_REQUEST_HEADERS_NAME);
}
if (!gst_structure_has_field_typed (src->input.request_headers,
"User-Agent", G_TYPE_STRING)) {
@@ -334,10 +335,11 @@
gst_structure_set (src->input.request_headers, "Accept-Encoding",
G_TYPE_STRING, "compress, gzip", NULL);
}
- gst_structure_set (http_headers, "request-headers", GST_TYPE_STRUCTURE,
- src->input.request_headers, NULL);
+ gst_structure_set (http_headers, TEST_HTTP_SRC_REQUEST_HEADERS_NAME,
+ GST_TYPE_STRUCTURE, src->input.request_headers, NULL);
if (!src->input.response_headers) {
- src->input.response_headers = gst_structure_new_empty ("response-headers");
+ src->input.response_headers =
+ gst_structure_new_empty (TEST_HTTP_SRC_RESPONSE_HEADERS_NAME);
}
if (!gst_structure_has_field_typed (src->input.response_headers,
"Connection", G_TYPE_STRING)) {
@@ -359,8 +361,8 @@
g_free (date_str);
g_date_time_unref (now);
}
- gst_structure_set (http_headers, "response-headers", GST_TYPE_STRUCTURE,
- src->input.response_headers, NULL);
+ gst_structure_set (http_headers, TEST_HTTP_SRC_RESPONSE_HEADERS_NAME,
+ GST_TYPE_STRUCTURE, src->input.response_headers, NULL);
if (src->http_headers_event) {
gst_event_unref (src->http_headers_event);
}
diff --git a/tests/check/elements/test_http_src.h b/tests/check/elements/test_http_src.h
index 61161af..3a83e25 100644
--- a/tests/check/elements/test_http_src.h
+++ b/tests/check/elements/test_http_src.h
@@ -27,6 +27,20 @@
#define GST_TYPE_TEST_HTTP_SRC (gst_test_http_src_get_type ())
+/**
+ * TEST_HTTP_SRC_REQUEST_HEADERS_NAME:
+ * The name of the #GstStructure that will contain all the HTTP request
+ * headers
+ */
+#define TEST_HTTP_SRC_REQUEST_HEADERS_NAME "request-headers"
+
+/**
+ * TEST_HTTP_SRC_RESPONSE_HEADERS_NAME:
+ * The name of the #GstStructure that will contain all the HTTP response
+ * headers
+ */
+#define TEST_HTTP_SRC_RESPONSE_HEADERS_NAME "response-headers"
+
/* structure used by src_start function to configure the
* GstTestHTTPSrc plugin.
* It specifies information about a given URI.
diff --git a/tests/check/elements/uvch264demux.c b/tests/check/elements/uvch264demux.c
index fb8b17f..cf5c26a 100644
--- a/tests/check/elements/uvch264demux.c
+++ b/tests/check/elements/uvch264demux.c
@@ -373,6 +373,7 @@
fail_unless (buffer_h264 == NULL && buffer_jpg != NULL);
fail_unless (buffer_nv12 == NULL && buffer_yuy2 == NULL);
fail_unless (gerror == NULL && error_debug == NULL);
+ gst_buffer_unref (buffer_jpg);
_teardown_test ();
}
@@ -644,6 +645,7 @@
fail_unless (gerror == NULL);
fail_unless (gst_buffer_get_size (buffer_h264) == sizeof (h264_data));
fail_if (gst_buffer_memcmp (buffer_h264, 0, h264_data, sizeof (h264_data)));
+ gst_buffer_unref (buffer_h264);
_teardown_test ();
}
diff --git a/tests/check/libs/aggregator.c b/tests/check/libs/aggregator.c
index 16355b9..5f6ae2e 100644
--- a/tests/check/libs/aggregator.c
+++ b/tests/check/libs/aggregator.c
@@ -152,11 +152,9 @@
GST_STATIC_PAD_TEMPLATE ("sink_%u", GST_PAD_SINK, GST_PAD_REQUEST,
GST_STATIC_CAPS_ANY);
- gst_element_class_add_pad_template (gstelement_class,
- gst_static_pad_template_get (&_src_template));
+ gst_element_class_add_static_pad_template (gstelement_class, &_src_template);
- gst_element_class_add_pad_template (gstelement_class,
- gst_static_pad_template_get (&_sink_template));
+ gst_element_class_add_static_pad_template (gstelement_class, &_sink_template);
gst_element_class_set_static_metadata (gstelement_class, "Aggregator",
"Testing", "Combine N buffers", "Stefan Sauer <ensonic@users.sf.net>");
@@ -344,6 +342,8 @@
g_atomic_int_inc (&test->flush_stop_events);
}
+ gst_mini_object_unref (info->data);
+
return GST_PAD_PROBE_HANDLED;
}
diff --git a/tests/check/libs/gstglcolorconvert.c b/tests/check/libs/gstglcolorconvert.c
index f2be514..d891c8b 100644
--- a/tests/check/libs/gstglcolorconvert.c
+++ b/tests/check/libs/gstglcolorconvert.c
@@ -141,13 +141,15 @@
/* create GL buffer */
inbuf = gst_buffer_new ();
for (j = 0; j < GST_VIDEO_INFO_N_PLANES (&in_info); j++) {
+ GstVideoGLTextureType tex_type = gst_gl_texture_type_from_format (context,
+ GST_VIDEO_INFO_FORMAT (&in_info), j);
GstGLVideoAllocationParams *params;
GstGLBaseMemory *mem;
ref_count++;
params = gst_gl_video_allocation_params_new_wrapped_data (context, NULL,
- &in_info, j, NULL, GST_GL_TEXTURE_TARGET_2D, frames[i].data[j],
- &ref_count, _frame_unref);
+ &in_info, j, NULL, GST_GL_TEXTURE_TARGET_2D, tex_type,
+ frames[i].data[j], &ref_count, _frame_unref);
mem = gst_gl_base_memory_alloc (base_mem_alloc,
(GstGLAllocationParams *) params);
diff --git a/tests/check/libs/gstglcontext.c b/tests/check/libs/gstglcontext.c
index f2f27f8..662e3a7 100644
--- a/tests/check/libs/gstglcontext.c
+++ b/tests/check/libs/gstglcontext.c
@@ -42,7 +42,8 @@
gst_object_unref (display);
}
-static GLuint vbo, vbo_indices, vao, fbo_id, rbo, tex;
+static GstGLMemory *gl_tex;
+static GLuint vbo, vbo_indices, vao, fbo_id, rbo;
static GstGLFramebuffer *fbo;
static GstGLShader *shader;
static GLint shader_attr_position_loc;
@@ -63,6 +64,15 @@
{
GstGLContext *context = data;
GError *error = NULL;
+ GstVideoInfo v_info;
+ GstGLMemoryAllocator *allocator;
+ GstGLVideoAllocationParams *params;
+
+ gst_video_info_set_format (&v_info, GST_VIDEO_FORMAT_RGBA, 320, 240);
+ allocator = gst_gl_memory_allocator_get_default (context);
+ params =
+ gst_gl_video_allocation_params_new (context, NULL, &v_info, 0, NULL,
+ GST_GL_TEXTURE_TARGET_2D, GST_VIDEO_GL_TEXTURE_TYPE_RGBA);
/* has to be called in the thread that is going to use the framebuffer */
fbo = gst_gl_framebuffer_new (context);
@@ -70,8 +80,12 @@
gst_gl_framebuffer_generate (fbo, 320, 240, &fbo_id, &rbo);
fail_if (fbo == NULL || fbo_id == 0, "failed to create framebuffer object");
- gst_gl_context_gen_texture (context, &tex, GST_VIDEO_FORMAT_RGBA, 320, 240);
- fail_if (tex == 0, "failed to create texture");
+ gl_tex =
+ (GstGLMemory *) gst_gl_base_memory_alloc ((GstGLBaseMemoryAllocator *)
+ allocator, (GstGLAllocationParams *) params);
+ gst_object_unref (allocator);
+ gst_gl_allocation_params_free ((GstGLAllocationParams *) params);
+ fail_if (gl_tex == NULL, "failed to create texture");
shader = gst_gl_shader_new_default (context, &error);
fail_if (shader == NULL, "failed to create shader object: %s",
@@ -88,11 +102,11 @@
{
GstGLContext *context = data;
GstGLFuncs *gl = context->gl_vtable;
- gl->DeleteTextures (1, &tex);
if (vao)
gl->DeleteVertexArrays (1, &vao);
gst_object_unref (fbo);
gst_object_unref (shader);
+ gst_memory_unref (GST_MEMORY_CAST (gl_tex));
}
static void
@@ -113,8 +127,8 @@
static void
draw_tex (gpointer data)
{
- gst_gl_framebuffer_use_v2 (fbo, 320, 240, fbo_id, rbo, tex,
- (GLCB_V2) clear_tex, data);
+ gst_gl_framebuffer_use_v2 (fbo, 320, 240, fbo_id, rbo,
+ gst_gl_memory_get_texture_id (gl_tex), (GLCB_V2) clear_tex, data);
}
static void
@@ -210,7 +224,7 @@
gst_gl_shader_use (shader);
gl->ActiveTexture (GL_TEXTURE0);
- gl->BindTexture (GL_TEXTURE_2D, tex);
+ gl->BindTexture (GL_TEXTURE_2D, gst_gl_memory_get_texture_id (gl_tex));
gst_gl_shader_set_uniform_1i (shader, "s_texture", 0);
if (gl->GenVertexArrays)
diff --git a/tests/check/libs/gstglmemory.c b/tests/check/libs/gstglmemory.c
index 4130e3b..f8f9840 100644
--- a/tests/check/libs/gstglmemory.c
+++ b/tests/check/libs/gstglmemory.c
@@ -75,10 +75,12 @@
gst_video_info_set_format (&v_info, formats[i], width, height);
for (j = 0; j < GST_VIDEO_INFO_N_PLANES (&v_info); j++) {
+ GstVideoGLTextureType tex_type = gst_gl_texture_type_from_format (context,
+ GST_VIDEO_INFO_FORMAT (&v_info), j);
GstGLVideoAllocationParams *params;
params = gst_gl_video_allocation_params_new (context, NULL, &v_info, j,
- NULL, GST_GL_TEXTURE_TARGET_2D);
+ NULL, GST_GL_TEXTURE_TARGET_2D, tex_type);
mem = (GstMemory *) gst_gl_base_memory_alloc (base_mem_alloc,
(GstGLAllocationParams *) params);
@@ -137,7 +139,7 @@
gst_video_info_set_format (&v_info, GST_VIDEO_FORMAT_RGBA, 1, 1);
params = gst_gl_video_allocation_params_new (context, NULL, &v_info, 0,
- NULL, GST_GL_TEXTURE_TARGET_2D);
+ NULL, GST_GL_TEXTURE_TARGET_2D, GST_VIDEO_GL_TEXTURE_TYPE_RGBA);
/* texture creation */
mem = (GstMemory *) gst_gl_base_memory_alloc (base_mem_alloc,
@@ -150,7 +152,8 @@
/* test wrapping raw data */
params = gst_gl_video_allocation_params_new_wrapped_data (context, NULL,
- &v_info, 0, NULL, GST_GL_TEXTURE_TARGET_2D, rgba_pixel, NULL, NULL);
+ &v_info, 0, NULL, GST_GL_TEXTURE_TARGET_2D,
+ GST_VIDEO_GL_TEXTURE_TYPE_RGBA, rgba_pixel, NULL, NULL);
mem2 =
(GstMemory *) gst_gl_base_memory_alloc (base_mem_alloc,
(GstGLAllocationParams *) params);
@@ -164,8 +167,9 @@
/* wrapped texture creation */
params = gst_gl_video_allocation_params_new_wrapped_texture (context, NULL,
- &v_info, 0, NULL, GST_GL_TEXTURE_TARGET_2D, ((GstGLMemory *) mem)->tex_id,
- NULL, NULL);
+ &v_info, 0, NULL, GST_GL_TEXTURE_TARGET_2D,
+ GST_VIDEO_GL_TEXTURE_TYPE_RGBA, ((GstGLMemory *) mem)->tex_id, NULL,
+ NULL);
mem3 =
(GstMemory *) gst_gl_base_memory_alloc (base_mem_alloc,
(GstGLAllocationParams *) params);
@@ -303,7 +307,8 @@
gst_video_info_set_format (&v_info, GST_VIDEO_FORMAT_RGBA, 1, 1);
params = gst_gl_video_allocation_params_new_wrapped_data (context, NULL,
- &v_info, 0, NULL, GST_GL_TEXTURE_TARGET_2D, rgba_pixel, NULL, NULL);
+ &v_info, 0, NULL, GST_GL_TEXTURE_TARGET_2D,
+ GST_VIDEO_GL_TEXTURE_TYPE_RGBA, rgba_pixel, NULL, NULL);
mem =
(GstMemory *) gst_gl_base_memory_alloc (base_mem_alloc,
(GstGLAllocationParams *) params);
diff --git a/tests/check/libs/gstglupload.c b/tests/check/libs/gstglupload.c
index 64d7a33..4f9e4b2 100644
--- a/tests/check/libs/gstglupload.c
+++ b/tests/check/libs/gstglupload.c
@@ -86,6 +86,8 @@
gst_object_unref (window);
gst_object_unref (context);
gst_object_unref (display);
+ if (shader)
+ gst_object_unref (shader);
}
static void
@@ -215,7 +217,8 @@
/* create GL buffer */
buffer = gst_buffer_new ();
params = gst_gl_video_allocation_params_new_wrapped_data (context, NULL,
- &in_info, 0, NULL, GST_GL_TEXTURE_TARGET_2D, rgba_data, NULL, NULL);
+ &in_info, 0, NULL, GST_GL_TEXTURE_TARGET_2D,
+ GST_VIDEO_GL_TEXTURE_TYPE_RGBA, rgba_data, NULL, NULL);
gl_mem = (GstGLMemory *) gst_gl_base_memory_alloc (base_mem_alloc,
(GstGLAllocationParams *) params);
gst_gl_allocation_params_free ((GstGLAllocationParams *) params);
diff --git a/tests/check/libs/player.c b/tests/check/libs/player.c
index 3f2b25f..52a7ca0 100644
--- a/tests/check/libs/player.c
+++ b/tests/check/libs/player.c
@@ -132,6 +132,7 @@
STATE_CHANGE_VIDEO_DIMENSIONS_CHANGED,
STATE_CHANGE_MEDIA_INFO_UPDATED,
STATE_CHANGE_SEEK_DONE,
+ STATE_CHANGE_URI_LOADED,
} TestPlayerStateChange;
static const gchar *
@@ -158,6 +159,8 @@
return "media-info-updated";
case STATE_CHANGE_SEEK_DONE:
return "seek-done";
+ case STATE_CHANGE_URI_LOADED:
+ return "uri-loaded";
default:
g_assert_not_reached ();
break;
@@ -175,6 +178,8 @@
GstPlayerState state;
gint width, height;
GstPlayerMediaInfo *media_info;
+ gchar *uri_loaded;
+ gboolean stopping;
void (*test_callback) (GstPlayer * player, TestPlayerStateChange change,
TestPlayerState * old_state, TestPlayerState * new_state);
@@ -196,7 +201,8 @@
"\tseek_done %d -> %d\n"
"\tstate %s -> %s\n"
"\twidth/height %d/%d -> %d/%d\n"
- "\tmedia_info %p -> %p",
+ "\tmedia_info %p -> %p\n"
+ "\turi_loaded %s -> %s",
test_player_state_change_get_name (change),
old_state->buffering_percent, new_state->buffering_percent,
GST_TIME_ARGS (old_state->position), GST_TIME_ARGS (new_state->position),
@@ -208,7 +214,8 @@
gst_player_state_get_name (old_state->state),
gst_player_state_get_name (new_state->state), old_state->width,
old_state->height, new_state->width, new_state->height,
- old_state->media_info, new_state->media_info);
+ old_state->media_info, new_state->media_info,
+ old_state->uri_loaded, new_state->uri_loaded);
}
static void
@@ -220,6 +227,8 @@
state->state = GST_PLAYER_STATE_STOPPED;
state->width = state->height = 0;
state->media_info = NULL;
+ state->stopping = FALSE;
+ g_clear_pointer (&state->uri_loaded, g_free);
}
static void
@@ -227,6 +236,8 @@
{
TestPlayerState old_state = *state;
+ g_assert (!state->stopping);
+
state->buffering_percent = percent;
test_player_state_change_debug (player, STATE_CHANGE_BUFFERING, &old_state,
state);
@@ -239,6 +250,8 @@
{
TestPlayerState old_state = *state;
+ g_assert (!state->stopping);
+
state->duration = duration;
test_player_state_change_debug (player, STATE_CHANGE_DURATION_CHANGED,
&old_state, state);
@@ -251,6 +264,8 @@
{
TestPlayerState old_state = *state;
+ g_assert (!state->stopping);
+
state->end_of_stream = TRUE;
test_player_state_change_debug (player, STATE_CHANGE_END_OF_STREAM,
&old_state, state);
@@ -262,6 +277,8 @@
{
TestPlayerState old_state = *state;
+ g_assert (!state->stopping);
+
state->error = TRUE;
test_player_state_change_debug (player, STATE_CHANGE_ERROR, &old_state,
state);
@@ -273,6 +290,8 @@
{
TestPlayerState old_state = *state;
+ g_assert (!state->stopping);
+
state->warning = TRUE;
test_player_state_change_debug (player, STATE_CHANGE_WARNING, &old_state,
state);
@@ -285,6 +304,8 @@
{
TestPlayerState old_state = *state;
+ g_assert (!state->stopping);
+
state->position = position;
test_player_state_change_debug (player, STATE_CHANGE_POSITION_UPDATED,
&old_state, state);
@@ -298,6 +319,8 @@
{
TestPlayerState old_state = *state;
+ g_assert (!state->stopping);
+
state->media_info = media_info;
test_player_state_change_debug (player, STATE_CHANGE_MEDIA_INFO_UPDATED,
@@ -312,6 +335,8 @@
{
TestPlayerState old_state = *state;
+ g_assert (!state->stopping || player_state == GST_PLAYER_STATE_STOPPED);
+
state->state = player_state;
if (player_state == GST_PLAYER_STATE_STOPPED)
@@ -328,6 +353,8 @@
{
TestPlayerState old_state = *state;
+ g_assert (!state->stopping);
+
state->width = width;
state->height = height;
test_player_state_change_debug (player, STATE_CHANGE_VIDEO_DIMENSIONS_CHANGED,
@@ -341,6 +368,8 @@
{
TestPlayerState old_state = *state;
+ g_assert (!state->stopping);
+
state->seek_done = TRUE;
state->seek_done_position = position;
test_player_state_change_debug (player, STATE_CHANGE_SEEK_DONE,
@@ -348,6 +377,15 @@
state->test_callback (player, STATE_CHANGE_SEEK_DONE, &old_state, state);
}
+static void
+uri_loaded_cb (GstPlayer * player, const gchar * uri, TestPlayerState * state)
+{
+ TestPlayerState old_state = *state;
+
+ state->uri_loaded = g_strdup (uri);
+ state->test_callback (player, STATE_CHANGE_URI_LOADED, &old_state, state);
+}
+
static GstPlayer *
test_player_new (TestPlayerState * state)
{
@@ -386,11 +424,34 @@
g_signal_connect (player, "video-dimensions-changed",
G_CALLBACK (video_dimensions_changed_cb), state);
g_signal_connect (player, "seek-done", G_CALLBACK (seek_done_cb), state);
+ g_signal_connect (player, "uri-loaded", G_CALLBACK (uri_loaded_cb), state);
return player;
}
static void
+test_player_stopped_cb (GstPlayer * player, TestPlayerStateChange change,
+ TestPlayerState * old_state, TestPlayerState * new_state)
+{
+ if (new_state->state == GST_PLAYER_STATE_STOPPED) {
+ g_main_loop_quit (new_state->loop);
+ }
+}
+
+static void
+stop_player (GstPlayer * player, TestPlayerState * state)
+{
+ if (state->state != GST_PLAYER_STATE_STOPPED) {
+ /* Make sure all pending operations are finished so the player won't be
+ * appear as 'leaked' to leak detection tools. */
+ state->test_callback = test_player_stopped_cb;
+ gst_player_stop (player);
+ state->stopping = TRUE;
+ g_main_loop_run (state->loop);
+ }
+}
+
+static void
test_play_audio_video_eos_cb (GstPlayer * player, TestPlayerStateChange change,
TestPlayerState * old_state, TestPlayerState * new_state)
{
@@ -402,18 +463,29 @@
switch (step) {
case 0:
+ fail_unless_equals_int (change, STATE_CHANGE_URI_LOADED);
+ if (video)
+ fail_unless (g_str_has_suffix (new_state->uri_loaded,
+ "audio-video-short.ogg"));
+ else
+ fail_unless (g_str_has_suffix (new_state->uri_loaded,
+ "audio-short.ogg"));
+ new_state->test_data =
+ GINT_TO_POINTER ((video ? 0x10 : 0x00) | (step + 1));
+ break;
+ case 1:
fail_unless_equals_int (change, STATE_CHANGE_STATE_CHANGED);
fail_unless_equals_int (old_state->state, GST_PLAYER_STATE_STOPPED);
fail_unless_equals_int (new_state->state, GST_PLAYER_STATE_BUFFERING);
new_state->test_data =
GINT_TO_POINTER ((video ? 0x10 : 0x00) | (step + 1));
break;
- case 1:
+ case 2:
fail_unless_equals_int (change, STATE_CHANGE_MEDIA_INFO_UPDATED);
new_state->test_data =
GINT_TO_POINTER ((video ? 0x10 : 0x00) | (step + 1));
break;
- case 2:
+ case 3:
fail_unless_equals_int (change, STATE_CHANGE_VIDEO_DIMENSIONS_CHANGED);
if (video) {
fail_unless_equals_int (new_state->width, 320);
@@ -425,27 +497,27 @@
new_state->test_data =
GINT_TO_POINTER ((video ? 0x10 : 0x00) | (step + 1));
break;
- case 3:
+ case 4:
fail_unless_equals_int (change, STATE_CHANGE_DURATION_CHANGED);
fail_unless_equals_uint64 (new_state->duration,
G_GUINT64_CONSTANT (464399092));
new_state->test_data =
GINT_TO_POINTER ((video ? 0x10 : 0x00) | (step + 1));
break;
- case 4:
+ case 5:
fail_unless_equals_int (change, STATE_CHANGE_POSITION_UPDATED);
fail_unless_equals_uint64 (new_state->position, G_GUINT64_CONSTANT (0));
new_state->test_data =
GINT_TO_POINTER ((video ? 0x10 : 0x00) | (step + 1));
break;
- case 5:
+ case 6:
fail_unless_equals_int (change, STATE_CHANGE_STATE_CHANGED);
fail_unless_equals_int (old_state->state, GST_PLAYER_STATE_BUFFERING);
fail_unless_equals_int (new_state->state, GST_PLAYER_STATE_PLAYING);
new_state->test_data =
GINT_TO_POINTER ((video ? 0x10 : 0x00) | (step + 1));
break;
- case 6:
+ case 7:
if (change == STATE_CHANGE_POSITION_UPDATED) {
fail_unless (old_state->position <= new_state->position);
} else {
@@ -455,7 +527,7 @@
GINT_TO_POINTER ((video ? 0x10 : 0x00) | (step + 1));
}
break;
- case 7:
+ case 8:
fail_unless_equals_int (change, STATE_CHANGE_STATE_CHANGED);
fail_unless_equals_int (old_state->state, GST_PLAYER_STATE_PLAYING);
fail_unless_equals_int (new_state->state, GST_PLAYER_STATE_STOPPED);
@@ -492,8 +564,9 @@
gst_player_play (player);
g_main_loop_run (state.loop);
- fail_unless_equals_int (GPOINTER_TO_INT (state.test_data), 8);
+ fail_unless_equals_int (GPOINTER_TO_INT (state.test_data), 9);
+ stop_player (player, &state);
g_object_unref (player);
g_main_loop_unref (state.loop);
}
@@ -672,6 +745,7 @@
g_main_loop_run (state.loop);
fail_unless_equals_int (GPOINTER_TO_INT (state.test_data), 1);
+ stop_player (player, &state);
g_object_unref (player);
g_main_loop_unref (state.loop);
}
@@ -764,6 +838,7 @@
fail_unless_equals_int (GPOINTER_TO_INT (state.test_data), 0x33);
+ stop_player (player, &state);
g_object_unref (player);
g_main_loop_unref (state.loop);
}
@@ -828,6 +903,7 @@
fail_unless_equals_int (GPOINTER_TO_INT (state.test_data), 2);
+ stop_player (player, &state);
g_object_unref (player);
g_main_loop_unref (state.loop);
}
@@ -892,6 +968,7 @@
fail_unless_equals_int (GPOINTER_TO_INT (state.test_data), 2);
+ stop_player (player, &state);
g_object_unref (player);
g_main_loop_unref (state.loop);
}
@@ -923,6 +1000,7 @@
fail_unless_equals_int (GPOINTER_TO_INT (state.test_data), 2);
+ stop_player (player, &state);
g_object_unref (player);
g_main_loop_unref (state.loop);
}
@@ -1001,6 +1079,7 @@
fail_unless_equals_int (GPOINTER_TO_INT (state.test_data), 2);
+ stop_player (player, &state);
g_object_unref (player);
g_main_loop_unref (state.loop);
}
@@ -1072,6 +1151,7 @@
fail_unless_equals_int (GPOINTER_TO_INT (state.test_data) & 0xf, 10);
+ stop_player (player, &state);
g_object_unref (player);
g_main_loop_unref (state.loop);
}
@@ -1103,6 +1183,7 @@
fail_unless_equals_int (GPOINTER_TO_INT (state.test_data) & 0xf, 10);
+ stop_player (player, &state);
g_object_unref (player);
g_main_loop_unref (state.loop);
}
@@ -1132,8 +1213,9 @@
gst_player_play (player);
g_main_loop_run (state.loop);
- fail_unless_equals_int (GPOINTER_TO_INT (state.test_data) & (~0x10), 8);
+ fail_unless_equals_int (GPOINTER_TO_INT (state.test_data) & (~0x10), 9);
+ stop_player (player, &state);
g_object_unref (player);
g_main_loop_unref (state.loop);
}
@@ -1149,16 +1231,21 @@
switch (step) {
case 0:
+ fail_unless_equals_int (change, STATE_CHANGE_URI_LOADED);
+ fail_unless_equals_string (new_state->uri_loaded, "foo://bar");
+ new_state->test_data = GINT_TO_POINTER (step + 1);
+ break;
+ case 1:
fail_unless_equals_int (change, STATE_CHANGE_STATE_CHANGED);
fail_unless_equals_int (old_state->state, GST_PLAYER_STATE_STOPPED);
fail_unless_equals_int (new_state->state, GST_PLAYER_STATE_BUFFERING);
new_state->test_data = GINT_TO_POINTER (step + 1);
break;
- case 1:
+ case 2:
fail_unless_equals_int (change, STATE_CHANGE_ERROR);
new_state->test_data = GINT_TO_POINTER (step + 1);
break;
- case 2:
+ case 3:
fail_unless_equals_int (change, STATE_CHANGE_STATE_CHANGED);
fail_unless_equals_int (old_state->state, GST_PLAYER_STATE_BUFFERING);
fail_unless_equals_int (new_state->state, GST_PLAYER_STATE_STOPPED);
@@ -1190,8 +1277,9 @@
gst_player_play (player);
g_main_loop_run (state.loop);
- fail_unless_equals_int (GPOINTER_TO_INT (state.test_data), 3);
+ fail_unless_equals_int (GPOINTER_TO_INT (state.test_data), 4);
+ stop_player (player, &state);
g_object_unref (player);
g_main_loop_unref (state.loop);
}
@@ -1208,16 +1296,21 @@
switch (step) {
case 0:
+ fail_unless_equals_int (change, STATE_CHANGE_URI_LOADED);
+ fail_unless_equals_string (new_state->uri_loaded, "foo://bar");
+ new_state->test_data = GINT_TO_POINTER (step + 1);
+ break;
+ case 1:
fail_unless_equals_int (change, STATE_CHANGE_STATE_CHANGED);
fail_unless_equals_int (old_state->state, GST_PLAYER_STATE_STOPPED);
fail_unless_equals_int (new_state->state, GST_PLAYER_STATE_BUFFERING);
new_state->test_data = GINT_TO_POINTER (step + 1);
break;
- case 1:
+ case 2:
fail_unless_equals_int (change, STATE_CHANGE_ERROR);
new_state->test_data = GINT_TO_POINTER (step + 1);
break;
- case 2:
+ case 3:
fail_unless_equals_int (change, STATE_CHANGE_STATE_CHANGED);
fail_unless_equals_int (old_state->state, GST_PLAYER_STATE_BUFFERING);
fail_unless_equals_int (new_state->state, GST_PLAYER_STATE_STOPPED);
@@ -1230,34 +1323,39 @@
gst_player_play (player);
break;
- case 3:
+ case 4:
+ fail_unless_equals_int (change, STATE_CHANGE_URI_LOADED);
+ fail_unless (g_str_has_suffix (new_state->uri_loaded, "audio-short.ogg"));
+ new_state->test_data = GINT_TO_POINTER (step + 1);
+ break;
+ case 5:
fail_unless_equals_int (change, STATE_CHANGE_STATE_CHANGED);
fail_unless_equals_int (old_state->state, GST_PLAYER_STATE_STOPPED);
fail_unless_equals_int (new_state->state, GST_PLAYER_STATE_BUFFERING);
new_state->test_data = GINT_TO_POINTER (step + 1);
break;
- case 4:
+ case 6:
fail_unless_equals_int (change, STATE_CHANGE_MEDIA_INFO_UPDATED);
new_state->test_data = GINT_TO_POINTER (step + 1);
break;
- case 5:
+ case 7:
fail_unless_equals_int (change, STATE_CHANGE_VIDEO_DIMENSIONS_CHANGED);
fail_unless_equals_int (new_state->width, 0);
fail_unless_equals_int (new_state->height, 0);
new_state->test_data = GINT_TO_POINTER (step + 1);
break;
- case 6:
+ case 8:
fail_unless_equals_int (change, STATE_CHANGE_DURATION_CHANGED);
fail_unless_equals_uint64 (new_state->duration,
G_GUINT64_CONSTANT (464399092));
new_state->test_data = GINT_TO_POINTER (step + 1);
break;
- case 7:
+ case 9:
fail_unless_equals_int (change, STATE_CHANGE_POSITION_UPDATED);
fail_unless_equals_uint64 (new_state->position, G_GUINT64_CONSTANT (0));
new_state->test_data = GINT_TO_POINTER (step + 1);
break;
- case 8:
+ case 10:
fail_unless_equals_int (change, STATE_CHANGE_STATE_CHANGED);
fail_unless_equals_int (old_state->state, GST_PLAYER_STATE_BUFFERING);
fail_unless_equals_int (new_state->state, GST_PLAYER_STATE_PLAYING);
@@ -1289,8 +1387,9 @@
gst_player_play (player);
g_main_loop_run (state.loop);
- fail_unless_equals_int (GPOINTER_TO_INT (state.test_data), 9);
+ fail_unless_equals_int (GPOINTER_TO_INT (state.test_data), 11);
+ stop_player (player, &state);
g_object_unref (player);
g_main_loop_unref (state.loop);
}
@@ -1341,6 +1440,7 @@
fail_unless_equals_int (GPOINTER_TO_INT (state.test_data) & (~0x10), 2);
+ stop_player (player, &state);
g_object_unref (player);
g_main_loop_unref (state.loop);
}
@@ -1425,6 +1525,87 @@
fail_unless_equals_int (GPOINTER_TO_INT (state.test_data), 5);
+ stop_player (player, &state);
+ g_object_unref (player);
+ g_main_loop_unref (state.loop);
+}
+
+END_TEST;
+
+static void
+test_restart_cb (GstPlayer * player,
+ TestPlayerStateChange change, TestPlayerState * old_state,
+ TestPlayerState * new_state)
+{
+ gint steps = GPOINTER_TO_INT (new_state->test_data);
+
+ if (!steps && change == STATE_CHANGE_URI_LOADED) {
+ fail_unless (g_str_has_suffix (new_state->uri_loaded, "sintel.mkv"));
+ new_state->test_data = GINT_TO_POINTER (steps + 1);
+ } else if (change == STATE_CHANGE_STATE_CHANGED
+ && new_state->state == GST_PLAYER_STATE_BUFFERING) {
+ new_state->test_data = GINT_TO_POINTER (steps + 1);
+ g_main_loop_quit (new_state->loop);
+ }
+}
+
+static void
+test_restart_cb2 (GstPlayer * player,
+ TestPlayerStateChange change, TestPlayerState * old_state,
+ TestPlayerState * new_state)
+{
+ gint steps = GPOINTER_TO_INT (new_state->test_data);
+
+ if (!steps && change == STATE_CHANGE_URI_LOADED) {
+ fail_unless (g_str_has_suffix (new_state->uri_loaded, "audio-short.ogg"));
+ new_state->test_data = GINT_TO_POINTER (steps + 1);
+ } else if (change == STATE_CHANGE_STATE_CHANGED
+ && new_state->state == GST_PLAYER_STATE_BUFFERING) {
+ new_state->test_data = GINT_TO_POINTER (steps + 1);
+ g_main_loop_quit (new_state->loop);
+ }
+}
+
+
+START_TEST (test_restart)
+{
+ GstPlayer *player;
+ TestPlayerState state;
+ gchar *uri;
+
+ memset (&state, 0, sizeof (state));
+ state.loop = g_main_loop_new (NULL, FALSE);
+ state.test_callback = test_restart_cb;
+ state.test_data = GINT_TO_POINTER (0);
+
+ player = test_player_new (&state);
+
+ fail_unless (player != NULL);
+
+ uri = gst_filename_to_uri (TEST_PATH "/sintel.mkv", NULL);
+ fail_unless (uri != NULL);
+ gst_player_set_uri (player, uri);
+ g_free (uri);
+
+ gst_player_play (player);
+ g_main_loop_run (state.loop);
+ fail_unless_equals_int (GPOINTER_TO_INT (state.test_data), 2);
+ stop_player (player, &state);
+
+ /* Try again with another URI */
+ state.test_data = GINT_TO_POINTER (0);
+ state.test_callback = test_restart_cb2;
+
+ uri = gst_filename_to_uri (TEST_PATH "/audio-short.ogg", NULL);
+ fail_unless (uri != NULL);
+ gst_player_set_uri (player, uri);
+ g_free (uri);
+
+ gst_player_play (player);
+ g_main_loop_run (state.loop);
+ fail_unless_equals_int (GPOINTER_TO_INT (state.test_data), 2);
+ stop_player (player, &state);
+
g_object_unref (player);
g_main_loop_unref (state.loop);
}
@@ -1472,6 +1653,7 @@
tcase_add_test (tc_general, test_play_forward_rate);
tcase_add_test (tc_general, test_play_backward_rate);
tcase_add_test (tc_general, test_play_audio_video_seek_done);
+ tcase_add_test (tc_general, test_restart);
suite_add_tcase (s, tc_general);
diff --git a/tests/check/pipelines/simple-launch-lines.c b/tests/check/pipelines/simple-launch-lines.c
new file mode 100644
index 0000000..5cfc98c
--- /dev/null
+++ b/tests/check/pipelines/simple-launch-lines.c
@@ -0,0 +1,357 @@
+/* GStreamer
+ * Copyright (C) 2005 Andy Wingo <wingo@pobox.com>
+ *
+ * simple_launch_lines.c: Unit test for simple pipelines
+ *
+ * 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.
+ */
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#include <gst/check/gstcheck.h>
+#include <gst/gl/gstglconfig.h>
+
+#ifndef GST_DISABLE_PARSE
+
+static GstElement *
+setup_pipeline (const gchar * pipe_descr)
+{
+ GstElement *pipeline;
+
+ pipeline = gst_parse_launch (pipe_descr, NULL);
+ g_return_val_if_fail (GST_IS_PIPELINE (pipeline), NULL);
+ return pipeline;
+}
+
+/*
+ * run_pipeline:
+ * @pipe: the pipeline to run
+ * @desc: the description for use in messages
+ * @events: is a mask of expected events
+ * @tevent: is the expected terminal event.
+ *
+ * the poll call will time out after half a second.
+ */
+static void
+run_pipeline (GstElement * pipe, const gchar * descr,
+ GstMessageType events, GstMessageType tevent, GstState target_state)
+{
+ GstBus *bus;
+ GstMessage *message;
+ GstMessageType revent;
+ GstStateChangeReturn ret;
+
+ g_assert (pipe);
+ bus = gst_element_get_bus (pipe);
+ g_assert (bus);
+
+ fail_if (gst_element_set_state (pipe, target_state) ==
+ GST_STATE_CHANGE_FAILURE, "Could not set pipeline %s to playing", descr);
+ ret = gst_element_get_state (pipe, NULL, NULL, 10 * GST_SECOND);
+ if (ret == GST_STATE_CHANGE_ASYNC) {
+ g_critical ("Pipeline '%s' failed to go to PAUSED fast enough", descr);
+ goto done;
+ } else if ((ret != GST_STATE_CHANGE_SUCCESS)
+ && (ret != GST_STATE_CHANGE_NO_PREROLL)) {
+ g_critical ("Pipeline '%s' failed to go into PAUSED state (%s)", descr,
+ gst_element_state_change_return_get_name (ret));
+ goto done;
+ }
+
+ while (1) {
+ message = gst_bus_poll (bus, GST_MESSAGE_ANY, GST_SECOND / 2);
+
+ /* always have to pop the message before getting back into poll */
+ if (message) {
+ revent = GST_MESSAGE_TYPE (message);
+ gst_message_unref (message);
+ } else {
+ revent = GST_MESSAGE_UNKNOWN;
+ }
+
+ if (revent == tevent) {
+ break;
+ } else if (revent == GST_MESSAGE_UNKNOWN) {
+ g_critical ("Unexpected timeout in gst_bus_poll, looking for %d: %s",
+ tevent, descr);
+ break;
+ } else if (revent & events) {
+ continue;
+ }
+ g_critical
+ ("Unexpected message received of type %d, '%s', looking for %d: %s",
+ revent, gst_message_type_get_name (revent), tevent, descr);
+ }
+
+done:
+ fail_if (gst_element_set_state (pipe, GST_STATE_NULL) ==
+ GST_STATE_CHANGE_FAILURE, "Could not set pipeline %s to NULL", descr);
+ gst_element_get_state (pipe, NULL, NULL, GST_CLOCK_TIME_NONE);
+ gst_object_unref (pipe);
+
+ gst_bus_set_flushing (bus, TRUE);
+ gst_object_unref (bus);
+}
+
+GST_START_TEST (test_glimagesink)
+{
+ const gchar *s;
+ GstState target_state = GST_STATE_PLAYING;
+
+ s = "videotestsrc num-buffers=10 ! glimagesink";
+ run_pipeline (setup_pipeline (s), s,
+ GST_MESSAGE_ANY & ~(GST_MESSAGE_ERROR | GST_MESSAGE_WARNING),
+ GST_MESSAGE_UNKNOWN, target_state);
+}
+
+GST_END_TEST
+GST_START_TEST (test_glfiltercube)
+{
+ const gchar *s;
+ GstState target_state = GST_STATE_PLAYING;
+
+ s = "videotestsrc num-buffers=10 ! glupload ! glfiltercube ! fakesink";
+ run_pipeline (setup_pipeline (s), s,
+ GST_MESSAGE_ANY & ~(GST_MESSAGE_ERROR | GST_MESSAGE_WARNING),
+ GST_MESSAGE_UNKNOWN, target_state);
+}
+
+GST_END_TEST
+#define N_EFFECTS 18
+GST_START_TEST (test_gleffects)
+{
+ gchar *s;
+ GstState target_state = GST_STATE_PLAYING;
+ guint i;
+
+ for (i = 0; i < N_EFFECTS; i++) {
+ s = g_strdup_printf ("videotestsrc num-buffers=10 ! glupload ! "
+ "gleffects effect=%i ! fakesink", i);
+ run_pipeline (setup_pipeline (s), s,
+ GST_MESSAGE_ANY & ~(GST_MESSAGE_ERROR | GST_MESSAGE_WARNING),
+ GST_MESSAGE_UNKNOWN, target_state);
+ g_free (s);
+ }
+}
+
+GST_END_TEST
+#undef N_EFFECTS
+GST_START_TEST (test_glshader)
+{
+ const gchar *s;
+ GstState target_state = GST_STATE_PLAYING;
+
+ s = "videotestsrc num-buffers=10 ! glupload ! glshader ! fakesink";
+ run_pipeline (setup_pipeline (s), s,
+ GST_MESSAGE_ANY & ~(GST_MESSAGE_ERROR | GST_MESSAGE_WARNING),
+ GST_MESSAGE_UNKNOWN, target_state);
+
+#if GST_GL_HAVE_OPENGL
+ s = "gltestsrc num-buffers=10 ! glshader ! fakesink";
+ run_pipeline (setup_pipeline (s), s,
+ GST_MESSAGE_ANY & ~(GST_MESSAGE_ERROR | GST_MESSAGE_WARNING),
+ GST_MESSAGE_UNKNOWN, target_state);
+#endif
+}
+
+GST_END_TEST
+GST_START_TEST (test_glfilterapp)
+{
+ const gchar *s;
+ GstState target_state = GST_STATE_PLAYING;
+
+ s = "videotestsrc num-buffers=10 ! glupload ! glfilterapp ! fakesink";
+ run_pipeline (setup_pipeline (s), s,
+ GST_MESSAGE_ANY & ~(GST_MESSAGE_ERROR | GST_MESSAGE_WARNING),
+ GST_MESSAGE_UNKNOWN, target_state);
+
+#if GST_GL_HAVE_OPENGL
+ s = "gltestsrc num-buffers=10 ! glfilterapp ! fakesink";
+ run_pipeline (setup_pipeline (s), s,
+ GST_MESSAGE_ANY & ~(GST_MESSAGE_ERROR | GST_MESSAGE_WARNING),
+ GST_MESSAGE_UNKNOWN, target_state);
+#endif
+}
+
+GST_END_TEST
+GST_START_TEST (test_gloverlay)
+{
+ const gchar *s;
+ GstState target_state = GST_STATE_PLAYING;
+
+ s = "videotestsrc num-buffers=10 ! glupload ! gloverlay ! fakesink";
+ run_pipeline (setup_pipeline (s), s,
+ GST_MESSAGE_ANY & ~(GST_MESSAGE_ERROR | GST_MESSAGE_WARNING),
+ GST_MESSAGE_UNKNOWN, target_state);
+
+#if GST_GL_HAVE_OPENGL
+ s = "gltestsrc num-buffers=10 ! gloverlay ! fakesink";
+ run_pipeline (setup_pipeline (s), s,
+ GST_MESSAGE_ANY & ~(GST_MESSAGE_ERROR | GST_MESSAGE_WARNING),
+ GST_MESSAGE_UNKNOWN, target_state);
+#endif
+}
+
+GST_END_TEST
+#if GST_GL_HAVE_OPENGL
+#define N_SRCS 13
+GST_START_TEST (test_gltestsrc)
+{
+ gchar *s;
+ GstState target_state = GST_STATE_PLAYING;
+ guint i;
+
+ for (i = 0; i < N_SRCS; i++) {
+ s = g_strdup_printf ("gltestsrc pattern=%i num-buffers=10 ! fakesink", i);
+ run_pipeline (setup_pipeline (s), s,
+ GST_MESSAGE_ANY & ~(GST_MESSAGE_ERROR | GST_MESSAGE_WARNING),
+ GST_MESSAGE_UNKNOWN, target_state);
+ g_free (s);
+ }
+}
+
+GST_END_TEST
+#undef N_SRCS
+GST_START_TEST (test_glfilterglass)
+{
+ const gchar *s;
+ GstState target_state = GST_STATE_PLAYING;
+
+ s = "videotestsrc num-buffers=10 ! glupload ! glfilterglass ! fakesink";
+ run_pipeline (setup_pipeline (s), s,
+ GST_MESSAGE_ANY & ~(GST_MESSAGE_ERROR | GST_MESSAGE_WARNING),
+ GST_MESSAGE_UNKNOWN, target_state);
+
+ s = "gltestsrc num-buffers=10 ! glfilterglass ! fakesink";
+ run_pipeline (setup_pipeline (s), s,
+ GST_MESSAGE_ANY & ~(GST_MESSAGE_ERROR | GST_MESSAGE_WARNING),
+ GST_MESSAGE_UNKNOWN, target_state);
+}
+
+GST_END_TEST
+#if 0
+GST_START_TEST (test_glfilterreflectedscreen)
+{
+ const gchar *s;
+ GstState target_state = GST_STATE_PLAYING;
+
+ s = "videotestsrc num-buffers=10 ! glupload ! glfilterreflectedscreen ! "
+ "fakesink";
+ run_pipeline (setup_pipeline (s), s,
+ GST_MESSAGE_ANY & ~(GST_MESSAGE_ERROR | GST_MESSAGE_WARNING),
+ GST_MESSAGE_UNKNOWN, target_state);
+
+ s = "gltestsrc num-buffers=10 ! glfilterreflectedscreen ! fakesink";
+ run_pipeline (setup_pipeline (s), s,
+ GST_MESSAGE_ANY & ~(GST_MESSAGE_ERROR | GST_MESSAGE_WARNING),
+ GST_MESSAGE_UNKNOWN, target_state);
+}
+
+GST_END_TEST
+#endif
+GST_START_TEST (test_gldeinterlace)
+{
+ const gchar *s;
+ GstState target_state = GST_STATE_PLAYING;
+
+ s = "videotestsrc num-buffers=10 ! glupload ! gldeinterlace ! fakesink";
+ run_pipeline (setup_pipeline (s), s,
+ GST_MESSAGE_ANY & ~(GST_MESSAGE_ERROR | GST_MESSAGE_WARNING),
+ GST_MESSAGE_UNKNOWN, target_state);
+
+ s = "gltestsrc num-buffers=10 ! gldeinterlace ! fakesink";
+ run_pipeline (setup_pipeline (s), s,
+ GST_MESSAGE_ANY & ~(GST_MESSAGE_ERROR | GST_MESSAGE_WARNING),
+ GST_MESSAGE_UNKNOWN, target_state);
+}
+
+GST_END_TEST
+GST_START_TEST (test_glmosaic)
+{
+ const gchar *s;
+ GstState target_state = GST_STATE_PLAYING;
+
+ s = "videotestsrc num-buffers=10 ! glupload ! glmosaic ! fakesink";
+ run_pipeline (setup_pipeline (s), s,
+ GST_MESSAGE_ANY & ~(GST_MESSAGE_ERROR | GST_MESSAGE_WARNING),
+ GST_MESSAGE_UNKNOWN, target_state);
+
+ s = "gltestsrc num-buffers=10 ! glmosaic ! fakesink";
+ run_pipeline (setup_pipeline (s), s,
+ GST_MESSAGE_ANY & ~(GST_MESSAGE_ERROR | GST_MESSAGE_WARNING),
+ GST_MESSAGE_UNKNOWN, target_state);
+}
+
+GST_END_TEST
+GST_START_TEST (test_gldifferencematte)
+{
+ const gchar *s;
+ GstState target_state = GST_STATE_PLAYING;
+
+ s = "videotestsrc num-buffers=10 ! glupload ! gldifferencematte ! fakesink";
+ run_pipeline (setup_pipeline (s), s,
+ GST_MESSAGE_ANY & ~(GST_MESSAGE_ERROR | GST_MESSAGE_WARNING),
+ GST_MESSAGE_UNKNOWN, target_state);
+
+ s = "gltestsrc num-buffers=10 ! gldifferencematte ! fakesink";
+ run_pipeline (setup_pipeline (s), s,
+ GST_MESSAGE_ANY & ~(GST_MESSAGE_ERROR | GST_MESSAGE_WARNING),
+ GST_MESSAGE_UNKNOWN, target_state);
+}
+
+GST_END_TEST
+#endif /* GST_GL_HAVE_OPENGL */
+#endif /* !GST_DISABLE_PARSE */
+static Suite *
+simple_launch_lines_suite (void)
+{
+ Suite *s = suite_create ("Pipelines");
+ TCase *tc_chain = tcase_create ("linear");
+
+ /* time out after 60s, not the default 3 */
+ tcase_set_timeout (tc_chain, 60);
+
+ suite_add_tcase (s, tc_chain);
+#ifndef GST_DISABLE_PARSE
+ tcase_add_test (tc_chain, test_glimagesink);
+ tcase_add_test (tc_chain, test_glfiltercube);
+ tcase_add_test (tc_chain, test_gleffects);
+ tcase_add_test (tc_chain, test_glshader);
+ tcase_add_test (tc_chain, test_glfilterapp);
+#ifdef HAVE_PNG
+#ifdef HAVE_JPEG
+ tcase_add_test (tc_chain, test_gloverlay);
+#endif
+#endif
+#if GST_GL_HAVE_OPENGL
+ tcase_add_test (tc_chain, test_gltestsrc);
+ tcase_add_test (tc_chain, test_glfilterglass);
+/* tcase_add_test (tc_chain, test_glfilterreflectedscreen);*/
+ tcase_add_test (tc_chain, test_glmosaic);
+ tcase_add_test (tc_chain, test_gldeinterlace);
+#ifdef HAVE_PNG
+ tcase_add_test (tc_chain, test_gldifferencematte);
+/* tcase_add_test (tc_chain, test_glbumper);*/
+#ifdef HAVE_JPEG
+#endif /* HAVE_JPEG */
+#endif /* HAVE_PNG */
+#endif /* GST_GL_HAVE_OPENGL */
+#endif /* !GST_DISABLE_PARSE */
+ return s;
+}
+
+GST_CHECK_MAIN (simple_launch_lines);
diff --git a/tests/examples/Makefile.in b/tests/examples/Makefile.in
index 3872c0f..2063f5d 100644
--- a/tests/examples/Makefile.in
+++ b/tests/examples/Makefile.in
@@ -318,6 +318,8 @@
DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
DSYMUTIL = @DSYMUTIL@
DTLS_CFLAGS = @DTLS_CFLAGS@
DTLS_LIBS = @DTLS_LIBS@
@@ -533,6 +535,8 @@
LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
LIPO = @LIPO@
LN_S = @LN_S@
LOCALEDIR = @LOCALEDIR@
@@ -659,8 +663,6 @@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
SNDIO_LIBS = @SNDIO_LIBS@
@@ -705,6 +707,8 @@
WAYLAND_LIBS = @WAYLAND_LIBS@
WEBP_CFLAGS = @WEBP_CFLAGS@
WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
WGET = @WGET@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
diff --git a/tests/examples/avsamplesink/Makefile.in b/tests/examples/avsamplesink/Makefile.in
index a9fbae1..4697408 100644
--- a/tests/examples/avsamplesink/Makefile.in
+++ b/tests/examples/avsamplesink/Makefile.in
@@ -272,6 +272,8 @@
DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
DSYMUTIL = @DSYMUTIL@
DTLS_CFLAGS = @DTLS_CFLAGS@
DTLS_LIBS = @DTLS_LIBS@
@@ -487,6 +489,8 @@
LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
LIPO = @LIPO@
LN_S = @LN_S@
LOCALEDIR = @LOCALEDIR@
@@ -613,8 +617,6 @@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
SNDIO_LIBS = @SNDIO_LIBS@
@@ -659,6 +661,8 @@
WAYLAND_LIBS = @WAYLAND_LIBS@
WEBP_CFLAGS = @WEBP_CFLAGS@
WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
WGET = @WGET@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
diff --git a/tests/examples/camerabin2/Makefile.in b/tests/examples/camerabin2/Makefile.in
index e788b01..6873f0a 100644
--- a/tests/examples/camerabin2/Makefile.in
+++ b/tests/examples/camerabin2/Makefile.in
@@ -290,6 +290,8 @@
DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
DSYMUTIL = @DSYMUTIL@
DTLS_CFLAGS = @DTLS_CFLAGS@
DTLS_LIBS = @DTLS_LIBS@
@@ -505,6 +507,8 @@
LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
LIPO = @LIPO@
LN_S = @LN_S@
LOCALEDIR = @LOCALEDIR@
@@ -631,8 +635,6 @@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
SNDIO_LIBS = @SNDIO_LIBS@
@@ -677,6 +679,8 @@
WAYLAND_LIBS = @WAYLAND_LIBS@
WEBP_CFLAGS = @WEBP_CFLAGS@
WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
WGET = @WGET@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
diff --git a/tests/examples/codecparsers/Makefile.in b/tests/examples/codecparsers/Makefile.in
index a809599..9d1e72d 100644
--- a/tests/examples/codecparsers/Makefile.in
+++ b/tests/examples/codecparsers/Makefile.in
@@ -275,6 +275,8 @@
DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
DSYMUTIL = @DSYMUTIL@
DTLS_CFLAGS = @DTLS_CFLAGS@
DTLS_LIBS = @DTLS_LIBS@
@@ -490,6 +492,8 @@
LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
LIPO = @LIPO@
LN_S = @LN_S@
LOCALEDIR = @LOCALEDIR@
@@ -616,8 +620,6 @@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
SNDIO_LIBS = @SNDIO_LIBS@
@@ -662,6 +664,8 @@
WAYLAND_LIBS = @WAYLAND_LIBS@
WEBP_CFLAGS = @WEBP_CFLAGS@
WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
WGET = @WGET@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
diff --git a/tests/examples/directfb/Makefile.in b/tests/examples/directfb/Makefile.in
index 621282f..e0cd6bb 100644
--- a/tests/examples/directfb/Makefile.in
+++ b/tests/examples/directfb/Makefile.in
@@ -269,6 +269,8 @@
DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
DSYMUTIL = @DSYMUTIL@
DTLS_CFLAGS = @DTLS_CFLAGS@
DTLS_LIBS = @DTLS_LIBS@
@@ -484,6 +486,8 @@
LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
LIPO = @LIPO@
LN_S = @LN_S@
LOCALEDIR = @LOCALEDIR@
@@ -610,8 +614,6 @@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
SNDIO_LIBS = @SNDIO_LIBS@
@@ -656,6 +658,8 @@
WAYLAND_LIBS = @WAYLAND_LIBS@
WEBP_CFLAGS = @WEBP_CFLAGS@
WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
WGET = @WGET@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
diff --git a/tests/examples/gl/Makefile.in b/tests/examples/gl/Makefile.in
index 41a15c5..d9dbcc5 100644
--- a/tests/examples/gl/Makefile.in
+++ b/tests/examples/gl/Makefile.in
@@ -280,6 +280,8 @@
DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
DSYMUTIL = @DSYMUTIL@
DTLS_CFLAGS = @DTLS_CFLAGS@
DTLS_LIBS = @DTLS_LIBS@
@@ -495,6 +497,8 @@
LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
LIPO = @LIPO@
LN_S = @LN_S@
LOCALEDIR = @LOCALEDIR@
@@ -621,8 +625,6 @@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
SNDIO_LIBS = @SNDIO_LIBS@
@@ -667,6 +669,8 @@
WAYLAND_LIBS = @WAYLAND_LIBS@
WEBP_CFLAGS = @WEBP_CFLAGS@
WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
WGET = @WGET@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
diff --git a/tests/examples/gl/clutter/Makefile.in b/tests/examples/gl/clutter/Makefile.in
index aeda840..e89fae1 100644
--- a/tests/examples/gl/clutter/Makefile.in
+++ b/tests/examples/gl/clutter/Makefile.in
@@ -312,6 +312,8 @@
DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
DSYMUTIL = @DSYMUTIL@
DTLS_CFLAGS = @DTLS_CFLAGS@
DTLS_LIBS = @DTLS_LIBS@
@@ -527,6 +529,8 @@
LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
LIPO = @LIPO@
LN_S = @LN_S@
LOCALEDIR = @LOCALEDIR@
@@ -653,8 +657,6 @@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
SNDIO_LIBS = @SNDIO_LIBS@
@@ -699,6 +701,8 @@
WAYLAND_LIBS = @WAYLAND_LIBS@
WEBP_CFLAGS = @WEBP_CFLAGS@
WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
WGET = @WGET@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
diff --git a/tests/examples/gl/cocoa/Makefile.in b/tests/examples/gl/cocoa/Makefile.in
index 1ee387b..62c4dd4 100644
--- a/tests/examples/gl/cocoa/Makefile.in
+++ b/tests/examples/gl/cocoa/Makefile.in
@@ -275,6 +275,8 @@
DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
DSYMUTIL = @DSYMUTIL@
DTLS_CFLAGS = @DTLS_CFLAGS@
DTLS_LIBS = @DTLS_LIBS@
@@ -490,6 +492,8 @@
LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
LIPO = @LIPO@
LN_S = @LN_S@
LOCALEDIR = @LOCALEDIR@
@@ -616,8 +620,6 @@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
SNDIO_LIBS = @SNDIO_LIBS@
@@ -662,6 +664,8 @@
WAYLAND_LIBS = @WAYLAND_LIBS@
WEBP_CFLAGS = @WEBP_CFLAGS@
WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
WGET = @WGET@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
diff --git a/tests/examples/gl/generic/Makefile.in b/tests/examples/gl/generic/Makefile.in
index 8455ec5..daad8f0 100644
--- a/tests/examples/gl/generic/Makefile.in
+++ b/tests/examples/gl/generic/Makefile.in
@@ -276,6 +276,8 @@
DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
DSYMUTIL = @DSYMUTIL@
DTLS_CFLAGS = @DTLS_CFLAGS@
DTLS_LIBS = @DTLS_LIBS@
@@ -491,6 +493,8 @@
LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
LIPO = @LIPO@
LN_S = @LN_S@
LOCALEDIR = @LOCALEDIR@
@@ -617,8 +621,6 @@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
SNDIO_LIBS = @SNDIO_LIBS@
@@ -663,6 +665,8 @@
WAYLAND_LIBS = @WAYLAND_LIBS@
WEBP_CFLAGS = @WEBP_CFLAGS@
WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
WGET = @WGET@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
diff --git a/tests/examples/gl/generic/cube/Makefile.in b/tests/examples/gl/generic/cube/Makefile.in
index 9c8a066..4ebbb77 100644
--- a/tests/examples/gl/generic/cube/Makefile.in
+++ b/tests/examples/gl/generic/cube/Makefile.in
@@ -271,6 +271,8 @@
DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
DSYMUTIL = @DSYMUTIL@
DTLS_CFLAGS = @DTLS_CFLAGS@
DTLS_LIBS = @DTLS_LIBS@
@@ -486,6 +488,8 @@
LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
LIPO = @LIPO@
LN_S = @LN_S@
LOCALEDIR = @LOCALEDIR@
@@ -612,8 +616,6 @@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
SNDIO_LIBS = @SNDIO_LIBS@
@@ -658,6 +660,8 @@
WAYLAND_LIBS = @WAYLAND_LIBS@
WEBP_CFLAGS = @WEBP_CFLAGS@
WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
WGET = @WGET@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
diff --git a/tests/examples/gl/generic/cubeyuv/Makefile.in b/tests/examples/gl/generic/cubeyuv/Makefile.in
index 967f181..ec151aa 100644
--- a/tests/examples/gl/generic/cubeyuv/Makefile.in
+++ b/tests/examples/gl/generic/cubeyuv/Makefile.in
@@ -271,6 +271,8 @@
DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
DSYMUTIL = @DSYMUTIL@
DTLS_CFLAGS = @DTLS_CFLAGS@
DTLS_LIBS = @DTLS_LIBS@
@@ -486,6 +488,8 @@
LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
LIPO = @LIPO@
LN_S = @LN_S@
LOCALEDIR = @LOCALEDIR@
@@ -612,8 +616,6 @@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
SNDIO_LIBS = @SNDIO_LIBS@
@@ -658,6 +660,8 @@
WAYLAND_LIBS = @WAYLAND_LIBS@
WEBP_CFLAGS = @WEBP_CFLAGS@
WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
WGET = @WGET@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
diff --git a/tests/examples/gl/generic/doublecube/Makefile.in b/tests/examples/gl/generic/doublecube/Makefile.in
index 80da624..c11d5a4 100644
--- a/tests/examples/gl/generic/doublecube/Makefile.in
+++ b/tests/examples/gl/generic/doublecube/Makefile.in
@@ -271,6 +271,8 @@
DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
DSYMUTIL = @DSYMUTIL@
DTLS_CFLAGS = @DTLS_CFLAGS@
DTLS_LIBS = @DTLS_LIBS@
@@ -486,6 +488,8 @@
LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
LIPO = @LIPO@
LN_S = @LN_S@
LOCALEDIR = @LOCALEDIR@
@@ -612,8 +616,6 @@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
SNDIO_LIBS = @SNDIO_LIBS@
@@ -658,6 +660,8 @@
WAYLAND_LIBS = @WAYLAND_LIBS@
WEBP_CFLAGS = @WEBP_CFLAGS@
WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
WGET = @WGET@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
diff --git a/tests/examples/gl/generic/recordgraphic/Makefile.in b/tests/examples/gl/generic/recordgraphic/Makefile.in
index ccbb38e..aee6f90 100644
--- a/tests/examples/gl/generic/recordgraphic/Makefile.in
+++ b/tests/examples/gl/generic/recordgraphic/Makefile.in
@@ -272,6 +272,8 @@
DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
DSYMUTIL = @DSYMUTIL@
DTLS_CFLAGS = @DTLS_CFLAGS@
DTLS_LIBS = @DTLS_LIBS@
@@ -487,6 +489,8 @@
LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
LIPO = @LIPO@
LN_S = @LN_S@
LOCALEDIR = @LOCALEDIR@
@@ -613,8 +617,6 @@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
SNDIO_LIBS = @SNDIO_LIBS@
@@ -659,6 +661,8 @@
WAYLAND_LIBS = @WAYLAND_LIBS@
WEBP_CFLAGS = @WEBP_CFLAGS@
WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
WGET = @WGET@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
diff --git a/tests/examples/gl/gtk/3dvideo/Makefile.in b/tests/examples/gl/gtk/3dvideo/Makefile.in
index eea6a64..7d1367f 100644
--- a/tests/examples/gl/gtk/3dvideo/Makefile.in
+++ b/tests/examples/gl/gtk/3dvideo/Makefile.in
@@ -295,6 +295,8 @@
DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
DSYMUTIL = @DSYMUTIL@
DTLS_CFLAGS = @DTLS_CFLAGS@
DTLS_LIBS = @DTLS_LIBS@
@@ -510,6 +512,8 @@
LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
LIPO = @LIPO@
LN_S = @LN_S@
LOCALEDIR = @LOCALEDIR@
@@ -636,8 +640,6 @@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
SNDIO_LIBS = @SNDIO_LIBS@
@@ -682,6 +684,8 @@
WAYLAND_LIBS = @WAYLAND_LIBS@
WEBP_CFLAGS = @WEBP_CFLAGS@
WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
WGET = @WGET@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
diff --git a/tests/examples/gl/gtk/3dvideo/main.cpp b/tests/examples/gl/gtk/3dvideo/main.cpp
index 1d8e5b7..16692f2 100644
--- a/tests/examples/gl/gtk/3dvideo/main.cpp
+++ b/tests/examples/gl/gtk/3dvideo/main.cpp
@@ -47,6 +47,9 @@
static GstBusSyncReply
create_window (GstBus * bus, GstMessage * message, GtkWidget * widget)
{
+ if (gst_gtk_handle_need_context (bus, message, NULL))
+ return GST_BUS_DROP;
+
/* ignore anything but 'prepare-window-handle' element messages */
if (GST_MESSAGE_TYPE (message) != GST_MESSAGE_ELEMENT)
return GST_BUS_PASS;
@@ -107,6 +110,17 @@
return FALSE;
}
+static gboolean
+resize_cb (GtkWidget * widget, GdkEvent * event, gpointer sink)
+{
+ GtkAllocation allocation;
+
+ gtk_widget_get_allocation (widget, &allocation);
+ gst_video_overlay_set_render_rectangle (GST_VIDEO_OVERLAY (sink), allocation.x, allocation.y, allocation.width, allocation.height);
+
+ return G_SOURCE_CONTINUE;
+}
+
static void
destroy_cb (GtkWidget * widget, GdkEvent * event, GstElement * pipeline)
{
@@ -406,6 +420,7 @@
/* Redraw needed when paused or stopped (PAUSED or READY) */
g_signal_connect (area, "draw", G_CALLBACK (draw_cb), videosink);
+ g_signal_connect(area, "configure-event", G_CALLBACK(resize_cb), videosink);
gtk_widget_show_all (window);
diff --git a/tests/examples/gl/gtk/Makefile.am b/tests/examples/gl/gtk/Makefile.am
index 3c18679..5728905 100644
--- a/tests/examples/gl/gtk/Makefile.am
+++ b/tests/examples/gl/gtk/Makefile.am
@@ -1,5 +1,5 @@
-SUBDIRS = . gtkvideooverlay filternovideooverlay filtervideooverlay fxtest switchvideooverlay 3dvideo
+SUBDIRS = . filternovideooverlay filtervideooverlay fxtest switchvideooverlay 3dvideo
noinst_LTLIBRARIES = libgstgtkhelper.la
diff --git a/tests/examples/gl/gtk/Makefile.in b/tests/examples/gl/gtk/Makefile.in
index 34d00c8..113dfb2 100644
--- a/tests/examples/gl/gtk/Makefile.in
+++ b/tests/examples/gl/gtk/Makefile.in
@@ -312,6 +312,8 @@
DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
DSYMUTIL = @DSYMUTIL@
DTLS_CFLAGS = @DTLS_CFLAGS@
DTLS_LIBS = @DTLS_LIBS@
@@ -527,6 +529,8 @@
LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
LIPO = @LIPO@
LN_S = @LN_S@
LOCALEDIR = @LOCALEDIR@
@@ -653,8 +657,6 @@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
SNDIO_LIBS = @SNDIO_LIBS@
@@ -699,6 +701,8 @@
WAYLAND_LIBS = @WAYLAND_LIBS@
WEBP_CFLAGS = @WEBP_CFLAGS@
WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
WGET = @WGET@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
@@ -787,7 +791,7 @@
top_builddir = @top_builddir@
top_srcdir = @top_srcdir@
wayland_scanner = @wayland_scanner@
-SUBDIRS = . gtkvideooverlay filternovideooverlay filtervideooverlay fxtest switchvideooverlay 3dvideo
+SUBDIRS = . filternovideooverlay filtervideooverlay fxtest switchvideooverlay 3dvideo
noinst_LTLIBRARIES = libgstgtkhelper.la
libgstgtkhelper_la_SOURCES = gstgtk.c gstgtk.h
libgstgtkhelper_la_CFLAGS = -I$(top_srcdir)/gst-libs \
diff --git a/tests/examples/gl/gtk/filternovideooverlay/Makefile.in b/tests/examples/gl/gtk/filternovideooverlay/Makefile.in
index 82ae551..7e3aac2 100644
--- a/tests/examples/gl/gtk/filternovideooverlay/Makefile.in
+++ b/tests/examples/gl/gtk/filternovideooverlay/Makefile.in
@@ -273,6 +273,8 @@
DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
DSYMUTIL = @DSYMUTIL@
DTLS_CFLAGS = @DTLS_CFLAGS@
DTLS_LIBS = @DTLS_LIBS@
@@ -488,6 +490,8 @@
LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
LIPO = @LIPO@
LN_S = @LN_S@
LOCALEDIR = @LOCALEDIR@
@@ -614,8 +618,6 @@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
SNDIO_LIBS = @SNDIO_LIBS@
@@ -660,6 +662,8 @@
WAYLAND_LIBS = @WAYLAND_LIBS@
WEBP_CFLAGS = @WEBP_CFLAGS@
WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
WGET = @WGET@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
diff --git a/tests/examples/gl/gtk/filtervideooverlay/Makefile.in b/tests/examples/gl/gtk/filtervideooverlay/Makefile.in
index b9cc5a0..fdb9370 100644
--- a/tests/examples/gl/gtk/filtervideooverlay/Makefile.in
+++ b/tests/examples/gl/gtk/filtervideooverlay/Makefile.in
@@ -274,6 +274,8 @@
DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
DSYMUTIL = @DSYMUTIL@
DTLS_CFLAGS = @DTLS_CFLAGS@
DTLS_LIBS = @DTLS_LIBS@
@@ -489,6 +491,8 @@
LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
LIPO = @LIPO@
LN_S = @LN_S@
LOCALEDIR = @LOCALEDIR@
@@ -615,8 +619,6 @@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
SNDIO_LIBS = @SNDIO_LIBS@
@@ -661,6 +663,8 @@
WAYLAND_LIBS = @WAYLAND_LIBS@
WEBP_CFLAGS = @WEBP_CFLAGS@
WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
WGET = @WGET@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
diff --git a/tests/examples/gl/gtk/fxtest/Makefile.in b/tests/examples/gl/gtk/fxtest/Makefile.in
index d5a8867..217bc45 100644
--- a/tests/examples/gl/gtk/fxtest/Makefile.in
+++ b/tests/examples/gl/gtk/fxtest/Makefile.in
@@ -280,6 +280,8 @@
DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
DSYMUTIL = @DSYMUTIL@
DTLS_CFLAGS = @DTLS_CFLAGS@
DTLS_LIBS = @DTLS_LIBS@
@@ -495,6 +497,8 @@
LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
LIPO = @LIPO@
LN_S = @LN_S@
LOCALEDIR = @LOCALEDIR@
@@ -621,8 +625,6 @@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
SNDIO_LIBS = @SNDIO_LIBS@
@@ -667,6 +669,8 @@
WAYLAND_LIBS = @WAYLAND_LIBS@
WEBP_CFLAGS = @WEBP_CFLAGS@
WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
WGET = @WGET@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
diff --git a/tests/examples/gl/gtk/gtkvideooverlay/Makefile.am b/tests/examples/gl/gtk/gtkvideooverlay/Makefile.am
deleted file mode 100644
index d6da10d..0000000
--- a/tests/examples/gl/gtk/gtkvideooverlay/Makefile.am
+++ /dev/null
@@ -1,11 +0,0 @@
-noinst_PROGRAMS = gtkvideooverlay
-
-gtkvideooverlay_SOURCES = main.cpp
-
-gtkvideooverlay_CXXFLAGS=-I$(top_srcdir)/gst-libs -I$(top_builddir)/gst-libs \
- $(GST_PLUGINS_BASE_CFLAGS) $(GST_CXXFLAGS) \
- $(GL_CFLAGS) $(GTK3_CFLAGS) $(X11_CFLAGS)
-gtkvideooverlay_LDADD=../libgstgtkhelper.la \
- $(GTK3_LIBS) $(GST_PLUGINS_BASE_LIBS) $(GST_LIBS) \
- $(GL_LIBS) -lgstvideo-$(GST_API_VERSION) $(X11_LIBS)
-
diff --git a/tests/examples/gl/gtk/gtkvideooverlay/main.cpp b/tests/examples/gl/gtk/gtkvideooverlay/main.cpp
deleted file mode 100644
index 5ca8108..0000000
--- a/tests/examples/gl/gtk/gtkvideooverlay/main.cpp
+++ /dev/null
@@ -1,268 +0,0 @@
-/*
- * GStreamer
- * Copyright (C) 2008-2009 Julien Isorce <julien.isorce@gmail.com>
- *
- * 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.
- */
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include <gst/gst.h>
-#include <gtk/gtk.h>
-#include <gdk/gdk.h>
-
-#include "../gstgtk.h"
-
-#ifdef HAVE_X11
-#include <X11/Xlib.h>
-#endif
-
-
-static GstBusSyncReply create_window (GstBus* bus, GstMessage* message, GtkWidget* widget)
-{
- /* ignore anything but 'prepare-window-handle' element messages */
- if (GST_MESSAGE_TYPE (message) != GST_MESSAGE_ELEMENT)
- return GST_BUS_PASS;
-
- if (!gst_is_video_overlay_prepare_window_handle_message (message))
- return GST_BUS_PASS;
-
- g_print ("setting window handle\n");
-
- /* do not call gdk_window_ensure_native for the first time here because
- * we are in a different thread than the main thread */
- gst_video_overlay_set_gtk_window (GST_VIDEO_OVERLAY (GST_MESSAGE_SRC (message)), widget);
-
- gst_message_unref (message);
-
- return GST_BUS_DROP;
-}
-
-
-static void end_stream_cb(GstBus* bus, GstMessage* message, GstElement* pipeline)
-{
- switch (GST_MESSAGE_TYPE (message))
- {
- case GST_MESSAGE_EOS:
- g_print ("End of stream\n");
-
- gst_element_set_state (pipeline, GST_STATE_NULL);
- gst_object_unref(pipeline);
- gtk_main_quit ();
- break;
- case GST_MESSAGE_ERROR:
- {
- gchar *debug = NULL;
- GError *err = NULL;
-
- gst_message_parse_error (message, &err, &debug);
-
- g_print ("Error: %s\n", err->message);
- g_error_free (err);
-
- if (debug)
- {
- g_print ("Debug details: %s\n", debug);
- g_free (debug);
- }
-
- gst_element_set_state (pipeline, GST_STATE_NULL);
- gst_object_unref(pipeline);
- gtk_main_quit ();
- break;
- }
- default:
- break;
- }
-}
-
-static gboolean draw_cb(GtkWidget* widget, cairo_t *cr, GstElement* videosink)
-{
- g_print ("draw_cb\n");
- gst_video_overlay_expose (GST_VIDEO_OVERLAY (videosink));
- return FALSE;
-}
-
-
-static void destroy_cb(GtkWidget* widget, GdkEvent* event, GstElement* pipeline)
-{
- g_print("Close\n");
-
- gst_element_set_state (pipeline, GST_STATE_NULL);
- gst_object_unref(pipeline);
-
- gtk_main_quit();
-}
-
-
-static void button_state_null_cb(GtkWidget* widget, GstElement* pipeline)
-{
- gst_element_set_state (pipeline, GST_STATE_NULL);
- g_print ("GST_STATE_NULL\n");
-}
-
-
-static void button_state_ready_cb(GtkWidget* widget, GstElement* pipeline)
-{
- gst_element_set_state (pipeline, GST_STATE_READY);
- g_print ("GST_STATE_READY\n");
-}
-
-
-static void button_state_paused_cb(GtkWidget* widget, GstElement* pipeline)
-{
- gst_element_set_state (pipeline, GST_STATE_PAUSED);
- g_print ("GST_STATE_PAUSED\n");
-}
-
-
-static void button_state_playing_cb(GtkWidget* widget, GstElement* pipeline)
-{
- gst_element_set_state (pipeline, GST_STATE_PLAYING);
- g_print ("GST_STATE_PLAYING\n");
-}
-
-
-static gchar* slider_fps_cb (GtkScale* scale, gdouble value, GstElement* pipeline)
-{
- //change the video frame rate dynamically
- return g_strdup_printf ("video framerate: %0.*g", gtk_scale_get_digits (scale), value);
-}
-
-
-
-gint main (gint argc, gchar *argv[])
-{
-#ifdef HAVE_X11
- XInitThreads ();
-#endif
-
- GtkWidget *area;
- gst_init (&argc, &argv);
- gtk_init (&argc, &argv);
-
- GstElement* pipeline = gst_pipeline_new ("pipeline");
- GstElement* videosrc = gst_element_factory_make ("videotestsrc", "videotestsrc");
- GstElement* videosink = gst_element_factory_make ("glimagesink", "glimagesink");
-
- gst_bin_add_many (GST_BIN (pipeline), videosrc, videosink, NULL);
-
- gboolean link_ok = gst_element_link_many(videosrc, videosink, NULL) ;
- if(!link_ok)
- {
- g_warning("Failed to link an element!\n") ;
- return -1;
- }
-
- //set window id on this event
- GstBus* bus = gst_pipeline_get_bus (GST_PIPELINE (pipeline));
- gst_bus_add_signal_watch (bus);
- g_signal_connect(bus, "message::error", G_CALLBACK(end_stream_cb), pipeline);
- g_signal_connect(bus, "message::warning", G_CALLBACK(end_stream_cb), pipeline);
- g_signal_connect(bus, "message::eos", G_CALLBACK(end_stream_cb), pipeline);
-
- gst_element_set_state(pipeline, GST_STATE_READY);
-
- area = gtk_drawing_area_new();
- gst_bus_set_sync_handler (bus, (GstBusSyncHandler) create_window, area, NULL);
- gst_object_unref (bus);
-
- //window that contains an area where the video is drawn
- GtkWidget* window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
- gtk_widget_set_size_request (window, 640, 480);
- gtk_window_move (GTK_WINDOW (window), 300, 10);
- gtk_window_set_title (GTK_WINDOW (window), "glimagesink implement the gstvideooverlay interface");
- GdkGeometry geometry;
- geometry.min_width = 1;
- geometry.min_height = 1;
- geometry.max_width = -1;
- geometry.max_height = -1;
- gtk_window_set_geometry_hints (GTK_WINDOW (window), window, &geometry, GDK_HINT_MIN_SIZE);
-
- //window to control the states
- GtkWidget* window_control = gtk_window_new (GTK_WINDOW_TOPLEVEL);
- geometry.min_width = 1;
- geometry.min_height = 1;
- geometry.max_width = -1;
- geometry.max_height = -1;
- gtk_window_set_geometry_hints (GTK_WINDOW (window_control), window_control, &geometry, GDK_HINT_MIN_SIZE);
- gtk_window_set_resizable (GTK_WINDOW (window_control), FALSE);
- gtk_window_move (GTK_WINDOW (window_control), 10, 10);
- GtkWidget* table = gtk_grid_new ();
- gtk_container_add (GTK_CONTAINER (window_control), table);
-
- //control state null
- GtkWidget* button_state_null = gtk_button_new_with_label ("GST_STATE_NULL");
- g_signal_connect (G_OBJECT (button_state_null), "clicked",
- G_CALLBACK (button_state_null_cb), pipeline);
- gtk_grid_attach (GTK_GRID (table), button_state_null, 0, 0, 1, 1);
- gtk_widget_show (button_state_null);
-
- //control state ready
- GtkWidget* button_state_ready = gtk_button_new_with_label ("GST_STATE_READY");
- g_signal_connect (G_OBJECT (button_state_ready), "clicked",
- G_CALLBACK (button_state_ready_cb), pipeline);
- gtk_grid_attach (GTK_GRID (table), button_state_ready, 0, 1, 1, 1);
- gtk_widget_show (button_state_ready);
-
- //control state paused
- GtkWidget* button_state_paused = gtk_button_new_with_label ("GST_STATE_PAUSED");
- g_signal_connect (G_OBJECT (button_state_paused), "clicked",
- G_CALLBACK (button_state_paused_cb), pipeline);
- gtk_grid_attach (GTK_GRID (table), button_state_paused, 0, 2, 1, 1);
- gtk_widget_show (button_state_paused);
-
- //control state playing
- GtkWidget* button_state_playing = gtk_button_new_with_label ("GST_STATE_PLAYING");
- g_signal_connect (G_OBJECT (button_state_playing), "clicked",
- G_CALLBACK (button_state_playing_cb), pipeline);
- gtk_grid_attach (GTK_GRID (table), button_state_playing, 0, 3, 1, 1);
- gtk_widget_show (button_state_playing);
-
- //change framerate
- GtkWidget* slider_fps = gtk_scale_new_with_range (GTK_ORIENTATION_VERTICAL,
- 1, 30, 2);
- g_signal_connect (G_OBJECT (slider_fps), "format-value",
- G_CALLBACK (slider_fps_cb), pipeline);
- gtk_grid_attach (GTK_GRID (table), slider_fps, 1, 0, 1, 4);
- gtk_widget_show (slider_fps);
-
- gtk_widget_show (table);
- gtk_widget_show (window_control);
-
- //configure the pipeline
- g_signal_connect(G_OBJECT(window), "delete-event", G_CALLBACK(destroy_cb), pipeline);
-
- //area where the video is drawn
- gtk_container_add (GTK_CONTAINER (window), area);
-
- gtk_widget_realize(area);
-
- //needed when being in GST_STATE_READY, GST_STATE_PAUSED
- //or resizing/obscuring the window
- g_signal_connect(area, "draw", G_CALLBACK(draw_cb), videosink);
-
- gtk_widget_show_all (window);
-
- gst_element_set_state(pipeline, GST_STATE_PLAYING);
-
- gtk_main();
-
- return 0;
-}
-
diff --git a/tests/examples/gl/gtk/switchvideooverlay/Makefile.am b/tests/examples/gl/gtk/switchvideooverlay/Makefile.am
index dbe007c..e6ebf70 100644
--- a/tests/examples/gl/gtk/switchvideooverlay/Makefile.am
+++ b/tests/examples/gl/gtk/switchvideooverlay/Makefile.am
@@ -4,8 +4,8 @@
switchvideooverlay_CXXFLAGS=-I$(top_srcdir)/gst-libs -I$(top_builddir)/gst-libs \
$(GST_PLUGINS_BASE_CFLAGS) $(GST_CXXFLAGS) \
- $(GL_CFLAGS) $(GTK3_CFLAGS)
+ $(GL_CFLAGS) $(GTK3_CFLAGS) $(X_CFLAGS)
switchvideooverlay_LDADD=../libgstgtkhelper.la \
$(GTK3_LIBS) $(GST_PLUGINS_BASE_LIBS) $(GST_LIBS) \
- $(GL_LIBS) -lgstvideo-$(GST_API_VERSION)
+ $(GL_LIBS) -lgstvideo-$(GST_API_VERSION) $(X_LIBS)
diff --git a/tests/examples/gl/gtk/switchvideooverlay/Makefile.in b/tests/examples/gl/gtk/switchvideooverlay/Makefile.in
index 07dbf2b..bc2c0d4 100644
--- a/tests/examples/gl/gtk/switchvideooverlay/Makefile.in
+++ b/tests/examples/gl/gtk/switchvideooverlay/Makefile.in
@@ -138,7 +138,8 @@
am__DEPENDENCIES_1 =
switchvideooverlay_DEPENDENCIES = ../libgstgtkhelper.la \
$(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \
- $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1)
+ $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \
+ $(am__DEPENDENCIES_1)
AM_V_lt = $(am__v_lt_@AM_V@)
am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@)
am__v_lt_0 = --silent
@@ -273,6 +274,8 @@
DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
DSYMUTIL = @DSYMUTIL@
DTLS_CFLAGS = @DTLS_CFLAGS@
DTLS_LIBS = @DTLS_LIBS@
@@ -488,6 +491,8 @@
LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
LIPO = @LIPO@
LN_S = @LN_S@
LOCALEDIR = @LOCALEDIR@
@@ -614,8 +619,6 @@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
SNDIO_LIBS = @SNDIO_LIBS@
@@ -660,6 +663,8 @@
WAYLAND_LIBS = @WAYLAND_LIBS@
WEBP_CFLAGS = @WEBP_CFLAGS@
WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
WGET = @WGET@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
@@ -751,11 +756,11 @@
switchvideooverlay_SOURCES = main.cpp
switchvideooverlay_CXXFLAGS = -I$(top_srcdir)/gst-libs -I$(top_builddir)/gst-libs \
$(GST_PLUGINS_BASE_CFLAGS) $(GST_CXXFLAGS) \
- $(GL_CFLAGS) $(GTK3_CFLAGS)
+ $(GL_CFLAGS) $(GTK3_CFLAGS) $(X_CFLAGS)
switchvideooverlay_LDADD = ../libgstgtkhelper.la \
$(GTK3_LIBS) $(GST_PLUGINS_BASE_LIBS) $(GST_LIBS) \
- $(GL_LIBS) -lgstvideo-$(GST_API_VERSION)
+ $(GL_LIBS) -lgstvideo-$(GST_API_VERSION) $(X_LIBS)
all: all-am
diff --git a/tests/examples/gl/gtk/switchvideooverlay/main.cpp b/tests/examples/gl/gtk/switchvideooverlay/main.cpp
index ea53ea1..476478d 100644
--- a/tests/examples/gl/gtk/switchvideooverlay/main.cpp
+++ b/tests/examples/gl/gtk/switchvideooverlay/main.cpp
@@ -18,12 +18,19 @@
* Boston, MA 02110-1301, USA.
*/
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
#include <gst/gst.h>
#include <gtk/gtk.h>
#include <gdk/gdk.h>
#include "../gstgtk.h"
+#ifdef HAVE_X11
+#include <X11/Xlib.h>
+#endif
static GstBusSyncReply create_window (GstBus* bus, GstMessage* message, GtkWidget* widget)
{
@@ -59,7 +66,7 @@
gtk_widget_get_allocation (widget, &allocation);
gst_video_overlay_set_render_rectangle (GST_VIDEO_OVERLAY (sink), allocation.x, allocation.y, allocation.width, allocation.height);
- return G_SOURCE_CONTINUE;
+ return FALSE;
}
static void end_stream_cb(GstBus* bus, GstMessage* message, GstElement* pipeline)
@@ -104,6 +111,7 @@
static gboolean on_click_drawing_area(GtkWidget* widget, GdkEventButton* event, GstElement* videosink)
{
GtkAllocation allocation;
+ GtkWidget *parent = gtk_widget_get_parent (widget);
g_print ("switch the drawing area %p\n", widget);
gst_video_overlay_set_gtk_window (GST_VIDEO_OVERLAY (videosink), widget);
@@ -111,6 +119,11 @@
gtk_widget_get_allocation (widget, &allocation);
gst_video_overlay_set_render_rectangle (GST_VIDEO_OVERLAY (videosink), allocation.x, allocation.y, allocation.width, allocation.height);
+ /* XXX: required on wayland as changing the window handle (subsurface)
+ * requires a wl_surface::commit from the parent */
+ if (parent)
+ gtk_widget_queue_draw (parent);
+
return FALSE;
}
@@ -153,16 +166,12 @@
g_print ("GST_STATE_PLAYING\n");
}
-static void area_realize_cb(GtkWidget* widget, gpointer data)
-{
- g_print ("realize %p\n", widget);
- if (!gdk_window_ensure_native (gtk_widget_get_window (widget)))
- g_error ("Failed to create native window!");
-}
-
-
gint main (gint argc, gchar *argv[])
{
+#ifdef HAVE_X11
+ XInitThreads();
+#endif
+
gtk_init (&argc, &argv);
gst_init (&argc, &argv);
@@ -250,10 +259,6 @@
gtk_widget_set_size_request (area_top_right, 320, 240);
gtk_grid_attach (GTK_GRID (table_areas), area_top_right, 1, 0, 1, 1);
- //set window id on this event
- g_signal_connect(area_top_left, "realize", G_CALLBACK(area_realize_cb), NULL);
- g_signal_connect(area_top_right, "realize", G_CALLBACK(area_realize_cb), NULL);
-
gtk_widget_set_redraw_on_allocate (area_top_left, TRUE);
gtk_widget_set_redraw_on_allocate (area_top_right, TRUE);
gtk_widget_realize(area_top_left);
diff --git a/tests/examples/gl/qt/Makefile.in b/tests/examples/gl/qt/Makefile.in
index 290c83a..a7e25cd 100644
--- a/tests/examples/gl/qt/Makefile.in
+++ b/tests/examples/gl/qt/Makefile.in
@@ -216,6 +216,8 @@
DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
DSYMUTIL = @DSYMUTIL@
DTLS_CFLAGS = @DTLS_CFLAGS@
DTLS_LIBS = @DTLS_LIBS@
@@ -431,6 +433,8 @@
LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
LIPO = @LIPO@
LN_S = @LN_S@
LOCALEDIR = @LOCALEDIR@
@@ -557,8 +561,6 @@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
SNDIO_LIBS = @SNDIO_LIBS@
@@ -603,6 +605,8 @@
WAYLAND_LIBS = @WAYLAND_LIBS@
WEBP_CFLAGS = @WEBP_CFLAGS@
WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
WGET = @WGET@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
diff --git a/tests/examples/gl/sdl/Makefile.in b/tests/examples/gl/sdl/Makefile.in
index 349fcc1..02dea70 100644
--- a/tests/examples/gl/sdl/Makefile.in
+++ b/tests/examples/gl/sdl/Makefile.in
@@ -287,6 +287,8 @@
DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
DSYMUTIL = @DSYMUTIL@
DTLS_CFLAGS = @DTLS_CFLAGS@
DTLS_LIBS = @DTLS_LIBS@
@@ -502,6 +504,8 @@
LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
LIPO = @LIPO@
LN_S = @LN_S@
LOCALEDIR = @LOCALEDIR@
@@ -628,8 +632,6 @@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
SNDIO_LIBS = @SNDIO_LIBS@
@@ -674,6 +676,8 @@
WAYLAND_LIBS = @WAYLAND_LIBS@
WEBP_CFLAGS = @WEBP_CFLAGS@
WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
WGET = @WGET@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
diff --git a/tests/examples/gtk/Makefile.in b/tests/examples/gtk/Makefile.in
index e07c396..9d0463a 100644
--- a/tests/examples/gtk/Makefile.in
+++ b/tests/examples/gtk/Makefile.in
@@ -299,6 +299,8 @@
DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
DSYMUTIL = @DSYMUTIL@
DTLS_CFLAGS = @DTLS_CFLAGS@
DTLS_LIBS = @DTLS_LIBS@
@@ -514,6 +516,8 @@
LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
LIPO = @LIPO@
LN_S = @LN_S@
LOCALEDIR = @LOCALEDIR@
@@ -640,8 +644,6 @@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
SNDIO_LIBS = @SNDIO_LIBS@
@@ -686,6 +688,8 @@
WAYLAND_LIBS = @WAYLAND_LIBS@
WEBP_CFLAGS = @WEBP_CFLAGS@
WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
WGET = @WGET@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
diff --git a/tests/examples/mpegts/Makefile.in b/tests/examples/mpegts/Makefile.in
index 75ac0dd..51a015b 100644
--- a/tests/examples/mpegts/Makefile.in
+++ b/tests/examples/mpegts/Makefile.in
@@ -269,6 +269,8 @@
DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
DSYMUTIL = @DSYMUTIL@
DTLS_CFLAGS = @DTLS_CFLAGS@
DTLS_LIBS = @DTLS_LIBS@
@@ -484,6 +486,8 @@
LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
LIPO = @LIPO@
LN_S = @LN_S@
LOCALEDIR = @LOCALEDIR@
@@ -610,8 +614,6 @@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
SNDIO_LIBS = @SNDIO_LIBS@
@@ -656,6 +658,8 @@
WAYLAND_LIBS = @WAYLAND_LIBS@
WEBP_CFLAGS = @WEBP_CFLAGS@
WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
WGET = @WGET@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
diff --git a/tests/examples/mxf/Makefile.in b/tests/examples/mxf/Makefile.in
index 76275c9..f92839d 100644
--- a/tests/examples/mxf/Makefile.in
+++ b/tests/examples/mxf/Makefile.in
@@ -274,6 +274,8 @@
DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
DSYMUTIL = @DSYMUTIL@
DTLS_CFLAGS = @DTLS_CFLAGS@
DTLS_LIBS = @DTLS_LIBS@
@@ -489,6 +491,8 @@
LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
LIPO = @LIPO@
LN_S = @LN_S@
LOCALEDIR = @LOCALEDIR@
@@ -615,8 +619,6 @@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
SNDIO_LIBS = @SNDIO_LIBS@
@@ -661,6 +663,8 @@
WAYLAND_LIBS = @WAYLAND_LIBS@
WEBP_CFLAGS = @WEBP_CFLAGS@
WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
WGET = @WGET@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
diff --git a/tests/examples/opencv/Makefile.in b/tests/examples/opencv/Makefile.in
index 8a23179..1d004cb 100644
--- a/tests/examples/opencv/Makefile.in
+++ b/tests/examples/opencv/Makefile.in
@@ -291,6 +291,8 @@
DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
DSYMUTIL = @DSYMUTIL@
DTLS_CFLAGS = @DTLS_CFLAGS@
DTLS_LIBS = @DTLS_LIBS@
@@ -506,6 +508,8 @@
LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
LIPO = @LIPO@
LN_S = @LN_S@
LOCALEDIR = @LOCALEDIR@
@@ -632,8 +636,6 @@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
SNDIO_LIBS = @SNDIO_LIBS@
@@ -678,6 +680,8 @@
WAYLAND_LIBS = @WAYLAND_LIBS@
WEBP_CFLAGS = @WEBP_CFLAGS@
WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
WGET = @WGET@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
diff --git a/tests/examples/opencv/gstfacedetect_test.c b/tests/examples/opencv/gstfacedetect_test.c
index 9ecf3d0..d8334cb 100644
--- a/tests/examples/opencv/gstfacedetect_test.c
+++ b/tests/examples/opencv/gstfacedetect_test.c
@@ -1,7 +1,7 @@
/* GStreamer
* Copyright (C) 2015 Vanessa Chipirrás <vchipirras6@gmail.com>
*
- * gstfacedetect_test: gsteramer facedetect plugin demo application,
+ * gstfacedetect_test: gstreamer facedetect plugin demo application,
* part work of Outreachy 2015 project
*
* This library is free software; you can redistribute it and/or
diff --git a/tests/examples/opencv/gsthanddetect_test.c b/tests/examples/opencv/gsthanddetect_test.c
index 1cc9616..02a90de 100644
--- a/tests/examples/opencv/gsthanddetect_test.c
+++ b/tests/examples/opencv/gsthanddetect_test.c
@@ -1,7 +1,7 @@
/* GStreamer
* Copyright (C) 2012 Andol Li <andol@andol.info>
*
- * gsthanddetect_test: gsteramer handdetect plugin demo application,
+ * gsthanddetect_test: gstreamer handdetect plugin demo application,
* part work of GSoc 2012 project
*
* This library is free software; you can redistribute it and/or
diff --git a/tests/examples/uvch264/Makefile.in b/tests/examples/uvch264/Makefile.in
index e92f3fb..7c5a51a 100644
--- a/tests/examples/uvch264/Makefile.in
+++ b/tests/examples/uvch264/Makefile.in
@@ -277,6 +277,8 @@
DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
DSYMUTIL = @DSYMUTIL@
DTLS_CFLAGS = @DTLS_CFLAGS@
DTLS_LIBS = @DTLS_LIBS@
@@ -492,6 +494,8 @@
LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
LIPO = @LIPO@
LN_S = @LN_S@
LOCALEDIR = @LOCALEDIR@
@@ -618,8 +622,6 @@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
SNDIO_LIBS = @SNDIO_LIBS@
@@ -664,6 +666,8 @@
WAYLAND_LIBS = @WAYLAND_LIBS@
WEBP_CFLAGS = @WEBP_CFLAGS@
WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
WGET = @WGET@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
diff --git a/tests/examples/waylandsink/Makefile.in b/tests/examples/waylandsink/Makefile.in
index 3326bc9..7eb31ae 100644
--- a/tests/examples/waylandsink/Makefile.in
+++ b/tests/examples/waylandsink/Makefile.in
@@ -273,6 +273,8 @@
DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
DSYMUTIL = @DSYMUTIL@
DTLS_CFLAGS = @DTLS_CFLAGS@
DTLS_LIBS = @DTLS_LIBS@
@@ -488,6 +490,8 @@
LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
LIPO = @LIPO@
LN_S = @LN_S@
LOCALEDIR = @LOCALEDIR@
@@ -614,8 +618,6 @@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
SNDIO_LIBS = @SNDIO_LIBS@
@@ -660,6 +662,8 @@
WAYLAND_LIBS = @WAYLAND_LIBS@
WEBP_CFLAGS = @WEBP_CFLAGS@
WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
WGET = @WGET@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
diff --git a/tests/files/Makefile.in b/tests/files/Makefile.in
index c8e1634..ccd7563 100644
--- a/tests/files/Makefile.in
+++ b/tests/files/Makefile.in
@@ -216,6 +216,8 @@
DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
DSYMUTIL = @DSYMUTIL@
DTLS_CFLAGS = @DTLS_CFLAGS@
DTLS_LIBS = @DTLS_LIBS@
@@ -431,6 +433,8 @@
LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
LIPO = @LIPO@
LN_S = @LN_S@
LOCALEDIR = @LOCALEDIR@
@@ -557,8 +561,6 @@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
SNDIO_LIBS = @SNDIO_LIBS@
@@ -603,6 +605,8 @@
WAYLAND_LIBS = @WAYLAND_LIBS@
WEBP_CFLAGS = @WEBP_CFLAGS@
WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
WGET = @WGET@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
diff --git a/tests/icles/Makefile.in b/tests/icles/Makefile.in
index 1b604df..f516851 100644
--- a/tests/icles/Makefile.in
+++ b/tests/icles/Makefile.in
@@ -274,6 +274,8 @@
DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
DSYMUTIL = @DSYMUTIL@
DTLS_CFLAGS = @DTLS_CFLAGS@
DTLS_LIBS = @DTLS_LIBS@
@@ -489,6 +491,8 @@
LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
LIPO = @LIPO@
LN_S = @LN_S@
LOCALEDIR = @LOCALEDIR@
@@ -615,8 +619,6 @@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
SNDIO_LIBS = @SNDIO_LIBS@
@@ -661,6 +663,8 @@
WAYLAND_LIBS = @WAYLAND_LIBS@
WEBP_CFLAGS = @WEBP_CFLAGS@
WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
WGET = @WGET@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
diff --git a/tools/Makefile.in b/tools/Makefile.in
index 7380ae3..f3442b6 100644
--- a/tools/Makefile.in
+++ b/tools/Makefile.in
@@ -216,6 +216,8 @@
DIRECTX_CFLAGS = @DIRECTX_CFLAGS@
DIRECTX_LDFLAGS = @DIRECTX_LDFLAGS@
DLLTOOL = @DLLTOOL@
+DRM_CFLAGS = @DRM_CFLAGS@
+DRM_LIBS = @DRM_LIBS@
DSYMUTIL = @DSYMUTIL@
DTLS_CFLAGS = @DTLS_CFLAGS@
DTLS_LIBS = @DTLS_LIBS@
@@ -431,6 +433,8 @@
LIBVISUAL_LIBS = @LIBVISUAL_LIBS@
LIBXML2_CFLAGS = @LIBXML2_CFLAGS@
LIBXML2_LIBS = @LIBXML2_LIBS@
+LILV_CFLAGS = @LILV_CFLAGS@
+LILV_LIBS = @LILV_LIBS@
LIPO = @LIPO@
LN_S = @LN_S@
LOCALEDIR = @LOCALEDIR@
@@ -557,8 +561,6 @@
SET_MAKE = @SET_MAKE@
SHELL = @SHELL@
SHM_LIBS = @SHM_LIBS@
-SLV2_CFLAGS = @SLV2_CFLAGS@
-SLV2_LIBS = @SLV2_LIBS@
SNDFILE_CFLAGS = @SNDFILE_CFLAGS@
SNDFILE_LIBS = @SNDFILE_LIBS@
SNDIO_LIBS = @SNDIO_LIBS@
@@ -603,6 +605,8 @@
WAYLAND_LIBS = @WAYLAND_LIBS@
WEBP_CFLAGS = @WEBP_CFLAGS@
WEBP_LIBS = @WEBP_LIBS@
+WEBRTCDSP_CFLAGS = @WEBRTCDSP_CFLAGS@
+WEBRTCDSP_LIBS = @WEBRTCDSP_LIBS@
WGET = @WGET@
WILDMIDI_CFLAGS = @WILDMIDI_CFLAGS@
WILDMIDI_LIBS = @WILDMIDI_LIBS@
diff --git a/tools/element-templates/sinkpad b/tools/element-templates/sinkpad
index 6d3bad1..ec8a980 100644
--- a/tools/element-templates/sinkpad
+++ b/tools/element-templates/sinkpad
@@ -30,8 +30,8 @@
);
% base-init
- gst_element_class_add_pad_template (element_class,
- gst_static_pad_template_get (&gst_replace_sink_template));
+ gst_element_class_add_static_pad_template (element_class,
+ &gst_replace_sink_template);
% instance-init
replace->sinkpad = gst_pad_new_from_static_template (&gst_replace_sink_template
diff --git a/tools/element-templates/sinkpad-audio b/tools/element-templates/sinkpad-audio
index 3af5072..13d52d7 100644
--- a/tools/element-templates/sinkpad-audio
+++ b/tools/element-templates/sinkpad-audio
@@ -13,8 +13,8 @@
);
% base-init
- gst_element_class_add_pad_template (GST_ELEMENT_CLASS(klass),
- gst_static_pad_template_get (&gst_replace_sink_template));
+ gst_element_class_add_static_pad_template (GST_ELEMENT_CLASS(klass),
+ &gst_replace_sink_template);
% instance-init
% methods
% end
diff --git a/tools/element-templates/sinkpad-simple b/tools/element-templates/sinkpad-simple
index 2500e3f..9d7619b 100644
--- a/tools/element-templates/sinkpad-simple
+++ b/tools/element-templates/sinkpad-simple
@@ -11,8 +11,8 @@
);
% base-init
- gst_element_class_add_pad_template (GST_ELEMENT_CLASS(klass),
- gst_static_pad_template_get (&gst_replace_sink_template));
+ gst_element_class_add_static_pad_template (GST_ELEMENT_CLASS(klass),
+ &gst_replace_sink_template);
% instance-init
% methods
% end
diff --git a/tools/element-templates/sinkpad-template b/tools/element-templates/sinkpad-template
index 785365d..b06b346 100644
--- a/tools/element-templates/sinkpad-template
+++ b/tools/element-templates/sinkpad-template
@@ -11,8 +11,8 @@
);
% base-init
- gst_element_class_add_pad_template (element_class,
- gst_static_pad_template_get (&gst_replace_sink_template);
+ gst_element_class_add_static_pad_template (element_class,
+ &gst_replace_sink_template);
% instance-init
% methods
% end
diff --git a/tools/element-templates/srcpad b/tools/element-templates/srcpad
index 1afd7e7..82e0eea 100644
--- a/tools/element-templates/srcpad
+++ b/tools/element-templates/srcpad
@@ -28,8 +28,8 @@
);
% base-init
- gst_element_class_add_pad_template (element_class,
- gst_static_pad_template_get (&gst_replace_src_template));
+ gst_element_class_add_static_pad_template (element_class,
+ &gst_replace_src_template);
% instance-init
replace->srcpad = gst_pad_new_from_static_template (&gst_replace_src_template
diff --git a/tools/element-templates/srcpad-audio b/tools/element-templates/srcpad-audio
index 047c7c7..18698dd 100644
--- a/tools/element-templates/srcpad-audio
+++ b/tools/element-templates/srcpad-audio
@@ -13,8 +13,8 @@
);
% base-init
- gst_element_class_add_pad_template (GST_ELEMENT_CLASS(klass),
- gst_static_pad_template_get (&gst_replace_src_template));
+ gst_element_class_add_static_pad_template (GST_ELEMENT_CLASS(klass),
+ &gst_replace_src_template);
% instance-init
% methods
% end
diff --git a/tools/element-templates/srcpad-simple b/tools/element-templates/srcpad-simple
index 5971809..e705f80 100644
--- a/tools/element-templates/srcpad-simple
+++ b/tools/element-templates/srcpad-simple
@@ -11,8 +11,8 @@
);
% base-init
- gst_element_class_add_pad_template (GST_ELEMENT_CLASS(klass),
- gst_static_pad_template_get (&gst_replace_src_template));
+ gst_element_class_add_static_pad_template (GST_ELEMENT_CLASS(klass),
+ &gst_replace_src_template);
% instance-init
% methods
% end
diff --git a/tools/element-templates/srcpad-template b/tools/element-templates/srcpad-template
index 020f6a2..dd0842b 100644
--- a/tools/element-templates/srcpad-template
+++ b/tools/element-templates/srcpad-template
@@ -11,8 +11,8 @@
);
% base-init
- gst_element_class_add_pad_template (element_class,
- gst_static_pad_template_get (&gst_replace_src_template);
+ gst_element_class_add_static_pad_template (element_class,
+ &gst_replace_src_template);
% instance-init
% methods
% end
diff --git a/win32/common/config.h b/win32/common/config.h
index d1635f7..30f058b 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-06-09"
+#define GST_PACKAGE_RELEASE_DATETIME "2016-06-06"
/* Define if static plugins should be built */
#undef GST_PLUGIN_BUILD_STATIC
@@ -325,6 +325,9 @@
/* Define to enable Kate (used by kate). */
#undef HAVE_KATE
+/* Define to enable drm/kms libraries (used by kms). */
+#undef HAVE_KMS
+
/* Define to enable ladspa (used by ladspa). */
#undef HAVE_LADSPA
@@ -418,15 +421,9 @@
/* Define to enable opencv plugins (used by opencv). */
#undef HAVE_OPENCV
-/* Define to 1 if you have the <opencv2/contrib/contrib.hpp> header file. */
-#undef HAVE_OPENCV2_CONTRIB_CONTRIB_HPP
-
/* Define to 1 if you have the <opencv2/core/core_c.h> header file. */
#undef HAVE_OPENCV2_CORE_CORE_C_H
-/* Define to 1 if you have the <opencv2/core/types_c.h> header file. */
-#undef HAVE_OPENCV2_CORE_TYPES_C_H
-
/* Define to 1 if you have the <opencv2/core/version.hpp> header file. */
#undef HAVE_OPENCV2_CORE_VERSION_HPP
@@ -439,12 +436,6 @@
/* Define to 1 if you have the <opencv2/imgproc/imgproc.hpp> header file. */
#undef HAVE_OPENCV2_IMGPROC_IMGPROC_HPP
-/* Define to 1 if you have the <opencv2/legacy/compat.hpp> header file. */
-#undef HAVE_OPENCV2_LEGACY_COMPAT_HPP
-
-/* Define to 1 if you have the <opencv2/legacy/legacy.hpp> header file. */
-#undef HAVE_OPENCV2_LEGACY_LEGACY_HPP
-
/* Define to 1 if you have the <opencv2/objdetect/objdetect.hpp> header file.
*/
#undef HAVE_OPENCV2_OBJDETECT_OBJDETECT_HPP
@@ -504,8 +495,8 @@
/* Define to enable Qt elements (used by qt). */
#undef HAVE_QT
-/* Define if Qt Android integration is installed */
-#undef HAVE_QT_ANDROID
+/* Define if Qt eglfs integration is installed */
+#undef HAVE_QT_EGLFS
/* Define if Qt iOS integration is installed */
#undef HAVE_QT_IOS
@@ -651,6 +642,9 @@
/* Define to enable WebP (used by webp ). */
#undef HAVE_WEBP
+/* Define to enable WebRTC Audio Processing (used by webrtcdsp). */
+#undef HAVE_WEBRTCDSP
+
/* Define to enable wildmidi midi soft synth plugin (used by wildmidi). */
#undef HAVE_WILDMIDI
@@ -731,7 +725,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.8.2"
+#define PACKAGE_STRING "GStreamer Bad Plug-ins 1.9.1"
/* Define to the one symbol short name of this package. */
#define PACKAGE_TARNAME "gst-plugins-bad"
@@ -740,7 +734,7 @@
#undef PACKAGE_URL
/* Define to the version of this package. */
-#define PACKAGE_VERSION "1.8.2"
+#define PACKAGE_VERSION "1.9.1"
/* directory where plugins are located */
#ifdef _DEBUG
@@ -784,7 +778,7 @@
#undef USE_EGL_RPI
/* Version number of package */
-#define VERSION "1.8.2"
+#define VERSION "1.9.1"
/* Define WORDS_BIGENDIAN to 1 if your processor stores words with the most
significant byte first (like Motorola and SPARC, unlike Intel). */